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

如何在Grafana中移除无异常状态的主机列?

解决Grafana隐藏无异常主机列的方法

方法一:从查询层面过滤(最优方案)

直接在数据源查询阶段就筛选出指定时间段内出现过异常(值=1)的主机,从根源避免无异常主机的数据进入面板。
以Prometheus数据源为例,用PromQL实现:

  1. 先通过子查询获取符合条件的主机列表:
    label_values(count_over_time(your_metric{value=1}[1w]) > 0, instance)
    
    这里your_metric替换为你的状态指标名,[1w]是你要指定的时间段,instance是主机标识字段。
  2. 将上述查询结果作为变量(比如$filtered_instances),在原始指标查询中引用:
    your_metric{instance=~"$filtered_instances"}
    
    这样返回的只有出现过异常的主机数据,面板自然不会显示无异常的主机列。

方法二:使用Grafana Transform功能处理已有数据

如果无法修改原始查询,可通过面板的Transform功能过滤掉无异常主机:

  1. 进入面板的「Transform」标签页,添加Group by转换:选择主机标识字段(如instance)作为分组依据,其他字段保持默认。
  2. 添加Reduce转换:对value字段选择「Max」聚合方式,这样每个主机分组会得到该时间段内的状态最大值。
  3. 添加Filter by value转换:设置过滤条件为Max(value)等于1,过滤掉最大值不为1的主机分组。
  4. 若需要恢复原始数据展示,可再添加Organize fields转换,调整字段显示或关联原始数据。

方法三:通过变量实现动态筛选

创建一个查询型变量,自动获取有异常的主机列表,再用变量过滤面板数据:

  1. 在Grafana的「Variables」设置中,新建变量,类型选择「Query」。
  2. 数据源选择你的指标数据源,查询语句用方法一中的子查询:
    label_values(count_over_time(your_metric{value=1}[1w]) > 0, instance)
    
  3. 在面板的查询中,添加主机过滤条件instance=~"$your_variable_name",这样面板只会展示变量中包含的主机(即出现过异常的主机)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:20:21