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月前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
6月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
4月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
633 11
|
9月前
|
数据可视化 测试技术 API
JMeter、Apipost 与 Postman 的 API 测试对比:为什么 APIPost 是更聪明的选择
API测试如同筹备一场晚宴,选对工具至关重要。JMeter功能强大但上手难,适合专业用户;Postman简单易用,但在复杂场景和团队协作中表现有限;而Apipost则是一款智能高效的“厨房神器”。它性能测试轻松、结果清晰、学习门槛低,并且能一键集成CI/CD流程。对于追求效率与便捷的团队而言,Apipost无疑是更优选择,让API测试如同五星大厨烹饪般丝滑流畅。
|
9月前
|
存储 前端开发 数据可视化
Postman vs. Apifox 用于 API 测试全面对比
寻找一款可靠的 API 测试工具?这份对比分析将深入探讨 Postman 和 Apifox 的功能和特性。了解哪款工具最适合您的 API 测试需求。
|
9月前
|
XML JSON 测试技术
如何使用 Postman 发送和测试 WebSocket
WebSocket 促进客户端和服务器之间通过单个持久连接进行实时、双向通信。 需要使用 Postman 建立 WebSocket 连接吗? 请查看我们简洁的循序渐进指南!
|
10月前
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
600 22
|
9月前
|
监控 安全 测试技术
选择Postman免费版还是付费版,进行 API 测试呢?
深入了解 Postman 免费版和付费版的细节,看看哪一个更适合您的 API 需求。
|
9月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
436 2
|
10月前
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。

热门文章

最新文章