InfluxDB 模板变量
您可以使用变量,而无需在指标查询中硬编码服务器、应用程序和传感器名称等详细信息。Grafana 将这些变量显示在仪表盘顶部的下拉选择框中,以帮助您更改仪表盘中显示的数据。Grafana 将此类变量称为模板变量。
有关使用变量和模板的更多信息,请参阅以下文档
使用查询变量
通过添加查询模板变量,您可以编写 InfluxDB 元数据探索查询。这些查询返回度量名称、键名称和键值等结果。
欲了解更多信息,请参阅添加查询变量。
要在 **Query** 变量中创建包含 hostname
标签所有值的变量,请使用以下查询格式
SHOW TAG VALUES WITH KEY = "hostname"
链式或嵌套变量
您还可以创建嵌套变量,有时也称为链式变量。
例如,如果您有一个名为 region
的变量,您可以使用以下查询将 hosts
变量配置为仅显示选定区域中的主机
SHOW TAG VALUES WITH KEY = "hostname" WHERE region = '$region'
您还可以获取给定度量的键名称
SHOW TAG KEYS [FROM <measurement_name>]
如果您有一个包含键名称的变量,可以在 **GROUP BY** 子句中使用它。这允许您通过从仪表盘顶部的变量列表中选择来调整分组
使用即时过滤器
InfluxDB 支持 **即时过滤器** 变量类型。此变量类型允许您定义多个键/值过滤器,Grafana 会将这些过滤器自动应用于您的所有 InfluxDB 查询。
欲了解更多信息,请参阅添加即时过滤器。
选择变量语法
InfluxDB 数据源支持两种变量语法,可在 **Query** 字段中使用
$<varname>
- 这种语法易于读写,但无法在单词或表达式中间使用变量。SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^$host$/ AND $timeFilter GROUP BY time($__interval), "hostname"
${varname}
- 当您想在表达式中间插入变量时,请使用这种语法。SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^[[host]]$/ AND $timeFilter GROUP BY time($__interval), "hostname"
当您启用 **Multi-value** 或 **Include all value** 选项时,Grafana 会将标签从纯文本转换为正则表达式兼容的字符串,因此您必须使用 =~
而不是 =
。
模板化仪表盘示例
要查看模板化仪表盘的示例,请参阅此InfluxDB 示例仪表盘。