面板标题和度量查询可以使用两种不同的语法来引用变量:
$varname 这种语法易于阅读,但不能在单词中间使用变量。示例:apps.frontend.$server.requests.count
${var_name} 在表达式中间插入变量时使用此语法。
${var_name:<format>} 此格式可让您对 Grafana 如何插值进行更多控制。有关所有格式化类型的更多详情,请参阅高级变量格式选项。
[[varname]] 请勿使用,已废弃的旧语法,将在以后的版本中删除。
在向数据源发送查询之前,会对查询进行插值,即用当前值替换变量。在插值过程中,变量值可能会被转义,以符合查询语言的语法和使用场合。例如,在 InfluxDB 或 Prometheus 查询的 regex 表达式中使用的变量将被 regex 转义。有关插值过程中值转义的详细信息,请阅读数据源特定文档主题。
有关覆盖数据源默认格式的高级语法,请参阅高级变量格式选项。
变量插值的格式取决于数据源,但在某些情况下可能需要更改默认格式。
例如,MySql 数据源的默认格式是将多个值用逗号分隔并加上引号: 'server01','server02'。在某些情况下,你可能希望使用不带引号的逗号分隔字符串:server01,server02。你可以使用下面列出的高级变量格式化选项来实现这一点。
语法:${var_name:option}
测试 Grafana Play 网站上的格式化选项。
如果指定了任何无效的格式化选项,则 glob 将是 default/fallback 选项。
另一种语法(将来可能被淘汰)是 [[var_name:option]]。
将包含多个值的变量格式化为逗号分隔的字符串。
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(用于 Graphite 查询)。
servers = ['test1', 'test2'] String to interpolate: '${servers:glob}' Interpolation result: '{test1,test2}'
将包含多个值的变量格式化为逗号分隔的字符串。
servers = ['test1', 'test2'] String to interpolate: '${servers:json}' Interpolation result: '["test1", "test2"]'
以 Lucene 格式为 Elasticsearch 格式化包含多个值的变量。
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'
数据源变量的原始格式返回数据源的 UID(唯一标识符),而不是其名称。
datasourceVariable = 'd7bbe725-9e48-4af8-a0cb-6cb255d873a3' String to interpolate: '${datasourceVariable:raw}' Interpolation result: 'd7bbe725-9e48-4af8-a0cb-6cb255d873a3'
将包含多个值的变量格式化为正则表达式字符串。
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'"
将单值和多值变量格式化为文本格式。对于单值变量,它只返回文本表示形式。对于多值变量,它将结合 + 返回文本表示形式。
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"