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

Alertmanager的repeat_interval在Prometheus标签$value变动时失效如何解决

问题根因

Alertmanager对告警的去重、静默、重复通知逻辑完全依赖告警标签集生成的唯一指纹(fingerprint)。你将$value变量配置到告警规则的labels字段后,只要指标数值发生变化,告警的标签集就会同步变更,生成新的指纹,Alertmanager会将其识别为全新的告警,直接触发通知,完全不会匹配原有告警的repeat_interval配置。

正确配置方案

1. 把$value从告警标签移到注解(annotations)字段

告警标签仅用来定义告警的唯一标识属性,比如告警名称、实例地址、指标名称等固定维度,动态变化的数值统一放到annotations里即可,示例配置:

groups:
- name: cpu_alerts
  rules:
  - alert: CpuUsageHigh
    expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    for: 1m
    # 标签仅放固定维度,不要添加$value变量
    labels:
      severity: warning
      metric: cpu_usage
    # 动态数值放到annotations中,通知模板可正常调用展示
    annotations:
      summary: "实例 {{ $labels.instance }} CPU使用率过高"
      description: "当前CPU使用率为 {{ $value }}%,超过阈值80%"

修改完成后只要告警的固定标签没有变化,就算指标数值波动,告警指纹也不会变更,repeat_interval会正常生效。

2. 调整Alertmanager分组逻辑(特殊场景适配)

如果确实有业务需求必须在标签里携带数值,可调整Alertmanager的group_by配置,仅按固定维度分组,相同分组内的告警会合并通知,不会重复触发:

route:
  group_by: ['alertname', 'instance', 'severity']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  receiver: 'webhook'
验证方法

配置修改后触发告警,等待指标数值变动后查看Alertmanager的告警列表,同一个告警的fingerprint字段不会发生变化,通知会严格按照配置的repeat_interval周期发送,不会因为数值变动产生新通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:45:06