繁体   English   中英

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

[英]How can I use key/value dashboard variables in Grafana + InfluxDB?

我试图弄清楚如何格式化我的键/值对仪表板变量。 我有一个变量,其定义是:

sensor_list = 4431,8298,11041,13781
sensor_kv = 4431 : Storage,8298 : Stairs,11041 : Closet,13781 : Attic

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

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

那行得通,但是如果我用 KV 替换它,我将无法获得该值:

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

^ 返回时没有数据。

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

我的目标是双重的:

  1. 使用kv map的key端作为ID在DB中查询
  2. 将值侧用作统计面板的 label,如果我在图表中查询,也用作测量的别名

我已经阅读了格式化文档,他们提到的只是列表; 那里没有键/值示例,当然也没有这样做的。 这显然是一个新功能( 这里是合并其实现的 GH 问题),所以我希望某处只有一个文档遗漏。

我意识到这可能不是您所需要的所有信息,但希望它有用。 我在尝试自己实现类似的东西(也使用 InfluxDB)时遇到了这个问题,并且我设法访问了查询中的键和值

我的查询如下所示:

SELECT "Foo.${VariableName:text}.Bar.${VariableName:value}" FROM "db" WHERE (filters, filters) AND $timeFilter GROUP BY "bas"

如您所见,我的用例与您尝试实现的有点不同,但它表明基本上可以访问查询中的键和值。

在您链接的 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 中测试

键/值与一些有意义的时间序列数据库一起使用,例如 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)只是为了获得正确的键=>值结果。 你真的不需要为此创建表,只需将 SELECT、UNION 等组合起来,你就会得到想要的结果。

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

当然,一切都有利有弊,例如多值变量值可能无法按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM