郵箱應該是目前企業最常用的告警通知方式,Alertmanager內置了對SMTP協議的支持,因此對於企業用戶而言,只需要一些基本的配置即可實現通過郵件的通知。
在Alertmanager使用郵箱通知,用戶只需要定義好SMTP相關的配置,並且在receiver中定義接收方的郵件地址即可。在Alertmanager中我們可以直接在配置文件的global中定義全局的SMTP配置:
global:
[ smtp_from: <tmpl_string> ]
[ smtp_smarthost: <string> ]
[ smtp_hello: <string> | default = "localhost" ]
[ smtp_auth_username: <string> ]
[ smtp_auth_password: <secret> ]
[ smtp_auth_identity: <string> ]
[ smtp_auth_secret: <secret> ]
[ smtp_require_tls: <bool> | default = true ]
完成全局SMTP之后,我們只需要為receiver配置email_configs用於定義一組接收告警的郵箱地址即可,如下所示:
name: <string>
email_configs:
[ - <email_config>, ... ]
每個email_config中定義相應的接收人郵箱地址,郵件通知模板等信息即可,當然如果當前接收人需要單獨的SMTP配置,那直接在email_config中覆蓋即可:
[ send_resolved: <boolean> | default = false ]
to: <tmpl_string>
[ html: <tmpl_string> | default = '{{ template "email.default.html" . }}' ]
[ headers: { <string>: <tmpl_string>, ... } ]
如果當前收件人需要接受告警恢復的通知的話,在email_config中定義send_resolved為true即可。
如果所有的郵件配置使用了相同的SMTP配置,則可以直接定義全局的SMTP配置。
這里,以Gmail郵箱為例,我們定義了一個全局的SMTP配置,並且通過route將所有告警信息發送到default-receiver中:
global:
smtp_smarthost: smtp.gmail.com:587
smtp_from: <smtp mail from>
smtp_auth_username: <usernae>
smtp_auth_identity: <username>
smtp_auth_password: <password>
route:
group_by: ['alertname']
receiver: 'default-receiver'
receivers:
- name: default-receiver
email_configs:
- to: <mail to address>
send_resolved: true
需要注意的是新的Google賬號安全規則需要使用”應用專有密碼“作為郵箱登錄密碼
這時如果手動拉高主機CPU使用率,使得監控樣本數據滿足告警觸發條件。在SMTP配置正確的情況下,可以接收到如下的告警內容:

