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测试

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目前在网上资料较少,这这篇博客花了不少的时间,如果您感觉这篇文章对您有帮助,需要你帮我点个一键三连💞,也算是对我小小的鼓励!❤️

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小王java

学习java的路上,加油!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值