2. 值班台概念与架构
值班台(War Room / On-Call Dashboard)是SRE体系中的“作战指挥中心”,它将分散的告警、事件、人员与流程整合到一个统一视图中,帮助值班人员快速感知故障、定位根因并协调恢复。本章从定义、核心功能与典型架构三个维度拆解值班台的设计原理。
2.1 值班台的定义
值班台是一个实时、聚合、可协作的监控与事件管理界面,其核心目标包括:
- 告警聚合:将来自Prometheus、Grafana、Jaeger、日志系统等多源的告警去重、降噪、关联后集中展示。
- 事件管理:对已确认的故障创建事件(Incident),跟踪其生命周期(触发、确认、处理、关闭)。
- 值班调度:展示当前值班人员、排班表、升级策略,确保事件能快速触达正确的人。
- 上下文关联:将告警与对应的链路追踪(Jaeger)、日志、指标、变更记录关联,缩短MTTR。
关键指标: 值班台设计的好坏直接影响MTTA(平均确认时间)和MTTR(平均恢复时间)。一个成熟的值班台应能将MTTA降低50%以上。
2.2 核心功能详解
| 功能模块 | 子功能 | 说明 |
|---|---|---|
| 告警聚合 | 多源接入 | 支持Prometheus Alertmanager、Grafana、Jaeger告警、云监控等 |
| 去重与降噪 | 基于指纹/时间窗口合并重复告警,抑制已知问题 | |
| 优先级排序 | 根据P0/P1/P2等级、影响范围、SLO剩余时间动态排序 | |
| 事件管理 | 事件创建 | 告警确认后自动或手动创建Incident,生成唯一ID |
| 生命周期跟踪 | 记录触发、确认、处理中、解决、关闭各阶段时间戳 | |
| 协作与通知 | 集成Slack/钉钉/飞书,支持事件备注、标签、关联工单 | |
| 值班调度 | 排班管理 | 支持日/周/月轮值、主备/分层值班模式 |
| 升级策略 | 超时未确认自动升级至二级/三级值班人 | |
| 日历与通知 | 值班日历导出、换班申请、值班前提醒 |
2.3 典型架构组件
值班台的架构通常分为四层:数据接入层、处理与聚合层、存储层、展示与交互层。下图展示了各层之间的协作关系:
2.4 架构组件职责说明
各层组件在值班台中的具体职责如下:
- 数据接入层:负责接收来自不同监控系统的告警通知。通过标准Webhook、REST API或消息队列(Kafka/RabbitMQ)实现解耦接入。Jaeger的告警通常通过Alertmanager Webhook转发。
- 处理与聚合层:核心逻辑所在。执行告警去重(基于指纹+时间窗口)、事件关联(将同一Trace ID的告警合并)、优先级计算(基于SLO剩余时间、影响范围)、升级策略触发。此层是值班台智能化的关键。
- 存储层:持久化事件记录、告警历史、值班排班数据。推荐使用关系型数据库存储事件,时序数据库存储告警趋势。
- 展示与交互层:提供值班人员操作界面。需支持告警列表排序/过滤、事件详情查看、值班日历切换、一键跳转Jaeger链路详情页。
集成要点: 值班台与Jaeger的集成关键在于“Trace ID传递”。当Jaeger检测到高延迟或错误率异常并触发告警时,告警负载中应携带Trace ID。值班台收到告警后,自动在事件详情中生成“查看链路”按钮,点击即可跳转至Jaeger UI对应Trace页面,实现从告警到根因的“一键直达”。
2.5 值班台与Jaeger的集成流程
下图展示了告警从Jaeger出发,经过值班台处理,最终展示给值班人员的完整链路:
2.6 值班台成熟度模型
根据SRE成熟度模型,值班台的发展通常经历以下阶段:
| 成熟度等级 | 特征 | MTTA/MTTR |
|---|---|---|
| L1 初始级 | 邮件/IM群告警,无聚合,人工翻查 | > 30 min / > 2 h |
| L2 可重复级 | 统一告警列表,基础去重,固定排班 | 15-30 min / 1-2 h |
| L3 已定义级 | 告警聚合+事件管理+升级策略,集成链路追踪 | 5-15 min / 30-60 min |
| L4 量化管理级 | 告警关联分析,SLO驱动优先级,自动根因推荐 | < 5 min / < 30 min |
| L5 优化级 | AI辅助告警预测,自动修复,混沌工程验证 | < 1 min / < 15 min |
常见误区: 值班台不是简单的“告警展示板”。如果只做告警列表而缺乏事件管理、值班调度和上下文关联(如Jaeger链路),值班人员仍然需要手动切换多个系统查找根因,MTTR无法有效降低。真正的值班台应成为“单窗格玻璃”(Single Pane of Glass)。