变量语法 - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

变量语法

本文档主题专为支持 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"