本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本文件主題專為支援 Grafana 9.x 版的 Grafana 工作區而設計。
如需支援 Grafana 10.x 版的 Grafana 工作區,請參閱使用 Grafana 第 10 版。
如需支援 Grafana 8.x 版的 Grafana 工作區,請參閱使用 Grafana 第 8 版。
下表列出 Grafana 隨附的變數類型。
變數類型 | 描述 |
---|---|
Query |
查詢產生的值清單,例如指標名稱、伺服器名稱、感應器 IDs、資料中心等。新增查詢變數。 |
自訂 |
使用逗號分隔清單手動定義變數選項。新增自訂變數。 |
Text box (文字方塊) |
顯示具有選用預設值的任意文字輸入欄位。新增文字方塊變數。 |
常數 |
定義隱藏常數。新增常數變數。 |
資料來源 |
快速變更整個儀表板的資料來源。新增資料來源變數。 |
Interval (間隔) |
間隔變數代表時間範圍。新增間隔變數。 |
臨機操作篩選條件 |
金鑰值篩選條件會自動新增至資料來源的所有指標查詢 (僅限 Prometheus、Loki、InfluxDB 和 Elasticsearch)。新增臨機操作篩選條件。 |
全域變數 |
內建變數,可用於查詢編輯器中的表達式。請參閱全域變數。 |
鏈結變數 |
變數查詢可以包含其他變數。請參閱鏈結變數。 |
輸入一般選項
您必須輸入您建立之任何類型的變數的一般選項。
輸入一般選項
-
導覽至您要為 建立變數的儀表板,然後選取頁面頂端的儀表板設定 (齒輪) 圖示。
-
在變數索引標籤上,選取新增。
-
輸入變數的名稱。
-
在類型清單中,選取查詢。
-
(選用) 在標籤中,輸入變數下拉式清單的顯示名稱。
如果您未輸入顯示名稱,則下拉式清單標籤為變數名稱。
-
選擇隱藏選項:
-
無選擇 (空白):變數下拉式清單會顯示變數名稱或標籤值。
-
標籤:變數下拉式清單只會顯示選取的變數值和向下箭頭。
-
變數:儀表板上不會顯示變數下拉式清單。
-
新增查詢變數
查詢變數可讓您撰寫資料來源查詢,以傳回指標名稱、標籤值或索引鍵的清單。例如,查詢變數可能會傳回伺服器名稱、感應器 IDs或資料中心的清單。變數值會隨著動態擷取具有資料來源查詢的選項而變更。
查詢變數通常僅支援字串。如果您的查詢傳回數字或任何其他資料類型,您可能需要將它們轉換為字串,以將其用作變數。例如,對於 Azure 資料來源,您可以使用 tostring
查詢表達式可以包含對其他變數的參考,並實際建立連結變數。Grafana 會偵測到此情況,並在其中一個連結變數變更時自動重新整理變數。
注意
每個資料來源的查詢表達式都不同。如需詳細資訊,請參閱資料來源的文件。
新增查詢變數
-
輸入一般選項,如上所述。
-
在資料來源清單中,選取查詢的目標資料來源。
-
在重新整理清單中,選取變數應該更新選項的時間。
-
在儀表板載入上:每次儀表板載入時,都會查詢資料來源。這會減慢儀表板載入速度,因為必須先完成變數查詢,才能初始化儀表板。
-
在時間範圍變更時:當儀表板時間範圍變更時, 會查詢資料來源。只有在變數選項查詢包含時間範圍篩選條件或取決於儀表板時間範圍時,才使用此選項。
-
-
在查詢欄位中,輸入查詢。
-
查詢欄位會根據您的資料來源而有所不同。有些資料來源具有自訂查詢編輯器。
-
如果您在單一輸入欄位查詢編輯器中需要更多空間,請將游標停留在欄位右下角的行上,然後向下拖曳以展開。
-
-
(選用) 在 Regex 欄位中,輸入 regex 表達式來篩選或擷取資料來源查詢傳回的名稱的特定部分。若要查看範例,請參閱使用 regex 篩選變數。
-
在排序清單中,選取要在下拉式清單中顯示之值的排序順序。預設選項已停用,表示將使用資料來源查詢傳回的選項順序。
-
(選用) 輸入選擇選項。
-
在預覽值中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取新增,將變數新增至儀表板。
新增自訂變數
將自訂變數用於不會變更的值,例如數字或字串。
例如,如果您的伺服器名稱或區域名稱永遠不會變更,則建議您將其建立為自訂變數,而不是查詢變數。由於它們不會變更,因此您可以在鏈結變數中使用它們,而不是其他查詢變數。這會減少 Grafana 在更新鏈結變數時必須傳送的查詢數量。
新增自訂變數
-
輸入一般選項,如上所述。
-
在 中
以逗號清單分隔的值,在逗號分隔清單中輸入此變數的值。您可以包含以空格和冒號分隔的數字、字串或鍵值對。例如:
key1 : value1,key2 : value2
。 -
(選用) 輸入選擇選項。
-
在預覽值中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取新增,將變數新增至儀表板。
新增文字方塊變數
文字方塊變數會顯示任意文字輸入欄位,其中包含選用的預設值。這是最靈活的變數,因為您可以輸入任何值。如果您有高基數的指標,或想要同時更新儀表板中的多個面板,請使用此類型的變數。
新增文字方塊變數
-
輸入一般選項,如上所述。
-
(選用) 在預設值欄位中,選取變數的預設值。如果您在此欄位中未輸入任何內容,則 Grafana 會顯示空白文字方塊,供使用者輸入文字。
-
在預覽值中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取新增,將變數新增至儀表板。
新增常數變數
常數變數可讓您定義隱藏常數。這對於您要共用之儀表板的指標路徑字首很有用。匯出儀表板時,常數變數會轉換為匯入選項。
常數變數不靈活。每個常數變數只保留一個值,除非您更新變數設定,否則無法更新。
當您有複雜的值需要包含在查詢中,但不想在每個查詢中重新輸入時,恆定變數很有用。例如,如果您有名為 的伺服器路徑i-0b6a61efe2ab843gg
,則可以將其取代為名為 的變數$path_gg
。
新增常數變數
-
輸入一般選項,如上所述。
-
在值欄位中,輸入變數值。您可以輸入字母、數字和符號。如果您使用原始格式
,甚至可以使用萬用字元。 -
在預覽值中,Grafana 會顯示目前變數值的清單。檢閱它們以確保它們符合您的期望。
-
選取新增,將變數新增至儀表板。
新增資料來源變數
資料來源變數可讓您快速變更整個儀表板的資料來源。如果您有多個資料來源的執行個體,它們可能在不同環境中很有用。
新增資料來源變數
-
輸入一般選項,如上所述。
-
在類型清單中,選取變數的目標資料來源。
-
(選用) 在執行個體名稱篩選條件中,輸入 regex 篩選條件,供資料來源執行個體在變數值下拉式清單中選擇。將此欄位保留空白,以顯示所有執行個體。
-
(選用) 輸入選擇選項。
-
在預覽值中,Grafana 會顯示目前變數值的清單。檢閱它們以確保它們符合您的期望。
-
選取新增,將變數新增至儀表板。
新增間隔變數
使用間隔變數來表示時間範圍,例如 1m
1h
、 或 1d
。您可以依時間命令將它們視為全儀表板群組。間隔變數會變更資料在視覺化中的分組方式。您也可以使用自動選項,傳回每個時間範圍的固定資料點數量。
您可以使用間隔變數做為依時間分組的參數 (適用於 InfluxDB)、日期長條圖間隔 (適用於 Elasticsearch),或做為摘要函數參數 (適用於 Graphite)。
新增間隔變數
-
輸入一般選項,如上所述。
-
在值欄位中,輸入您要顯示在變數下拉式清單中的時間範圍間隔。支援下列時間單位:
s (seconds)
、m (minutes)
、h (hours)
、d (days)
、M (months)
、w (weeks)
和y (years)
。您也可以接受或編輯預設值:1m,10m,30m,1h,6h,12h,1d,7d,14d,30d
。 -
(選用) 如果您想要將 選項新增至清單,請開啟自動
auto
選項。此選項可讓您指定應分割目前時間範圍的次數,以計算目前auto
時間範圍。如果您將其開啟,則會顯示另外兩個選項:-
步驟計數 - 選取將分割目前時間範圍以計算值的次數,類似於最大資料點查詢選項。例如,如果目前可見的時間範圍是 30 分鐘,則
auto
間隔會將資料分組為 30 個一分鐘增量。預設值為 30 個步驟。 -
最小間隔 - 步驟計數間隔低於的最低閾值不會分割時間。若要繼續 30 分鐘的範例,如果最小間隔設定為 2 公尺,則 Grafana 會將資料分組為 15 個兩分鐘增量。
-
-
在預覽值中,Grafana 會顯示目前變數值的清單。檢閱它們以確保它們符合您的期望。
-
選取新增,將變數新增至儀表板。
間隔變數範例
下列範例顯示 Graphite 函數myinterval
中的範本變數:
summarize($myinterval, sum, false)
新增臨機操作篩選條件
臨機操作篩選條件可讓您新增金鑰值篩選條件,這些篩選條件會自動新增至使用指定資料來源的所有指標查詢。與其他變數不同,您不會在查詢中使用臨時篩選條件。反之,您可以使用專用篩選條件來寫入現有查詢的篩選條件。
注意
臨機操作篩選變數僅適用於 Prometheus、Loki、InfluxDB 和 Elasticsearch 資料來源。
-
輸入一般選項,如上所述。
-
在資料來源清單中,選取目標資料來源。
-
選取新增,將變數新增至儀表板。
建立臨機操作篩選條件
臨機操作篩選條件是可用最複雜且最靈活的變數選項之一。此變數不是變數選項的一般清單,而是可讓您建置儀表板範圍的臨時查詢。您以此方式套用的篩選條件會套用至儀表板上的所有面板。
設定變數選取選項
選擇選項是一項功能,可用來管理變數選項選擇。所有選擇選項皆為選用,預設為關閉。
多值變數
插入具有多個所選值的變數很棘手,因為它不是直接將多個值格式化為字串,而該字串在使用變數的特定內容中有效。Grafana 會允許每個資料來源外掛程式通知範本插補引擎要用於多個值的格式,以嘗試解決此問題。
注意
變數上的自訂所有值選項必須為空白,Grafana 才能將所有值格式化為單一字串。如果保留空白,則 Grafana 會串連 (一起新增) 查詢中的所有值。例如:value1,value2,value3
。如果使用自訂all
值,則值將為 *
或 all
。
具有 Graphite 資料來源的多值變數
石墨使用 glob 表達式。在這種情況下,具有多個值的變數會插入,就{host1,host2,host3}
好像目前的變數值是 host1、host2 和 host3。
具有 Prometheus 或 InfluxDB 資料來源的多值變數
InfluxDB 和 Prometheus 使用 regex 表達式,因此相同的變數會插補為 (host1|host2|host3)
。每個值也會逸出 regex。如果沒有,具有 regex 控制字元的值會破壞 regex 表達式。
具有彈性資料來源的多值變數
Elasticsearch 使用 lucene 查詢語法,因此相同的變數會格式化為 ("host1" OR "host2" OR "host3")
。在這種情況下,每個值都必須逸出,以便該值只包含lucene 控制單字和引號。
對多值變數進行故障診斷
自動逸出和格式化可能會導致問題,並且很難掌握背後的邏輯。特別是使用 regex 語法的 InfluxDB 和 Prometheus 需要在 regex 運算子內容中使用變數。
如果您不希望 Grafana 執行此自動 regex 逸出和格式化,則必須執行下列其中一項操作:
-
關閉多值或包含所有選項選項。
-
使用原始變數格式
。
包含所有選項
Grafana 將 All
選項新增至變數下拉式清單。如果使用者選取此選項,則會選取所有變數選項。
自訂所有值
只有在選取包含所有選項時,才會顯示此選項。
在自訂所有值欄位中輸入 regex、glob 或 lucene 語法,以定義All
選項的值。
根據預設, All
值包含合併表達式中的所有選項。這可能會變得很長,並可能有效能問題。有時候,最好指定自訂的所有值,例如萬用字元規則。
若要在自訂所有值選項中具有自訂 regex、glob 或 lucene 語法,則永遠不會逸出,因此您必須考慮資料來源的有效值。
全域變數
Grafana 具有全域內建變數,可用於查詢編輯器中的表達式。本主題會依字母順序列出並加以定義。這些變數在查詢、儀表板連結、面板連結和資料連結中很有用。
$__儀表板
此變數是目前儀表板的名稱。
$__from 和 $__to
Grafana 有兩個內建的時間範圍變數: $__from
和 $__to
。根據預設,它們目前一律插補為 epoch 毫秒,但您可以控制日期格式。
語法 | 範例結果 | 描述 |
---|---|---|
|
1594671549254 |
Unix 毫秒 epoch |
|
2020-07-13T20:19:09.254Z |
無 args,預設為 ISO 8601/RFC 3339 |
|
2020-07-13T20:19:09.254Z |
ISO 8601/RFC 3339 |
|
1594671549 |
Unix 秒時段 |
|
2020-07 |
不包含 : 字元的任何自訂日期格式 |
上述語法也適用於 ${__to}
。
$__interval
您可以使用 $__interval
變數做為依時間分組的參數 (適用於 InfluxDB、MySQL、Postgres、MSSQL)、日期長條圖間隔 (適用於 Elasticsearch),或做為摘要函數參數 (適用於 Graphite)。
Grafana 會自動計算可用於依查詢時間分組的間隔。當圖表上顯示的資料點超過 時,可以透過將間隔分組來提高查詢的效率。例如,如果您正在查看 3 個月的資料圖表,則可能無法在分鐘層級看到詳細資訊。按小時或天分組可讓查詢更有效率,而不會影響圖形顯示的內容。使用時間範圍和圖形寬度 (像素數) $__interval
計算。
近似計算: (to - from) / resolution
例如,當時間範圍為 1 小時且圖形為全螢幕時,間隔可能會計算為 2m
- 點會以 2 分鐘的間隔分組。如果時間範圍為 6 個月,且圖形為全螢幕,則間隔可能是 1d
(1 天) - 點會依天分組。
在 InfluxDB 資料來源中,舊版變數$interval
是相同的變數。 $__interval
應該改用 。
InfluxDB 和 Elasticsearch 資料來源具有Group by time interval
欄位,用於硬式編碼間隔或設定$__interval
變數的下限 (使用>
語法 -> >10m
)。
$__interval_ms
此變數是以毫秒為單位的$__interval
變數,而不是時間間隔格式的字串。例如,如果 $__interval
是 20m
,則 $__interval_ms
是 1200000
。
$__org
此變數是目前組織的 ID。 ${__org.name}
是目前組織的名稱。
$__user
${__user.id}
是目前使用者的 ID。 ${__user.login}
是目前使用者的登入控制代碼。 ${__user.email}
是目前使用者的電子郵件。
$__range
目前僅支援 Prometheus 和 Loki 資料來源。此變數代表目前儀表板的範圍。它由 計算to - from
。它有一個毫秒,第二個表示法稱為 $__range_ms
和 $__range_s
。
$__rate_interval
目前僅支援 Prometheus 資料來源。$__rate_interval
變數旨在用於 速率函數。
$timeFilter 或 $__timeFilter
$timeFilter
變數會傳回目前選取的時間範圍做為表達式。例如,時間範圍間隔Last 7 days
表達式為 time > now() - 7d
。
這在幾個地方使用,包括:
-
InfluxDB 資料來源的 WHERE 子句。Grafana 在查詢編輯器模式下自動將其新增至 InfluxDB 查詢。您可以在文字編輯器模式中手動新增:
WHERE $timeFilter
。 -
Azure Monitor 資料來源中的 Log Analytics 查詢。
-
MySQL、Postgres 和 MSSQL 中的 SQL 查詢。
-
$__timeFilter
變數用於 MySQL 資料來源。
鏈結變數
鏈結變數也稱為連結變數或巢狀變數,是在其變數查詢中具有一或多個其他變數的查詢變數。本節說明鏈結變數的運作方式,並提供使用鏈結變數的範例儀表板連結。
每個資料來源的鏈結變數查詢都不同,但所有資料來源的 內部部署都相同。您可以在允許它們的任何資料來源中使用鏈結變數查詢。
可以建立極為複雜的連結範本儀表板,深度為 5 或 10 個層級。在技術上,您可以走得多深或多複雜沒有限制,但您擁有的連結越多,查詢負載越大。
最佳實務和秘訣
下列實務將讓您的儀表板和變數更易於使用。
建立新的連結變數
-
鏈結變數會建立父/子相依性。您可以將它們設想成梯子或樹。
-
建立新鏈結變數的最簡單方法是複製要以新變數為基礎的變數。在變數清單中,按一下變數項目右側的複製變數圖示來建立複本。然後,您可以將 新增至父變數的查詢。
-
以這種方式建立的新變數會出現在清單底部。您可能需要將其拖曳至清單中的不同位置,才能使其符合邏輯順序。
變數順序
您可以按一下每個項目右側的向上和向下箭頭,以變更儀表板變數清單中的變數順序。Grafana 會根據此清單列出由左至右的變數下拉式清單,變數位於最左上方。
-
在子變數之前,列出沒有相依性的變數。
-
每個變數都應遵循其相依的變數。
-
請記住,UI 中沒有顯示哪些變數具有相依性關係。以邏輯順序列出變數,讓其他使用者 (和您自己) 變得容易。
複雜性考量
變數中的相依性層越多,變更變數後更新儀表板所需的時間就越長。
例如,如果您有一系列四個連結變數 (國家、區域、伺服器、指標),而且您變更根變數值 (國家),則 Grafana 必須對所有相依變數執行查詢,然後才能更新儀表板中的視覺效果。
管理變數
變數頁面可讓您新增
移動:您可以使用拖放方式將變數向上或向下移動清單。
複製:若要複製變數,請按一下右側的一組圖示中的複製圖示。這會建立變數的複本,其名稱為以 開頭的原始變數copy_of_
。
刪除:若要刪除變數,請按一下右側的一組圖示中的垃圾桶圖示。
使用 regex 篩選變數
使用 Regex 查詢選項,您可以篩選變數查詢傳回的選項清單,或修改傳回的選項。
此頁面說明如何使用 regex 在變數下拉式清單中篩選/修改值。
使用 Regex 查詢選項,您可以篩選變數查詢傳回的選項清單,或修改傳回的選項。如需詳細資訊,請參閱規則表達
下列範例顯示篩選下列選項清單
backend_01
backend_02
backend_03
backend_04
篩選,只傳回結尾為 01
或 02
的選項
Regex:
/
(
01|02
)
$/
結果:
backend_01
backend_02
使用 regex 擷取群組來篩選和修改選項,以傳回部分文字
Regex:
/.* ( 01|02 ) /
結果:
01 02
篩選和修改 - Prometheus 範例
選項清單:
up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000
up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000
up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000
Regex:
/. *instance="
(
[^"]*
)
.*/
結果:
demo.robustperception.io:9090
demo.robustperception.io:9093
demo.robustperception.io:9100
使用具名文字和值擷取群組進行篩選和修改
使用具名擷取群組,您可以從變數查詢傳回的選項中擷取不同的「文字」和「值」部分。這可讓變數下拉式清單包含每個可選取值的易記名稱。
例如,在查詢 node_hwmon_chip_names
Prometheus 指標時, chip_name
是該chip
值的許多友好者。因此,下列變數查詢結果:
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_0",chip_name="enp216s0f0np0"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_1",chip_name="enp216s0f0np1"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_2",chip_name="enp216s0f0np2"} 1
node_hwmon_chip_names{chip="0000:d7:00_0_0000:d8:00_3",chip_name="enp216s0f0np3"} 1
通過下列 Regex:
/chip_name="(?<text>[ ^ " ] + ) |chip=" (?<value >[ ^ " ] + )/g
會產生下列下拉式清單:
Display Name Value
------------ -------------------------
enp216s0f0np0 0000:d7:00_0_0000:d8:00_0
enp216s0f0np1 0000:d7:00_0_0000:d8:00_1
enp216s0f0np2 0000:d7:00_0_0000:d8:00_2
enp216s0f0np3 0000:d7:00_0_0000:d8:00_3
僅支援 text
和value
擷取群組名稱。
變數頁面可讓您輕鬆地識別在其他變數或儀表板中是否參考 (或使用) 變數。
任何參考或使用的變數旁邊都有綠色核取記號,而未參考的變數旁邊則有橘色的提醒圖示。此外,所有參考的變數在綠色核取記號旁都有相依性圖示。您可以選擇 圖示以檢視相依性映射。您可以移動相依性映射。您可以使用滑鼠滾輪或同等項目來放大或縮小。