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

如何在Prometheus中为无数据场景插入0值以实现Grafana Agent告警

解决Grafana Agent无指标推送时的告警触发问题

需要监控Grafana Agent,当指定集群环境(dev/sit/acc)中某个Agent实例停止向Prometheus推送up指标时触发Grafana告警,但现有查询无法稳定生效:

  • 原查询(up{cluster_environment=~"dev|sit|acc", job="integrations/agent"} offset 5m) unless up{cluster_environment=~"dev|sit|acc", job="integrations/agent"}仅能在Agent停止后的5分钟内返回1,超时后告警自动恢复;
  • 尝试结合vector(0)会丢失原有标签,新增无意义的序列,无法定位到具体故障实例。

目标效果:Agent正常推送指标时返回1(告警恢复),无数据时返回0(触发告警),且保留所有原有标签。


解决方案

使用absent()函数结合标签匹配的OR逻辑,确保无数据时返回带完整标签的0值:

up{cluster_environment=~"dev|sit|acc", job="integrations/agent"} OR on(cluster_environment, job, instance) absent(up{cluster_environment=~"dev|sit|acc", job="integrations/agent"}) * 0

语句解释

  • up{...}:正常情况下,Agent推送的up指标返回1,保留所有原始标签(cluster_environment、job、instance等);
  • absent(up{...}):当某个Agent实例的up指标消失时,该函数返回值为1的序列,标签包含查询指定的匹配维度;
  • * 0:将absent()返回的1转为0,满足告警触发的数值条件;
  • on(cluster_environment, job, instance):指定标签匹配规则,确保OR操作后仅保留与原有up指标一致的标签序列,不会新增无标签的冗余序列。

告警配置建议

在Grafana告警规则中设置:

  • 评估条件:查询结果 == 0
  • 持续时间:建议设置为3-5分钟,过滤临时网络波动或Agent重启导致的短时间无数据情况,减少误告警。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:45:18