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

这篇具有很好参考价值的文章主要介绍了AlertManager实现webhook告警(使用Postman测试)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅java自学的学习路线:java自学的学习路线
🍋相关学习资料及其参考文章:prometheus手册,邮件和微信告警,Alertmanager篇
🍊 可以去个人博客网站查看本博客排版更清晰:AlertManager

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

目录

一、前言

二、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学习之路了🤣!

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

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

  • Prometheus 服务根据所设置的告警规则将告警信息发送给 Alertmanager。

  • Alertmanager 对收到的告警信息进行处理,包括去重,降噪,分组,策略路由告警通知。

二、AlertManager简介

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

1、AlertManager工作机制

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

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

  • prometheus触发一条告警的过程:

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

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

2、AlertManager的三个概念

(1)分组

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

  • 举例:

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

(2)抑制

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

  • 举例:

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

(3)静默

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

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

三、安装AlertManager

1、下载AlertManager

  • 官方下载地址:Download | Prometheus

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

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

  • 安装wget用来在github下载安装包

[root@localhost soft]# yum -y install wget

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

  • 在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   \

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

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

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

2、安装AlertManager

  • 直接解压

[root@localhost soft]# tar xvf alertmanager-0.21.0.linux-amd64.tar.gz

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

  • 移动到/usr/apps下面

mv /usr/soft/alertmanager-0.21.0.linux-amd64 /usr/apps/alertmanager

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

  • AlertManager的目录结构

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

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

  • 查看版本信息

[root@localhost alertmanager]# /usr/apps/alertmanager/alertmanager --version

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

3、启动Alertmanager

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

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

4、查看Alertmanager运行状态

  • Alertmanager启动后可以通过9093端口访问,http://ip:9093

  • 我的自己的访问地址:http://192.168.5.128:9093/

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

四、AlertManager的参数

参数 描述
--config.file="alertmanager.yml" 指定Alertmanager配置文件路径
--data.retention=120h 历史数据保留时间,默认为120h
--alerts.gc-interval=30m 警报gc之间的间隔
--web.external-url=WEB.EXTERNAL-URL 外部可访问的Alertmanager的URL(例如Alertmanager是通过nginx反向代理)
--web.route-prefix=WEB.ROUTE-PREFIX wen访问内部路由路径,默认是 --web.external-url
--web.listen-address=":9093" 监听端口,可以随意修改
--web.get-concurrency=0 并发处理的最大GET请求数,默认为0
--web.timeout=0 web请求超时时间
--cluster.listen-address="0.0.0.0:9094" 集群的监听端口地址。设置为空字符串禁用HA模式
--cluster.advertise-address=CLUSTER.ADVERTISE-ADDRESS 配置集群通知地址
--cluster.gossip-interval=200ms 发送条消息之间的间隔,可以以增加带宽为代价更快地跨集群传播。
--cluster.peer-timeout=15s 在同级之间等待发送通知的时间
--log.level=info 自定义消息格式 [debug, info, warn, error]
--log.format=logfmt 日志消息的输出格式: [logfmt, json]
--version 显示版本号

五、Webhook配置

[root@localhost alertmanager]# vim alertmanager.yml

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

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"

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

(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应该是可点击的"
      }
  }
]'

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

(2)发送测试

  • 通过http进行测试

[root@localhost ~]# curl -XPOST -d"$alerts_message" http://127.0.0.1:9093/api/v1/alerts

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

  • 测试结果

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

2、通过postman测试

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

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

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

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

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

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

(2)选择json格式

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

  • 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实现webhook告警(使用Postman测试)

七、最后的话

AlertManager实现webhook告警(使用Postman测试),主要讲述了原始的配置及测试,但是在公司使用主要还是要借助于AlertManager实现email,钉钉,微信告警,这样开发人员才能快速上手处理,所以后续,将在明后两天写出

🥕AlertManager实现邮件告警相关配置
🪀AlertManager实现微信告警相关配置
🔴后续如果有时间会出一篇:AlertManager实现钉钉告警

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

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

AlertManager实现webhook告警(使用Postman测试)文章来源地址https://www.toymoban.com/news/detail-409757.html

到了这里,关于AlertManager实现webhook告警(使用Postman测试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【云原生】Prometheus之部署 Alertmanager 发送告警

    【云原生】Prometheus之部署 Alertmanager 发送告警

    Prometheus 对指标的收集、存储与告警能力分属于 Prometheus Server 和 AlertManager 两个独立的组件,前者仅负责定义告警规则生成告警通知, 具体的告警操作则由后者完成。 Alertmanager 负责处理由 Prometheus Server 发来的告警通知,Alertmanager对告警通知进行分组、去重后,根据路由规则

    2024年02月16日
    浏览(10)
  • 【云原生】prometheus监控告警之安装部署alertmanager实战

    前言 🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘 本文中的是prome

    2023年04月27日
    浏览(13)
  • Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知

    Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知

    Docker搭建并配置Prometheus Docker拉取并配置Grafana Docker安装并配置Node-Exporter Docker安装并配置cAdvisor Docker安装并运行Alertmanager 新建项目,引入依赖 新建接口,运行程序 Prometheus配置文件中已添加该项目地址,运行后到Prometheus页面中查看连接情况 成功 引入依赖 新增push接口,用于

    2024年02月11日
    浏览(11)
  • 基于skywalking、es watcher 告警的webhook

    基于skywalking、es watcher 告警的webhook

    为了线上服务的稳定性、可用性,引入skywalking 针对trace、metric可视化,EFK做日志可视化。基于业务层现在可视化信息,我们采用skywalking服务度量信息和日志系统中日志进行监控,从而达到对部署环境中实例运行状况进行监控。paas-alert为了可以提供多种灵活配置告警通知方式

    2023年04月22日
    浏览(10)
  • Grafana无法发送告警消息的飞书webhook(机器人)

    Grafana无法发送告警消息的飞书webhook(机器人)

    Grafana无法向飞书机器人发送报警消息,实测使用Grafana自带的webhook也不好使,对于用飞书办公的程序猿非常不便,后来发现一个报警神器,开源免费,关键是好用 PrometheusAlert PrometheusAlert是一个即装即用的程序,非常好用,具体步骤如下: 进入模板页面 找到grafana-fs进入 测试

    2024年02月03日
    浏览(12)
  • 利用钉钉机器人Webhook向钉钉群推送告警通知

    利用钉钉机器人Webhook向钉钉群推送告警通知

    一、配置钉钉群 1、新建一个接收通知的钉钉群 如下图,创建一个接收通知的钉钉群   选择项目群,点创建   输入群名称,右侧选择群成员,最后点击右下角的创建   2、对群进行设置 点群右上角的设置按钮    点击 “智能群助手”   点 “添加机器人”   点 添加机器人

    2023年04月15日
    浏览(8)
  • Linux部署docker以及prometheus+node_exporter+mysqld-exporter+grafana+cadvisor+Alertmanager(告警)

    Linux部署docker以及prometheus+node_exporter+mysqld-exporter+grafana+cadvisor+Alertmanager(告警)

    Linux安裝docker以及部署prometheus+node_exporter+mysqld-exporter+grafana+cadvisor+Alertmanager(告警) 1、官方安裝脚本自动安装docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 2、启动docker systemctl start docker 3、搜索镜像-例如搜索prometheus docker search prom/prometheus 4、拉取镜像--这里仅列出我

    2024年03月15日
    浏览(18)
  • Java项目中利用飞书自定义机器人Webhook向飞书群推送告警通知

    Java项目中利用飞书自定义机器人Webhook向飞书群推送告警通知

    今天来看一下如何在Java项目中利用飞书的自定义机器人Webhook向飞书群推送告警通知         企业存在给 特定群组 自动推送消息的需求,比如:监控报警推送、销售线索推送、运营内容推送等。        你可以在群聊中添加一个 自定义机器人 ,通过服务端调用  webh

    2023年04月14日
    浏览(13)
  • 测试中使用Postman实现接口自动化

    测试中使用Postman实现接口自动化

    1.创建一个工作区 2.按照自己的需求去命名创建 1按照步骤去创建环境及表格的【变量】:VARIABLE 和【当前值】:CURRENT VALUE TEST_3 就是刚刚创建的环境 host就不用多说了都明白 Globals 这个就是来改变我们在请求接口时候赋值 全局变量 通用的 用法就不细说了往下看!!! 在第一

    2024年02月11日
    浏览(13)
  • 使用 Postman 实现 API 自动化测试

    使用 Postman 实现 API 自动化测试

    背景介绍 名词解析 使用说明 执行 API 测试 集成 CI 实现 API 自动化测试 写在最后 相信大部分开发人员和测试人员对 postman 都十分熟悉,对于开发人员和测试人员而言,使用 postman 来编写和保存测试用例会是一种比较方便和熟悉的方式。但 postman 本身是一个图形化软件,

    2023年04月08日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包