自定义告警模板
- 创建模板文件
[root@prometheus ~]# mkdir -p /usr/local/Prometheus_alertmanager/template
[root@prometheus ~]# vim /usr/local/Prometheus_alertmanager/template/email.tmpl
{{ define "email.html" }}
{{ range .Alerts }}
<pre>
========start==========
告警程序: prometheus_alert
告警级别: {{ .Labels.severity }}
告警类型: {{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}
========end==========
</pre>
{{ end }}
{{ end }}
注释:.StartsAt.Format "2006-01-02 15:04:05"的参数一定不能乱填,这里定义的时间为go 语言的诞生时间!!!如果填错时间会乱码。
- 修改alertmanager.yml配置
root@prometheus ~]# vim /usr/local/Prometheus_alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
smtp_smarthost: 'smtp.163.com:25' # smtp地址
smtp_from: 'xxx@163.com' # 谁发邮件
smtp_auth_username: 'xxx@163.com' # 邮箱用户
smtp_auth_password: 'xxxxx' # 邮箱客户端授权密码
smtp_require_tls: false
templates: # 指定邮件模板的路径,可以使用相对路径,template/*.tmpl的方式
- '/usr/local/Prometheus/alertmanager/template/*.tmpl'
route: # route用来设置报警的分发策略
group_by: ["alertname"] # 分组名
group_wait: 30s # 当收到告警的时候,等待三十秒看是否还有告警,如果有就一起发出去
group_interval: 30s # 发送警告间隔时间
repeat_interval: 30s # 重复报警的间隔时间
receiver: Node_warning # 设置默认接收人,如果想分组接收,把下面这段的注释去掉
# routes: # 可以指定哪些组接收哪些消息
# - receiver: 'Node_warning'
# continue: true
# group_wait: 10s
# match_re:
# service: mysql|cassandra # 所有service=mysql或者service=cassandra的告警分配到数据库接收端
# - receiver: 'MySQL_warning'
# group_wait: 10s
# match_re: # 根据标签分组,匹配标签dest=szjf的为fping-receiver组
# serverity: warning
receivers: # 定义接收者,将告警发送给谁
- name: 'Node_warning'
email_configs:
- send_resolved: true
to: 'xxx@163.com'
html: '{{ template "email.html" . }}' # 指定使用模板,如果不指定,还是会加载默认的模板的
headers: { Subject: "[WARN]CPU告警" } # 配置邮件主题
- 重启alertmanager
[root@prometheus ~]# systemctl restart alertmanager
- 重新加载prometheus配置
[root@prometheus Prometheus]# curl -XPOST http://localhost:9090/-/reload