想象你是一家繁忙餐厅的后厨主厨。餐厅向顾客承诺“30 分钟上齐一桌菜”,但每天总有意外冒出来:招牌菜供应商突然断货、烤箱在晚市高峰期罢工、外卖平台瞬间涌入三百个订单。对付这些状况,顶尖餐厅靠两件法宝:一是提前写好的“标准菜谱卡”,明确写着断货联系哪家备选供应商、烤箱故障先检查哪颗保险丝、爆单时先出哪几道菜;二是后厨中央的“订单屏与广播电台”,让每个岗位都实时知道“谁在处理什么、进展到哪一步、还需多久”。这套后厨生存哲学,正是 SRE 工程中 Runbook 自动化与 ChatOps 协同处置的生动写照。 在云原生时代,服务由成百上千个容器和微服务组成,故障是常态而非例外。SRE(站点可靠性工程)把“写菜谱”变成可执行的 Runbook(运维处置手册),把“广播电台”变成以聊天工具为操作面的 ChatOps。Runbook 将专家的应急处置经验固化为标准化、可演练、可自动执行的步骤;ChatOps 则把告警、执行、审批、复盘全部汇入一条聊天线程,让信息不再是“办公室传言”,而是全员可见的“订单屏”。两者合一,就是把故障处置从“救火队长单打独斗”升级为“流水线式协同作战”。

岗位关联

掌握 Runbook 自动化与 ChatOps 协同处置,是 SRE、DevOps 与云平台工程师的核心竞争力——它决定你在大规模故障中,是慌乱淹没在告警洪流里,还是从容地按配方一步步恢复服务。

目录
  1. 可视化演示
  2. Runbook 基础认知
  3. Runbook 自动化
  4. ChatOps 协同模式
  5. 事件处置流程
  6. 工具链集成
  7. 实施关键点
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示告警经管道路由至ChatOps Bot、自动匹配Runbook并执行处置的流程,以及自动化级别和MTTR缩短效果。

本节配有交互动效(进入视口后自动加载,约 3KB)。

告警流水线 监控告警经管道路由到ChatOps Bot MTTR = 修复时间 Bot自动匹配Runbook并执行处置缩短MTTR。

Runbook 基础认知

一家餐厅能稳定出餐,靠的不是某个大厨天赋多高,而在于每道招牌菜都配有一张“菜谱卡”:原料清单、火候时间、装盘标准,甚至写着“酱汁太稀就加一勺水淀粉”这样的补救方案。大厨休假时,新来的帮厨照着菜谱也能保住招牌菜的水准。这张菜谱,就是餐厅的“组织记忆”。

IT 系统里,这个“组织记忆”就是 Runbook(运维处置手册)。SRE 实践中,Runbook 是一套预先编写、步骤化、可验证、可执行的处置流程,它把资深工程师在一次次故障中摸爬滚打出来的经验,从“个人脑子”沉淀为“团队资产”,让处置能力不再依赖某一个人。

一份高质量 Runbook 包含四个核心要素:触发条件(什么情况下翻开这张菜谱)、执行步骤(每一步做什么、怎么做)、预期结果(每步之后应看到什么)、回滚与升级路径(做错了如何退、搞不定找谁)。它适用于四类场景:故障处置、变更操作、例行巡检、灾备切换。它与普通文档的本质区别在于“面向执行”——步骤可被机器解析、结果可被验证、内容有版本管理。而这一切的最终目的,是守护服务的可用性指标,也就是 SLO 所承诺的那条底线。

就像餐厅用“30 分钟出餐承诺”倒推后厨该备多少料一样,SRE 用可用性与错误预算倒推 Runbook 的优先级:预算快耗尽时,按菜谱快速止血;预算充裕时,从容诊断根因。菜谱卡让任何一个厨师都能救场,Runbook 让任何一个 on-call 都能稳住局面。

Availability=UTUT+DT×100%\text{Availability} = \frac{UT}{UT + DT} \times 100\%
通俗理解:服务“正常营业时间”占总时间的比例。Runbook 的价值,就是用标准流程把故障时间 DT 压到最短,守住可用性承诺。
  1. UT 服务可用时长服务正常响应请求的总时长,相当于餐厅正常营业、稳定出餐的时间
    UT=Ttotal−DTUT = T_{total} - DT
  2. DT 故障不可用时长服务降级或不可用的总时长,也就是那道菜彻底做砸、顾客干等的时间
    DT=∑TfailureDT = \sum T_{failure}
  3. 相除取百分比正常时间在总时间中的占比,就是可用性指标,也是 SLI/SLO 的度量基础
    Availability=UTUT+DT×100%\text{Availability} = \frac{UT}{UT + DT} \times 100\%

Runbook 自动化

菜谱卡上的步骤,并不都要人肉执行。现代餐厅有切菜机、真空低温烹饪机,厨师只需按下启动键。Runbook 自动化,就是把“可重复、低风险、高频率”的动作交给机器,让人只做判断和把关。

从手工到全自动,业界通常划分四个层次:L1 纯手动——逐个点击控制台按钮;L2 半自动——脚本辅助,人工确认每一步;L3 审批后执行——机器人先自动跑低风险步骤,高风险步骤等人在聊天里批准;L4 全自动自愈——系统检测到故障自动执行并验证恢复,全程无需人工介入。

落地自动化需要三件事协同:触发机制(监控告警 Webhook、定时巡检、人工在聊天频道发 /runbook 命令);编排流程(顺序步骤、条件分支、失败重试、超时熔断);安全约束(最小权限凭证、审批关卡、变更留痕、灰度执行)。其中,自动化覆盖率是衡量进展的核心指标——它回答了一个朴素的问题:菜谱里到底有多少活,机器替人类干了?

自动化不是越多越好。就像后厨不会让机器人掌勺做佛跳墙,L4 全自动只适合低风险高频率的动作;高风险操作永远要留一道“主厨试味”——人工审批。自动化是逐级上台阶的阶梯,而不是一步跳到底的悬崖。

Cauto=SautoStotal×100%C_{auto} = \frac{S_{auto}}{S_{total}} \times 100\%
通俗理解:一份菜谱里,“机器能直接做的步骤”占全部步骤的比例。比例越高,人需要动手的环节越少。
  1. S_total 分母一份 Runbook 中全部处置步骤的总个数
    Stotal=∑i=1nstepiS_{total} = \sum_{i=1}^{n} step_i
  2. S_auto 分子其中可由机器自动执行的步骤个数,不包含需要人工审批或判断的步骤
    Sauto⊆StotalS_{auto} \subseteq S_{total}
  3. 相除取百分比将比值乘以 100% 得到覆盖率,用于衡量“机器替你干了多少活”
    Cauto=SautoStotal×100%C_{auto} = \frac{S_{auto}}{S_{total}} \times 100\%

ChatOps 协同模式

后厨菜谱再好,如果各岗位各干各的,也会乱成一锅粥。于是有了中央订单屏和对讲广播:每个订单(事件)到哪一步了、谁在处理、还缺什么,一目了然。ChatOps 就是把这块“订单屏 + 广播”搬进了研发团队的聊天工具。

它的核心理念是“聊天即控制面”:告警、Runbook 执行、人工审批、恢复确认,全部通过同一条聊天线程完成。工程师不需要在五个系统之间来回切换,不用在群里到处问进度,所有信息自动汇入一个频道,任何人加入频道就能立刻接手。

落地 ChatOps 离不开三块拼图:机器人交互——机器人在频道中监听指令,执行 Runbook 动作并把结果回贴到线程;上下文共享——告警自动附带监控截图、日志片段、链路追踪 ID 和最近变更记录,让接手者“一进来就懂”;审批机制——高风险步骤由机器人在消息里发起审批,工程师点一下按钮即可批准,全过程留痕可审计。它把“从发现问题到有人拍板动手”的等待时间压缩到极致:

就像订单屏上每道菜的状态清清楚楚,ChatOps 让每个事件都有“一条线程管到底”:谁告的警、谁批的准、谁执行的、结果如何,全部透明。事后复盘时,翻聊天记录就是翻处置档案,不用再靠回忆拼凑时间线。

Tdecide=Tnotify+TapproveT_{decide} = T_{notify} + T_{approve}
通俗理解:从“监控发现异常”到“有人批准动作”的总等待时间。ChatOps 把这两段等待都压缩进一条聊天线程。
  1. T_notify 通知耗时告警从监控系统到达聊天频道的时间,依赖 Webhook 与机器人推送
    Tnotify=tarrive−talertT_{notify} = t_{arrive} - t_{alert}
  2. T_approve 审批耗时审批人看到消息到点击“批准”的时间,这是决策链路中唯一无法完全消除的人工环节
    Tapprove=tapprove−tarriveT_{approve} = t_{approve} - t_{arrive}
  3. 求和得决策时延两者相加构成完整决策链路,ChatOps 的目标是让两段时间都趋于零
    Tdecide=Tnotify+TapproveT_{decide} = T_{notify} + T_{approve}

事件处置流程

餐厅晚市高峰,订单屏突然跳红:“烤鸭炉温度异常”。后厨立刻进入标准流程:先确认是只有一台炉子还是全线受影响,再决定是重启还是切换到备用炉,事后还要在交接本上写下原因。这个流程对应 IT 事件处置的四部曲:检测、诊断、恢复、复盘。

第一步检测告警:监控系统通过 SLI(如错误率、延迟)触发告警,告警进入 ChatOps 频道并自动匹配对应 Runbook。第二步诊断定位:按 Runbook 中的诊断步骤执行——查监控面板、看日志、关联最近的变更记录,机器人自动收集上下文,把“发生了什么”快速拼完整。

第三步恢复操作:严格按 Runbook 顺序执行,低风险步骤由机器自动跑,高风险步骤由人工审批,每步结果实时广播到频道。第四步事后复盘:事件关闭后召开复盘会,产出改进项,其中最重要的一项就是“更新 Runbook”,让同类型故障下一次处置得更快。整个流程的提速效果,最终都汇聚到 MTTR 这个核心指标上:

四步流程环环相扣,就像后厨“发现异常→判断影响→换炉重烤→记录交接”。复盘不是走形式,而是把今天的手忙脚乱,变成明天菜谱卡上新增的一行操作指引。

MTTR=MTTA+MTTEMTTR = MTTA + MTTE
通俗理解:一次故障从“被看见”到“被治好”的总时长,等于“等人响应”加上“动手修复”。
  1. MTTA 确认时间Mean Time To Acknowledge,从告警触发到值班工程师响应接手的平均时长,ChatOps 显著压缩它
    MTTA=Tack−TalertMTTA = T_{ack} - T_{alert}
  2. MTTE 处置时间Mean Time To Eliminate,从接手到服务恢复的平均时长,Runbook 自动化显著压缩它
    MTTE=Tresolved−TackMTTE = T_{resolved} - T_{ack}
  3. 相加得 MTTR两段之和即平均修复时间,是 SRE 衡量事件处置效率的核心指标
    MTTR=MTTA+MTTEMTTR = MTTA + MTTE

工具链集成

一张菜谱卡再好,也得挂在灶台边方便取用;后厨的冰箱、烤箱、保温柜,也得连成一条流水线。Runbook 与 ChatOps 的真正威力,来自与周边工具的深度集成——信息像食材一样,沿着管道自动流到该去的地方。

典型的集成链路是:监控平台(如 Prometheus)产生告警 → Webhook 推送到 Runbook 引擎 → 引擎按匹配规则触发对应 Runbook → 机器人把进展广播到聊天频道 → 执行结果自动创建工单、关联知识库、回写变更记录。工程师全程只需要在聊天频道里做决策,不用手工搬运任何信息。

四大集成点值得重点建设:监控平台(告警即触发,消灭“看到告警再去找手册”的空档);工单系统(自动建单,事件全生命周期可追踪);知识库(执行时自动附带相关手册与历史案例);CI/CD(关联最近变更,快速判断故障是否由发布引入)。集成度越高,需要人工搬运的信息越少,而这“最后一公里”是否打通,可以用 Webhook 触发率来衡量:

集成的目标,是让信息像流水线一样自动流转:告警、动作、记录、知识,都顺着管道流到该去的位置。厨师不用满后厨找调料,工程师不用满系统找日志——这就是工具链集成的意义。

Rhook=AhookAtotal×100%R_{hook} = \frac{A_{hook}}{A_{total}} \times 100\%
通俗理解:告警总数里,有多大比例能自动触发 Runbook。它衡量“发现问题”到“开始处置”之间的自动化衔接程度。
  1. A_total 告警总数监控系统在统计周期内产生的全部告警事件数量
    Atotal=Ahook+AmanualA_{total} = A_{hook} + A_{manual}
  2. A_hook 自动触发数其中通过 Webhook 自动连接 Runbook 引擎并触发处置的事件数量
    Ahook⊆AtotalA_{hook} \subseteq A_{total}
  3. 相除取百分比该比值反映从“问题被发现”到“处置被启动”的自动化衔接强度
    Rhook=AhookAtotal×100%R_{hook} = \frac{A_{hook}}{A_{total}} \times 100\%

实施关键点

写菜谱不难,难的是让整个后厨坚持“用菜谱、改菜谱、练菜谱”。Runbook 工程落地同样是一场持久战,四个关键点缺一不可:度量、文化、演练、演进。

度量改进:用自动化覆盖率、MTTR、Webhook 触发率等指标量化进展,让改进看得见、可对比。文化建设:定下“复盘必须更新 Runbook”的规矩,把写 Runbook 变成团队习惯而非额外负担,写得好的人被认可而非被嘲讽“多此一举”。演练机制:定期开展故障演练(Game Day),人为注入故障,验证 Runbook 是否过时、ChatOps 链路是否通畅、新人是否真的能按图索骥。演进路线:从高频低风险场景试点,跑通后再逐步扩大覆盖,走小步快跑的路线,避免“一步到位”的陷阱。

在四项关键点中,最容易被忽视的是“度量”。没有度量,改进就没有方向和动力。团队通常把 Runbook 纳入版本管理,每次更新走代码评审,并用“陈旧率”这样的指标提醒大家及时维护。一个能反映 Runbook 是否“活着”的简单指标,就是更新成熟度:

就像餐厅每周试菜、每月更新季节菜单一样,Runbook 也是一道“活菜”。只有持续度量、持续演练、持续迭代的团队,才能让 Runbook 真正成为组织的肌肉记忆,在故障来临时从容不迫地翻出菜谱、按下执行键。

M=UupdatedUtotalM = \frac{U_{updated}}{U_{total}}
通俗理解:团队维护的全部 Runbook 里,最近有过实际更新的占比。比值越接近 1,说明菜谱越新鲜。
  1. U_total 总数团队当前维护的全部 Runbook 数量
    Utotal=∑i=1nriU_{total} = \sum_{i=1}^{n} r_i
  2. U_updated 更新数最近一个统计周期(如季度)内被实际更新过的 Runbook 数量
    Uupdated⊆UtotalU_{updated} \subseteq U_{total}
  3. 相除得成熟度比值越接近 1,说明 Runbook 在持续演进;长期不更新的 Runbook 会悄悄沦为“僵尸文档”
    M∈[0,1]M \in [0, 1]

AI 应用场景

大促高峰期的支付服务故障处置

阶段:事件响应与告警处置

解决的问题:传统短信加电话的告警方式只能“通知”不能“处置”,值班工程师要登录多个系统人工排查,大促期间每分钟的延迟都意味着巨额损失。Runbook 自动化加 ChatOps 把告警直接映射到处置流程:机器人广播、自动诊断、审批后回滚,全程在一个聊天界面完成。

具体案例:某电商 618 大促,支付网关错误率在 30 秒内飙升至 12%。监控 Webhook 立即触发“支付服务异常处置”Runbook,机器人把告警和初步诊断结果推送到 #oncall 频道,值班工程师在聊天消息中点“批准回滚”,脚本自动回滚至上一稳定版本,8 分钟后错误率归零。全程聊天记录即复盘材料。

新人的首次值班培训

阶段:知识沉淀与传承

解决的问题:新 SRE 上岗前面对上百条告警规则手足无措,传统“老带新”口口相传周期长且内容易失真。Runbook 把老工程师的处置经验固化成可演练的菜谱,结合 ChatOps 沙箱模拟告警,让新人在真实故障到来前就已“做过好几遍”。

具体案例:某云计算团队为每位新入职 SRE 分配三张核心 Runbook,在隔离环境模拟“磁盘打满”“证书过期”“Pod 崩溃循环”三类故障。新人在聊天频道里用机器人命令逐步完成处置,系统自动评分。团队的新人独立值班时间从 3 个月缩短到 1 个月。

故障复盘的持续改进闭环

阶段:持续改进与度量

解决的问题:复盘会开完就散、改进项无人跟进、同类故障反复发生,是许多团队的顽疾。把复盘产出的改进项直接转成 Runbook 更新提交,关联 ChatOps 频道,由机器人跟踪落地状态,让每一起事故都变成 Runbook 资产的一次升级。

具体案例:某互联网公司规定每次事故复盘必须附带“Runbook 更新提交”,由 SRE 负责人评审合并。半年后,同类故障的 MTTR 下降了 62%,Runbook 更新成熟度从 0.4 提升到 0.9。

Python 演示

python66 行
# -*- coding: utf-8 -*-"""Runbook 自动化与 ChatOps 协同处置模拟器"""import timefrom dataclasses import dataclassfrom typing import Dict, List  @dataclassclass RunbookStep:    """菜谱卡片上的一个步骤"""    name: str    action: str    auto: bool = True    timeout: int = 10  @dataclassclass Runbook:    """标准菜谱: 一组有序的处置步骤"""    name: str    steps: List[RunbookStep]     def execute(self, executor: str = "robot") -> Dict[str, str]:        approval_rules = {"回滚至上一稳定版": True}        results = {}        for idx, step_info in enumerate(self.steps, 1):            if step_info.auto:                mode = "自动执行"            else:                mode = "人工审批"                if not approval_rules.get(step_info.name, False):                    results[step_info.name] = "审批未通过, 跳过"                    continue                mode += "通过"            time.sleep(0.2)            results[step_info.name] = f"{mode}({executor})"        return results  class ChatOps:    """后厨广播: 把每一步进展同步到聊天频道"""     def __init__(self, channel: str = "#oncall") -> None:        self.channel = channel        self.post_count = 0     def publish(self, message: str) -> None:        self.post_count += 1        print(f"[ChatOps @{self.channel}] {message}")  def main() -> None:    chat = ChatOps()    chat.publish("告警: 支付服务错误率飙升 12%, 启动 runbook")    runbook = Runbook("支付服务异常处置", [        RunbookStep("核对错误率监控", "query_error_rate", auto=True),        RunbookStep("检查最近发布单", "list_recent_releases", auto=True),        RunbookStep("回滚至上一稳定版", "rollback_version", auto=False),    ])    for step_name, status in runbook.execute().items():        chat.publish(f"{step_name}: {status}")    chat.publish(f"处置结束, 事件关闭, 共广播 {chat.post_count} 次")  if __name__ == "__main__":    main()
目的:模拟 SRE 用 Runbook 定义标准处置步骤、由 ChatOps 机器人逐步广播执行进展的完整链路,演示“自动步骤直接跑、高风险步骤等审批”的分级模式。
  1. runbook = Runbook("支付服务异常处置", [创建一张“菜谱”:把支付故障的处置流程定义为一组有序步骤
  2. RunbookStep("回滚至上一稳定版", "rollback_version", auto=False)高风险操作标记为 auto=False,强制走人工审批,守住安全护栏
  3. approval_rules = {"回滚至上一稳定版": True}模拟审批策略:只有“回滚”这个动作通过了人工批准
  4. if step_info.auto:判断当前步骤是否自动执行,对应 Runbook 自动化的分级设计
  5. mode += "通过"人工审批通过后,步骤才被允许继续执行
  6. results[step_info.name] = f"{mode}({executor})"记录每个步骤的执行结果,便于后续回执广播
  7. chat.publish(f"{step_name}: {status}")把每一步结果实时广播到聊天频道,即 ChatOps 的“订单屏”
  8. if __name__ == "__main__":程序入口,支持直接运行,模拟一次完整的事件处置闭环

常见误区

误区“我把故障处理过程写进 Wiki,配上截图,标注好时间线,这就是 Runbook 了。平时没人看也无所谓,出事了再翻出来照着做。”

正解Runbook 是“菜谱”而不是“回忆录”。菜谱要求原料、火候、补救方案写得能照着执行;Runbook 要求触发条件明确、步骤可操作、结果可验证,并且最终能被自动化引擎直接驱动。普通文档是给人读的,Runbook 的终极形态是“喂”给机器执行。如果写出来的内容连自动化工具都无法解析,它只是存档,不是 Runbook。

为何常见:很多人把“记录”和“执行”混为一谈,觉得把事情写下来就完成了经验沉淀,忽略了 Runbook 的“可执行性”才是灵魂。

误区“我们在群里 @ 机器人让它转发告警、播报状态,这就算 ChatOps 了。”

正解ChatOps 的核心是“聊天即控制面”,机器人不只是播报员,还要能触发 Runbook、收集审批、回贴结果、关联上下文。只转发告警相当于后厨只装了个喇叭喊“出事了”,却没人知道该谁处理、怎么处理。真正的 ChatOps 是“广播 + 执行 + 留痕”三位一体。

为何常见:ChatOps 名字里带着“聊”,让人误以为重点是“聊天”,而忽略了“操作”才是它的本质。

误区“我们把 Runbook 里所有步骤都设为自动执行,目标 100% 自动化,这样处置速度最快。”

正解高风险操作(生产回滚、数据变更、配置下发)需要人工审批作为安全护栏。自动化覆盖的优先级应该是“低风险高频优先、高风险低频保留审批”。盲目追求 100% 自动化,可能把一个本该被人的经验拦下的小问题,放大成一场生产事故——就像让机器人掌勺做佛跳墙,火候稍有偏差就砸了招牌。

为何常见:人们容易把“自动化”和“先进”画等号,忽略了人在环路(human-on-the-loop)的纠错价值,也低估了自动化本身可能出故障。

误区“Runbook 花两周写完了,以后每次故障照着做就行,不需要再改,改多了反而乱。”

正解系统架构、依赖组件、工具链都在持续变化,Runbook 会像食材一样过期。健全的团队用两条机制保持 Runbook 鲜活:一是“每次故障复盘必须更新 Runbook”,二是定期演练验证内容。还可以用更新成熟度(最近更新的 Runbook 占比)来度量健康度,长期没更新的 Runbook 要主动审查或下线。

为何常见:“写完即归档”的文档习惯根深蒂固,人们把 Runbook 当成静态文档,而忘了它其实是需要持续维护的“活产品”。

面试题

Q1. Runbook 最核心的价值是什么?

单选题 · easy

  • A.保存故障历史记录
  • B.标准化沉淀处置经验← 正确答案
  • C.自动发送告警通知
  • D.替代监控系统告警

答案:B。Runbook 不是历史记录,也不是告警工具。它的核心价值是把专家处置故障的经验固化为标准化、可执行的步骤,让任何人按图索骥都能正确处置,就像菜谱让新厨师也能做出招牌菜。

Q2. 下列哪项最能体现 ChatOps 的本质?

单选题 · easy

  • A.用聊天工具转发告警
  • B.聊天即操作控制面← 正确答案
  • C.群里自动回复机器人
  • D.替代人工值班机制

答案:B。ChatOps 的关键不在“聊”,而在把聊天频道变成操作控制面——告警、Runbook 触发、审批、执行回执都发生在同一条聊天线程里。转发告警只是广播,不能算真正的 ChatOps。

Q3. 计算 Runbook 自动化覆盖率时,分母通常指什么?

单选题 · easy

  • A.监控服务总数量
  • B.处置步骤的总数量← 正确答案
  • C.告警事件的总数量
  • D.参与工程师的人数

答案:B。自动化覆盖率 = 可自动执行步骤数 ÷ 全部处置步骤数。它衡量的是“一份菜谱里机器替你干了多少活”,因此分母是步骤总数,而不是服务数、告警数或人数。

Q4. 公式 MTTR = MTTA + MTTE 中,MTTA 表示的含义是?

单选题 · mid

  • A.平均修复服务时间
  • B.平均确认响应时间← 正确答案
  • C.平均诊断定位时间
  • D.平均变更部署时间

答案:B。MTTR 被拆成两段:MTTA(从告警触发到有人响应接手的平均确认时间)和 MTTE(从接手到服务恢复的平均处置时间)。Runbook 主要压缩 MTTE,ChatOps 主要压缩 MTTA。

Q5. 高风险的数据库回滚步骤,在设计 Runbook 时应如何处理?

单选题 · mid

  • A.全自动执行无需介入
  • B.设置为审批后执行← 正确答案
  • C.从 Runbook 中删除
  • D.仅记录在事后日志

答案:B。高风险操作需要“人在环路”把关,设计成“机器人执行低风险步骤、高风险步骤等待人工审批”是标准做法。完全自动化风险太大,删除步骤会失去指导价值,只记日志更是本末倒置。

Q6. 下列关于 Runbook 与普通运维文档的区别,最本质的是?

单选题 · mid

  • A.前者内容篇幅更加详细
  • B.前者面向机器可执行← 正确答案
  • C.前者必须由 AI 生成
  • D.前者仅故障时使用

答案:B。普通文档给人阅读,Runbook 的终极形态是交给自动化引擎直接执行——步骤结构化、参数可传、结果可校验。篇幅、作者、使用时机都不是本质区别。

Q7. 事后复盘(Postmortem)对 Runbook 工程的最大价值是?

单选题 · mid

  • A.明确故障责任人
  • B.反哺更新故障手册← 正确答案
  • C.补充更多监控告警
  • D.核算团队加班成本

答案:B。复盘的核心产出,是把“这次处置中做错的、遗漏的、新发现的”沉淀回 Runbook,让下一次故障处置更快更稳。追责、加告警、算成本都不是复盘的首要目的。

Q8. ChatOps 协同处置能够带来哪些收益?

多选题 · mid

  • A.处置全过程留痕可审计← 正确答案
  • B.信息上下文透明共享← 正确答案
  • C.消除全部人工判断
  • D.直接降低所有成本

答案:AB。ChatOps 让告警、动作、审批、回执都在聊天线程中留痕,且全员可见同一份上下文,因此 A、B 正确。它不消除人工判断(高风险步骤仍需审批),也不能保证降低所有成本。

Q9. 编写一份高质量 Runbook 必须包含哪些要素?

多选题 · hard

  • A.明确的触发条件← 正确答案
  • B.逐步可执行的指令← 正确答案
  • C.回滚与升级路径← 正确答案
  • D.依赖师傅个人经验

答案:ABC。触发条件告诉你在什么情况下翻开“菜谱”;逐步指令告诉你怎么做;回滚与升级路径告诉你做错了怎么退、搞不定找谁。依赖个人经验恰恰是 Runbook 要消除的东西。

Q10. 提升 Runbook 自动化水平的正确做法包括?

多选题 · hard

  • A.重复步骤封装为脚本← 正确答案
  • B.告警到达自动触发← 正确答案
  • C.增加交互式人工步骤
  • D.每次故障重新编写

答案:AB。把重复动作脚本化、让告警到达自动触发 Runbook,都是提升自动化的关键手段。增加人工步骤是反向操作,每次故障重新编写则违背了“沉淀复用”的初衷。