Grafana 教程

变量语法

面板标题和度量查询可以使用两种不同的语法来引用变量:

  • $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]]。

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 - Graphite

将具有多个值的变量格式化为 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 - Elasticsearch

以 Lucene 格式为 Elasticsearch 格式化包含多个值的变量。

servers = ['test1', 'test2']
String to interpolate: '${servers:lucene}'
Interpolation result: '("test1" OR "test2")'

Percentencode

格式化单值和多值变量,供 URL 参数使用。

servers = ['foo()bar BAZ', 'test2']
String to interpolate: '${servers:percentencode}'
Interpolation result: 'foo%28%29bar%20BAZ%2Ctest2'

Pipe

将包含多个值的变量格式化为以管道分隔的字符串。

servers = ['test1.', 'test2']
String to interpolate: '${servers:pipe}'
Interpolation result: 'test1.|test2'

Raw

数据源变量的原始格式返回数据源的 UID(唯一标识符),而不是其名称。

datasourceVariable = 'd7bbe725-9e48-4af8-a0cb-6cb255d873a3'
String to interpolate: '${datasourceVariable:raw}'
Interpolation result: 'd7bbe725-9e48-4af8-a0cb-6cb255d873a3'

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'"

Sql 字符串

将单值和多值变量格式化为逗号分隔的字符串,用 “''” 转义每个值中的 “'”,并用 “'” 引号每个值。

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"
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号