【问题标题】:How can I use key/value dashboard variables in Grafana + InfluxDB?如何在 Grafana + InfluxDB 中使用键/值仪表板变量?
【发布时间】:2021-02-12 01:55:54
【问题描述】:

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

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 映射的 key 端作为 ID 在 DB 中查询
  2. 如果我在图表中查询,将值侧用作统计面板的标签,也用作测量值的别名

我读过formatting docs,他们提到的只是列表;那里没有键/值示例,当然也没有这样做的。这显然是一个新功能 (here is the GH issue where its implementation is merged),所以我希望某处只是缺少文档。

【问题讨论】:

    标签: grafana influxdb grafana-templating grafana-variable


    【解决方案1】:

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

    我的查询如下所示:

    选择 “Foo.${VariableName:text}.Bar.${VariableName:value}” 从“分贝” WHERE (filters, filters) AND $timeFilter GROUP BY "bas"

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

    【讨论】:

      【解决方案2】:

      键/值与一些有意义的时间序列数据库一起使用,例如MySQLhttps://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

      当然,任何事情都有利有弊,例如多值变量值可能无法按预期工作。

      【讨论】:

      • 这不能回答我的问题;我知道如何获取变量——这是我在仪表板的管理面板中明确定义的自定义变量,通过手动提供我在问题中包含的值——但我没有不知道如何在查询或仪表板面板标题模板中引用它的两个部分。
      • @ChrisR 带有选项 2。)您有 2 个变量:一个带有用于查询的 ID,一个带有用于面板标题的人类友好名称。 np.
      猜你喜欢
      • 2018-10-25
      • 1970-01-01
      • 2021-08-30
      • 2020-12-01
      • 2021-07-06
      • 2019-12-11
      • 1970-01-01
      • 2022-09-27
      • 2018-11-18
      相关资源
      最近更新 更多