2. Runbook 编排概述

2.1 Runbook 的定义

Runbook(运维手册)是一套结构化的、可重复执行的文档化流程,用于指导运维人员处理标准操作、故障响应或变更执行。在可观测性与 SRE 语境下,Runbook 将隐性的运维经验转化为显性的、可审计的操作步骤,是组织从“英雄式救火”走向“工程化运维”的关键载体。

核心特征: 可重复性、可审计性、可自动化、版本化。
维度 传统运维文档 SRE Runbook
触发方式 人工查阅、经验驱动 告警事件自动触发、Pipeline 集成
更新频率 被动、滞后 随管线变更持续迭代
验证机制 无或手动验证 自动化测试 + 回滚演练
回滚支持 依赖个人记忆 内置回滚步骤与决策树

2.2 Runbook 在 SRE 中的角色

Runbook 在 SRE 体系中承担着“操作层标准化”与“知识层沉淀”的双重角色。它连接了可观测性告警与具体的恢复动作,是 SRE 核心原则——减少琐事(Toil)、可靠性工程化——的具体落地工具。

Runbook 在 SRE 体系中的角色 可观测性告警 Runbook 执行引擎 决策树 · 操作步骤 · 回滚分支 减少琐事 (Toil) 自动化恢复 · 标准化操作 可靠性工程化 变更管理 · 故障演练 SLO / SLI 保障 MTTR 降低 · 错误预算保护 Runbook 是 SRE 将告警转化为可靠恢复动作的“操作层中间件”

2.3 回滚 Runbook 的核心要素

回滚 Runbook 是专门针对变更失败场景设计的特殊 Runbook。它必须具备以下核心要素,才能在高压故障场景下指导操作员快速、安全地恢复服务。

  1. 触发条件:明确哪些告警、指标异常或变更状态触发回滚流程。
  2. 回滚决策树:根据故障影响范围、变更类型、管线阶段,提供分支判断逻辑。
  3. 原子操作步骤:每一步必须是可独立执行、可验证的原子操作,避免“执行若干步骤”等模糊描述。
  4. 验证点:每个关键步骤后设置验证点,确认操作生效或判断是否需要升级。
  5. 回退路径:当主回滚路径失败时,提供备选方案或升级通道。
  6. 状态记录:操作过程中的关键输出、时间戳、决策原因必须记录,用于事后复盘。
要素 说明 OTel 管线场景示例
触发条件 明确启动回滚的信号 OTel Collector 内存使用率 > 90% 且持续 5 分钟
决策树 分支判断逻辑 影响范围:单节点 → 回滚配置;全集群 → 回滚版本
原子步骤 最小可执行操作单元 步骤 3:执行 helm rollback otel-collector 1
验证点 操作生效检查 检查 otelcol_metrics_dropped 指标归零
回退路径 主路径失败时的备选 升级至 SRE 值班组,执行手动数据恢复
状态记录 操作审计与复盘 记录回滚开始/结束时间、操作人、决策原因

2.4 回滚 Runbook 的设计原则

设计回滚 Runbook 时,必须遵循以下原则,确保其在真实故障场景中可用、可靠、可维护。

设计原则总览: 可执行性 > 完备性 > 美观性。一份在 5 分钟内能执行完的 Runbook,远胜于一份覆盖所有边界但需要 30 分钟阅读的文档。
回滚 Runbook 设计原则 回滚 Runbook 设计 可执行性 步骤可复制、可粘贴、可执行 可验证 每步后设验证点与指标 幂等性 重复执行不产生副作用 最小权限 仅授予必要操作权限 可审计 全链路日志与决策记录

2.4.1 可执行性

每条指令必须精确到可直接复制到终端执行的程度。避免使用“检查 Collector 状态”这类模糊描述,应改为:

# 检查 OTel Collector 健康状态
curl -s http://localhost:13133/health | jq '.healthy'

# 预期输出:true

2.4.2 可验证

每个关键步骤后必须附带验证点,明确“如何确认这一步执行成功”。验证点应关联可观测性指标:

# 验证步骤:确认回滚后数据不再丢失
# 指标:otelcol_metrics_dropped
# 命令:
curl -s http://localhost:8888/metrics | grep otelcol_metrics_dropped

# 预期:该指标在回滚后 2 分钟内归零

2.4.3 幂等性

回滚操作必须支持重复执行而不产生副作用。例如,配置回滚应使用版本号而非“回滚到上一个版本”,因为“上一个”在并发场景下可能产生歧义。

2.4.4 最小权限

Runbook 中使用的凭证、、密钥应遵循最小权限原则。回滚操作只应授予恢复服务所需的最小权限集,避免在故障场景下扩大攻击面。

2.4.5 可审计

所有操作步骤、决策分支、时间戳、操作人必须被记录。在 OTel 管线场景中,这些审计日志应通过 OTel Collector 自身导出到集中日志平台,形成闭环。

常见反模式: 将回滚 Runbook 写成“操作指南”而非“执行脚本”。例如:“如果回滚失败,请尝试其他方法”——这种表述在故障场景下毫无价值。回滚 Runbook 必须提供明确的备选路径和升级条件。