AlertManager实现Email告警(使用Postman测试)
AlertManager实现Email告警(使用Postman测试)
🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅java自学的学习路线:java自学的学习路线
🍋相关学习资料及其参考文章:prometheus手册,邮件和微信告警,Alertmanager篇🍊 可以去个人博客网站查看本博客排版更清晰:AlertManager实现Email告警
一、前言
AlertManager实现Email告警会使用到:AlertManager的安装部署,postman测试的使用都可以参考我以前的博客:
🍅AlertManager的安装部署:AlertManager的安装部署
🌲postman测试的使用:postman测试的使用
二、✉️Email 接收告警配置
1、邮箱配置模板
#1. global:全局配置,主要配置告警方式,如邮件、webhook等。
global:
resolve_timeout: 5m # 超时,默认5min
## 这里为qq邮箱 SMTP 服务地址,官方地址为 smtp.qq.com 端口为 465 或 587,同时要设置开启 POP3/SMTP 服务。
smtp_smarthost: 'smtp.qq.com:465'
smtp_from: 'xxxxxx@qq.com'
smtp_auth_username: 'xxxxxx@qq.com'
# 这里为第三方登录 QQ 邮箱的授权码,非 QQ 账户登录密码,否则会报错,获取方式在 QQ 邮箱服务端设置开启 POP3/SMTP 服务时会提示。
smtp_auth_password: ''
# 是否使用 tls,根据环境不同,来选择开启和关闭。
# 如果提示报错 email.loginAuth failed: 530 Must issue a STARTTLS command first,那么就需要设置为 true。
# 着重说明一下,如果开启了 tls,提示报错 starttls failed: x509: certificate signed by unknown authority
# 需要在 email_configs 下配置 insecure_skip_verify: true 来跳过 tls 验证。
smtp_require_tls: false
# 2.模板,email、企业微信的模板配置存放位置,钉钉的模板会单独配置。
templates:
'/usr/apps/alertmanager/templates/alert.tmpl'
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'email'
## 配置报警信息接收者信息。
receivers:
- name: 'email'
email_configs:
- to: '{{ template "email.to"}}' ## 接收警报的email(这里是引用模板文件中定义的变量)
html: '{{ template "email.to.html" .}}' # 发送邮件的内容(调用模板文件中的)
send_resolved: true # 故障恢复后通知
# 邮件标题,不设定使用默认的即可
# headers: { Subject: " {{ .CommonLabels.instance }} {{ .CommonAnnotations.summary }}" }
# 抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
-
注意配置文件中的templates最初是没有的,可以自己在alertManager文件下单独创建
[root@localhost alertmanager]# mkdir templates
-
qq的授权码,自己配置自己QQ的
2、创建alert.tmpl 邮件发送的模板
-
模板文件配置了
email.from、email.to、email.to.html
三种模板变量,可以在 alertmanager.yml 文件中直接配置引用。这里 email.to.html 就是要发送的邮件内容,支持 Html 和 Text 格式,这里为了显示好看,采用 Html 格式简单显示信息。下边 {{ range .Alerts }} 是个循环语法,用于循环获取匹配的 Alerts 的信息。
{{ define "email.from" }}1078993387@qq.com{{ end }}
{{ define "email.to" }}1078993387@qq.com{{ end }}
{{ define "email.to.html" }}
{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}
<h2>@告警通知</h2>
告警程序: prometheus_alert <br>
告警级别: {{ .Labels.severity }} 级 <br>
告警类型: {{ .Labels.alertname }} <br>
故障主机: {{ .Labels.instance }} <br>
告警主题: {{ .Annotations.summary }} <br>
告警详情: {{ .Annotations.description }} <br>
触发时间: {{ .StartsAt.Local.Format "2006-01-02 15:04:05" }} <br>
{{ end }}{{ end -}}
{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}
<h2>@告警恢复</h2>
告警程序: prometheus_alert <br>
故障主机: {{ .Labels.instance }}<br>
故障主题: {{ .Annotations.summary }}<br>
告警详情: {{ .Annotations.description }}<br>
告警时间: {{ .StartsAt.Local.Format "2022-03-19 15:04:05" }}<br>
恢复时间: {{ .EndsAt.Local.Format "2022-03-19 15:04:05" }}<br>
{{ end }}{{ end -}}
{{- end }}
3、完整版配置文件
global:
resolve_timeout: 5m
## 这里为qq邮箱 SMTP 服务地址,官方地址为 smtp.qq.com 端口为 465 或 587,同时要设置开启 POP3/SMTP 服务。
smtp_smarthost: 'smtp.qq.com:465'
smtp_from: '1078993387@qq.com'
smtp_auth_username: '1078993387@qq.com'
#授权码,不是密码,在 QQ 邮箱服务端设置开启 POP3/SMTP 服务时会提示
smtp_auth_password: 'rmxvkzbwyizyjecg'
smtp_require_tls: false
#1、模板
templates: '/usr/apps/alertmanager/templates/alert.tmpl'
#2、路由
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
#邮箱
receiver: 'email'
receivers:
- name: 'email'
email_configs:
## 接收警报的email(这里是引用模板文件中定义的变量)
- to: '{{ template "email.to"}}'
## 发送邮件的内容(调用模板文件中的)
html: '{{ template "email.to.html" .}}'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
4、修改好配置文件后,可以使用amtool工具检查配置
[root@localhost alertmanager]# /usr/apps/alertmanager/amtool check-config /usr/apps/alertmanager/alertmanager.yml
-
如果出错,会提示在第几行(在线检查yml文件格式的工具,格式错误会给出对应提示)
-
格式成功
[root@localhost alertmanager]# /usr/apps/alertmanager/amtool check-config /usr/apps/alertmanager/alertmanager.yml
Checking '/usr/apps/alertmanager/alertmanager.yml' SUCCESS
Found:
- global config
- route
- 1 inhibit rules
- 1 receivers
- 1 templates
SUCCESS
5、启动项目
[root@localhost alertmanager]# /usr/apps/alertmanager/alertmanager --config.file /usr/apps/alertmanager/alertmanager.yml
-
测试是否启动成功
[root@localhost ~]# ss -aulntp | grep 9093
-
查看AlertManager的WEB UI页面
三、使用postman进行测试
1、使用postman测试
-
a、选择post
-
c、选择body,然后选择json,输入json格式
-
d、点击发送send,返回一发送成功
2、在body中输入的json格式
[
{
"labels": {
"alertname": "系统连续崩溃,已经出现雪崩状况!",
"dev": "sda1",
"instance": "实例1",
"msgtype": "testing"
},
"annotations": {
"info": "程序员小王提示您:这个系统雪崩了,快处理!",
"summary": "请检查实例示例1"
}
},
{
"labels": {
"alertname": "管理系统损坏",
"dev": "sda2",
"instance": "实例1",
"msgtype": "testing"
},
"annotations": {
"info": "程序员小王提示您:电子商务管理系统中订单,仓库模块已经雪崩,快处理!",
"summary": "请检查实例示例1",
"runbook": "以下链接http://192.168.5.128:9093/api/v2/alerts应该是可点击的"
}
}
]
3、前端页面查看测试结果
4、在自己的QQ邮箱查看测试结果
-
我选择的是邮箱,一般企业会选择自己的公司内部的邮箱,配置的时候,注意一下
四,最后的话
-
写这篇博客码字不易,因为alertmanager目前在网上资料较少,这这篇博客花了不少的时间,如果您感觉这篇文章对您有帮助,需要你帮我点个一键三连💞,也算是对我小小的鼓励!❤️
更多推荐
所有评论(0)