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

如何取消Prometheus Alertmanager邮件告警的分组?

取消Alertmanager邮箱告警分组的实现方案

虽然Alertmanager的核心设计就是做告警分组聚合,但确实有办法实现近似「取消分组」的效果,下面给你两种可行方案:

方法1:用唯一标识强制拆分分组

Alertmanager的group_by是控制分组的核心配置,你可以把每个告警的唯一标识字段加入分组规则,让每条告警单独成组:

  • 比如用Prometheus生成的fingerprint(每个告警的唯一指纹),或者自定义组合标签(比如alertname+instance,确保每个告警唯一)
  • 配置示例:
route:
  group_by: ['alertname', 'instance', 'fingerprint']  # 加入唯一标识字段
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'email-receiver'

这样每条告警都会被单独分组,发送邮件时就是单条告警通知,而非聚合后的分组内容。

方法2:基于时间戳实现动态拆分

如果想靠时间戳实现拆分,你可以通过Prometheus告警规则给每条告警加一个秒级时间戳标签,再把这个标签加入group_by:

  1. 在Prometheus告警规则里添加时间戳标签:
groups:
- name: example-rules
  rules:
  - alert: HighCPUUsage
    expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) > 90
    for: 1m
    labels:
      severity: critical
      alert_timestamp: '{{ time.Now.Unix }}'  # 添加当前秒级时间戳
    annotations:
      summary: "High CPU usage on {{ $labels.instance }}"
  1. 在Alertmanager的group_by中加入这个alert_timestamp标签:
route:
  group_by: ['alert_timestamp']  # 按时间戳分组,每个告警时间戳唯一,自然单独成组
  group_wait: 0s  # 取消等待,立即发送
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'email-receiver'

这种方式下,每条触发的告警都会有唯一的时间戳标签,强制Alertmanager将其分为单独的组,实现单条告警邮件的效果。

注意事项

  • 这么做会大幅增加邮件发送量,可能触发邮件服务器限流,也会加重运维人员的收件负担——这也是Alertmanager默认不推荐取消分组的核心原因。
  • 如果用fingerprint分组,同一告警重复触发时指纹是相同的,重复告警还是会被合并;而时间戳方式每次触发都会生成新标签,重复告警也会单独发邮件,按需选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:52:40