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

如何配置Prometheus/Alertmanager避免指标缺失时误清除告警

实现方案

完全可以通过调整Prometheus告警规则配置达到你要的效果,不需要修改业务代码或Alertmanager核心逻辑,核心思路是在告警规则中把「指标缺失」纳入告警保持的条件,仅当指标明确返回且值符合正常阈值时,才终止告警。

具体配置步骤

1. 修改告警规则表达式

你原来的告警规则大概率是只判断了指标阈值,类似如下写法:

alert: CustomMetricOverThreshold
expr: your_app_custom_metric > 10 # 此处为你的原有阈值判断逻辑
for: 1m
labels:
  severity: warning
annotations:
  summary: "应用自定义指标超出阈值"

这种写法下,若Prometheus拉取不到指标,表达式结果为空,Prometheus会直接判定告警恢复,推送清除通知。
你需要将表达式调整为同时覆盖「阈值超标」和「指标缺失」两种场景,示例如下:

alert: CustomMetricOverThreshold
# 指标超出阈值 或 指标缺失时,表达式均成立,保持告警状态
expr: (your_app_custom_metric > 10) OR (absent(your_app_custom_metric) == 1)
for: 1m
labels:
  severity: warning
annotations:
  summary: "应用自定义指标超出阈值或指标缺失"

如果要容忍短时间的网络波动、临时拉取失败,避免偶发指标缺失就保持告警,可以使用absent_over_time函数限定指标缺失的时长,比如允许最多2分钟的指标缺失:

expr: (your_app_custom_metric > 10) OR (absent_over_time(your_app_custom_metric[2m]) == 1)

2. 可选参数调整

如果需要进一步降低告警抖动,可以同步调整Prometheus的告警恢复超时参数,在启动参数中添加--rules.alert.resolve-timeout=3m,表示告警表达式连续3分钟不成立时,才推送恢复通知,避免指标短暂恢复又超标的重复通知。

最终效果

配置生效后:

  • 指标正常且值符合阈值要求:告警不触发
  • 指标超出阈值:触发告警并推送通知
  • 指标拉取超时/应用无输出:保持告警状态,不会推送清除通知
  • 指标恢复输出且值回到正常阈值:才会判定告警恢复,推送清除通知

内容的提问来源于stack exchange,提问作者mr.simonski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:27:00