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


相关文章
|
16小时前
阿萨聊测试:如何用Postman查看HTTP消息相关内容?
阿萨聊测试:如何用Postman查看HTTP消息相关内容?
阿萨聊测试:如何用Postman查看HTTP消息相关内容?
|
16小时前
|
JSON API 开发工具
如何使用Postman 设计和测试一个API?
如何使用Postman 设计和测试一个API?
如何使用Postman 设计和测试一个API?
|
16小时前
|
JSON 测试技术 API
Postman Newman 实现 API 自动化测试的快速指南
Newman 是一款专为 Postman 打造的命令行工具,旨在通过自动运行 Postman 集合和环境,实现 API 测试的自动化。它使得开发者无需打开 Postman 图形界面,即可直接在命令行中执行测试用例。
|
16小时前
|
JSON JavaScript 前端开发
提升 API 测试效率:Postman Tests 详解
Postman 不仅是一个强大的 API 开发工具,它还提供了创建自动化测试脚本的能力,这些脚本可以用于检验API请求得到的响应是否符合预期。这些测试脚本被称为 “Tests”,支持使用 JavaScript 编程语言进行编写,并且 Postman 提供了一系列的断言库来帮助你检查包括但不限于状态码、响应内容以及响应时间在内的响应数据。
|
16小时前
Postman 测试上传与下载
Postman 测试上传与下载
42 0
|
16小时前
|
API 数据安全/隐私保护
如何使用Postman 测试Https 网站?
如何使用Postman 测试Https 网站?
112 0
|
16小时前
阿萨聊测试:如何用Postman 发送请求?
阿萨聊测试:如何用Postman 发送请求?
|
16小时前
|
网络协议 安全 测试技术
性能工具之emqtt-bench BenchMark 测试示例
【4月更文挑战第19天】在前面两篇文章中介绍了emqtt-bench工具和MQTT的入门压测,本文示例 emqtt_bench 对 MQTT Broker 做 Beachmark 测试,让大家对 MQTT消息中间 BenchMark 测试有个整体了解,方便平常在压测工作查阅。
125 7
性能工具之emqtt-bench BenchMark 测试示例
|
16小时前
|
机器学习/深度学习 数据采集 人工智能
【专栏】AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计
【4月更文挑战第27天】本文探讨了AI在软件测试中的应用,如自动执行测试用例、识别缺陷和优化测试设计。AI辅助工具利用机器学习、自然语言处理和图像识别提高效率,但面临数据质量、模型解释性、维护更新及安全性挑战。未来,AI将更注重用户体验,提升透明度,并在保护隐私的同时,通过联邦学习等技术共享知识。AI在软件测试领域的前景广阔,但需解决现有挑战。
|
16小时前
|
机器学习/深度学习 人工智能 运维
深入探索软件测试:策略、工具与未来趋势
【5月更文挑战第14天】在软件开发的生命周期中,测试环节扮演着至关重要的角色。它不仅保证产品能够达到预定的质量标准,还有助于提前发现并修复潜在的缺陷,从而减少维护成本和提高用户满意度。本文将深入探讨当前软件测试领域的最佳实践,包括测试策略的制定、工具的选择以及面对快速变化的技术环境如何保持测试活动的前瞻性和灵活性。通过分析自动化测试、性能测试和安全测试等关键领域,本文旨在为读者提供一个全面的软件测试指南,同时对未来的发展趋势进行预测。