news 2026/9/3 7:00:45

Prometheus 监控 Alertmanager 全栈实战:让告警中枢自身不再沉默

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Prometheus 监控 Alertmanager 全栈实战:让告警中枢自身不再沉默

Prometheus 监控 Alertmanager 全栈实战:让告警中枢自身不再沉默


Alertmanager 是 Prometheus 生态的告警中枢,负责去重、分组、静默、路由并最终将告警推送到 Email、Slack、PagerDuty 等渠道。一旦它的通知延迟飙升推送持续失败静默规则异常集群间同步断裂,整个监控体系的告警就会陷入“哑巴”状态——故障发生却无人知晓。Alertmanager 从设计之初就原生暴露 Prometheus 指标端点,我们只需将其纳入 Prometheus 抓取,即可对告警流水线的健康进行全方位的自监控。本文将带你从开启端点、配置抓取,到解读核心指标、构建 Grafana 大屏与告警规则,确保告警系统本身也能被及时“告警”。


1. 为什么必须监控 Alertmanager?

  • 通知可靠性:推送是否成功?重试多少次?有没有被限流?这些都是告警能否送达的关键。
  • 性能瓶颈:告警分组、静默评估、集群同步是否变慢?影响告警时效。
  • 配置错误:错误的静默规则可能屏蔽重要告警,高基数路由可能导致通知遗漏。
  • 集群健康:在 HA 模式下,节点间是否正常 Gossip?状态是否一致?
  • 资源压力:内存、文件描述符、API 请求负载,防止自身崩溃。

2. 暴露 Alertmanager 的 Prometheus 指标

Alertmanager 默认在9093端口提供 Web UI 和 API,其 Prometheus 指标路径为/metrics。无需额外配置,只需确保 Alertmanager 正常启动即可。

验证端点:

curlhttp://alertmanager:9093/metrics

你将看到alertmanager_notifications_totalalertmanager_alerts等大量指标。

多实例:若为集群模式,每个节点独立暴露指标,分别抓取。


3. 配置 Prometheus 抓取

prometheus.yml中添加 Job:

scrape_configs:-job_name:'alertmanager'scrape_interval:30sstatic_configs:-targets:-'alertmanager1:9093'-'alertmanager2:9093'-'alertmanager3:9093'labels:component:'alertmanager'env:'production'

如果 Alertmanager 启用 TLS 或认证,需额外配置scheme,tls_config,basic_authbearer_token


4. 核心监控指标与 PromQL

Alertmanager 的指标以alertmanager_为前缀,涵盖通知、告警处理、集群、API 等维度。

4.1 通知与集成
指标含义
alertmanager_notifications_total通知尝试总数(Counter),按integration(如 email, slack)和status(success/failed) 分
alertmanager_notification_latency_seconds(Histogram)通知发送延迟分布
alertmanager_notification_requests_total通知请求次数(Webhook 等)
alertmanager_nflog_snapshot_duration_seconds通知日志快照耗时

PromQL 示例:

  • 通知失败速率rate(alertmanager_notifications_total{status="failed"}[5m])
  • 通知成功率sum(rate(alertmanager_notifications_total{status="success"}[5m])) / sum(rate(alertmanager_notifications_total[5m]))
  • 某个集成的 P99 延迟histogram_quantile(0.99, rate(alertmanager_notification_latency_seconds_bucket{integration="slack"}[5m]))
4.2 告警处理与静默
指标含义
alertmanager_alerts当前活跃告警数(按状态 fired/resolved)
alertmanager_silences活跃静默规则数
alertmanager_silences_gc_duration_seconds静默规则垃圾回收耗时
alertmanager_dispatcher_aggr_groups当前分组数
alertmanager_dispatcher_processing_duration_seconds(Histogram)告警处理延迟

PromQL 示例:

  • 活跃 Firing 告警数alertmanager_alerts{state="firing"}
  • 静默规则数量alertmanager_silences
  • 处理延迟 P95histogram_quantile(0.95, rate(alertmanager_dispatcher_processing_duration_seconds_bucket[5m]))
4.3 集群与 Gossip(HA 模式)
指标含义
alertmanager_cluster_members集群成员数
alertmanager_cluster_messages_total集群消息总数
alertmanager_cluster_messages_pruned_total被修剪的消息数
alertmanager_cluster_health_score集群健康评分(0=健康)

PromQL 示例:

  • 成员数不等于期望alertmanager_cluster_members != 3(假设3个节点)
  • 健康评分非零alertmanager_cluster_health_score != 0
4.4 API 与 HTTP
指标含义
alertmanager_http_request_duration_secondsHTTP 请求延迟直方图
alertmanager_http_requests_totalHTTP 请求总数(按method,path,status分)

PromQL 示例:

  • API 错误率sum(rate(alertmanager_http_requests_total{status=~"5.."}[5m])) / sum(rate(alertmanager_http_requests_total[5m]))
  • API P99 延迟histogram_quantile(0.99, rate(alertmanager_http_request_duration_seconds_bucket[5m]))
4.5 进程与运行时

Alertmanager 是 Go 程序,自带process_*go_*指标,如process_resident_memory_bytesgo_goroutines等,用于常规健康监控。


5. Grafana 仪表盘推荐

  • Alertmanager Dashboard:Dashboard ID9578(官方推荐),全面展示通知速率、延迟、告警量、集群健康、API、内存等。
  • Alertmanager Overview:ID14602,现代版,包含静默和分组统计。
  • 自定义“告警系统健康”大屏:可使用 Stat Panel 显示通知成功率,红色闪烁表示失败;表格列出当前静默;时间序列展示通知延迟。

导入后选择数据源,变量instance区分不同 Alertmanager 节点。


6. 告警规则实战

确保这些规则不由被监控的同一个 Alertmanager 发送,而是通过独立的 Prometheus 和 Alertmanager 实例(例如监控监控系统本身)发出,避免“当告警系统故障时,无法告警其自身故障”。

groups:-name:alertmanager_self_alertsrules:-alert:AlertmanagerDownexpr:up{job="alertmanager"}== 0for:1mlabels:severity:criticalannotations:summary:"Alertmanager 实例 {{ $labels.instance }} 不可达"-alert:AlertmanagerNotificationsFailingexpr:rate(alertmanager_notifications_total{status="failed"}[5m])>0for:5mlabels:severity:criticalannotations:summary:"Alertmanager 通知发送连续失败(集成:{{ $labels.integration }})"-alert:AlertmanagerNotificationLatencyHighexpr:histogram_quantile(0.99,rate(alertmanager_notification_latency_seconds_bucket[5m]))>5for:5mlabels:severity:warningannotations:summary:"Alertmanager 通知 P99 延迟超过 5 秒(集成:{{ $labels.integration }})"-alert:AlertmanagerClusterHealthDegradedexpr:alertmanager_cluster_health_score!=0for:5mlabels:severity:criticalannotations:summary:"Alertmanager 集群健康评分非零,可能存在脑裂或消息丢失"-alert:AlertmanagerTooManyAlertsexpr:alertmanager_alerts{state="firing"}>1000for:10mlabels:severity:warningannotations:summary:"活跃 Firing 告警超过 1000,可能告警风暴"-alert:AlertmanagerSilencesTooManyexpr:alertmanager_silences>100for:1hlabels:severity:infoannotations:summary:"活跃静默规则超过 100,检查是否有误屏蔽"-alert:AlertmanagerHTTPErrorRateexpr:rate(alertmanager_http_requests_total{status=~"5.."}[5m]) / rate(alertmanager_http_requests_total[5m])>0.05for:5mlabels:severity:warningannotations:summary:"Alertmanager HTTP API 错误率超过 5%"

7. 进阶:高可用、安全与指标配置

7.1 HA 集群监控

Alertmanager 支持通过--cluster.peer参数形成 Gossip 集群。必须监控所有节点,且重点关注alertmanager_cluster_health_scorealertmanager_cluster_members。当集群成员数不稳定时,很可能发生脑裂,需要网络和 Gossip 排查。

7.2 安全加固
  • Alertmanager 的/metrics端点可配合反向代理添加 Basic Auth,或在启动时使用--web.basic-auth.username--web.basic-auth.password参数设置简单的静态认证。如果启用,Prometheus 抓取配置需携带basic_auth
  • 生产环境应仅允许 Prometheus 服务器 IP 访问 9093 端口,使用防火墙或 NetworkPolicy。
7.3 指标基数管理

Alertmanager 会为每种集成生成带标签的通知指标,如果集成非常多,注意alertmanager_notifications_total的基数。通常集成数量有限,可安全保留。但若自定义标签过多,需在 Prometheus 抓取时用metric_relabel_configs裁剪。

7.4 与 Prometheus 告警规则联动

Alertmanager 自身问题(如通知失败)会产生“元告警”,可将其路由到与业务告警不同的渠道(如独立的 PagerDuty Service 或紧急 Slack 频道),确保运维团队第一时间感知。


8. 总结

通过将 Alertmanager 自身的 Prometheus 指标纳入监控,我们弥补了“监控监控者”的最后一环。通知成功率、延迟、静默状态、集群健康——每一个细节都实时进入 Prometheus,在 Grafana 中可视化,并通过独立的 Alertmanager 实例发出“告警系统自身告警”。至此,从应用、数据库、中间件,到 Prometheus、Alertmanager 这套监控体系本身,都实现了全栈可观测性闭环。部署它,让告警中枢也不再沉默,确保每一次故障都能被真正“听见”。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 6:59:21

PowerBuilder名片管理系统源码解析:从DataWindow到C/S架构的经典实现

简介:这是一份基于PowerBuilder开发的名片管理系统的完整源代码资源,面向数据库应用开发初学者及PB技术实践者,解决个人或小型团队对联系人信息高效录入、查询、修改与备份的实际需求。资源包共56个文件,包含6个PBL库文件&#xf…

作者头像 李华
网站建设 2026/9/3 6:57:52

遍历时删元素为什么报错:modCount 这个“计数器“在背后盯着你

「Java 进阶之路」系列 Day25写在前面 “遍历集合的时候不能直接调用集合的remove方法”,这条经验大家都知道,但问一句"为什么会报错、报的又是什么异常",很多人只记得一个笼统的印象。这篇把Iterator和fail-fast机制背后的modCoun…

作者头像 李华
网站建设 2026/9/3 6:57:50

List<String> 和 List<Integer>,运行时其实是同一个 Class

「Java 进阶之路」系列 Day26写在前面 模块三集合框架写到这篇收官,回过头讲讲一直陪着这些集合类出现、却很少被单独拎出来讲透的泛型。很多人知道"Java泛型是伪泛型"这个说法,但问一句"伪在哪、具体擦除掉了什么",就说…

作者头像 李华
网站建设 2026/9/3 6:57:00

MiMo-V2.5 多模态内容生成实战指南

在内容创作领域,我们常常面临一个共同的痛点:需求量大、场景复杂,但人力和时间却极其有限。无论是电商大促期间需要海量短视频素材,还是教育行业要为不同学生定制专属习题,传统的手工制作模式往往显得力不从心。很多团队不得不陷入“加班赶工 - 质量下降 - 反复修改”的恶…

作者头像 李华
网站建设 2026/9/3 6:55:54

基于YOLOv8的水质污染监测系统:从算法到完整应用的工程实践

简介:本资源是一套基于YOLOv8实现的水质污染目标检测系统,面向计算机、人工智能、自动化等专业的本科生及初学者,解决水体中典型污染物(如油膜、藻类、悬浮物、垃圾、泡沫)的自动识别与可视化监测问题,特别…

作者头像 李华
网站建设 2026/9/3 6:53:03

【需求设计】小写数字金额转换成中文大写金额

amount2cn 设计文档 小写数字金额 → 中文大写金额转换. 原文参考:https://blog.csdn.net/liudglink/article/details/106820490本文件为设计说明,代码实现请访问 gitee仓库 [零]用法与整体流水线 多文件程序(同属 package main),无外部依赖,由 go.mod 管理,直接运行: go r…

作者头像 李华