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


b、输入测试链接:http://192.168.5.128:9093/api/v2/alerts


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


相关文章
|
4天前
|
JavaScript 前端开发 测试技术
Postman 如何进行性能测试?
Postman 如何进行性能测试?
11 1
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0
|
4月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
210 5
Postman 接口测试配置 Pre-request Script
|
3月前
|
测试技术 API
软件测试:Postman 工具的使用。开发及测试均需要掌握的测试工具
这篇文章详细介绍了Postman工具的各个模块功能,包括创建请求、集合、环境、自动化测试等,并解释了如何使用Postman进行GET、POST、PUT和DELETE等常见HTTP请求的测试。
|
3月前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
111 1
|
3月前
|
Web App开发 JSON 测试技术
精通Postman接口测试:关联技术与自动化实践指南
这篇文章详细介绍了如何使用Postman进行接口测试,包括关联技术、自动化实践,以及如何通过环境变量和全局变量解决接口之间的关联性问题。
103 0
精通Postman接口测试:关联技术与自动化实践指南
|
4月前
|
XML JSON 测试技术
Postman接口测试工具详解
📚 Postman全攻略:API测试神器!📚 发送HTTP请求,管理集合,写测试脚本,集成CI/CD。从安装配置到环境变量、断言、数据驱动测试,一步步教你如何高效测试RESTful API。实战案例包含GET、POST、PUT、DELETE请求。用Newman在命令行跑集合,自动化测试不发愁!👉 [洛秋小站](https://www.luoqiu.site/) 学更多!🚀
87 1
|
4月前
|
JSON 前端开发 测试技术
Postman 接口测试工具详解
在执行这些测试案例时,请确保遵循实际的API规范,并根据API的特定要求调整步骤和参数。
140 0
|
4月前
|
JSON 测试技术 数据格式
postman接口测试工具详解
postman接口测试工具详解
|
4月前
|
JSON 数据格式
postman 实用教程(含带 token 访问需登录权限的接口、测试文件上传接口、测试文件下载接口)
postman 实用教程(含带 token 访问需登录权限的接口、测试文件上传接口、测试文件下载接口)
615 0