如何解决如何在 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}
实际上会导致直接错误:“错误:未找到变量格式值”
我的目标是双重的:
- 使用 kv 映射的 key 端作为 ID 在 DB 中查询
- 如果我在图表中进行查询,则将值侧用作统计面板的标签以及测量值的别名
我读过formatting docs,他们提到的都是列表;那里没有键/值示例,当然也没有这样做。这显然是一个新特性 (here is the GH issue where its implementation is merged),所以我希望只是某个地方有一个文档遗漏。
解决方法
键/值正在使用一些有意义的时间序列数据库,例如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 结果 - 它仅返回时间序列(不是键=> 值)或仅返回值或仅返回键。
解决方法:
1.) 使用受支持的数据库(MySQL、PostgreSQL)只是为了获得正确的 key=>value 结果。你真的不需要为此创建表,只需组合 SELECT、UNION、... 就可以得到想要的结果。
2.) 使用隐藏变量,它将“翻译”值到键,然后在查询中使用。例如。 https://community.grafana.com/t/how-to-alias-a-template-variable-value/10929/3
当然,一切都有利有弊,例如多值变量值可能无法按预期工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。