上一章我們設定了許多變數,現在來試著用用看吧!
How to Use Variable in Panels
- 如何引用變數進flux查詢語法? 用${variable_name}引用變數值,例如:
from(bucket: "${bucket}")
- 可以多選的變數怎麼辦呢?
用正規表達式來模糊比對${variable_name:regex},例如:
filter(fn: (r) => r["_measurement"] =~ /${measurement:regex}/)
- 利用所選的measurement和對應的field畫圖,將所有的資料畫圖flux查詢語法法如下:
from(bucket: "${bucket}") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["host"] =~ /${host:regex}/) |> filter(fn: (r) => r["_measurement"] =~ /${measurement:regex}/) |> filter(fn: (r) => r["_field"] =~ /${field:regex}/) |> rename(columns:{_measurement:"measurement"}) |> aggregateWindow(every: v.windowPeriod, fn: mean)
Use Variable to Duplicate Panels
當很多個host和很多measurement都在同一張圖時,很不容易看。這時候就可以利用variable另一個好用的地方,就是自動產生多張圖表!
- 選擇變數(會依照變數值有幾個而自動產生)
- Horizontal:圖會橫向自動產生(同時要選擇橫排最多幾張)/
Vertical:圖會往下自動產生 - 建議在Panel Title加入Repeat的變數,讓表頭可以看出這張讀的變數值。
- 查詢語法更新:將原來measurement的模糊比較filter改為判斷是否等於變數measurement,因為每個圖的查詢語法,將只會讀取該變數的多個值得其中一個;若變數有多個值,將會產生多個圖表對應相對應的變數值。
from(bucket: "${bucket}") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["host"] =~ /${host:regex}/) |> filter(fn: (r) => r["_measurement"] == "${measurement}") ##修改了這裡 |> filter(fn: (r) => r["_field"] =~ /${field:regex}/) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
- 先新增Raw,並將相同類別的圖表放在Raw下面
- 點選Raw的編輯
- Repeat For選擇希望圖表的分類指標變數
- 建議在Title加入Repeat的變數,讓Raw可以看出是讀取哪個變數值
- 查詢語法更新:將原來host的模糊比較filter改為判斷是否等於變數host,因為每個圖的查詢語法,將只會讀取該變數的多個值得其中一個;若變數有多個值,將會產生多個圖表對應相對應的變數值。
from(bucket: "${bucket}") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["host"] == "${host}") ##修改了這裡 |> filter(fn: (r) => r["_measurement"] == "${measurement}") |> filter(fn: (r) => r["_field"] =~ /${field:regex}/) |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)