Prometheus Alertmanager 够用吗?什么时候需要专业 On-call 平台

本文从告警路由、值班表、自动升级、故障对象、IM 协同和数据化管理等维度,拆解 Prometheus Alertmanager 与专业 On-call 平台的职责边界,并说明如何把 Alertmanager 接入 Flashduty 补齐响应闭环。

作者 快猫技术

Prometheus Alertmanager 够用吗?什么时候需要专业 On-call 平台

Prometheus 用户很容易先从 Alertmanager 开始做告警通知。

这是合理的。Alertmanager 是 Prometheus 告警体系里的标准组件,负责接收 Prometheus 发出的告警,并完成去重、分组、路由、静默、抑制和通知发送。对于单团队、规则清晰、通知链路不复杂的场景,Alertmanager 已经能解决很多问题。

但 Alertmanager 不是完整的 On-call 平台。

它更像告警通知链路中的调度器:把什么告警,在什么条件下,发给哪个 receiver。专业 On-call 平台要解决的是另一组问题:谁正在值班,谁认领了故障,没人响应怎么办,处理过程有没有时间线,管理者能不能看到 MTTA、MTTR、响应比例和人员负载。

所以问题不是“Alertmanager 好不好”,而是:团队的问题到底停留在告警路由,还是已经进入故障响应管理。

Alertmanager 适合解决什么问题

Alertmanager 的核心能力可以概括为五类。

第一,去重。多个 Prometheus 实例或多个相同告警不会无限重复通知。

第二,分组。相似告警可以合并到一个通知里。例如同一个集群里大量实例同时无法访问数据库时,可以按 clusteralertname 等标签分组,减少通知数量。

第三,路由。Alertmanager 使用 routing tree,把不同标签、不同严重程度、不同业务的告警发送到不同 receiver。

第四,静默。维护窗口、已知问题或临时不需要通知的告警,可以通过 silence 在指定时间内停止通知。

第五,抑制。某个更高层级故障已经发生时,可以抑制一批派生告警。例如整个集群不可达时,抑制该集群内其他服务的连通性告警。

这些能力非常实用。

如果你的团队只有一个 SRE 小组,Prometheus 规则数量不多,告警标签规范比较统一,通知目标也相对固定,那么 Alertmanager 可能已经够用。

什么时候 Alertmanager 会开始吃力

问题通常不是从第一天出现的。

一开始,团队可能只有几十条告警规则,一个默认 receiver,一个 IM 群,几条 silence。Alertmanager 配置很清楚,大家也知道告警来了该找谁。

随着业务增长,情况会变复杂:

  • 一个 Prometheus 变成多个 Prometheus。
  • 一个团队变成多个业务团队。
  • 一个 IM 群变成多个群、多个负责人、多个通知策略。
  • 告警从基础设施扩展到应用、数据库、中间件、Kubernetes、云服务。
  • 告警处理从“有人看一眼”变成“必须有值班、升级、复盘和指标”。

这时候 Alertmanager 仍然能路由告警,但它不负责完整响应流程。

它不会天然回答这些问题:

今天晚上谁值班?
主值班没响应时,什么时候升级给备值班?
这个故障是否已经被认领?
值班人暂缓处理后,是否还应该继续升级?
故障过程里通知了谁,通知是否成功?
本月哪个服务产生了最多告警噪音?
哪个团队 MTTA 变长了?
哪些告警经常在睡眠时间打断值班人?

如果这些问题开始影响团队效率,就说明告警系统已经不只是“通知配置”问题,而是 On-call 机制问题。

边界一:从 receiver 到值班表

Alertmanager 的 route 最终会把告警发送到 receiver。receiver 可以是邮件、Webhook、PagerDuty、Opsgenie、Slack 等通知目标。

但 On-call 里真正重要的是“当前应该通知谁”。

这不是一个静态名单。

同一个服务在工作日白天可能通知研发值班,夜间通知 SRE 主备值班,周末通知专项值班组。关键业务可能需要主值班和备值班同时在岗。有人请假时,还要临时调班。轮换还要尽量公平,避免某个人长期在周末或夜间值班。

Flashduty 的值班表用于把故障和人连接起来。值班规则支持按小时、天、周、月轮换,支持白班/夜班、主备值班、日期掩码、临时调班和公平轮换。分派策略可以把故障通知给值班表里的当前值班人,也可以按角色只通知主值班或备值班。

这类能力不是为了把配置做复杂,而是为了让团队不用把“谁今天负责”写死在 Alertmanager receiver 里。

边界二:从通知发送到自动升级

Alertmanager 可以把告警发出去。

但发出去不等于有人响应。

真实故障里,最危险的情况不是没有告警,而是告警已经发了,但没有人认领。群里有人看见,有人以为别人会处理,最后故障被拖住。

专业 On-call 平台需要把响应动作显式化。

Flashduty 的分派策略可以配置触发条件、通知对象、通知方式、延迟窗口、通知模板和升级规则。升级条件支持“未关闭”和“未关闭且未认领”,可以在指定时间后自动升级到下一环节。通知对象可以是值班表、团队、个人,也可以组合使用。通知方式支持电话、短信、邮件、App 推送、IM 私聊和群聊。

这解决的是一个核心问题:关键故障不能只依赖“大家应该会看到”。

例如:

severity=critical 的支付告警,先通知支付 SRE 主值班;10 分钟未认领,升级给备值班;30 分钟未关闭,升级给支付研发负责人;低级别 Warning 只进入 IM 群,不触发电话。

这类策略如果全部放在 Alertmanager 配置里维护,很快会变成一组难以审计的 YAML 约定。放到 On-call 平台里,分派、通知、认领和升级会进入同一条可追踪链路。

边界三:从 alert 到 incident

Alertmanager 处理的是 alert。

On-call 平台处理的是 incident。

这个差异很关键。

一个真实故障往往不是一条告警。可能先出现接口错误率升高,随后数据库连接池耗尽,再出现服务不可用,最后还有恢复通知。值班人需要处理的是“支付服务不可用”这个故障,而不是逐条处理每个告警事件。

Flashduty 把监控系统推送过来的原始通知称为事件,事件触发告警,相似告警可以聚合为一条故障。故障是主要处理对象,可以被分派、通知、认领、暂缓、关闭、合并和复盘。

告警降噪发生在“告警到故障”这一层。

Flashduty 支持规则聚合和智能聚合。规则聚合按指定标签或属性精确匹配;智能聚合基于标题、描述、labels.servicelabels.resource 等字段计算相似度。后续告警合入已有故障后,不会重复触发通知。

此外,Flashduty 还支持风暴预警、抖动检测、静默策略和抑制策略。抖动检测可以识别同一故障频繁触发和恢复,并按配置减少通知干扰。延迟窗口可以在首次通知前等待一段时间,如果故障自动恢复,就不再通知。

Alertmanager 也有分组、静默和抑制能力。区别在于,专业 On-call 平台会把降噪结果落到故障对象上,后续围绕故障继续做分派、认领、升级、时间线和指标统计。

边界四:从群消息到可操作协同

很多团队把 Alertmanager 告警发到飞书、钉钉、企业微信或 Slack 群里。

这一步很容易做,但也很容易失控。

群消息的问题是:它能通知,但很难管理状态。消息被刷掉后,没人知道有没有人处理;有人回复“我看下”,但系统里不一定有认领状态;故障恢复后,过程也不一定留下完整记录。

Flashduty 的故障可以在控制台、IM 应用消息和语音电话中被认领。语音告警播报结束时,可以通过按键认领。IM 应用消息卡片可以提供认领、关闭等操作。故障详情页会记录时间线,包括触发、分派、通知、认领、暂缓、关闭、评论等动作。

这对故障协同很重要。

因为故障响应不只是“谁收到了消息”,还要回答“谁接手了、现在是什么状态、下一步由谁负责、有没有升级、事后能不能回溯”。

边界五:从配置文件到数据化管理

Alertmanager 配置可以告诉你告警怎么路由。

它很难直接告诉你团队响应效率是否变好了。

SRE 负责人通常需要看这些指标:

  • 本月产生了多少故障?
  • 哪些服务、团队或协作空间告警最多?
  • MTTA 和 MTTR 是多少?
  • 哪些故障没有被认领?
  • 哪些人员被短信、电话、App 推送打断最多?
  • 告警集中发生在工作时间、休息时间还是睡眠时间?
  • 哪些告警检查项和告警对象最频繁?

Flashduty 的分析看板支持按团队、协作空间、个人等维度查看故障数据,支持 MTTA、MTTR、响应比例、响应投入、中断次数等指标。时间维度可以拆分为工作时间、休息时间和睡眠时间。全局维度可以查看告警检查项和告警对象 TOP 20,并支持数据下载和 CSV 导出。

这类数据对管理者很关键。

没有数据时,告警治理只能靠体感。
有数据后,团队可以明确知道应该优化哪条规则、哪个服务、哪个值班策略,以及哪些告警正在消耗最多响应时间。

什么情况下 Alertmanager 已经够用

如果你的团队满足以下条件,可以继续优先使用 Alertmanager:

  • 只有少数 Prometheus 实例和少量告警规则。
  • 告警接收人基本固定,不需要复杂值班表。
  • 告警来了之后,团队可以在同一个群里快速响应。
  • 不需要主备值班、自动升级、电话短信兜底。
  • 不需要跨团队协作、工单同步、状态页或复盘。
  • 不需要按团队、人员、服务统计 MTTA、MTTR 和响应投入。
  • Alertmanager 配置由少数人维护,复杂度仍然可控。

这种情况下,直接把 Alertmanager 配好,保持标签规范和规则质量,比过早引入新平台更实际。

什么时候应该引入专业 On-call 平台

如果出现以下信号,就应该评估专业 On-call 平台:

  • 告警已经不只来自 Prometheus,还来自 Zabbix、Nightingale、Grafana、云监控、日志、APM 或自研系统。
  • 多个团队共用一套 Alertmanager 配置,路由和 receiver 越来越难维护。
  • 告警经常进群,但没有明确认领人。
  • 关键告警需要电话、短信、App、IM 多渠道触达。
  • 值班表靠 Excel、群公告或人工记忆维护。
  • 主值班未响应时,需要自动升级给备值班或负责人。
  • 告警风暴时,值班人收到大量重复通知。
  • 需要统计 MTTA、MTTR、响应比例、中断次数和人员负载。
  • 故障结束后需要时间线、复盘、工单或审计记录。

这时候继续把所有逻辑塞进 Alertmanager,不一定省事。它会把响应机制变成配置文件里的隐性流程,维护成本和事故风险都会上升。

更稳妥的方式是保留 Prometheus 和 Alertmanager 的监控告警能力,把 On-call 响应交给专门平台。

如何把 Alertmanager 接入 Flashduty

接入路径很直接:Alertmanager 通过 Webhook receiver 把告警推送到 Flashduty。

Flashduty 支持 Prometheus 告警集成,适配 Alertmanager 0.16.0 及以上版本。团队可以在 Flashduty 中创建 Prometheus 集成,获取集成推送地址,然后在 Alertmanager 的 receivers 中增加 Webhook 配置:

receivers:
- name: 'flashcat'
  webhook_configs:
  - url: '<您的集成推送地址>'
    send_resolved: true

如果希望 Alertmanager 默认把告警发送到 Flashduty,可以在 route 中指定 receiver:

route:
  receiver: 'flashcat'

如果不希望影响已有通知渠道,也可以把 Flashduty receiver 放到子路由中,先选一部分服务或告警级别试运行。

Flashduty 支持专属集成和共享集成两种方式。专属集成适合直接把告警投递到某个协作空间;共享集成适合基于 Payload 信息配置路由规则,把不同告警投递到不同协作空间。

Prometheus 告警等级也会被映射到 Flashduty 的严重程度。系统会依次提取告警事件标签中的 severityprioritylevel。例如 critical 映射为 Critical,warningwarn 映射为 Warning,info 映射为 Info,ok 映射为 Ok。

这意味着团队不需要替换 Prometheus,也不需要放弃 Alertmanager。先把 Alertmanager 作为上游告警源,接入 Flashduty 做响应闭环即可。

14 天试用应该验证什么

评估 On-call 平台,不建议只看功能表。

用真实 Prometheus 告警跑一次更有价值。

可以按这个顺序验证:

  1. 选择一个业务服务,接入 Alertmanager Webhook。
  2. 确认 Critical、Warning、Info 等告警等级是否正确映射。
  3. 为该服务创建协作空间和值班表。
  4. 配置分派策略:Critical 电话或短信,Warning 只进 IM。
  5. 配置未认领升级:例如 10 分钟未认领升级给备值班。
  6. 开启规则聚合或智能聚合,观察重复告警是否合入同一故障。
  7. 触发一条测试告警,验证 IM、电话、短信、App 的触达路径。
  8. 在 IM 或控制台认领、暂缓、关闭故障。
  9. 查看故障时间线,确认通知、认领、关闭动作是否完整记录。
  10. 观察分析看板里的故障数量、MTTA、MTTR、响应比例和中断次数。

如果这十步能跑通,团队就能清楚判断:Alertmanager 是否已经够用,还是需要把响应流程交给专业 On-call 平台。

结论:不要替换 Alertmanager,要补齐响应闭环

Prometheus Alertmanager 是优秀的告警路由组件,不应该被简单替代。

它适合做告警分组、路由、静默、抑制和通知发送。真正需要补齐的是 Alertmanager 之后的响应链路:值班、分派、升级、认领、协同、时间线、分析和复盘。

对于小团队,Alertmanager 可能就是最合适的方案。
对于多团队、7x24 值班、关键业务、复杂通知和数据化管理场景,专业 On-call 平台会更合适。

最稳妥的判断方式不是争论工具边界,而是拿一组真实告警试 14 天。

保留 Prometheus 和 Alertmanager。

把告警接入 Flashduty。

让团队跑完一次从告警触发、通知、认领、升级、处理到数据分析的完整流程。

注册 Flashduty 试用


资料依据:

  • Prometheus Alertmanager 官方文档:去重、分组、路由、静默、抑制和 HA。https://prometheus.io/docs/alerting/latest/alertmanager/
  • Prometheus Alerting overview:Prometheus 告警规则与 Alertmanager 的职责边界。https://prometheus.io/docs/alerting/latest/overview/
  • Flashduty Prometheus 告警集成:通过 Alertmanager Webhook 接入 Flashduty。https://docs.flashcat.cloud/zh/on-call/integration/alert-integration/alert-sources/prometheus
  • Flashduty 告警降噪:事件、告警、故障模型,聚合、风暴预警、抖动检测、静默和抑制。https://docs.flashcat.cloud/zh/on-call/channel/noise-reduction
  • Flashduty 分派策略和值班管理:值班表、通知方式、延迟窗口、升级规则和主备值班。https://docs.flashcat.cloud/zh/on-call/channel/escalation-rule
  • Flashduty 分析看板:MTTA、MTTR、响应比例、响应投入、中断次数和数据导出。https://docs.flashcat.cloud/zh/on-call/analytics/insights
延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云