iT邦幫忙

2022 iThome 鐵人賽

DAY 19
4
DevOps

淺談DevOps與Observability系列 第 19

第一個地震儀表板 :Grafana Datasource+DashBoard

  • 分享至 

  • xImage
  •  

這兩三天是不是很晃, 一直搖!!! 我真的恐慌.

回歸主題聊Grafana

Grafana本質上只是個Web站台, 就負責設定顯示.
第一個要想的是, 想看到什麼?

常見的有這些策略

  • The USE method tells you how happy your machines are, the RED method tells you how happy your users are.
  • USE reports on causes of issues.
  • RED reports on user experience and is more likely to report symptoms of problems.
  • The best practice of alerting is to alert on symptoms rather than causes, so alerting should be done on RED dashboards.

USE與RED是三個單字的自首拼接而成的
這部份先了解USE與RED method, 第四點之後在談

Use Method

其實就是硬體與OS的資源報告, 像是

  • Utilization
    • 告訴你資源現在有多忙
      • 像是CPU使用率, MEM使用率, HD I/O, 頻寬等等的
  • Saturation
    • 資源需要面對的工作量
      • Queue內存的任務長度, CPU queue length(當下用到的執行緒數量), 有沒有匿名分頁(anonymous page), 或者硬碟的等待被處理的請求數量
  • Errors
    • 就error events的數量

這網站提供了很多硬體資源的知識
Brendan Gregg - The USE Method
底下有Metrics列表告訴你, 哪些指標對應到上面的哪一個項目.

這類的資料我們可以透過Prometheus的一些exporter來取得, 像Node_exporter

RED Method

回報用戶的體驗如何.
常見的有

  • Rate
    • 每秒的請求數量: 關係到能服務多少用戶
  • Errors
    • 失敗的請求數量: 關係到用戶會多不開心XD
  • Duration
    • 請求處理的時間, 以及這些時間的分佈情況

能參考2018年Tom Wilkie的一次分享RED Method.
The RED Method: How to Instrument Your Services

能發現USE Method其實並不適用在軟體服務上, 更適用於硬體上.
所以當201x年開始微服務架構盛行, 我們就需要這類的指標專住在服務上.
對於服務來說關注的就是用戶體驗與滿意度.

Google SRE Book

這本SRE Book, 書我想很多大大都讀過.
Chap6給出The Four Golden Signals

For each service, monitor:
- Latency (time taken to serve a request)
- Traffic (how much demand is placed on your system)
- Errors (rate of requests that are failing)
- Saturation (how “full” your service is)

Grfana Demo有提供了一個Dashboard demo
The Four Golden Signals Link


Latency這Panel主要是顯示正常與錯誤的處理時間.
Traffic則是顯示該軟體服務一秒服務了多少請求
Errors則是顯示各種HTTP error在時間與個數上的映射情況
Saturation則是顯示一些硬體資源的利用率

兩個論點相比
The Four Golden Signals跟RED Method幾乎一樣, 只是多了一個測量Saturation的方法

Two Sides of the Same Coin

Tom提議USE與RED通時都使用, 並且都顯示出來.
這樣大家在排查問題時, 就能配合著另一面向的資訊做推斷.

484覺得現在談的跟主題有啥關聯?
其實只是要請各位在這Demo網站
The Four Golden Signals Link
隨便一個panel點edit


這就是今天主題Data Source
DemoSite麻煩的是不會讓你看到Data source的各種設定.
所以我們今天要來介紹一下

粗略介紹Data Source

https://www.couchbase.com/blog/how-to-build-observability-dashboards-prometheus-grafana-couchbase/

如一直在講的, Grafana本身只是個顯示資料的網站服務.
它並沒把我們想看到的telemetry data或各種資料做存儲.
所有的資料都存儲在其它後端的節點上.
所以需要透過設定Data source, 讓Grafana知道怎連到那邊去存取資料.
以開發後端來講, 就是給db connection string, API endpoint等等的資訊, 配置給它.
今天先演示簡單的設定, 明天再來聊多一點.

假裝政府資料開放平台-顯著有感地震報告這是我們的資料後端.
我們想要將之展示在Grafana的儀表板上.

主要欄位說明明

reportType(地震報告)、earthquakeNo(地震報告 編號)、reportContent(報文內容)、reportColor(開放資料燈號)、web(開放資料參考 網址)、reportImageURI(地震報告圖 網址)、areaIntensity(區域地震規模)、stationIntensity(偵測站地震規模)

做儀表板一定要想清楚自己想看到什麼?
我想...展示stationIntensity就好XD

我們先在左側選單找到Configuration功能, 然後找到Plugin選項, 搜尋JSON API

Install安裝JSON API

然後就能透過該畫面新增Data source使用JSON API
然後設定Data Source

https://opendata.cwb.gov.tw/api/v1/rest/datastore/E-A0015-002?Authorization=rdec-key-123-45678-011121314


按下底部的Save&Test

來到左邊選單選Explore
會看到上面的DataSource清單有剛剛的DataGovTw-Demo

JSON API官網
我們選擇用JSON Path的形式來搜索元素

先來能展示出Station站點名稱

$.records[$].earthquake[*].intensity[$].shakingArea[*].eqStation[*].stationName

這樣子能找出所有的站點地震規模數字

$.records[$].earthquake[*].intensity[$].shakingArea[*].eqStation[*].stationIntensity[$].value

我們就能來做Dashboard
來Dashboards browse, 來建立一個新的Dashboard

在Dashboard上有個齒輪能做設定

編輯Dashboard Name

然後左邊選擇Variables, 新增Variable
給VariableName : StationName
DataSource選擇DataGovTw-Demo
把剛剛能顯示站台名稱的script貼上Fields

底下有Preview of values
能看到結果, 按下Update

回到Dashboard畫面, 能看到標題跟下拉式選單

然後來新增一個新Panel
Panel Title給個名字
一樣DataSource選擇剛剛建立好的DataGovTw-Demo
Field輸入, 查詢表達式中會用到選定的stationname variable來篩選
然後按下右上角的Apply

$.records[$].earthquake[*].intensity[$].shakingArea[*].eqStation[?(@.stationName== "$StationName")].stationIntensity[$].value

可以自己切換站點看看

這樣我們就完成了最基本的DataSource與DashBoard和Panel的設定了!
484很簡單.


確認無誤後, 記得按下磁碟片Save.
之後就會存在於Dashboard browse內了.

有了data source, 又有了查詢語法.
我們就能建立Dashboard了.

接著再來多聊點Grafana更多功能與設定配置.

今日小心得

484很簡單!!! 我自己覺得門檻比ELK低一些就是了
Panel又炫泡XD

參考資料

Grafana-Common observability strategies

Grafana - Data Sources


上一篇
今年參賽的起點 - Grafana
下一篇
淺談Grafana Dashboard的管理
系列文
淺談DevOps與Observability36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言