[英]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}
实际上导致直接错误:“错误:未找到变量格式值”
我的目标是双重的:
我已经阅读了格式化文档,他们提到的只是列表; 那里没有键/值示例,当然也没有这样做的。 这显然是一个新功能( 这里是合并其实现的 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.