衡量线上质量除了故障数量还应统计哪些指标

月度复盘只报故障数量,容易把“这个月出了几次事故”当成质量结论,却看不出影响面、恢复速度和风险集中位置。本文给出一组互补指标,逐项说明分子、分母、时间窗与数据来源,并演示如何计算和组合解读,帮助质量负责人在复盘会上讲清质量水平、变化趋势和改进是否有效。



要点总览(TL;DR)


  • 故障数量只回答“发生了几次”,且受分级口径和统计窗口影响,适合作为入口指标而非结论依据。
  • 建议纳入五类互补指标:影响面(受影响用户数、受影响请求占比)、时长(持续时长、MTTD、MTTR)、密度(按服务或按发布批次)、逃逸率与发布相关故障占比、SLO达标率与错误预算消耗及用户侧体验指标。
  • 每个指标写清分子、分母、单位和自然月时间窗,跨月故障归属规则与口径变更说明提前固定,分母为零或数据缺失时标注“不适用”“无样本”,不记0。
  • 解读时先看体验与SLO类结果指标,再看影响面与时长,最后用密度、逃逸和发布相关占比定位流程薄弱环节;故障数持平但影响面或时长恶化,同样说明质量在变差。
  • 指标是观测信号,小样本月份只做描述性说明,避免用单一指标给团队排名,具体根因与改进措施交由故障复盘和缺陷分析处理。


月度复盘要回答的质量问题与评估目标


线上质量月度复盘通常面向研发负责人、质量负责人和业务负责人,用于判断当月质量是否可接受、风险集中在哪些服务、上月改进项是否见效,以及下月资源投向哪里。指标组合应服务这些决策,而非堆砌数字。


评估目标可以拆成四类问题,每类对应不同视角的指标:


  • 质量水平如何:当月线上可用性、错误率、延迟是否在可接受范围,对应体验类与SLO类指标。
  • 变化趋势如何:与上月、近三个月相比,故障影响面和恢复时长是改善还是恶化,对应影响面类与时长类指标。
  • 风险集中在哪:问题集中在哪些服务、哪些发布批次,对应密度类与发布相关故障占比。
  • 改进是否有效:测试阶段拦截能力是否提升、同类问题是否重复发生,对应逃逸类指标与趋势对比。

故障数量只能回答“发生了几次”,且受故障分级口径和统计窗口影响明显:分级放宽,数量下降;跨月故障归属不同,两个月的数据都失真。因此故障数量适合作为入口指标,结论需要由影响、时长、密度、逃逸、体验五类视角共同支撑。



除故障数量外应纳入的指标与统计范围


建议纳入以下指标,每项补足故障数量的一个盲区。统计范围统一为生产环境、按团队约定的故障分级口径纳入、时间窗为自然月。


指标 定义 补足的盲区 统计范围
受影响用户数 故障期间受到影响的去重用户数 故障数量不区分大小,一次小范围故障与一次全量故障计数相同 生产环境,自然月内发生的故障
受影响请求占比 故障期间失败或超时请求数 ÷ 同期总请求数 反映业务实际受损程度,抵消业务量差异 生产环境,按服务统计
故障持续时长 从故障开始到恢复正常的时长 数量相同但时长差异大,用户感受完全不同 生产环境,按故障记录
MTTD(平均发现时长) 故障开始到被监控或人员发现的平均时长 暴露监控告警覆盖不足 生产环境,纳入统计的故障
MTTR(平均恢复时长) 故障发现到恢复的平均时长 暴露应急响应与回滚能力 生产环境,纳入统计的故障
故障密度(按服务) 故障数 ÷ 服务数,或单服务故障数 避免大团队因服务多而故障数天然偏高 生产环境,按服务归集
故障密度(按发布批次) 引发故障的发布批次数 ÷ 总发布批次数 把故障与变更关联,识别发布质量 生产环境,自然月内发布记录
逃逸率 线上问题中本应在测试阶段拦截的问题数 ÷ 线上问题总数 反映测试拦截能力,故障数量无法体现 生产环境,按问题单归集
发布相关故障占比 由发布变更引发的故障数 ÷ 故障总数 区分变更风险与存量缺陷风险 生产环境,按故障根因分类
SLO达标率 达标时间窗口数 ÷ 总统计窗口数,或按请求成功率计算 用服务承诺衡量质量,而非只看事故 生产环境,按SLO定义窗口
错误预算消耗 当月实际不可用时长 ÷ SLO允许的不可用时长 把故障换算成对承诺的侵蚀程度 生产环境,自然月
可用性 1 − 不可用时长 ÷ 统计总时长 用户侧最直观的质量信号 生产环境,按服务或按业务线
错误率 失败请求数 ÷ 总请求数 捕捉未达故障标准但持续存在的错误 生产环境,按服务统计
P95延迟 95%请求的响应时间不超过该值 性能退化往往先于故障出现 生产环境,按接口或服务统计

这张表的作用是让复盘会上的每个数字都有明确出处。故障分级口径需要在团队内固定,例如只纳入P1、P2级故障,P3及以下作为观察项单独列出,避免口径随月份漂移。



数据口径与证据要求


指标能否跨月比较,取决于分子、分母、单位和时间窗是否稳定。建议为每个指标建立口径说明,逐项写清计算方式和数据来源。


指标 分子 分母 单位 数据来源 缺失或分母为零
受影响请求占比 故障期间失败或超时请求数 同期总请求数 百分比 监控与网关日志 无请求时记“不适用”,不记0
MTTD 各故障发现时间减开始时间之和 纳入统计的故障数 分钟 监控告警记录、故障单 无故障时记“无样本”
MTTR 各故障恢复时间减发现时间之和 纳入统计的故障数 分钟 故障单、值班记录 同上
故障密度(按发布) 引发故障的发布批次数 当月总发布批次数 次/百次发布 发布记录、故障单关联字段 无发布时记“不适用”
逃逸率 线上问题中应被测试拦截的问题数 线上问题总数 百分比 缺陷或问题单、测试记录 无线上问题时记“无样本”
SLO达标率 达标统计窗口数 总统计窗口数 百分比 SLO平台或监控系统 窗口数据缺失时标注并剔除
错误预算消耗 当月不可用时长 SLO允许的不可用时长 百分比 SLO平台 未定义SLO时记“未配置”

时间窗统一为自然月。跨月故障按“开始时间归属”或“影响时长拆分”二选一,并在口径文档中固定;一旦选定,后续月份沿用同一规则。故障分级口径变更时,需在复盘材料中注明变更月份和影响范围,变更前后的数据不做直接比较,或同时给出新旧口径两套数字。


数据来源建议固定为四类:监控告警系统提供可用性、错误率、延迟和发现时间;故障工单提供分级、持续时长、影响范围和根因分类;发布记录提供发布批次和变更关联;SLO平台提供达标率和错误预算。四类数据在月度复盘前完成对齐,避免同一故障在不同系统里数字不一致。



计算与评估步骤


从取数到形成结论,可以按以下步骤执行,保证结果可复算。


  1. 取数与清洗:导出当月故障单、发布记录、监控指标和SLO数据,剔除测试环境记录和重复工单,统一服务命名。
  2. 按服务归一化:计算单服务故障数、单服务受影响请求占比,避免服务数量多的团队总量天然偏高。
  3. 按发布批次归一化:用“引发故障的发布批次数 ÷ 总发布批次数 × 100”计算每百次发布的故障密度,便于不同发布节奏的团队比较。
  4. 计算逃逸率:从线上问题单中筛出根因属于测试阶段可覆盖范围的问题,除以线上问题总数。筛选标准需提前约定,例如需求逻辑错误、边界条件遗漏计入,第三方服务故障不计入。
  5. 计算发布相关故障占比:按故障单的根因分类字段统计由变更引发的故障数,除以故障总数。
  6. 分组对比:按服务、按团队分别列出上述指标,同时给出全公司总量,避免总量掩盖局部恶化。
  7. 趋势对比:与上月及近三个月均值对比,标注变化方向和幅度;样本过少的组只做描述,不做排名。
  8. 组合判断:先看体验类和SLO类指标判断整体水平,再看影响面和时长类指标判断单次故障的严重程度,最后看密度、逃逸和发布相关占比定位流程薄弱环节。

形成结论时,建议给不同指标设定不同权重:体验类和SLO类作为结果指标,权重较高;密度、逃逸、发布相关占比作为过程指标,用于解释结果而非直接打分。权重方案应在年初或季度初确定,月度复盘沿用,避免每月调整口径导致趋势失真。



计算示例:一个月的线上质量指标


以下为一组假设数据,仅用于演示计算过程,不代表任何真实团队的表现。


假设某月:纳入统计的故障4次,受影响用户合计1.2万人,总请求数5000万次,故障期间失败请求合计25万次;4次故障持续时长分别为40、90、30、20分钟,发现时长分别为5、10、3、2分钟;当月发布120批次,其中3批次引发故障;线上问题单50个,其中20个属于测试阶段应拦截的问题;SLO统计窗口30天,达标28天,当月不可用时长合计3小时,SLO允许不可用时长为4.3小时。


指标 计算过程 结果
受影响请求占比 25万 ÷ 5000万 0.5%
平均故障持续时长 (40+90+30+20) ÷ 4 45分钟
MTTD (5+10+3+2) ÷ 4 5分钟
MTTR (40+90+30+20−5−10−3−2) ÷ 4 40分钟
故障密度(按发布) 3 ÷ 120 × 100 2.5次/百次发布
逃逸率 20 ÷ 50 40%
发布相关故障占比 3 ÷ 4 75%
SLO达标率 28 ÷ 30 93.3%
错误预算消耗 3 ÷ 4.3 69.8%

组合解读时,如果上月故障数同为4次,但上月受影响请求占比为0.2%、MTTR为25分钟,则本月故障数量持平,影响面和恢复时长都在恶化,结论应是“故障频次稳定但单次影响变大、响应变慢”,改进重点放在应急响应和变更管控,而非单纯要求减少故障次数。反过来,若故障数上升但影响面下降、MTTR缩短,说明小故障被更早发现和更快恢复,质量趋势未必变差。



结果解读与使用限制


指标是观测信号,能说明发生了什么、变化方向如何,不能单独证明某项改进导致了质量提升。复盘结论应写成“指标变化 + 可能原因 + 待验证假设”,而非直接归因。


  • 口径变化导致不可比:故障分级标准、逃逸率筛选标准、SLO定义调整后,变更前后的数据不做直接比较,需在材料中标注。
  • 小样本月份谨慎解读:故障数只有一两次、发布批次很少时,密度和占比波动大,只做描述性说明,不据此排名或下结论。
  • 避免单一指标排名:用故障数或逃逸率单独给团队排名,容易诱导少报或调整分级,应结合影响面、时长和趋势综合判断。
  • 组合与趋势结合:先看三个月趋势判断方向,再看当月分布定位集中点,最后对照上月改进项检查是否见效。
  • 与根因分析分工:本文指标回答“质量如何、风险在哪”,具体缺陷根因和改进措施属于故障复盘与缺陷分析的范围,两者结论互相引用但不互相替代。

月度复盘的数据汇总、故障单与发布记录的关联、指标看板的共享,可以在ONES效能管理中完成:系统自动收录研发过程中流转的数据,按交付效率、交付质量等维度形成分析指标,并提供场景化仪表盘模板,复盘前把故障、发布和问题数据对齐后共享给参会角色,减少重复取数和口径解释的成本。指标口径本身仍需团队在复盘制度中固定,工具承担的是数据汇总与呈现。



常见问题


故障数量与故障分级口径变化时,月度数据还能直接比较吗?


口径变更后,变更前后的数据不宜直接比较。建议在复盘材料中注明变更月份、变更内容和影响范围,并同时给出新旧口径两套数字,或把对比区间截取到口径统一之后。若只是个别月份的分级判定有争议,可保留原始记录,在趋势图中标注异常点,不调整历史数据。


当月没有发生故障,MTTD、MTTR和逃逸率应该填什么?


没有故障时,MTTD、MTTR记“无样本”,不记0,避免把“没有故障”误读为“发现和恢复时间为零”。逃逸率同理,线上问题总数为零时记“无样本”。受影响请求占比在无请求时记“不适用”。这些标注需要在口径文档中提前约定,保证各月填写方式一致。


逃逸率中“本应在测试阶段拦截”由谁判定,如何减少争议?


判定标准应在季度初由质量负责人与各团队负责人共同约定,写清计入和不计入的情形,例如需求逻辑错误、边界条件遗漏计入,第三方服务故障、生产环境配置差异不计入。判定时以问题单的根因字段为依据,争议问题由质量负责人复核并记录,后续月份沿用同一标准。


指标组合在复盘会上怎么用,才不至于变成逐项念数字?


建议按“趋势—分布—改进项”的顺序组织:先用三个月趋势说明整体方向,再用按服务和按发布的分组数据定位集中点,最后对照上月改进项检查是否见效。结果指标用于判断水平,过程指标用于解释原因,两者结合形成结论,避免逐项复述数值。


这些指标的数据在ONES效能管理中如何汇总?


ONES 效能管理自动收录系统内日常流转的研发数据,按交付效率、交付质量等维度形成分析指标,并提供场景化仪表盘模板,可将仪表盘共享给参会角色。故障单、发布记录和问题数据的关联与对齐仍需团队在复盘前完成,指标口径也需在复盘制度中固定,工具承担的是数据汇总与呈现。