如何在 Grafana + InfluxDB 中使用键/值仪表板变量?

Chr*_*s R 6 influxdb grafana grafana-templating grafana-variable

我\xe2\x80\x99m 试图弄清楚如何格式化我的键/值对仪表板变量。I\xe2\x80\x99ve 有一个变量,其定义为:

\n
sensor_list = 4431,8298,11041,13781\nsensor_kv = 4431 : Storage,8298 : Stairs,11041 : Closet,13781 : Attic\n
Run Code Online (Sandbox Code Playgroud)\n

但是,我似乎无法有效地将它用于 InfluxDB 的查询和仪表板格式化。例如,我有一个面板,其查询如下:

\n
SELECT last("battery_ok") FROM "autogen"."Acurite-Tower" WHERE ("id" =~ /^$sensor_list$/) AND $timeFilter GROUP BY time($__interval) fill(null)\n
Run Code Online (Sandbox Code Playgroud)\n

这可行,但如果我用 KV 替换它,我将无法获取该值:

\n
SELECT last("battery_ok") FROM "autogen"."Acurite-Tower" WHERE ("id" =~ /^$sensor_kv$/) AND $timeFilter GROUP BY time($__interval) fill(null)\n
Run Code Online (Sandbox Code Playgroud)\n

^ 返回时没有数据。

\n

我也不知道如何访问重复面板的模板值中的 KV 对的值。${sensor_kv:text}返回单词“All”,但${sensor_kv:value}实际上会导致直接错误:“错误:找不到变量格式值”

\n

我的目标有两个:

\n
    \n
  1. 使用 kv 映射的键侧作为在数据库中查询的 ID
  2. \n
  3. 如果我在图表中查询,则使用值侧作为统计面板的标签以及测量的别名
  4. \n
\n

我\xe2\x80\x99已经阅读了格式化文档,他们提到的只是列表;那里没有键/值示例,当然也没有这样做的示例。它\xe2\x80\x99s显然是一个新功能(这是合并其实现的GH问题),所以我\xe2\x80\x99m希望\xe2\x80\x99s只是一个文档在某个地方错过。

\n

Val*_*ken 11

在您链接的 PR 中,有一条很小的注释,指出键/值对必须包含空格。 所以当你在其中定义一对时Values separated by comma应该像

  • key1 : value1, key2 : value2

这些都行不通

  • key1:value1, key2:value2
  • key1 :value1, key2 :value2
  • key1: value1, key2: value2

假设自定义变量的名称是var1

${var1}然后您可以通过, $var1,${var1:text}或访问密钥[[var1:text]] (有些数据源会满意$var1- 有些数据源只能理解${var1:text}

您可以通过以下方式访问该值${var1:value} [[var1:value]]

在 Grafana 8.4.7 中测试


Jan*_*raj -1

键/值与某些有意义的时间序列数据库一起使用,例如 MySQL https://grafana.com/docs/grafana/latest/datasources/mysql/

另一个选项是可以创建键/值变量的查询。该查询应返回名为 __text 和 __value 的两列。__text 列值应该是唯一的(如果不唯一,则使用第一个值)。下拉列表中的选项将包含一个文本和值,允许您将友好名称作为文本,将 id 作为值。

但这不是 InfluxDB 的情况:https://grafana.com/docs/grafana/latest/datasources/influxdb/ InfluxDB 无法返回 key=>value 结果 - 它只返回时间序列(这不是 key=>value)或仅值或仅键。

解决方法:

1.) 使用支持的数据库(MySQL、PostgreSQL)只是为了获得正确的 key=>value 结果。您实际上不需要为此创建表,只需组合 SELECT、UNION...,您就会得到所需的结果。

2.) 使用隐藏变量,它将值“转换”为键,然后在查询中使用。例如https://community.grafana.com/t/how-to-alias-a-template-variable-value/10929/3

当然,一切都有优点和缺点,例如多值变量值可能不会按预期工作。