发布时间:2026/8/12 17:20:33
Micrometer 系列【37】Spring Boot Actuator | 集成 AlertManager 告警推送 文章目录1. Alertmanager1.1 概述1.2 核心概念1告警分组Grouping2告警抑制Inhibition3告警静默Silences2. 集成演示2.1 部署 AlertManager2.2 Webhook 推送告警信息2.2.1 配置 Prometheus与 Alertmanager 对接2.2.2 Prometheus 添加告警规则2.2.3 Alertmanager 配置 webhook 告警通知2.2.4 模拟告警触发1. Alertmanager1.1 概述Alertmanager主要用于接收Prometheus发送的告警信息它支持丰富的告警通知渠道而且很容易做到告警信息进行分组、静默、抑制等是Prometheus生态中非常重要的一个模块。告警体系分为两大模块Prometheus服务内定义告警规则将告警推送至AlertmanagerAlertmanager统一接管告警提供告警静默、告警抑制、告警聚合能力并通过邮件、值班通知系统、聊天工具等渠道发送通知。搭建告警与通知功能的核心步骤部署并配置Alertmanager配置Prometheus使其对接Alertmanager在Prometheus中编写告警规则AlertManager不做告警判定只做告警治理与推送分发是生产告警降噪、避免轰炸的核心组件。1.2 核心概念1告警分组Grouping分组机制将同类告警合并为一条通知。大规模故障场景下尤为实用一旦大面积故障爆发系统可能同时触发成百上千条告警。举例集群中运行着上百个服务实例发生网络分区故障半数实例无法连接数据库。Prometheus告警规则配置为实例无法访问数据库时触发告警。最终会有数百条告警推送到Alertmanager。运维人员只希望收到一条通知同时能够查看受影响的具体实例。此时可以配置Alertmanager按照集群名称、告警名称对告警分组最终只发送一条汇总通知。告警分组规则、分组通知的等待时长、通知接收人均在配置文件的路由树中定义。2告警抑制Inhibition抑制机制当某条优先级更高的告警已经触发时屏蔽相关联的其他告警通知。举例一条告警提示整个集群无法访问。可以配置Alertmanager当该告警触发时屏蔽此集群下所有其他告警。避免大量次要告警刷屏干扰定位根因。3告警静默Silences静默可以在指定时间段内直接屏蔽告警。静默规则使用匹配器定义语法和路由树一致。当新告警抵达时会校验是否匹配任意一条生效静默规则匹配成功则不会发送该告警的通知。静默规则在Alertmanager Web页面中配置。2. 集成演示2.1 部署 AlertManager部署目录结构alertmanager/ ├── alertmanager.yml# 主配置文件├── templates/# 告警消息模板目录│ └── wechat.tmpl# 钉钉/企业微信消息模板└── data/# 持久化目录告警状态、静默记录alertmanager.yml默认配置# 全局配置global:# 告警超时时间resolve_timeout:5m# 路由配置route:# 用于将传入警报分组在一起的标签。group_by:[alertname]# 发送通知的初始等待时间group_wait:30s# 在发送有关新警报的通知之前需要等待多长时间group_interval:5m# 如果已发送通知则在再次发送通知之前要等待多长时间通常约3小时或更长时间repeat_interval:1h# 接受者名称receiver:web.hook# 接受者receivers:# 接受者名称-name:web.hook# webhook URLwebhook_configs:-url:http://127.0.0.1:5001/# 抑制规则inhibit_rules:-source_match:# 原标签匹配》告警级别严重severity:criticaltarget_match:# 目标标签匹配》告警级别警告severity:warning# 警报中必须有以下标签值才会被抑制。equal:[alertname,dev,instance]在上一篇的docker-compose.yml中新增Alertmanager告警组件alertmanager:image:prom/alertmanager:v0.32.2container_name:alertmanagerports:-9093:9093volumes:-./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro-./alertmanager/templates:/etc/alertmanager/templates:ro-./alertmanager/data:/alertmanagercommand:---config.file/etc/alertmanager/alertmanager.yml---storage.path/alertmanager# 如需集群高可用开启cluster参数# - --cluster.listen-address0.0.0.0:9094restart:unless-stoppedextra_hosts:-host.docker.internal:host-gateway启动docker-composeup-d访问http://ip:9093/2.2 Webhook 推送告警信息Alertmanager支持多种通知方式也就是支持多种通知接收者receiverwebhookweb回调或者HTTP服务的推送API接口wechat通过微信API发送VictorOps通过VictorOps API发出OpsGenie通过OpsGenie API发送sns短信Slack通过Slack webhooks发送。该通知包含一个附件Pushover通过Pushover API发送PagerDuty通过PagerDuty API发送email电子邮件接下来使用webhook方式实现告警信息推送2.2.1 配置 Prometheus与 Alertmanager 对接要实现Prometheus向Alertmanager中发送信息只需要配置Alertmanager连接地址即可。修改prometheus.yml添加Alertmanager地址、告警规则文件地址# 加载告警规则文件支持通配符rule_files:-alert-rules/*.yml# 配置推送告警到 Alertmanageralerting:alertmanagers:-static_configs:# 配置alertmanager连接地址-targets:[localhost:9093]localhost改为虚拟或主机地址2.2.2 Prometheus 添加告警规则在实际环境中告警规则肯定有很多比如对服务器异常进行告警就有宕机、CPU使用率超过100%、内存使用率超过80%、硬盘使用率超过80%等等。基本流程告警规则文件编写一组PromQL表达式满足条件 →Prometheus生成告警Prometheus检测到告警后推送到Alertmanager进行通知分发。直接在prometheus/alert-rules目录下编写告警规则模板示例1新建service-rules.yml文件监控的服务Job采集失败触发告警groups:-name:spring-service-rulesrules:-alert:ServiceInstanceDownexpr:up{jobspring-micrometer-service} 0for:30slabels:severity:criticalannotations:summary:服务实例宕机/无法采集description:|Job名称{{$labels.job}} 实例地址{{$labels.instance}} 当前状态采集失败服务大概率宕机或网络不通示例2HTTP请求错误率过高groups:-name:spring-service-rulesrules:# HTTP请求错误率过高-alert:HttpRequestErrorHighexpr:sum(rate(http_server_requests_seconds_count{status~5..}[1m])) by(instance,job) / sum(rate(http_server_requests_seconds_count[1m])) by(instance,job)0.05for:1mlabels:severity:warningannotations:summary:接口5xx错误率大于5%Docker环境需要添加文件映射-./prometheus/alert-rules:/etc/prometheus/alert-rules:ro重启Prometheus查看控制台发现当前规则已被激活也可以看到详细的规则信息。2.2.3 Alertmanager 配置 webhook 告警通知使用Spring boot创建一个web项目提供一个API接口用于接收告警通知。RestControllerRequestMapping(/alertmanager)publicclassAlertmanagerController{RequestMapping(/hook)publicObjecthook(RequestBodyStringbody){System.out.println(接受到告警信息body);System.out.println(告警信息发送到数据库。。。);returnsuccess;}}在alertmanager.yml中添加route及receivers配置webhook_configs中的url配置配我们提供了webhook接口地址。# 全局配置,全局配置包括报警解决后的超时时间、SMTP 相关配置、各种渠道通知的 API 地址等等。global:# 告警超时时间resolve_timeout:5m# 路由配置,设置报警的分发策略它是一个树状结构按照深度优先从左向右的顺序进行匹配。route:# 用于将传入警报分组在一起的标签。# 基于告警中包含的标签如果满足group_by中定义标签名称那么这些告警将会合并为一个通知发送给接收器。group_by:[alertname]# 发送通知的初始等待时间group_wait:30s# 在发送有关新警报的通知之前需要等待多长时间group_interval:5m# 如果已发送通知则在再次发送通知之前要等待多长时间通常约3小时或更长时间repeat_interval:30s# 接受者名称receiver:web.hook# 配置告警消息接受者信息例如常用的 email、wechat、slack、webhook 等消息通知方式receivers:# 接受者名称-name:web.hook# webhook URLwebhook_configs:-url:http://127.0.0.1:9111/alertmanager/hook重新启动查看控制台当前是没有信息提示的2.2.4 模拟告警触发关掉监控的Spring Boot程序Prometheus显示服务掉线查看Alertmanager控制台发现收到了一条告警通知在查看我们定义的webhook接口也收到了告警信息

相关新闻

2026/8/12 17:15:33

学生课程汇报PPT,哪个AI工具最好用?我实测了6款,结论有点意外

又到了期末汇报季,朋友圈里哀嚎一片——“PPT做到凌晨三点”“排版排到怀疑人生”“模板翻了两小时还没找到合适的”…… 这场景我太熟了。做课程汇报这件事,说难不难,说简单吧——翻模板、搭框架、填内容、调字体、对齐元素,一套…

2026/8/12 17:15:33

Redis十年版本演进:从2.6到7.0的核心特性与实战选型指南

1. 项目概述:一次穿越Redis十年的版本特性巡礼 如果你在项目中用过Redis,大概率会和我一样,从某个版本开始,一路跟着它升级。从最初简单暴力的内存缓存,到如今功能繁多的多模数据库,Redis的每个大版本更新都…

2026/8/12 18:20:39

深度揭秘东海县建设局网站:官方平台的功能、便民服务与改革成效全解析

最近有不少朋友在后台留言,问起关于咱们连云港东海县的建设局官网,也就是“东海县建设局网站”到底怎么用,上面能办什么事儿,还有那些冷冰冰的办事流程背后,到底藏着多少为了方便百姓的小心思。说实话,作为一个在本地摸爬滚打多年的“老东海”,我对这个平台真的是既爱又…

2026/8/12 18:20:39

武汉比较好的校友网管理软件推荐:选型标准与核验要点

校友组织管理软件选型的技术核验框架与架构分析校友组织管理系统的本质是一个面向多层级会员体系的关系数据管理平台(Relationship Data Management Platform),其技术架构需同时满足组织弹性、数据主权、流程闭环与接口开放性四项核心约束。本…

2026/8/12 18:15:37

我做了一款 Windows 本地同声传译软件

最近一直在开发一款 Windows 本地同声传译软件,名字叫 Coollate。 它目前解决的核心问题非常直接: 用户说中文,软件实时生成中文原文、英文字幕,并自动播放英文译音。 翻译后的英文声音不仅可以从扬声器或耳机播放,还…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/12 9:34:08

Ubuntu 23.10中双击运行.sh文件的完整指南:从权限原理到桌面配置

1. 项目概述:从一次“双击”引发的权限探索在Ubuntu桌面环境下,我们习惯了双击运行那些带有.exe后缀的Windows程序安装包,但当你拿到一个以.sh结尾的Shell脚本文件时,满怀期待地双击它,却很可能只看到一个文本编辑器窗…

2026/8/12 9:34:08

NumPy条件索引实战:np.where与np.argwhere高效数据筛选指南

1. 从一次数据筛选的“笨办法”说起 前几天,我帮一个刚入行的数据分析师同事看代码,他正在处理一批传感器数据,需要找出所有温度超过阈值的数据点,然后进行后续分析。我一看他的实现,好家伙,一个 for 循环…

2026/8/12 9:34:08

基于Docker与Selenium Grid构建高可用浏览器自动化测试环境

1. 项目概述:为什么需要容器化的浏览器自动化?在软件开发和测试领域,浏览器自动化早已不是新鲜事。无论是日常的UI回归测试、数据抓取,还是复杂的业务流程模拟,Selenium都是我们绕不开的利器。然而,但凡在团…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…