本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
变量语法
本文档主题专为支持 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]]
— 请勿使用。此语法已过时,已被弃用。它将在未来的版本中删除。
在将查询发送到您的数据源之前,会对查询进行插值,这意味着变量将替换为其当前值。在插值过程中,为了符合查询语言的语法及其使用位置,可能会对变量值进行转义。例如,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
以 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-石墨
将具有多个值的变量格式化为 glob(用于 Graphite 查询)。
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-Elasticsearc
在 Elasticsearch 中以 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'"
Sqlstring
将单值和多值变量格式化为逗号分隔的字符串,在每个值'
中使用转义符''
并用引号将每个值加上引号。'
servers = [ "test'1", "test2" ] String to interpolate: '${servers:sqlstring}' Interpolation result: "'test''1','test2'"
文本
将单值和多值变量格式化为其文本表示形式。对于单个变量,它只会返回文本表示形式。对于多值变量,它将返回与+
组合的文本表示形式。
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"