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

AlertManager中CommonAnnotations仅对DeadMansSwitch生效问题求助

解决AlertManager Slack告警无法显示自定义摘要的问题

我之前也碰到过几乎一模一样的问题,咱们先拆解下根源,再一步步解决:

你在Slack配置里用了{{ .CommonAnnotations.summary }},但CommonAnnotations只有当同组内所有告警都共享这个注解时才会存在。DeadMansSwitch通常是单独触发的告警(组里只有它自己),所以它的私有注解会被自动当成CommonAnnotations,自然能正常显示;但其他告警如果是组内多个触发,或者组内不是所有告警都定义了summary,CommonAnnotations.summary就会是空值,Slack只能 fallback 到默认格式。

核心解决方案:遍历单个告警的私有注解

把alertmanager.yaml里的Slack文本模板改成遍历每个触发的告警,直接引用每个告警自己的Annotations,而非依赖CommonAnnotations。修改后的配置如下:

修改后的alertmanager.yaml关键片段

receivers:
  - name: 'mail-receiver'
    slack_configs:
      - api_url: https://hooks.slack.com/services/XXXXXX/XXXXX1/e7AXXXXXXopzmHNTJmL
        channel: '#alertmanager-testing'
        text: |
          {{ range .Alerts }}
          *告警名称:* {{ .Labels.alertname }}
          *摘要:* {{ .Annotations.summary }}
          *描述:* {{ .Annotations.description }}
          *触发时间:* {{ .StartsAt.Format "2006-01-02 15:04:05" }}
          {{ end }}
  - name: 'critical-mail-receiver'
    slack_configs:
      - api_url: https://hooks.slack.com/services/T0XXXXCL/XXX6G4/VUVKZ8CnXXXXXXXzZguoXq
        channel: '#place'
        text: |
          {{ range .Alerts }}
          ⚠️ *紧急告警:* {{ .Labels.alertname }}
          *摘要:* {{ .Annotations.summary }}
          *描述:* {{ .Annotations.description }}
          *触发时间:* {{ .StartsAt.Format "2006-01-02 15:04:05" }}
          {{ end }}

额外优化建议

  1. 移除远程模板依赖:你当前引用的远程default.tmpl可能会和自定义文本冲突,建议直接删除global.templates里的远程链接,避免模板优先级导致的渲染异常。
  2. 添加默认值兜底:如果有些告警没定义summary或description,可以给模板加默认值,比如{{ .Annotations.summary | default "无摘要信息" }},避免消息出现空白。
  3. 单告警测试验证:可以临时修改某个告警的expr(比如改成avg(...) < 100)触发测试告警,快速验证Slack消息是否正常显示自定义内容。

这样修改后,不管是单个告警还是组内多个告警,每个告警的自定义摘要、描述都会被正确渲染到Slack频道里了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:34:40