1. MTTR 基础概念

1.1 MTTR 定义

MTTR(Mean Time to Repair,平均修复时间) 是衡量系统从故障发生到完全恢复所消耗平均时间的核心指标。在 SRE 实践中,MTTR 覆盖从故障被检测到、诊断、修复、验证到服务恢复正常运行的完整时间窗口。

MTTR 计算公式:
MTTR = 总修复时间 / 故障次数

其中“修复时间”指从故障确认到服务恢复之间的时长,不包括故障等待被发现的空闲时间。

MTTR 的典型构成阶段包括:

  • 检测时间(Detection Time):从故障发生到告警触发的时间。
  • 响应时间(Response Time):从告警触发到工程师开始排查的时间。
  • 诊断时间(Diagnosis Time):定位根因所花费的时间。
  • 修复时间(Fix Time):执行修复操作的时间。
  • 验证时间(Verification Time):确认服务恢复正常的时间。
💡 关键认知:MTTR 不是单纯的“修代码时间”,而是从故障被感知到服务完全恢复的端到端时长。Prometheus 指标驱动的复盘优化,核心目标就是压缩 MTTR 中的检测和诊断环节。
MTTR 端到端时间线构成 检测 响应 诊断 修复 验证 各阶段典型耗时占比(生产环境经验值): • 检测阶段:10% – 20%(取决于告警覆盖率和延迟) • 响应阶段:5% – 15%(取决于值班响应机制) • 诊断阶段:40% – 60%(MTTR 优化的最大瓶颈) • 修复 + 验证阶段:15% – 30%(自动化程度决定效率)

1.2 MTTR 在 SRE 中的重要性

在 SRE 体系中,MTTR 是衡量故障响应效率和服务可靠性的关键指标。Google SRE 经典著作中将 MTTR 列为最重要的可用性工程指标之一,原因如下:

维度 MTTR 的影响 说明
可用性 直接决定 SLA/SLO 达成 MTTR 越长,故障期间不可用时间越长,可用性越低
用户体验 影响用户流失与信任 每次故障都是对用户信任的消耗,MTTR 越短损失越小
工程效率 决定故障处理成本 长 MTTR 意味着更多工程师时间被占用,影响迭代速度
复盘质量 驱动持续改进 MTTR 数据是复盘的核心输入,指导自动化与流程优化
团队压力 影响值班健康度 高 MTTR 导致频繁告警疲劳和值班 burnout
⚠️ 常见误区:很多团队只关注“故障是否修复”,而忽略了“修复花了多久”。没有 MTTR 量化,复盘就变成了“凭感觉改进”,无法形成可度量的闭环。Prometheus 指标驱动的复盘,正是要解决这个“不可度量”的问题。

1.3 MTTR 与 MTBF / MTTF 的区别

在可靠性工程中,MTTR、MTBF、MTTF 是三个容易混淆但含义完全不同的指标。理解它们的区别是进行有效复盘的前提。

指标 全称 定义 关注点 典型用途
MTTR Mean Time to Repair 平均修复时间 故障恢复速度 评估响应效率、复盘优化
MTBF Mean Time Between Failures 平均故障间隔时间 系统稳定性 评估系统可靠性、预测故障频率
MTTF Mean Time to Failure 平均无故障时间 组件寿命 评估不可修复组件的可靠性

核心区别总结:

  • MTTR 衡量的是“坏了之后多久能修好”——关注恢复速度。
  • MTBF 衡量的是“两次故障之间隔多久”——关注系统稳定性。
  • MTTF 衡量的是“一个组件能用多久才坏”——关注组件寿命(适用于不可修复场景)。
可用性公式中的关系:
可用性 = MTBF / (MTBF + MTTR)

从公式可以看出:降低 MTTR 和提升 MTBF 都能提升可用性。但在实际 SRE 工作中,MTTR 的优化见效更快——因为 MTBF 的提升通常需要架构重构,而 MTTR 可以通过更好的可观测性和自动化快速改善。

MTTR / MTBF / MTTF 时间线对比 正常运行 故障 正常运行 故障 MTBF₁ MTBF₂ MTTR₁ MTTR₂ MTTF 场景: 对于不可修复组件(如硬盘、容器实例),MTTF 指从开始运行到首次故障的平均时间,没有“修复”阶段,故障后直接替换。
🎯 复盘视角建议:在 Prometheus 指标驱动的 MTTR 复盘优化中,我们主要关注 MTTR 的拆解和压缩。MTBF 和 MTTF 作为辅助指标,用于评估优化措施是否对系统稳定性产生了负面影响(例如:过度追求低 MTTR 可能导致频繁重启掩盖了根本问题,反而降低 MTBF)。