如何在Alertmanager中配置全局通用文本随所有Prometheus告警邮件发送?
解决方案
完全可以实现全局统一添加通用内容,不需要逐个修改告警规则,通过Alertmanager的自定义邮件模板功能即可实现,操作如下:
实现原理
Alertmanager支持通过自定义Go模板统一管理所有邮件通知的格式,你可以把通用的wiki链接、排查指引等内容固定放到模板的头部/尾部,所有发送的邮件都会自动携带该内容。
操作步骤(适配你当前的Helm部署配置)
你给出的配置是典型的Prometheus Operator Helm Chart的values.yaml结构,直接按如下修改即可:
- 新增
templateFiles字段定义邮件模板,将通用内容写入模板固定位置 - 在alertmanager配置中添加模板加载路径
- 在email_configs中引用自定义模板
完整修改后的配置示例
# 新增:自定义邮件模板配置 templateFiles: email.tmpl: | {{ define "custom_email.html" }} <!-- 原有告警展示内容 --> {{ if .Alerts.Firing }} <h3>🚨 触发告警</h3> {{ range .Alerts.Firing }} <p>告警名称:{{ .Labels.alertname }}</p> <p>告警级别:{{ .Labels.severity }}</p> <p>触发集群:{{ .Labels.cluster }}</p> <p>告警描述:{{ .Annotations.description }}</p> <p>触发时间:{{ .StartsAt.Format "2006-01-02 15:04:05" }}</p> <hr> {{ end }} {{ end }} {{ if .Alerts.Resolved }} <h3>✅ 告警恢复</h3> {{ range .Alerts.Resolved }} <p>告警名称:{{ .Labels.alertname }}</p> <p>恢复时间:{{ .EndsAt.Format "2006-01-02 15:04:05" }}</p> <hr> {{ end }} {{ end }} <!-- 全局通用内容,统一在此处修改即可 --> <p>⚠️ 告警排查指引请参考内部Wiki:你自己的内部wiki地址</p> {{ end }} alertmanagerFiles: alertmanager.yml: global: resolve_timeout: 5m smtp_smarthost: 'xxxxx:portnumber' smtp_from: 'email@domain.com' smtp_auth_username: 'xxxx' smtp_auth_password: 'xxxxx' smtp_require_tls: false # 新增:加载自定义模板 templates: - '/etc/alertmanager/templates/email.tmpl' route: group_by: ['alertname', 'cluster', 'service'] group_wait: 30s group_interval: 5m repeat_interval: 30m receiver: ops inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'cluster', 'service'] receivers: - name: 'ops' email_configs: - to: 'xxxxx' send_resolved: true # 新增:引用自定义邮件模板 html: '{{ template "custom_email.html" . }}' - to: 'xxxxx' send_resolved: true html: '{{ template "custom_email.html" . }}'
验证方法
修改配置并更新Helm Release后,Alertmanager会自动加载新模板,你可以手动触发一条测试告警,确认邮件末尾已经自动带上了配置的通用内容。后续要调整通用内容,仅需要修改templateFiles中的模板即可,无需修改任何告警规则或接收器配置。
内容的提问来源于stack exchange,提问作者Manoj J
相关产品推荐
相关产品推荐

