简单说明一下,上边模板文件配置了 email.from、email.to、email.to.html 三种模板变量,可以在 alertmanager.yml 文件中直接配置引用。这里 email.to.html 就是要发送的邮件内容,支持 Html 和 Text 格式,这里为了显示好看,采用 Html 格式简单显示信息。下边 {{ range .Alerts }} 是个循环语法,用于循环获取匹配的 Alerts 的信息,下边的告警信息跟上边默认邮件显示信息一样,只是提取了部分核心值来展示。
修改alertmanager.yml由于已经定义了变量,所以我们在alertmanager配置文件中可以引用变量,并且引用我们自定义的模板,引用模板需要增加 templates ,配置如下:
global: resolve_timeout: 5m smtp_from: '{{ template "email.from" . }}' smtp_smarthost: 'smtp.qq.com:465' smtp_auth_username: '{{ template "email.from" . }}' smtp_auth_password: 'XXXXXXXXXXXXXXXXX' smtp_hello: 'qq.com' smtp_require_tls: false templates: - '/etc/alertmanager/*.tmpl' route: group_by: ['alertname'] group_wait: 5s group_interval: 5s repeat_interval: 5m receiver: 'email' receivers: - name: 'email' email_configs: - to: '{{ template "email.to" . }}' html: '{{ template "email.html" . }}' send_resolved: true #insecure_skip_verify: true inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'dev', 'instance'] 重启AlertManager修改 AlertManager 启动命令,将本地email.tmpl文件挂载到容器内指定位置并重启。由于我的配置是跟alertmanager的配置文件在同一个目录下,所以不用重新挂载,重启容器即可。
我们将node服务停止,再次查收邮件,查看下效果,如下所示:
我们从上图可以看出,邮件内容格式已经改变,但时间却显示的有点离谱,原因是时间格式问题,修改邮件模板,针对时间配置格式,如下所示:
{{ define "email.from" }}11111111111@qq.com{{ end }} {{ define "email.to" }}2222222222222@foxmail.com{{ end }} {{ define "email.html" }} {{ range .Alerts }} =========start==========<br> 告警程序: prometheus_alert <br> 告警级别: {{ .Labels.severity }} 级 <br> 告警类型: {{ .Labels.alertname }} <br> 故障主机: {{ .Labels.instance }} <br> 告警主题: {{ .Annotations.summary }} <br> 告警详情: {{ .Annotations.description }} <br> 触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }} <br> =========end==========<br> {{ end }} {{ end }}保存后再次重启alertmanager服务,重新操作一遍之前的动作,查看最终的邮件效果,如下所示:
配置时间格式后,我们看效果图,时间是修正了的。
邮件标题还可以自定义邮件标题,修改alertmanager.yml配置文件,增加参数:headers即可,如下所示:
receivers: - name: 'email' email_configs: - to: '{{ template "email.to" . }}' html: '{{ template "email.html" . }}' send_resolved: true headers: { Subject: "{{ .CommonAnnotations.summary }}" }配置好重启alertmanager服务,再次触发告警邮件,收到的内容如下:
以上就是今天的分享内容,报警系统功能就已完成,后续介绍微信、钉钉推送,下期再见。