深色模式
邮件告警 SMTP
摘要:邮件是最通用的兜底渠道。在
global.smtp_*里填好发件服务器,再用email_configs指定收件人即可。本文以常见企业 SMTP 为例。
适用环境
- 已运行 Alertmanager
- 一个可用的 SMTP 服务(企业邮箱/云邮件服务均可)
- 需要可明文或 STARTTLS 连到 25/465/587 端口
操作步骤
1. 配置 global SMTP
yaml
global:
smtp_smarthost: 'smtp.example.com:587'
smtp_from: 'alert@example.com'
smtp_auth_username: 'alert@example.com'
smtp_auth_password: 'APP_PASSWORD' # 用授权码,不是登录密码
smtp_require_tls: true1
2
3
4
5
6
2
3
4
5
6
DANGER
smtp_auth_password 是明文,必须用环境变量或文件挂载注入,且文件权限设为 600,避免密码泄露。
2. 配置 receiver
yaml
receivers:
- name: 'mail-ops'
email_configs:
- to: 'ops-team@example.com'
headers:
Subject: '[SRE告警] {{ .CommonLabels.alertname }}'
html: '{{ template "alert.body" . }}'1
2
3
4
5
6
7
2
3
4
5
6
7
3. 加载
bash
amtool check-config /etc/alertmanager/alertmanager.yml
curl -X POST http://localhost:9093/-/reload1
2
2
验证
bash
amtool alert add alertname=MailTest severity=critical \
annotation.summary="邮件告警连通性测试"
# 收件箱应收到带标题的邮件1
2
3
2
3
常见坑
WARNING
- 很多云 SMTP 禁 25 端口,用 587(STARTTLS)或 465(SSL);连不通先
telnet smtp.example.com 587测连通。 - 企业邮箱常用“授权码”而非登录密码,直接用密码会报 535 认证失败。
DANGER
smtp_require_tls: true 时若服务器证书不被信任,会握手失败;测试环境可临时关,生产必须开。