2. 自愈场景概述

自愈(Self-Healing)是指系统在检测到故障或异常状态后,无需人工干预,自动执行预定义的恢复动作,使服务或资源回归正常水平的能力。在SRE实践中,自愈不是消灭故障,而是缩短故障持续时间,将MTTR(平均修复时间)从小时级压缩到分钟级甚至秒级。

2.1 自愈的定义与核心要素

一个完整的自愈能力包含三个核心要素:

要素 说明 关键指标
感知(Detect) 通过监控、指标、日志或探针发现异常状态 检测延迟 < 30s
决策(Decide) 根据预定义规则或模型判断故障类型与恢复策略 误判率 < 1%
执行(Act) 自动触发Runbook中的恢复动作并验证结果 执行成功率 > 95%
关键认知:自愈不等于"永不故障"。自愈的目标是让系统在故障发生后,以最快速度恢复到可接受的服务水平,同时将人工介入降到最低。

2.2 常见自愈场景

生产环境中,以下四类场景占据了自愈需求的80%以上。每个场景都有其独特的检测指标和恢复动作模式。

2.2.1 服务宕机(Service Down)

进程崩溃、端口无响应、健康检查失败。这是最紧急的自愈场景,通常需要在秒级完成恢复。

  • 检测方式:TCP端口探测、HTTP状态码检查、进程PID检查
  • 典型恢复动作:重启进程、重新加载配置、切换流量到健康实例
  • 常见陷阱:频繁重启导致"崩溃-重启"死循环,需配合熔断机制

2.2.2 磁盘空间满(Disk Full)

日志文件、临时数据、数据库WAL日志等持续增长,导致磁盘使用率超过阈值(通常为85%或90%)。

  • 检测方式:磁盘使用率监控、inode耗尽检测
  • 典型恢复动作:清理过期日志、压缩归档、扩容磁盘、删除临时文件
  • 常见陷阱:只清理不治理,需要配合日志轮转策略

2.2.3 CPU使用率高(CPU High)

突发的计算密集型任务、代码死循环、异常流量导致CPU持续超过阈值(如80%)。

  • 检测方式:CPU使用率指标、load average、top/htop进程分析
  • 典型恢复动作:终止异常进程、限流降级、扩容实例、调整线程池大小
  • 常见陷阱:误杀系统关键进程,需建立进程白名单

2.2.4 内存泄漏(Memory Leak)

应用程序持续分配内存但未释放,导致内存使用率持续上升,最终触发OOM Killer。

  • 检测方式:内存使用率趋势、GC频率监控、堆内存分析
  • 典型恢复动作:重启进程、触发GC、dump堆内存后重启、扩容内存
  • 常见陷阱:重启治标不治本,需配合版本回滚或热修复
场景对比速查:服务宕机关注"可用性",磁盘满关注"容量",CPU高关注"性能",内存泄漏关注"稳定性"。四类场景的恢复动作优先级和风险等级各不相同,Runbook模板化时需要分别设计参数。

2.3 自愈闭环流程

任何自愈场景都必须遵循一个完整的闭环流程,缺一不可。下图展示了自愈闭环的五个阶段:

自愈闭环流程 ① 监控检测 指标/日志/探针 ② 告警触发 阈值/规则匹配 ③ 决策匹配 场景识别/参数化 ④ 自动执行 Runbook动作 ⑤ 验证闭环 恢复确认/告警恢复 闭环关键:验证失败时需回滚或升级告警,避免"假恢复"导致二次故障

2.4 闭环各阶段详解

每个阶段都有明确的输入、输出和关键检查点:

阶段 输入 输出 关键检查点
① 监控检测 系统指标、日志流、探针结果 异常事件(含时间、指标值、实例信息) 检测延迟 < 30s,避免监控自身故障
② 告警触发 异常事件 告警通知(含严重级别、场景标签) 避免告警风暴,需做聚合与抑制
③ 决策匹配 告警信息 匹配的Runbook模板及参数 场景识别准确率 > 99%
④ 自动执行 Runbook模板 + 参数 执行结果(成功/失败/超时) 执行幂等性,失败需有回滚
⑤ 验证闭环 执行结果 恢复确认 / 升级告警 / 回滚 验证周期 < 60s,避免误判
常见误区:很多团队只实现了"检测→执行"两个阶段,跳过了"决策匹配"和"验证闭环"。这会导致Runbook执行后无人确认是否真正恢复,或者在不合适的场景下执行了错误的恢复动作。完整的五阶段闭环是自愈可靠性的底线。

2.5 自愈场景与Runbook模板化的关系

不同自愈场景的恢复动作差异很大,但它们的流程结构高度相似。这正是Runbook模板化的基础:

  • 相同点:所有场景都遵循"检测→告警→决策→执行→验证"的闭环结构
  • 不同点:检测指标、阈值、恢复命令、验证方式等参数不同
  • 模板化策略:将闭环流程固化为模板骨架,将场景差异抽象为参数变量

例如,服务宕机和磁盘满两个场景,在模板层面共享相同的"重启/清理→验证→回滚"三段式结构,只是具体的执行命令和验证指标不同。后续章节将详细讲解如何设计这种参数化模板。

本章要点:自愈不是单一技术,而是一套包含感知、决策、执行、验证的闭环体系。掌握四类常见场景(服务宕机、磁盘满、CPU高、内存泄漏)的检测与恢复特征,是设计Runbook模板的前提。闭环流程的五阶段模型,将作为后续所有模板设计的骨架。