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

Prometheus Alertmanager Slack通知换行符渲染异常问题求助

问题根因
  • 你当前的路由配置按alertname分组,所有同一告警类型的实例故障会被合并为同一条通知发送,所以不会按每个实例单独生成消息。
  • Go模板中直接写\n会被解析为普通字符串,不会被识别为换行符,同时Slack默认未开启Markdown解析时也不会渲染转义换行。
解决方案

方案1:单条告警单独发送(完全匹配你期望的效果)

调整路由分组规则,给每个告警生成独立通知,不需要在模板中循环遍历告警:

  1. 修改路由group_by配置,加入可唯一标识单条告警的标签:
route:
  group_by: ['alertname', 'namespace', 'pod', 'container']
  group_wait: 30s
  group_interval: 3m
  repeat_interval: 4h
  receiver: slack-channel
  1. 简化Slack通知模板,直接取公共注解内容,同时开启Markdown解析:
notifications:
  receivers:
    - name: slack-channel
      slack_configs:
        - channel: kube-alerts
          mrkdwn: true # 开启Slack Markdown渲染
          title: "{{ .CommonAnnotations.summary }}"
          text: "{{ .CommonAnnotations.description }}"

方案2:多告警合并为单条消息正常换行

如果需要把同类型告警合并到同一条Slack消息里,调整模板的换行写法即可:

slack_configs:
  - channel: kube-alerts
    mrkdwn: true
    title: "{{ range .Alerts }}{{ .Annotations.summary }}{{ println }}{{ end }}"
    text: "{{ range .Alerts }}{{ .Annotations.description }}{{ println }}{{ end }}"

用{{"\n"}}代替直接写\n也可以实现相同的换行效果。

额外注意

告警规则中的description注解不要写成分行缩进的格式,否则最终通知里会出现多余的空白字符,建议统一改成单行字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:39:04