You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana结合InfluxDB时,变量重复面板仅显示单主机数据的问题排查

问题:Grafana重复面板仅显示单台主机数据(InfluxDB数据源)

环境与现有配置

  • 数据源:InfluxDB,存储桶为COMPUTER
  • 主机变量:已创建名为host的变量,通过以下Flux查询获取主机tag值:
import "influxdata/influxdb/schema"
schema.tagValues(
    bucket: "COMPUTER",
    tag: "host"
)

该查询可正常返回WIN0和LIN1两个主机值。

  • 内存使用率面板:使用以下Flux查询获取数据,设置标题为$host,开启按host变量横向重复(每行最多4个面板),但页面仅显示WIN0的图表:
from(bucket: "COMPUTER")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "mem")
  |> filter(fn: (r) => r["_field"] == "used_percent")
  |> filter(fn: (r) => r["host"] == "$host")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

排查与修复步骤

1. 检查变量的多值与选中状态

进入变量编辑界面,确认:

  • 已勾选「允许多值」(Allow multiple values)和「包含全部选项」(Include all option)
  • 当前变量选中值为「全部」(All),而非仅WIN0

如果变量只选中单个主机,重复面板只会生成对应主机的图表,这是最常见的触发原因。

2. 修改Flux查询的过滤逻辑

当变量选择「全部」时,$host会被解析为多个值的集合,原查询的==判断无法匹配多值场景,需改用contains函数:

from(bucket: "COMPUTER")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "mem")
  |> filter(fn: (r) => r["_field"] == "used_percent")
  |> filter(fn: (r) => contains(set: $host, value: r["host"]))
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

Grafana会自动将多选变量转换为Flux可识别的集合类型,contains函数能正确匹配所有选中的主机。

3. 验证面板重复配置

进入面板的「重复选项」设置页,确认:

  • 「重复依据」选择的是host变量
  • 「方向」设置为「横向」
  • 「最大每行列数」设为4
  • 未勾选「隐藏重复面板」选项

4. 验证数据可用性

  • 单独选择LIN1变量,查看面板是否能正常显示该主机的内存数据,确认数据本身存在
  • 选择「全部」变量,在查询编辑器的「预览」中查看是否同时返回两台主机的时序数据

额外排查点

如果以上步骤都完成后仍只显示单个面板:

  • 刷新仪表盘(快捷键Ctrl+R)
  • 检查浏览器控制台是否有JS报错
  • 尝试删除原面板,重新创建并配置重复规则

内容的提问来源于stack exchange,提问作者guiguietben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:33:22