🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ?留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅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']
[root@localhost?alertmanager]#?mkdir?templates
2、创建alert.tmpl 邮件发送的模板
{{?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
[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
三、使用postman进行测试
1、使用postman测试
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邮箱查看测试结果
四,最后的话
|