在 Grafana 中可以利用變數的設定讓 Dashboard 的圖表更有互動性。
Create Variable
- 點選編輯 Dashboard 畫面右上角的 Dashboard Setting
- 選擇 Setting 中 的 Variables
Variable Definition
-
Variable General:
- Name (變數名稱):之後在panel或link中使用到變數的變成名稱
-
Type(得到變數的方式):常用包含從資料庫中取得變數清單(Query)、直接輸入可選變數清單(Custom)、讓使用者自己輸入變數(Text
Box)、固定常數(Constant)
- Labels(標籤):畫面上顯示的變數名稱
- Hide(是否隱藏):可選擇只隱藏Labels或整個變數都隱藏
-
Options:依據General中Type輸入變數(在下一點中,簡單使用幾個Flux語法取得資料庫中的資料)
- Selection options:使用者可以單選或多選
Example
情境:可以隨意查詢出 bucket 中所有的 measurement 和對應的 field
示範:連續三個變數,讓使用者可以依序選擇要關注的 Server 及此 Server 下相關的
Metric 選擇
-
設定bucket變數:取得變數的方式為定值
-
Name: host
-
Type: Constant
-
Label: bucket
-
Constant options: your_backet_name
-
-
設定host變數:取得變數的方式為查詢 tag values
-
Name: host
-
Type: Query
-
Label: host name
-
Selection options: Multi-values = true
- Query Options:
import "influxdata/influxdb/v1" v1.tagValues( bucket: "${bucket}", ##利用前一項變數取得bucket名稱,bucket前後記得加雙引號 tag: "host", start: -1d )
-
-
設定measurement變數:取得變數的方式為查詢 tag
values(包含條件符合前一個變數host的資料)
-
Name: measurement
-
Type: Query
-
Label: measurement
-
Selection options: Multi-values = true
- Query Options:
import "influxdata/influxdb/v1" v1.tagValues( bucket: "${bucket}", tag: "_measurement", predicate: (r) => r.host =~ /${host:regex}/, ##由於host可以為複選,因此用正規表達式 start: -1d )
-
-
設定field變數:取得變數的方式為查詢 tag
values(包含條件符合前一個變數host及measurement的資料)
-
Name: field
-
Type: Query
-
Label: measurement
-
Selection options: Multi-values = true
- Query Options:
import "influxdata/influxdb/v1" v1.tagValues( bucket: "${bucket}", tag: "_field", predicate: (r) => r.host =~ /${host:regex}/ and r._measurement =~ /${measurement:regex}/, start: -1d )
-