AlertManager实现webhook告警(使用Postman测试)

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: 🍅程序员小王的博客:程序员小王的博客🍅 欢迎点赞 👍 收藏 ⭐留言 📝🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕🍅java自学的学习路线:java自学的学习路线🍋相关学习资料及其参考文章:prometheus手册,邮件和微信告警,Alertmanager篇🍊 可以去个人博客网站查看本博客排版更清晰:AlertManager————————————————版权声明:本文为CSDN博主「程序员小王java」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn


目录

一、前言

二、AlertManager简介

1、AlertManager工作机制

2、AlertManager的三个概念

三、安装AlertManager

1、下载AlertManager

2、安装AlertManager

3、启动Alertmanager

4、查看Alertmanager运行状态

四、AlertManager的参数

五、Webhook配置

1、初始配置详情:Webhook

六、使用postman和Shell测试

1、使用Shell发送测试

2、通过postman测试

七、最后的话

一、前言

公司想开发一个统一告警平台,需要AlertManager实现告警分析部分,然后就开始了我的AlertManager学习之路了🤣!


然后AlterManager是Prometheus(普罗米修斯)的一部分,在 Prometheus 中告警分为两部分:

  • Prometheus 服务根据所设置的告警规则将告警信息发送给 Alertmanager。
  • Alertmanager 对收到的告警信息进行处理,包括去重,降噪,分组,策略路由告警通知。

二、AlertManager简介

Alertmanager 主要用于接收 Prometheus 发送的告警信息,它支持丰富的告警通知渠道,而且很容易做到告警信息进行去重,降噪,分组等,是一款前卫的告警通知系统。但是我们公司内部不使用Prometheus,只使用AlertManager.

1、AlertManager工作机制



Prometheus会根据配置的参数周期性的对警报规则进行计算, 如果满足警报条件,生产一条警报信息,将其推送到 Alertmanager 组件,Alertmanager 收到警报信息之后,会对警告信息进行处理,进行 分组 Group 并将它们通过定义好的路由 Routing 规则转到 正确的接收器 receiver, 比如 Email Slack 钉钉、企业微信 Robot(webhook) 企业微信 等,最终异常事件 Warning、Error通知给定义好的接收人,其中如钉钉是基于第三方通知来实现的,对于通知人定义是在钉钉的第三方组件中配置。


prometheus触发一条告警的过程:


prometheus—>触发阈值—>超出持续时间—>alertmanager—>分组|抑制|静默—>媒体类型—>邮件|钉钉|微信等。



2、AlertManager的三个概念

(1)分组


Grouping 是 Alertmanager 把同类型的警报进行分组,合并多条警报到一个通知中。在生产环境中,特别是云环境下的业务之间密集耦合时,若出现多台 Instance 故障,可能会导致成千上百条警报触发。在这种情况下使用分组机制, 可以把这些被触发的警报合并为一个警报进行通知,从而避免瞬间突发性的接受大量警报通知,使得管理员无法对问题进行快速定位。


举例:


就是一个集群部署中,有一半的服务实例不再可以访问数据库,Prometheus中的警报规则配置为在每个服务实例无法与数据库通信时为其发送警报。结果,数百个警报被发送到Alertmanager。作为运维组或者相关业务组的开发人员,可能更关心的是在一个通知中就可以快速查看到哪些服务实例被本次故障影响了。为此,我们对服务所在集群或者服务警报名称的维度进行分组配置,把警报汇总成一条通知时,就不会受到警报信息的频繁发送影响了。


(2)抑制


Inhibition指当警报发出后,停止重复发送由此警报引发其他错误的警报的机制。


举例:


当警报被触发,通知整个集群不可达,可以配置Alertmanager忽略由该警报触发而产生的所有其他警报,这可以防止通知数百或数千与此问题不相关的其他警报。抑制机制可以通过Alertmanager的配置文件来配置。


(3)静默


Silences 提供了一个简单的机制,根据标签快速对警报进行静默处理;对传进来的警报进行匹配检查,如果接受到警报符合静默的配置,Alertmanager 则不会发送警报通知。


注意:以上除了分组、抑制是在 Alertmanager 配置文件中配置,静默是需要在 WEB UI 界面中设置临时屏蔽指定的警报通知。


三、安装AlertManager

1、下载AlertManager




github地址:GitHub - prometheus/alertmanager: Prometheus Alertmanager


  • 安装wget用来在github下载安装包
[root@localhost soft]# yum -y install wget


在linux下载,我选择的是 v0.21.0这个版本(命令中的 \代表换行,因为命令太长可以使用 \换行)

[root@localhost soft]# wget https://github.com   \
                       /prometheus/alertmanager/releases/download/  \
                       v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz   \


下载途中报错,请重新下载即可


2、安装AlertManager

  • 直接解压
[root@localhost soft]# tar xvf alertmanager-0.21.0.linux-amd64.tar.gz


  • 移动到/usr/apps下面
mv /usr/soft/alertmanager-0.21.0.linux-amd64 /usr/apps/alertmanager


AlertManager的目录结构

├── alertmanager
├── alertmanager.yml
├──  amtool  
├── LICENSE
├── NOTICE


  • 查看版本信息
[root@localhost alertmanager]# /usr/apps/alertmanager/alertmanager --version


3、启动Alertmanager

[root@localhost alertmanager]# ./alertmanager --config.file=alertmanager.yml


4、查看Alertmanager运行状态



四、AlertManager的参数

image.png

五、Webhook配置

[root@localhost alertmanager]# vim alertmanager.yml


1、初始配置详情:Webhook

  ## 1.Alertmanager 配置文件
   global:
     resolve_timeout: 5m
  ## 2.route:路由分组
   route:
   #(1)用于分组聚合,对告警通知按标签(label)进行分组,将具有相同标签或相同告警名称(alertname)的告警通知聚合在一个组,然后作为一个通知发送。
   #   如果想完全禁用聚合,可以设置为group_by: [...]
     group_by: ['alertname']  #报警分组
    #(2)当一个新的告警组被创建时,需要等待'10s'后才发送初始通知。
    #    这样可以确保在发送等待前能聚合更多具有相同标签的告警,最后合并为一个通知发送。
     group_wait: 10s 
    #(3)当第一次告警通知发出后,在新的评估周期(interval:间隔)内又收到了该分组最新的告警
    #    则需等待'10s'时间后,开始发送为该组触发的新告警,可以简单理解为,group就相当于一个通道(channel)。
     group_interval: 10s
    #(4)告警通知成功发送后,若问题一直未恢复,需再次重复发送的间隔。
     repeat_interval: 1h
    #(5)配置告警消息接收者,与下面配置的对应。例如常用的 email、wechat、slack、webhook 等消息通知方式。
    #   Webhook:比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhook 的典型场景。    
     receiver: 'web.hook'
    #(6)这里还可以加入子路由
      -routes:  
       receiver: 'wechat'
       match:  # 通过标签去匹配这次告警是否符合这个路由节点;也可以使用  match_re 进行正则匹配
       severity: Disaster  # 标签severity为Disaster时满足条件,使用wechat警报
 ##3.配置报警信息接收者信息。
  receivers:
  #(1)警报接收者名称
  - name: 'web.hook'
    webhook_configs:
  # (2)webhook的路径
    - url: 'http://127.0.0.1:5001/'
  # (3)抑制规则配置,当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。
  inhibit_rules:
    - source_match:
        severity: 'critical'
      target_match:
        severity: 'warning'
      equal: ['alertname', 'dev', 'instance']


(1)Route用来设置报警的分发策略。


Prometheus的告警先是到达alertmanager的根路由(route),alertmanager的根路由不能包含任何匹配项,因为根路由是所有告警的入口点。


(2)receiver:接收器


     用来处理那些没有匹配到任何子路由的告警(如果没有配置子路由,则全部由根路由发送告警),即缺省接收器。告警进入到根route后开始遍历子route节点,如果匹配到,则将告警发送到该子route定义的receiver中,然后就停止匹配了。因为在route中continue默认为false,如果continue为true,则告警会继续进行后续子route匹配。如果当前告警仍匹配不到任何的子route,则该告警将从其上一级(匹配)route或者根route发出(按最后匹配到的规则发出邮件)。


看你的告警路由树,Routing tree editor | Prometheus


将alertmanager.yml配置文件复制到对话框,然后点击"Draw Routing Tree"



(3)无注释版本,可直接使用

   global:
     resolve_timeout: 5m
   route:
     group_by: ['alertname']
     group_wait: 10s
     group_interval: 10s
     repeat_interval: 1h
     receiver: 'web.hook'
  receivers:
  - name: 'web.hook'
    webhook_configs:
    - url: 'http://127.0.0.1:5001/'
  inhibit_rules:
    - source_match:
        severity: 'critical'
      target_match:
        severity: 'warning'
      equal: ['alertname', 'dev', 'instance']


六、使用postman和Shell测试

1、使用Shell发送测试

Alertmanager 提供告警接口,允许我们以 HTTP 协议进行调用,来要求其发送告警信息。在 Shell 中,调用 Alertmanager 服务来发送通知的方法


这个方法是alertmanager的测试方法,大家可以参考官网:alertmanager/send_alerts.sh at main · prometheus/alertmanager · GitHub


(1)新建Shell 脚本

#!/usr/bin/env bash
alerts_message='[
  {
    "labels": {
       "alertname": "磁盘已满",
       "dev": "sda1",
       "instance": "实例1",
       "msgtype": "testing"
     },
     "annotations": {
        "info": "程序员小王提示您:这个磁盘sda1已经满了,快处理!",
        "summary": "请检查实例示例1"
      }
  },
  {
    "labels": {
       "alertname": "磁盘已满",
       "dev": "sda2",
       "instance": "实例1",
       "msgtype": "testing"
     },
     "annotations": {
        "info": "程序员小王提示您:这个磁盘sda2已经满了,快处理!",
        "summary": "请检查实例示例1",
        "runbook": "以下链接http://test-url应该是可点击的"
      }
  }
]'



(2)发送测试

  • 通过http进行测试
[root@localhost ~]# curl -XPOST -d"$alerts_message" http://127.0.0.1:9093/api/v1/alerts

测试结果



2、通过postman测试

postman的使用攻略,可以参考我原来发的博客:[postman接口测试工具的使用攻略]


我们将使用PostMan模拟Prometheus向AlertManager发送告警,然后用我们自已写的程序接收AlertManager发出来的通知。


本文中,我们的测试主要来验证AlertManager中Group的机制,以及的三个配置参数的效果:group_wait、group_interval、repeat_interval。


(1)测试选择post,然后输入http://ip/api/v2/alerts


测试:http://192.168.5.128:9093/api/v2/alerts



(2)选择json格式



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)测试成功


返回1代表成功



查看页面



七、最后的话

AlertManager实现webhook告警(使用Postman测试),主要讲述了原始的配置及测试,但是在公司使用主要还是

🥕AlertManager实现邮件告警相关配置

🪀AlertManager实现微信告警相关配置

🔴后续如果有时间会出一篇:AlertManager实现钉钉告警


写这篇博客码字不易,因为alertmanager目前在网上资料较少,这这篇博客花了一天的时间,如果您感觉这篇文章对您有帮助,需要你帮我点个一键三连💞,也算是对我小小的鼓励!❤️


pdf版本或者.md版本文件下载地址:https://download.csdn.net/download/weixin_44385486/85005835


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
2月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
2月前
|
Dubbo 应用服务中间件 API
使用 Apifox、Postman 测试 Dubbo 服务,Apache Dubbo OpenAPI 即将发布
Apache Dubbo 3.3.3(即将发布)实现了与 OpenAPI 的深度集成,通过与 OpenAPI 的深度集成,用户能够体验到从文档生成到接口调试、测试和优化的全流程自动化支持。不论是减少手动工作量、提升开发效率,还是支持多语言和多环境,Dubbo 3.3.3 都展现了其对开发者体验的极大关注。结合强大的 Mock 数据生成和自动化测试能力,这一版本为开发者提供了极具竞争力的服务治理解决方案。如果你正在寻找高效、易用的微服务框架,Dubbo 3.3.3 将是你不容错过的选择。
288 150
|
8天前
|
数据可视化 JavaScript 前端开发
从Postman到Apipost:我的动态参数测试实战踩坑记
作为一名全栈开发工程师,在开发用户中心模块时,我遇到了复杂参数API测试的挑战。最初使用Postman时,发现其在生成动态参数(如邮箱、手机号和日期)时存在诸多问题,导致测试效率低下甚至出错。例如,随机生成的邮箱格式无效等 后来,CTO推荐了Apipost,它提供了更智能的参数生成方式:支持真实邮箱、符合规范的手机号以及合法日期范围,极大提升了测试效率和准确性。通过对比,Apipost在处理复杂动态参数方面明显优于Postman,减少了维护成本并提高了团队协作效率。现在,我们已全面切换到Apipost,并利用其「参数组合测试」功能发现了多个边界条件bug。
|
9天前
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
|
1月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
97 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
1月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
64 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
7天前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
14天前
|
存储 数据可视化 测试技术
一个测试工程师的实战笔记:我是如何在Postman和Apipost之间做出选择的?
优秀的API测试工具应该具备: 分层设计:既有可视化操作,也开放代码层深度定制 场景感知:自动识别加密需求推荐处理方案 协议包容:不强迫开发者为了不同协议切换工具 数据主权:允许自主选择数据存储位置
48 7
|
4月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
524 3
|
7月前
|
Prometheus 监控 Cloud Native
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置

热门文章

最新文章