在 Grafana 中,我有一个使用 InfluxDB 1.x 作为数据源的仪表板,我正在迁移它以使用 InfluxDB 2.0 数据源和 Flux 查询。
在 Grafana 仪表板中有一个名为“Server”的变量,其中定义了以下查询:
SHOW TAG VALUES ON telegraf WITH KEY = "host"
我真的很难用 Flux 查询创建一个类似的变量。知道如何做到这一点吗?谢谢
在 Grafana 中,我有一个使用 InfluxDB 1.x 作为数据源的仪表板,我正在迁移它以使用 InfluxDB 2.0 数据源和 Flux 查询。
在 Grafana 仪表板中有一个名为“Server”的变量,其中定义了以下查询:
SHOW TAG VALUES ON telegraf WITH KEY = "host"
我真的很难用 Flux 查询创建一个类似的变量。知道如何做到这一点吗?谢谢
尝试这个:
import "influxdata/influxdb/schema"
schema.measurementTagValues(
bucket: "my_bucket",
tag: "host",
measurement: "my_measurement"
)
这对我有用:
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"])
我正在使用以下通量代码来提取存储桶“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