工作技術筆記系列:Grafana Variables
接續上一篇 Grafana 的文章,接下來繼續更深入介紹 Grafana Variable
工作開發心得 - Grafana variable
keywords: Grafana

在 Grafana 左上角有時可以看到下拉式選單,可以設定一些環境變數,每改變變數時,底下的 Dashboard 也會做出對應的改變,這個功能稱為 Variables。
就像是程式中的變數一樣,我們可以在 UI 中設定 Variables 來動態改變 metric query 中的值
例如可以把 region 設成變數,這樣就可以方便的在同一個頁面下,橫向對比不同 region 的 Dashboard
而在官網中舉了三個 use case:
- repeated panels Grafana
- 可以重複相同的 panel
- dynamic dashboard Grafana
- 依據變數動態地調整 Dashboard,可以不用開一樣的 Dashboard
- nested variables Grafana
- Variable 是可以巢狀疊在一起的喔
怎麼使用
Grafana 稱,含 Variable 的 Query 叫做 Templates,而一個 Templates 長這樣:
1 | wmi_system_threads{instance=~"$server"} |
其中 $server 就是調用 server 變數的意思
怎麼新增變數?
找到右上角的齒輪

會有 Variables 的 Tab

- variable type
- 等等下面會介紹
- Name
- template 中的變數名稱
- $pod
- template 中的變數名稱
- Label
- 顯示在 Grafana dashboard 上的名稱,預設跟 Name 相同
- selection options
- 可以起用 All or 多選

一些新增變數的方法
Query variable
下 PromQL query 找到想要變數清單,例如:k8s 中 pod 的清單

Custom variable
完全自定義的變數,格式為 key1 : value1,key2 : value2 (key 是顯示在下拉式選單的名稱;value 是實際帶到 template 的變數)
Text box variable
與其給下拉式選單,不如直接給一個輸入框,可以輸入任意字串
Interval variable
時間間隔變數,用法:1m, 10m, 1h, ...
Ad hoc variable
與其給一個定好的變數,不如給使用者自己定義 query,可以自己選 XXX="XXX"
如果想把一串 query 當變數?
可以參考下面文章:
Change Grafana query dynamically based on user inputs
主要總結為:用 custom variable
CPU: usage{...}, MEM: ram{freq="", ...}