菜单
Grafana Cloud Enterprise 开源

InfluxDB 模板变量

您可以使用变量,而无需在指标查询中硬编码服务器、应用程序和传感器名称等详细信息。Grafana 将这些变量显示在仪表盘顶部的下拉选择框中,以帮助您更改仪表盘中显示的数据。Grafana 将此类变量称为模板变量。

有关使用变量和模板的更多信息,请参阅以下文档

使用查询变量

通过添加查询模板变量,您可以编写 InfluxDB 元数据探索查询。这些查询返回度量名称、键名称和键值等结果。

欲了解更多信息,请参阅添加查询变量

要在 **Query** 变量中创建包含 hostname 标签所有值的变量,请使用以下查询格式

sql
SHOW TAG VALUES WITH KEY = "hostname"

链式或嵌套变量

您还可以创建嵌套变量,有时也称为链式变量

例如,如果您有一个名为 region 的变量,您可以使用以下查询将 hosts 变量配置为仅显示选定区域中的主机

sql
SHOW TAG VALUES WITH KEY = "hostname"  WHERE region = '$region'

您还可以获取给定度量的键名称

sql
SHOW TAG KEYS [FROM <measurement_name>]

如果您有一个包含键名称的变量,可以在 **GROUP BY** 子句中使用它。这允许您通过从仪表盘顶部的变量列表中选择来调整分组

使用即时过滤器

InfluxDB 支持 **即时过滤器** 变量类型。此变量类型允许您定义多个键/值过滤器,Grafana 会将这些过滤器自动应用于您的所有 InfluxDB 查询。

欲了解更多信息,请参阅添加即时过滤器

选择变量语法

InfluxDB 数据源支持两种变量语法,可在 **Query** 字段中使用

  • $<varname> - 这种语法易于读写,但无法在单词或表达式中间使用变量。

    sql
    SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^$host$/ AND $timeFilter GROUP BY time($__interval), "hostname"
  • ${varname} - 当您想在表达式中间插入变量时,请使用这种语法。

    sql
    SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^[[host]]$/ AND $timeFilter GROUP BY time($__interval), "hostname"

当您启用 **Multi-value** 或 **Include all value** 选项时,Grafana 会将标签从纯文本转换为正则表达式兼容的字符串,因此您必须使用 =~ 而不是 =

模板化仪表盘示例

要查看模板化仪表盘的示例,请参阅此InfluxDB 示例仪表盘