问题描述
在Grafana中,我有一个仪表板,该仪表板使用InfluxDB 1.x作为数据源,我正在迁移它以使用InfluxDB 2.0数据源和Flux查询。
在Grafana仪表板中,有一个名为“服务器”的变量,该变量定义了以下查询:
SHOW TAG VALUES ON telegraf WITH KEY = "host"
我真的很努力地用Flux查询创建类似的变量。 任何想法如何做到这一点? 谢谢
解决方法
这对我有用:
from(bucket: "telegraf")
|> range(start: -15m)
|> group(columns: ["host"],mode:"by")
|> keyValues(keyColumns: ["host"])
注意:如果您希望返回更多时间(例如-30d),性能将会降低,您可以通过仅加载一次此查询(在grafana变量中可用)来解决此问题,或者最好添加一些过滤器和选择器
例如:
from(bucket: "telegraf")
|> range(start: -30d)
|> filter(fn: (r) => r._field == "you field")
|> filter(fn: (r) => /* more filter*/)
|> group(columns: ["host"],mode:"by")
|> first()
|> keyValues(keyColumns: ["host"])
,
尝试一下:
import "influxdata/influxdb/schema"
schema.measurementTagValues(
bucket: "my_bucket",tag: "host",measurement: "my_measurement"
)
,
我正在使用以下通量代码来提取存储桶“telegraf”的所有主机标记值 - 就像您发布的 InfluxQL:
import "influxdata/influxdb/schema"
schema.tagValues(bucket: "telegraf",tag: "host")
InfluxDB 在他们的文档中对此有一些说明: https://docs.influxdata.com/influxdb/v2.0/query-data/flux/explore-schema/#list-tag-values