Prometheus Alertmanager集群模式发送重复告警如何调整配置修复
重复告警问题解决方案
问题根因
当前双Prometheus副本架构下,相同告警会分别从两个实例生成,且携带了不同的replica标签。Alertmanager的告警去重逻辑依赖告警标签组计算的唯一指纹,标签存在差异时会被识别为两条独立告警,因此触发重复通知。当前你的Alertmanager集群状态正常,节点间同步没有问题,问题出在告警标签和去重规则配置上。
修复配置的两种方案
你可以根据需求选择任意一种方案:
方案1:从Alertmanager侧直接删除冗余副本标签
在Alertmanager的配置文件alertmanager.yml的最顶层添加重标签规则,直接丢弃replica标签,两条告警的标签会完全一致,自动被去重:
# alertmanager.yml 新增配置 relabel_configs: - source_labels: [replica] action: labeldrop
方案2:调整告警分组规则忽略副本标签差异
修改Alertmanager的路由配置,group_by字段仅保留告警核心标识标签,不包含replica,同组内的告警会被合并为单条通知:
# alertmanager.yml 路由段配置示例 route: # 仅填写告警核心标识标签,不要包含replica group_by: ['alertname', 'job', 'instance', 'severity'] group_wait: 30s group_interval: 5m repeat_interval: 12h receiver: 'your-notification-receiver'
优化建议
- 告警规则层面聚合冗余标签:编写Prometheus告警规则时使用
sum/avg by (核心标签)的聚合语法,从生成阶段就去掉副本相关的差异标签,从源头减少重复告警生成。 - 优化Prometheus的Alertmanager上报配置:将原来的双静态目标改为负载均衡地址,单个Prometheus仅给一个Alertmanager节点上报告警,依赖Alertmanager集群自身完成告警数据同步,减少集群内的重复数据传输。
- 保留副本标识的优化方案:如果需要保留
replica标签用于问题排查,可以修改通知模板,将同告警的多个副本标识合并到单条通知内容中,不需要拆分发送。
内容的提问来源于stack exchange,提问作者Hugo Dias
相关产品推荐
相关产品推荐

