6.2 事件指标:检测、响应与恢复
概述与动机
本主题衡量的是当主题 6.1 的错误预算通过一次真实的故障被花掉时会发生什么:一次事件,一个降低或中断一项服务的、计划外的事件。四项指标构成了衡量一个组织在这方面处理得有多好的标准词汇:平均检测时间(MTTD),组织多久才会注意到出了问题;平均确认时间(MTTA),多久才会有人承担起响应的责任;平均解决时间或平均恢复时间(MTTR),服务恢复需要多久,这与主题 2.10 专门针对由部署引发的故障所涵盖的是同一个概念,现在被推广到任何原因引发的任何事件;以及事件频率,简单来说就是事件发生的频繁程度。
本主题的核心关切,呼应了主题 2.10 对变更失败率的处理方式,在于这些数字只有在围绕诚实报告和分类事件的组织文化同样可信时,才是可信的。一个害怕因事件而被问责的团队,有充分的动机去少报、推迟确认(以避免”计时器已经启动”),或者为了保护自己的指标而把一起严重事件分类为轻微事件。无责事后分析实践,由Etsy这样的组织率先采用,并在Google的SRE文献中被正式化,其存在正是为了消除这种激励,本主题把它当作可信事件数据的一项先决条件,而不是叠加在指标之上的一种可有可无的文化点缀。
对大团队而言,事件指标揭示的是一个组织的检测和响应能力,包括主题 2.10 的回滚工具等投资,是否真正在真实、多样的条件下发挥作用,而不仅仅是那个主题所涵盖的特定的、由部署引发的故障场景。运营关键基础设施的企业和政府组织,在内部和外部都依赖这些指标:内部用它来推动真正的运营改善,外部用它向客户、监管机构或公众证明,事件得到了能干的处理,并且随时间推移正在改善。
核心原则
- 无责文化是可信事件数据的一项先决条件, 而不是一种可选的补充;对问责的恐惧同样会腐蚀报告、确认速度,以及严重程度分类。
- 检测、确认和解决是不同的阶段,需要不同的修复。 一个缓慢的整体恢复时间,可能隐藏着非常不同的底层问题,取决于实际上是哪个阶段慢。
- 事件频率与平均恢复时间是一对配对信号, 类似于DORA的变更失败率和恢复时间(主题 2.10):单独任何一个都讲不出完整的故事。
- 严重程度分类需要与逃逸缺陷分类(主题 5.1)同等的严谨性: 一致的、有文档记录的标准,而不是临时的判断。
- 一次事后分析的价值在于系统性的学习,而不是产出一个数字。 这项指标是良好实践的副产品,而不是良好实践的目标。
建议
把事件响应时间分解成不同的阶段
分别测量并报告检测时间(从故障实际开始到有人注意到)、确认时间(从通知到有人承担起责任),以及解决时间(从承担责任到真正恢复),而不只是一个单一、混合的总数。每个阶段都指向一个不同的修复方式:缓慢的检测指向一个监控和告警方面的缺口,缓慢的确认指向一个待命流程或升级问题,缓慢的解决指向一个工具、操作手册或诊断能力方面的缺口(主题 2.10 专门针对由部署引发的故障涵盖了这一点)。
建立并保护一个真正无责的事后分析流程
一次无责事后分析调查的是发生了什么,以及系统为什么允许它发生,明确避免把过错归咎于个人,因为任何一个处于相同情境、拥有相同信息的理性人,都很可能会犯下同样的错误。主动保护这项纪律:领导层以身作则地对事件做出非惩罚性的回应,一项明确的书面政策,以及养成问”我们的系统哪里允许了这件事发生”而不是”这是谁干的”的习惯,这些都是必要的、持续的投入,而不是一次性的政策声明。
用一致的、有文档记录的、经过审计的标准对严重程度进行分类
把主题 5.1 为逃逸缺陷所建议的同等纪律,应用到事件严重程度分类上:一个固定的、有文档记录的量表,基于真实的客户或业务影响,在各团队之间一致地应用,并定期审计是否出现漂移。不一致的分类,一些团队宽松,一些严格,会让全组织范围的事件数据在比较上和不一致分类的缺陷数据一样不可靠。
一起跟踪事件频率与平均恢复时间,绝不孤立地看
一个改善中的平均恢复时间,配上一个不断上升的事件频率,可能意味着一个团队正变得更擅长救火,而底层系统可靠性实际上正在恶化;一个下降的事件频率,配上一个恶化的平均恢复时间,可能意味着更罕见、但更严重、更难诊断的故障正在取代频繁的轻微故障。把两者一起审阅,恰恰呼应了第2部分DORA指标的速度与稳定性配对纪律,才能得到一幅诚实的综合图景。
从事后分析中提取并跟踪系统性的行动项,而不只是指标
事后分析流程真正的价值,在于它所产生的具体、系统性的行动项:一个缺失告警被添加,一份操作手册被改善,一个单点故障被消除。用主题 4.5 技术债务积压清单同等的纪律,把这些行动项跟踪到完成,因为一次产生了洞见却没有后续跟进的事后分析,浪费了这个流程本应捕捉到的组织学习。
权衡取舍:利与弊
| 方案 | 优点 | 缺点 |
|---|---|---|
| 混合的、单一的事件响应时间指标 | 报告起来简单 | 掩盖了检测、确认、解决中具体是哪个阶段才是真正的问题 |
| 按阶段分解的事件指标 | 具有诊断性,直接指向正确的修复方式 | 需要对每个阶段的转换进行更细致的埋点 |
| 以问责为导向的事件审查 | 感觉上有担当,满足了分配责任的愿望 | 腐蚀未来报告的诚实度,也很少能修复真正的系统性原因 |
| 无责事后分析实践 | 产生诚实的数据和真正的系统性修复 | 需要持续的文化投入和领导层的纪律来维持 |
核心张力是个人问责的吸引力,与对诚实报告的实际需求之间的张力。在一次事件之后责怪某个个人,可能感觉令人满意,也可能看起来像果断的领导力,但它可靠地会腐蚀未来每一次事件的数据,因为人们一旦害怕个人后果,就会少报、推迟确认,或错误分类严重程度。刻意而一贯地朝无责实践解决这种张力,理解真正的问责来自修复那个允许一次故障发生的系统,而不是惩罚那个恰好在场的个人。
与团队讨论的问题
我们是否把事件响应时间分解成检测、确认和解决阶段,还是只跟踪一个混合的单一数字? 如果只存在一个混合数字,挑一次近期的重大事件,尝试回溯性地重建阶段分解,看看它本会揭示出什么。
我们团队是否真正相信我们的事后分析流程是无责的,还是对后果的恐惧依然在塑造事件被报告和讨论的方式? 直接、诚实地问这个问题;一项声称无责、实际上却没有被真正践行的政策,不会产生可信的数据。
同一起事件的严重程度,两个不同的团队会以同样的方式分类吗? 挑一起真实的、模糊的过去事件,让不同团队的代表独立地对它进行分类,然后比较结果。
我们是一起审阅事件频率和平均恢复时间,还是其中一个获得的关注比另一个更多? 检查你实际的报告实践和审阅是否包含了这种配对,呼应主题 2.10 为DORA稳定性指标所建议的同一种纪律。
过去六个月我们事后分析的行动项,有多大比例真正被完成了? 如果你目前没有跟踪这一点,这个缺口值得点明;一个行动项完成率低的事后分析流程,产生的是洞见,却没有后续跟进。
对问责的恐惧是否曾经导致有人推迟报告或确认一起事件? 这是一个不舒服但重要的问题;一个诚实的”是的,事情是这样发生的”答案,对你事件流程的健康而言,远比一个反射性的”没有”更有价值。
行业视角
初创公司。 对一个小团队而言,事件响应出于必要往往是非正式的,正式的阶段分解一开始可能没有必要。值得及早养成的习惯,是从第一起事件开始就建立无责讨论的规范,因为早期建立的文化习惯,远比在一种容易问责的模式已经根深蒂固之后再去补救要容易维持得多。
小型企业。 一份简单、共享的事件日志,哪怕只是非正式的,配以一个基本的严重程度分类和针对任何重大事件的一次简短无责回顾,就能在不需要复杂工具或专门事件管理平台的情况下,捕捉到本主题的大部分价值。
企业。 一致的严重程度分类和真正、持续的无责文化,在这个规模上都更难维持,而两者对于在数十个团队之间获得可信、可比较的事件数据都至关重要。投资于有文档记录的分类标准、定期审计,以及领导层对无责回应的主动示范,因为朝问责方向的文化漂移,如果没有刻意、持续的反向压力,往往会悄悄渗入。
政府。 影响公共服务或关键基础设施的事件,常常面临外部审查、媒体关注,或正式调查,这会造成一种朝寻找问责对象方向的强大压力,如果不加主动管理,可能直接破坏内部的无责实践。为真正的系统性学习维持一套清晰的内部无责纪律,把它与可能在一起严重事件之后随之而来的任何外部问责流程区分开来,并向员工清楚地传达这种区分。
案例
企业。 一家支付公司的工程文化多年来一直非正式地把事件当作一种应当被尽量减少去承认、以避免显得有责任的东西,这导致了持续糟糕的检测和确认时间,而领导层最初把这归咎于监控工具不够充分。一次朝真正无责事后分析的文化转变,包括领导层公开、具体地表扬快速、诚实的事件确认,而不只是表扬快速的解决,在两个季度内产生了检测和确认时间双双可衡量的改善,揭示出最初的瓶颈实际上是文化性的,对问责的恐惧,而不是最初假定的技术性的,工具不够充分。
政府。 一家公共交通机构的运营中心,历来在其内部事件日志中把几乎每一次服务中断都归类为”轻微”,一位新任安全总监发现这种模式很可疑,因为一线员工持续、非正式地投诉存在严重的反复问题。一次调查揭示,“轻微”分类避免了更高严重程度所要求的繁琐正式报告流程,造成了一种无意中的低分类激励。该机构简化了所有严重程度的正式报告要求,并明确保护员工不因诚实的严重程度报告而被问责,随后的事件数据显示出一个更准确、也大幅更高的真正重大中断比例,终于给了领导层一幅诚实的图景,据以确定基础设施投资的优先级。
商业理由:动机、投资回报与总拥有成本
真正无责、分类良好、按阶段分解的事件指标的回报,是真正推动系统性改善的诚实数据,而不是一幅由恐惧驱动的少报或错误分类所产生的、令人安心却虚假的图景。上面的支付公司案例具体展示了这一点:一次文化修复,而不是一次工具投资,解决了领导层曾经误诊为技术性检测问题的东西。
总拥有成本主要是文化和流程投入:对无责实践的持续领导层承诺、有文档记录且经过审计的严重程度分类标准,以及把事后分析行动项跟踪到完成的纪律。这份投入的成本,低于替代方案,一个因为恐惧已经腐蚀了每一项输入而产生自信却错误数据的事件指标项目。
反模式与陷阱
- 以问责为导向的事件审查: 腐蚀未来每一次事件的报告诚实度、确认速度和严重程度分类。
- 只跟踪一个混合的响应时间数字: 掩盖了检测、确认、解决中具体是哪个阶段才是真正的问题。
- 各团队之间不一致的严重程度分类: 让全组织范围的事件数据在比较上不可靠。
- 孤立地审阅事件频率和平均恢复时间: 错过了这对配对信号所提供的综合、诚实图景。
- 一个产生了洞见却没有完成任何行动项的事后分析流程: 浪费了这个流程本应捕捉到的组织学习。
- 一项被声明、却没有被领导层真正践行的无责政策: 产生的数据腐蚀,与一种公开以问责为导向的文化如出一辙。
成熟度模型
- 第一级,启动: 事件响应是非正式的,报告不一致,一种容易问责的文化在主动劝阻诚实的报告。
- 第二级,发展: 存在一些事件跟踪,但严重程度分类不一致,无责实践被声明,却没有被一贯地践行。
- 第三级,标准化: 按阶段分解的事件指标,配以一致的、有文档记录的严重程度分类,在全组织范围内被跟踪,配以真正无责的事后分析实践。
- 第四级,管理: 事件频率和平均恢复时间一起被审阅,事后分析行动项被跟踪到完成,分类被定期审计以确保一致性。
- 第五级,协奏: 组织拥有一份经过证明、持续的无责实践记录,产生诚实的数据和真正的系统性修复,事件指标直接、可靠地为可靠性投资决策提供依据。
讨论思路
- 我们的事后分析流程能否经受住关于它是否真正无责的诚实检验?
- 我们最近一次最慢事件的阶段分解,检测、确认、解决,是什么样子?
- 两个团队会以同样的方式对我们上一次重大事件的严重程度进行分类吗?
- 我们近期事后分析行动项中,有多大比例真正被完成了?
- 对问责的恐惧是否曾经塑造过我们团队报告或讨论一起事件的方式?
要点回顾
- 无责事后分析文化是一项先决条件, 用以获得可信的事件数据;对问责的恐惧同样会腐蚀报告、确认速度和分类。
- 把响应时间分解成检测、确认和解决阶段,每一个都指向一个不同的修复方式。
- 用一致的、有文档记录的、经过审计的标准对严重程度进行分类,呼应主题 5.1 的逃逸缺陷纪律。
- 一起审阅事件频率和平均恢复时间,绝不孤立地看,与DORA稳定性指标同样的配对纪律。
- 把事后分析行动项跟踪到完成;这项指标是良好实践的副产品,而不是良好实践的目标。
参考文献与延伸阅读
- Site Reliability Engineering: How Google Runs Production Systems,Betsy Beyer、Chris Jones、Jennifer Petoff、Niall Richard Murphy编(无责事后分析实践与事件指标)。
- The Site Reliability Workbook,Betsy Beyer、Niall Richard Murphy、David K. Rensin、Kent Kawahara、Stephen Thorne编(实用的事件响应与事后分析指导)。
- The Field Guide to Understanding Human Error,Sidney Dekker著(系统性、无责故障调查的奠基性论证)。
- Allspaw, John, “Blameless PostMortems and a Just Culture,” Etsy Engineering Blog (2012):软件运营中无责实践的一次早期、有影响力的阐述。