回歸主題聊Grafana
Grafana本質上只是個Web站台, 就負責設定顯示.
第一個要想的是, 想看到什麼?
常見的有這些策略
USE與RED是三個單字的自首拼接而成的
這部份先了解USE與RED method, 第四點之後在談
其實就是硬體與OS的資源報告, 像是
這網站提供了很多硬體資源的知識
Brendan Gregg - The USE Method
底下有Metrics列表告訴你, 哪些指標對應到上面的哪一個項目.
這類的資料我們可以透過Prometheus的一些exporter來取得, 像Node_exporter
回報用戶的體驗如何.
常見的有
能參考2018年Tom Wilkie的一次分享RED Method.
The RED Method: How to Instrument Your Services
能發現USE Method其實並不適用在軟體服務上, 更適用於硬體上.
所以當201x年開始微服務架構盛行, 我們就需要這類的指標專住在服務上.
對於服務來說關注的就是用戶體驗與滿意度.
這本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的方法
Tom提議USE與RED通時都使用, 並且都顯示出來.
這樣大家在排查問題時, 就能配合著另一面向的資訊做推斷.
484覺得現在談的跟主題有啥關聯?
其實只是要請各位在這Demo網站
The Four Golden Signals Link
隨便一個panel點edit
這就是今天主題Data Source
DemoSite麻煩的是不會讓你看到Data source的各種設定.
所以我們今天要來介紹一下
如一直在講的, 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