与 SMTP 邮件集成

邮箱应该是目前企业最常用的告警通知方式,Alertmanager 内置了对 SMTP 协议的支持,因此对于企业用户而言,只需要一些基本的配置即可实现通过邮件的通知。

在 Alertmanager 使用邮箱通知,用户只需要定义好 SMTP 相关的配置,并且在 receiver 中定义接收方的邮件地址即可。在 Alertmanager 中我们可以直接在配置文件的 global 中定义全局的 SMTP 配置:

  1. global:
  2. [ smtp_from: <tmpl_string> ]
  3. [ smtp_smarthost: <string> ]
  4. [ smtp_hello: <string> | default = "localhost" ]
  5. [ smtp_auth_username: <string> ]
  6. [ smtp_auth_password: <secret> ]
  7. [ smtp_auth_identity: <string> ]
  8. [ smtp_auth_secret: <secret> ]
  9. [ smtp_require_tls: <bool> | default = true ]

完成全局SMTP之后,我们只需要为 receiver 配置 email_configs 用于定义一组接收告警的邮箱地址即可,如下所示:

  1. name: <string>
  2. email_configs:
  3. [ - <email_config>, ... ]

每个email_config中定义相应的接收人邮箱地址,邮件通知模板等信息即可,当然如果当前接收人需要单独的SMTP配置,那直接在email_config中覆盖即可:

  1. [ send_resolved: <boolean> | default = false ]
  2. to: <tmpl_string>
  3. [ html: <tmpl_string> | default = '{{ template "email.default.html" . }}' ]
  4. [ headers: { <string>: <tmpl_string>, ... } ]

如果当前收件人需要接受告警恢复的通知的话,在email_config中定义send_resolved为true即可。

如果所有的邮件配置使用了相同的SMTP配置,则可以直接定义全局的SMTP配置。

这里,以 Gmail 邮箱为例,我们定义了一个全局的 SMTP 配置,并且通过 route 将所有告警信息发送到 default-receiver 中:

  1. global:
  2. smtp_smarthost: smtp.gmail.com:587
  3. smtp_from: <smtp mail from>
  4. smtp_auth_username: <usernae>
  5. smtp_auth_identity: <username>
  6. smtp_auth_password: <password>
  7. route:
  8. group_by: ['alertname']
  9. receiver: 'default-receiver'
  10. receivers:
  11. - name: default-receiver
  12. email_configs:
  13. - to: <mail to address>
  14. send_resolved: true

需要注意的是新的 Google 账号安全规则需要使用”应用专有密码“作为邮箱登录密码

这时如果手动拉高主机 CPU 使用率,使得监控样本数据满足告警触发条件。在SMTP配置正确的情况下,可以接收到如下的告警内容:

告警