
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_total、alertmanager_alerts等大量指标。多实例若为集群模式每个节点独立暴露指标分别抓取。3. 配置 Prometheus 抓取在prometheus.yml中添加 Jobscrape_configs:-job_name:alertmanagerscrape_interval:30sstatic_configs:-targets:-alertmanager1:9093-alertmanager2:9093-alertmanager3:9093labels:component:alertmanagerenv:production如果 Alertmanager 启用 TLS 或认证需额外配置scheme,tls_config,basic_auth或bearer_token。4. 核心监控指标与 PromQLAlertmanager 的指标以alertmanager_为前缀涵盖通知、告警处理、集群、API 等维度。4.1 通知与集成指标含义alertmanager_notifications_total通知尝试总数Counter按integration如 email, slack和statussuccess/failed 分alertmanager_notification_latency_seconds(Histogram)通知发送延迟分布alertmanager_notification_requests_total通知请求次数Webhook 等alertmanager_nflog_snapshot_duration_seconds通知日志快照耗时PromQL 示例通知失败速率rate(alertmanager_notifications_total{statusfailed}[5m])通知成功率sum(rate(alertmanager_notifications_total{statussuccess}[5m])) / sum(rate(alertmanager_notifications_total[5m]))某个集成的 P99 延迟histogram_quantile(0.99, rate(alertmanager_notification_latency_seconds_bucket{integrationslack}[5m]))4.2 告警处理与静默指标含义alertmanager_alerts当前活跃告警数按状态 fired/resolvedalertmanager_silences活跃静默规则数alertmanager_silences_gc_duration_seconds静默规则垃圾回收耗时alertmanager_dispatcher_aggr_groups当前分组数alertmanager_dispatcher_processing_duration_seconds(Histogram)告警处理延迟PromQL 示例活跃 Firing 告警数alertmanager_alerts{statefiring}静默规则数量alertmanager_silences处理延迟 P95histogram_quantile(0.95, rate(alertmanager_dispatcher_processing_duration_seconds_bucket[5m]))4.3 集群与 GossipHA 模式指标含义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 ! 04.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_bytes、go_goroutines等用于常规健康监控。5. Grafana 仪表盘推荐Alertmanager DashboardDashboard ID9578官方推荐全面展示通知速率、延迟、告警量、集群健康、API、内存等。Alertmanager OverviewID14602现代版包含静默和分组统计。自定义“告警系统健康”大屏可使用 Stat Panel 显示通知成功率红色闪烁表示失败表格列出当前静默时间序列展示通知延迟。导入后选择数据源变量instance区分不同 Alertmanager 节点。6. 告警规则实战确保这些规则不由被监控的同一个 Alertmanager 发送而是通过独立的 Prometheus 和 Alertmanager 实例例如监控监控系统本身发出避免“当告警系统故障时无法告警其自身故障”。groups:-name:alertmanager_self_alertsrules:-alert:AlertmanagerDownexpr:up{jobalertmanager} 0for:1mlabels:severity:criticalannotations:summary:Alertmanager 实例 {{ $labels.instance }} 不可达-alert:AlertmanagerNotificationsFailingexpr:rate(alertmanager_notifications_total{statusfailed}[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{statefiring}1000for:10mlabels:severity:warningannotations:summary:活跃 Firing 告警超过 1000可能告警风暴-alert:AlertmanagerSilencesTooManyexpr:alertmanager_silences100for: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_score和alertmanager_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 这套监控体系本身都实现了全栈可观测性闭环。部署它让告警中枢也不再沉默确保每一次故障都能被真正“听见”。