B i M A P

Grafana|How to setup variable makes dashboard more flexible - Part I

在 Grafana 中可以利用變數的設定讓 Dashboard 的圖表更有互動性。


Create Variable

  1. 點選編輯 Dashboard 畫面右上角的 Dashboard Setting
  2. 選擇 Setting 中 的 Variables

grafana setting


    Variable Definition

    1. Variable General:
      • Name (變數名稱):之後在panel或link中使用到變數的變成名稱
      • Type(得到變數的方式):常用包含從資料庫中取得變數清單(Query)、直接輸入可選變數清單(Custom)、讓使用者自己輸入變數(Text Box)、固定常數(Constant)
      • Labels(標籤):畫面上顯示的變數名稱
      • Hide(是否隱藏):可選擇只隱藏Labels或整個變數都隱藏
    2. Options:依據General中Type輸入變數(在下一點中,簡單使用幾個Flux語法取得資料庫中的資料)
    3. Selection options:使用者可以單選或多選

    grafana variable setting


      Example

      情境:可以隨意查詢出 bucket 中所有的 measurement 和對應的 field
      示範:連續三個變數,讓使用者可以依序選擇要關注的 Server 及此 Server 下相關的 Metric 選擇


      1. 設定bucket變數:取得變數的方式為定值
        • Name: host
        • Type: Constant
        • Label: bucket
        • Constant options: your_backet_name
      2. 設定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
        )
      3. 設定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
        )
      4. 設定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
        )




      延伸閱讀
      jessie.shen的大頭照
      Grafana 達人

      在大數據時代,如何透過視覺化圖表及分析工具,是每間數位轉型中的公司必學的課程。在多不勝數的軟體工具中,我們期望透過ELK、InfluxDB、Grafana等開源軟體,與企業夥伴一同邁向成功!