本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
新增和管理變數
本文件主題是針對支援 Grafana 9.x 版的 Grafana 工作區所設計。
如需支援 Grafana 10.x 版的 Grafana 工作區,請參閱。在 Grafana 第 10 版工作
如需支援 Grafana 8.x 版的 Grafana 工作區,請參閱。在 Grafana 第 8 版中工作
下表列出了 Grafana 隨附的變量的類型。
變數類型 | 描述 |
---|---|
Query |
查詢產生的值清單,例如度量名稱、伺服器名稱、感應器 ID、資料中心等。新增查詢變數。 |
自訂 |
使用逗號分隔清單手動定義變數選項。新增自訂變數。 |
Text box (文字方塊) |
顯示具有可選預設值的自由文字輸入欄位。新增文字方塊變數。 |
常數 |
定義一個隱藏的常數。添加一個常量變量。 |
資料來源 |
快速變更整個儀表板的資料來源。新增資料來源變數。 |
Interval (間隔) |
間隔變量代表時間跨度。新增間隔變數。 |
特定篩選器 |
自動新增至資料來源 (Prometheus、洛基、InfluxDB 和彈性搜尋) 的所有度量查詢的鍵值篩選器。新增特定篩選器。 |
全域變數 |
可用於查詢編輯器中運算式的內建變數。請參閱全局變量。 |
链变量 |
變數查詢可以包含其他變數。請參閱鏈接變量。 |
輸入一般選項
您必須為您建立的任何類型的變數輸入一般選項。
輸入一般選項
-
導覽至您要為其建立變數的儀表板,然後選取頁面頂端的儀表板設定 (齒輪) 圖示。
-
在「變數」標籤上,選取「新增」。
-
輸入變數的「名稱」。
-
在「類型」清單中,選取「查詢」。
-
(選擇性) 在標籤中,輸入變數下拉式清單的顯示名稱。
如果您沒有輸入顯示名稱,則下拉式清單標籤就是變數名稱。
-
選擇「隱藏」選項:
-
未選取 (空白):變數下拉式清單會顯示變數「名稱」或「標籤」值。
-
標籤:變量下拉列表僅顯示選定的變量值和向下箭頭。
-
變數:儀表板上不會顯示任何變數下拉式清單。
-
新增查詢變數
查詢變數可讓您撰寫可傳回度量名稱、標籤值或索引鍵清單的資料來源查詢。例如,查詢變數可能會傳回伺服器名稱、感應器 ID 或資料中心的清單。變數值會隨著資料來源查詢動態擷取選項而變更。
查詢變數通常只支援字串。如果您的查詢傳回數字或任何其他資料類型,您可能需要將它們轉換為字串,才能將它們用作變數。例如,對於 Azure 資料來源,您可以將 tostring
查詢運算式可以包含對其他變數的參考,實際上會建立連結的變數。Grafana 會偵測到此變數,並在變數的其中一個連結變數變更時自動重新整理變數。
注意
每個資料來源的查詢運算式都不同。如需詳細資訊,請參閱資料來源的文件。
若要新增查詢變數
-
如上所述,輸入一般選項。
-
在 [資料來源] 清單中,選取查詢的目標資料來源。
-
在「重新整理」清單中,選取變數何時應更新選項。
-
在儀表板載入上:每次載入儀表板時查詢資料來源。這會降低儀表板載入速度,因為必須先完成變數查詢,才能初始化儀表板。
-
在時間範圍變更時:當儀表板時間範圍變更時查詢資料來源。僅當您的變數選項查詢包含時間範圍篩選器或從屬於儀表板時間範圍時,才使用此選項。
-
-
在「查詢」欄位中,輸入查詢。
-
查詢欄位會根據您的資料來源而有所不同。某些資料來源具有自訂查詢編輯器。
-
如果您在單一輸入欄位查詢編輯器中需要更多空間,請將游標移到欄位右下角的行上,然後向下拖曳以展開。
-
-
(選擇性) 在 Regex 欄位中,輸入 regex 運算式,以篩選或擷取資料來源查詢所傳回之名稱的特定部分。要查看示例,請參閱使用正則表達式過濾變量。
-
在「排序」清單中,選取要在下拉式清單中顯示之值的排序順序。預設選項「已停用」(Disabled) 表示將使用資料來源查詢傳回的選項順序。
-
(選擇性) 輸入選取選項。
-
在值的預覽中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取「新增」(Add) 以將變數新增至圖標板。
新增自訂變數
對不會變更的值 (例如數字或字串) 使用自訂變數。
例如,如果您的伺服器名稱或區域名稱永遠不會變更,則您可能想要將它們建立為自訂變數,而不是查詢變數。因為它們不會變更,所以您可以在鏈結變數中使用它們,而不是其他查詢變數。這將減少鏈接變量更新時 Grafana 必須發送的查詢數量。
若要新增自訂變數
-
如上所述,輸入一般選項。
-
在
以逗號清單分隔的值,請在逗號分隔的清單中輸入此變數的值。您可以包含數字、字串或以空格和冒號分隔的索引鍵值配對。例如
key1 : value1,key2 : value2
。 -
(選擇性) 輸入選取選項。
-
在值的預覽中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取「新增」(Add) 以將變數新增至圖標板。
新增文字方塊變數
文字方塊變數會顯示具有可選預設值的自由文字輸入欄位。這是最有彈性的變數,因為您可以輸入任何值。如果您的量度具有高基數,或者想要同時更新管控面板中的多個面板,請使用此類型的變數。
加入文字方塊變數的步驟
-
如上所述,輸入一般選項。
-
(選擇性) 在「預設值」欄位中,選取變數的預設值。如果您沒有在此欄位中輸入任何內容,Grafana 會顯示空白文字方塊供使用者輸入文字。
-
在值的預覽中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取「新增」(Add) 以將變數新增至圖標板。
添加一個常量變量
常數變數可讓您定義隱藏的常數。這對於您要共用的儀表板的度量路徑前置詞非常有用。匯出管控面板時,常數變數會轉換為匯入選項。
常量變量不靈活。每個常數變數只保留一個值,除非您更新變數設定,否則無法更新。
當您有需要在查詢中包含但不想在每個查詢中重新輸入的複雜值時,常數變數非常有用。例如,如果您有一個名為的服務器路徑i-0b6a61efe2ab843gg
,那麼您可以用名為的變量替換它$path_gg
。
若要加入常數變數
-
如上所述,輸入一般選項。
-
在「值」欄位中,輸入變數值。您可以輸入字母、數字和符號。如果使用原始格式
,甚至可以使用通配符。 -
在值的預覽中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取「新增」(Add) 以將變數新增至圖標板。
新增資料來源變數
資料來源變數可讓您快速變更整個儀表板的資料來源。如果您有資料來源的多個執行個體 (也許在不同的環境中),它們就很有用。
若要新增資料來源變數
-
如上所述,輸入一般選項。
-
在「類型」清單中,選取變數的目標資料來源。
-
(選擇性) 在執行個體名稱篩選器中,在變數值下拉式清單中輸入要從中選擇的資料來源執行個體的 regex 篩選器。將此欄位保留空白以顯示所有實例。
-
(選擇性) 輸入選取選項。
-
在值的預覽中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取「新增」(Add) 以將變數新增至圖標板。
新增間隔變數
使用間隔變數來表示時間範圍1m
,例如1h
、或1d
。您可以通過時間命令將它們視為儀表板範圍的組。間隔變數會變更資料在視覺效果中的分組方式。您也可以使用「自動選項」,在每個時間範圍內傳回設定數量的資料點。
您可以使用間隔變數做為依時間 (針對 InfluxDB)、日期長條圖間隔 (適用於 Elasticsearch) 分組的參數,或做為摘要函數參數 (針對石墨)。
若要新增間隔變數
-
如上所述,輸入一般選項。
-
在「值」欄位中,輸入您要顯示在變數下拉式清單中的時間範圍間隔。支援下列時間單位:
s (seconds)
m (minutes)
h (hours)
、d (days)
、w (weeks)
、M (months)
、和y (years)
。您也可以接受或編輯預設值:1m,10m,30m,1h,6h,12h,1d,7d,14d,30d
。 -
(選擇性) 如果您要將選項新增至清單,請開啟「自動
auto
選項」。此選項可讓您指定目前時間範圍應分割多少次,以計算目前的auto
時間範圍。如果您將其開啟,則會出現另外兩個選項:-
步數- 選取目前時間範圍將被劃分以計算值的次數,類似於「最大資料點」查詢選項。例如,如果目前可見的時間範圍為 30 分鐘,則
auto
間隔會將資料分組為 30 個 1 分鐘的增量。預設值為 30 個步驟。 -
最小間隔- 下面的步數間隔不會劃分時間的最小臨界值。若要繼續 30 分鐘的範例,如果最小間隔設定為 2m,則 Grafana 會將資料分組為 15 個兩分鐘的增量。
-
-
在值的預覽中,Grafana 會顯示目前變數值的清單。檢閱它們,以確保它們符合您的期望。
-
選取「新增」(Add) 以將變數新增至圖標板。
間隔變數範例
下面的例子顯示了石墨函數myinterval
的模板變量:
summarize($myinterval, sum, false)
新增臨機操作篩選器
臨機操作篩選器可讓您新增機碼值篩選器,這些篩選器會自動新增至使用指定資料來源的所有量度查詢。與其他變數不同,您不會在查詢中使用隨機篩選器。相反地,您可以使用臨機操作篩選器來撰寫現有查詢的篩選器。
注意
特設篩選器變數僅適用於 Prometheus、洛基、InfluxDB 和彈性搜尋資料來源。
-
如上所述,輸入一般選項。
-
在「資料來源」清單中,選取目標資料來源。
-
選取「新增」(Add) 以將變數新增至圖標板。
建立臨機操作篩選器
臨機操作過濾器是可用的最複雜和靈活的變量選項之一。此變數可讓您建立儀表板範圍的臨機操作查詢,而不是一般的變數選項清單。以此方式套用的篩選會套用至管控面板上的所有面板。
設定變數選取選項
「選取選項」是可用來管理變數選項選取項的功能。所有選取選項都是可選的,並且預設為關閉。
多值變數
使用選擇的多個值插入變量非常棘手,因為如何將多個值格式化為在使用該變量的給定上下文中有效的字符串並不簡單。Grafana 試圖通過允許每個數據源插件通知模板插值引擎用於多個值的格式來解決這個問題。
注意
變數上的 [自訂所有值] 選項必須為空白,Grafana 才能將所有值格式化為單一字串。如果保留空白,則 Grafana 將查詢中的所有值串聯 (加在一起)。例如 value1,value2,value3
。如果使用自訂all
值,則值將會是*
或all
。
具有 Graphite 資料來源的多值變數
石墨使用水珠表達式。在這種情況下,具有多個值的變量將被內插,{host1,host2,host3}
就好像當前變量值是 host1,host 2 和 host3。
具有 Prometheus 或 InfluxDB 資料來源的多值變數
InfluxDB 和 Prometheus 使用正則表達式,因此相同的變量將被插入為. (host1|host2|host3)
每個值也會被正則表達式轉義。如果沒有,帶有正則表達式控制字符的值將破壞正則表達式。
具有彈性資料來源的多值變數
彈性搜索使用 Lucene 查詢語法,因此相同的變量將被格式化為。("host1" OR "host2" OR "host3")
在這種情況下,每個值都必須轉義,以便該值僅包含 lucene 控制字和引號。
疑難排解多值變數
自動轉義和格式化可能會導致問題,掌握背後的邏輯可能很棘手。特別是對於 InfluxDB 和 Prometheus,其中使用正則表達式語法要求該變量在正則表達式運算符上下文中使用。
如果您不希望 Grafana 執行此自動正則表達式轉義和格式化,則必須執行以下操作之一:
-
關閉「多值」或「包含全部」 選項。
-
使用原始變數格式
。
包含全部選項
Grafana 將一個All
選項添加到變量下拉列表中。如果使用者選取此選項,則會選取所有變數選項。
自訂所有值
只有在選取「包括全部」選項時,此選項才可見。
在「自訂全部值」欄位中輸入正則運算式、全域或 lucene 語法,以定義選項的值。All
依預設,該All
值包括組合運算式中的所有選項。這可能會變得很長,並且可能會出現性能問題。有時,指定自定義所有值可能會更好,例如通配符正則表達式。
要在「自定義所有值」選項中使用自定義正則表達式,globs 或 lucene 語法,它永遠不會被轉義,因此您必須考慮什麼是數據源的有效值。
全域變數
Grafana 具有全域內建變數,可用於查詢編輯器中的運算式。本主題會依字母順序列出並加以定義。這些變數在查詢、管控面板連結、面板連結和資料連結中非常有用。
$ __ 儀表板
此變數是目前儀表板的名稱。
$ __ 從和 $ __ 到
Grafana 有兩個內建的時間範圍變數:$__from
和。$__to
它們目前總是在默認情況下內插為 epoch 毫秒,但您可以控制日期格式。
語法 | 示例結果 | 描述 |
---|---|---|
|
1594671549254 |
毫秒紀元 |
|
2020-07-13T 20:09.254 |
沒有參數,預設值為 ISO 8601/RFC 3339 |
|
2020-07-13T 20:09.254 |
異 8601/RFC 3339 |
|
1594671549 |
秒纪元 |
|
2020-07 |
任何不包含:字元的自訂日期格式 |
上面的語法也適用於${__to}
。
$ __ 間隔
您可以使用$__interval
變數做為參數,依時間 (針對 InfluxDB、MySQL、Postgres、MSSQL)、日期長條圖間隔 (針對彈性搜尋) 或做為摘要函數參數 (針對石墨) 進行分組。
Grafana 會自動計算可用於在查詢中按時間分組的間隔。當資料點數量超過圖表上可顯示的數量時,可以透過較大的間隔進行分組,使查詢更有效率。例如,如果您查看的是 3 個月資料的圖表,則可能無法查看分鐘層級的詳細資料。按小時或日期分組可以使查詢更有效率,而不會影響圖表顯示的內容。使用時間範圍和圖形的寬度 (像素數) 來計算。$__interval
近似計算:(to - from) / resolution
例如,當時間範圍為 1 小時且圖形為全螢幕時,可能會將間隔計算為 2m
-點會以 2 分鐘的間隔進行分組。如果時間範圍為 6 個月,並且圖表是全屏,則間隔可能是1d
(1 天)-點按天分組。
在 InfluxDB 資料來源中,舊版變數$interval
是相同的變數。 $__interval
應該用來代替。
InfluxDB 和 Elasticsearch 資料來源具有用於對間隔進行硬式編碼或設定$__interval
變數的最小限制的Group by time
interval
欄位 (使用語法->)。>
>10m
$ __ 間隔 _ 毫秒
該變量是以毫秒為單位的$__interval
變量,而不是時間間隔格式化的字符串。例如,如果$__interval
是,20m
則$__interval_ms
是1200000
。
$ __組織
此變數是目前組織的 ID。 ${__org.name}
是目前組織的名稱。
$ __ 用戶
${__user.id}
是目前使用者的 ID。 ${__user.login}
是目前使用者的登入控制代碼。 ${__user.email}
是目前使用者的電子郵件。
$ __ 範圍
目前僅支援 Prometheus 和洛基資料來源。此變數表示目前儀表板的範圍。它是由計算to -
from
。它有一個毫秒和第二個表示稱為$__range_ms
和$__range_s
。
$ $ 速率間隔
目前僅支援 Prometheus 資料來源。該$__rate_interval
變量是為了在速率函數中使用。
$ 時間過濾器或 $ __ 時間過濾器
$timeFilter
變數會傳回目前選取的時間範圍做為運算式。例如,時間範圍間隔Last 7
days
運算式為time > now() - 7d
。
這在幾個地方使用,包括:
-
資料庫資料來源的 WHERE 子句。Grafana 在查詢編輯器模式下自動將其添加到 InfluxDB 查詢中。您可以在文字編輯器模式下手動新增:
WHERE $timeFilter
。 -
Azure 監視器資料來源中的記錄分析查詢。
-
SQL 查詢中的 MySQL 查詢, 郵件, 和 MSSQL.
-
該
$__timeFilter
變量在 MySQL 數據源中使用。
链变量
鏈接變量,也稱為鏈接變量或嵌套變量,是在其變量查詢中具有一個或多個其他變量的查詢變量。本節說明鏈結變數的工作方式,並提供使用鏈結變數之範例儀表板的連結。
鏈接變量查詢對於每個數據源都不同,但所有數據源的前提都是相同的。您可以在允許它們的任何資料來源中使用鏈結變數查詢。
非常複雜的鏈接模板儀表板是可能的,深度為 5 或 10 個級別。從技術上講,您可以進入的深度或複雜度沒有限制,但是您擁有的鏈接越多,查詢負載就越大。
最佳做法和提示
下列作法可讓您的儀表板和變數更易於使用。
建立新的連結變數
-
鏈接變量創建父/子依賴關係。您可以將它們設想為梯子或樹。
-
創建新的鏈接變量的最簡單方法是複製要基於新變量的變量。在變數清單中,按一下變數項目右側的「複製變數」圖示以建立複本。然後,您可以將其添加到父變量的查詢中。
-
以這種方式建立的新變數會顯示在清單底部。您可能需要將其拖動到列表中的其他位置,以使其按邏輯順序排列。
可變順序
您可以按一下每個項目右側的向上和向下箭頭,變更儀表板變數清單中變數的順序。Grafana 根據此列表從左到右列出變量下拉菜單,在最左邊的頂部的變量。
-
在其子變量之前列出頂部沒有依賴關係的變量。
-
每個變量應遵循它所依賴的變量。
-
請記住,UI 中沒有指示哪些變量具有依賴關係。以邏輯順序列出變量,以便在其他用戶(和您自己)上輕鬆使用。
複雜性考量
變數中的相依層次越多,變更變數後更新儀表板所需的時間就越長。
例如,如果您有一系列四個連結的變數 (國家/地區、地區、伺服器、量度),且變更了根變數值 (國家/地區),則 Grafana 必須先對所有相依變數執行查詢,才能更新儀表板中的視覺效果。
管理變數
「變數」頁面可讓您新增
移動:您可以使用拖放方式在清單中上下移動變數。
複製:若要複製變數,請按一下右側圖示集中的複製圖示。這將創建一個變量的副本,其名稱前綴為原始變量。copy_of_
刪除:若要刪除變數,請按一下右側圖示集中的垃圾桶圖示。
使用正則表達式過濾
使用正則表達式查詢選項,您可以過濾由變量查詢返回的選項列表或修改返回的選項。
此頁面顯示瞭如何使用正則表達式來過濾/修改變量下拉列表中的值。
使用正則表達式查詢選項,您可以過濾由變量查詢返回的選項列表或修改返回的選項。如需詳細資訊,請參閱 Mozilla 規則運算式
下列範例顯示下列選項清單的篩選
backend_01 backend_02 backend_03 backend_04
篩選,以便只傳回結尾02
為01
或的選項
正則表達式
/ ( 01|02 ) $/
結果:
backend_01 backend_02
使用正則表達式捕獲組過濾和修改選項以返回部分文本
正則表達式
/.* ( 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
正則表達式
/. *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
通過以下正則表達式傳遞:
/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
擷取群組名稱。
變數頁面可讓您輕鬆識別變數是否正在其他變數或儀表板中參照 (或使用)。
任何參照或使用的變數旁邊都會有一個綠色核取記號,而未參照的變數旁邊會有橙色警告圖示。此外,所有參考的變數都會在綠色核取記號旁邊顯示相依性圖示。您可以選取圖示來檢視相依性對映。依賴關係映射可以被移動。您可以使用滑鼠滾輪或同等功能進行放大或縮小。