本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
變數語法
本文件主題是針對支援 Grafana 10.x 版的 Grafana 工作區所設計。
如需支援 Grafana 9.x 版的 Grafana 工作區,請參閱。在 Grafana 第 9 版中工作
如需支援 Grafana 8.x 版的 Grafana 工作區,請參閱。在 Grafana 第 8 版中工作
面板標題和量度查詢可以使用兩種不同的語法來參考變數。
-
$varname
— 此語法很容易閱讀,但不允許您在單詞中間使用變量。範例:
apps.frontend.$server.requests.count
-
${var_name}
— 當您想要在運算式中間使用變數時,請使用此語法。 -
${var_name:<format>}
— 此格式可讓您更好地控制 Grafana 解譯值的方式。如需詳細資訊,請參閱此清單後面的進階變數格式選項。 -
[[varname]]
— 請勿使用。這個語法是舊的,已被棄用。它將在 future 的版本中移除。
在將查詢傳送至資料來源之前,會內插查詢,這表示變數會被其目前值取代。在內插期間,變數值可能會逸出,以符合查詢語言的語法及其使用位置。例如,在 InfluxDB 或 Prometheus 查詢的正則表達式中使用的變量將被正則表達式轉義。
進階變數格式選項
變數內插補點的格式取決於資料來源,但在某些情況下,您可能會想要變更預設格式。
例如,MySQL 資料來源的預設值是以逗號分隔的方式加入多個值,並加上引號:'server01','server02'
。在某些情況下,您可能希望使用不帶引號的逗號分隔字符串:server01,server02
。您可以使用下面列出的高級變量格式化選項來實現這一目標。
一般語法
語法: ${var_name:option}
如果指定了任何無效的格式化選項,則glob
為預設/後援選項。
CSV
將具有多個值的變數格式化為逗號分隔字串。
servers = [ 'test1', 'test2' ] String to interpolate: '${servers:csv}' Interpolation result: 'test1,test2'
分散式
格式化與 OpenTSDB 的自定義格式的多個值的變量。
servers = [ 'test1', 'test2' ] String to interpolate: '${servers:distributed}' Interpolation result: 'test1,servers=test2'
雙引號
將單值和多值變數格式化為逗號分隔的字串,在每個值"
中逸出,\"
並以每個值加上引號。"
servers = [ 'test1', 'test2' ] String to interpolate: '${servers:doublequote}' Interpolation result: '"test1","test2"'
水珠-石墨
將具有多個值的變量格式化為 glob(用於石墨查詢)。
servers = [ 'test1', 'test2' ] String to interpolate: '${servers:glob}' Interpolation result: '{test1,test2}'
JSON
將具有多個值的變數格式化為逗號分隔字串。
servers = [ 'test1', 'test2' ] String to interpolate: '${servers:json}' Interpolation result: '["test1", "test2"]'
Lucene-彈性搜索
格式化具有 Lucene 格式的多個值的變量彈性搜索。
servers = [ 'test1', 'test2' ] String to interpolate: '${servers:lucene}' Interpolation result: '("test1" OR "test2")'
百百年代
格式化單一和多值變數,以便在 URL 參數中使用。
servers = [ 'foo()bar BAZ', 'test2' ] String to interpolate: '${servers:percentencode}' Interpolation result: 'foo%28%29bar%20BAZ%2Ctest2'
管
將具有多個值的變量格式化為管道分隔的字符串。
servers = [ 'test1.', 'test2' ] String to interpolate: '${servers:pipe}' Interpolation result: 'test1.|test2'
原料
關閉資料來源特定的格式,例如 SQL 查詢中的單引號。
servers = [ 'test.1', 'test2' ] String to interpolate: '${var_name:raw}' Interpolation result: 'test.1,test2'
Regex
格式化具有多個值的變量到正則表達式字符串。
servers = [ 'test1.', 'test2' ] String to interpolate: '${servers:regex}' Interpolation result: '(test1\.|test2)'
单引号
將單值和多值變數格式化為逗號分隔的字串,在每個值'
中逸出,\'
並以每個值加上引號。'
servers = [ 'test1', 'test2' ] String to interpolate: '${servers:singlequote}' Interpolation result: "'test1','test2'"
方字符串
將單值和多值變數格式化為逗號分隔的字串,在每個值'
中逸出,''
並以每個值加上引號。'
servers = [ "test'1", "test2" ] String to interpolate: '${servers:sqlstring}' Interpolation result: "'test''1','test2'"
Text (文字)
將單值和多值變量格式化為其文本表示形式。對於單個變量,它只會返回文本表示。對於多值變量,它將返回與+
組合的文本表示。
servers = [ "test1", "test2" ] String to interpolate: '${servers:text}' Interpolation result: "test1 + test2"
查詢參數
將單值和多值變數格式化為其查詢參數表示。範例:var-foo=value1&var-foo=value2
servers = [ "test1", "test2" ] String to interpolate: '${servers:queryparam}' Interpolation result: "var-servers=test1&var-servers=test2"