3. Runbook 基础概念:定义、分类与生命周期

Runbook(运维手册)是 SRE 实践中的核心可执行文档,它将运维知识、操作步骤与自动化工具绑定,使团队能够以标准化方式响应各类事件。在 SLO 自愈流程中,Runbook 是故障检测与自动化修复之间的“执行层”——它定义了“当 SLO 违反时,系统应该执行什么操作”。

3.1 Runbook 的定义

Runbook 是一份结构化的操作指南,包含触发条件、前置检查、执行步骤、回滚方案与验证标准。它既可以是人工执行的检查清单,也可以是直接触发自动化脚本的编排文件。

核心特征:
  • 可重复性:同一故障场景下,不同工程师执行同一 Runbook 应得到相同结果。
  • 可测量性:每个步骤都有明确的输入、输出与成功标准。
  • 可自动化:步骤应尽量设计为机器可执行,减少人工判断。
  • 版本化:Runbook 随系统架构变更而更新,与代码仓库绑定。

3.2 Runbook 的分类

根据运维场景的不同,Runbook 可分为三大类:故障处理、变更操作与日常巡检。下表对比了三类 Runbook 的核心差异:

分类 触发方式 执行频率 典型场景 自动化程度
故障处理 告警事件 / SLO 违反 按需(突发) 服务宕机、延迟飙升、错误率突增 高(自动隔离/自愈)
变更操作 计划任务 / 审批通过 定期或按计划 版本发布、配置更新、扩缩容 中(半自动+人工审批)
日常巡检 定时调度 / 人工触发 高频(每日/每小时) 健康检查、日志清理、证书过期检查 高(全自动)
设计建议:在 SLO 自愈流程中,故障处理类 Runbook 是核心联动对象。建议将故障处理 Runbook 的触发条件直接绑定到 SLO 燃烧速率告警,实现“检测即执行”。

3.3 Runbook 的生命周期

一个 Runbook 从创建到废弃,通常经历五个阶段。下图展示了 Runbook 的完整生命周期及各阶段的关键活动:

Runbook 生命周期 ① 设计 场景定义 ② 编写 步骤/脚本 ③ 测试 沙箱验证 ④ 运行 生产执行 ⑤ 优化 持续改进 反馈回路:运行数据驱动优化 生命周期关键活动: • 设计:确定触发条件、输入参数、预期输出、失败处理策略。 • 编写:使用 YAML/JSON 定义步骤,或直接编写 Python/Shell 脚本。 • 测试:在预发环境模拟触发,验证步骤正确性与回滚有效性。

3.4 各阶段详细说明

  1. 设计阶段:明确 Runbook 的触发条件(如:错误率 > 5% 持续 3 分钟)、输入参数(实例 IP、集群名称)、预期输出(恢复确认、日志记录)以及失败时的回滚策略。
  2. 编写阶段:将设计转化为可执行步骤。推荐使用版本控制(Git)管理 Runbook 文件,每个 Runbook 包含元数据头(名称、版本、责任人)和步骤列表。
  3. 测试阶段:在隔离的沙箱或预发环境中执行 Runbook,验证每一步的幂等性和边界条件。测试通过后,标记为“就绪”状态。
  4. 运行阶段:Runbook 被事件触发或人工调用。执行过程中记录每个步骤的耗时、输出和状态,生成执行报告。
  5. 优化阶段:基于执行报告中的失败步骤、超时步骤或人工干预记录,迭代更新 Runbook 内容,形成闭环。
常见陷阱:Runbook 编写后不测试直接上线,或测试环境与生产环境差异过大,导致生产执行失败。建议在 CI/CD 流水线中集成 Runbook 的自动化测试步骤。

3.5 Runbook 与 SLO 自愈的联动关系

在 SLO 自愈流程中,Runbook 处于“检测”与“恢复”的中间层。下图展示了 Runbook 如何与 SLO 监控、告警引擎和自动化执行引擎协同工作:

Runbook 与 SLO 自愈联动架构 SLO 监控 燃烧速率告警 告警引擎 事件路由/去重 Runbook 引擎 步骤编排/执行 执行结果反馈:成功/失败/超时 💡 联动流程:SLO 违反 → 告警引擎匹配 Runbook → Runbook 引擎执行恢复步骤 → 结果反馈至监控系统

通过这种联动架构,Runbook 不再是一份静态文档,而是 SLO 自愈流程中的“执行单元”。每个 Runbook 对应一个已知故障模式,当 SLO 指标触发阈值时,系统自动选择并执行对应的 Runbook,实现故障的快速隔离与恢复。