1. SLO 与自愈基础:SLO 定义、SLI 与错误预算、自愈概念与价值

1.1 服务等级目标(SLO)定义

SLO(Service Level Objective)是服务可靠性工程的核心承诺,它定义了在特定时间窗口内,服务必须达到的可用性或性能阈值。SLO 不是 SLA(Service Level Agreement),而是团队内部或与上下游约定的可靠性目标,通常以“百分比 + 时间窗口”的形式表达。

概念 定义 典型示例
SLO 服务应达到的可靠性目标,内部承诺 99.9% 可用性(月度)
SLA 与客户签订的正式服务协议,含惩罚条款 99.95% 可用性,否则赔偿
SLI 实际测量的服务指标,用于评估 SLO 请求成功率 99.92%
关键原则:SLO 应比 SLA 更严格(例如 SLA 99.9%,SLO 设为 99.95%),为响应延迟留出缓冲空间,避免直接触发赔偿条款。

1.2 SLI 与错误预算

SLI(Service Level Indicator) 是衡量服务质量的量化指标。常见的 SLI 类型包括:

  • 可用性 SLI:成功请求数 / 总请求数(排除预期错误)
  • 延迟 SLI:满足延迟阈值的请求百分比(如 p99 < 200ms)
  • 吞吐量 SLI:每秒处理请求数(RPS)
  • 错误率 SLI:5xx 错误占总请求的比例

错误预算(Error Budget) 是 SLO 的衍生概念,计算公式为:

错误预算 = 1 - SLO(以小数表示)
例如:SLO = 99.9% → 错误预算 = 0.1%(月度时间窗口内允许的不可用时间)

月度错误预算 = 30天 × 24小时 × 60分钟 × 60秒 × 0.001 = 2592 秒 ≈ 43.2 分钟

错误预算的消耗速率直接决定是否需要触发自愈流程:

错误预算消耗状态 消耗比例 自愈触发策略
健康区 < 50% 仅监控,不触发自愈
警戒区 50% – 80% 触发预检与轻度自愈(如扩容)
危险区 > 80% 触发全自动自愈流程(回滚、切换、限流)
常见误区:错误预算耗尽不等于服务宕机,而是意味着 SLO 目标已无法达成。此时应优先执行自愈恢复,而非继续发布新功能。

1.3 自愈概念与价值

自愈(Self-Healing) 是指系统在检测到异常或 SLO 偏离时,无需人工介入即可自动执行恢复操作的能力。自愈不是简单的告警通知,而是闭环的自动化决策与执行。

自愈的核心价值体现在三个维度:

  • 缩短 MTTR(平均修复时间):从人工响应(分钟级~小时级)缩短至自动化(秒级~分钟级)
  • 降低认知负载:减少 on-call 工程师的疲劳决策,将重复性恢复操作标准化
  • 保护错误预算:在错误预算快速消耗时自动介入,避免 SLO 违约
SLO 与错误预算生命周期 SLO 与错误预算生命周期 定义 SLO 采集 SLI 计算错误预算 消耗监控 健康区 <50% 警戒区 50-80% 危险区 >80% 触发自愈流程 说明:错误预算消耗超过 50% 时触发预检,超过 80% 时自动执行全流程自愈

1.4 自愈触发模型与 Runbook 参数化

自愈触发不是简单的“告警 → 执行脚本”,而是基于 SLO 状态的多级决策模型。Runbook 参数化设计正是为了适配这种多场景需求:

  1. 参数化阈值:错误预算消耗比例、SLI 窗口大小、冷却时间等作为可配置参数
  2. 参数化动作:根据服务类型(无状态/有状态/批处理)选择不同的自愈动作集
  3. 参数化回滚:自愈失败后的回退策略,支持逐步降级
课程核心观点:Runbook 参数化是连接 SLO 监控与自愈执行的桥梁。没有参数化的 Runbook 只能处理单一场景,而参数化设计让同一个 Runbook 模板适配不同服务、不同 SLO、不同故障模式。
自愈触发决策流程 自愈触发决策流程 SLI 实时数据输入 偏离 SLO? 否 继续监控 是 消耗 >80%? 全自愈 预检 + 轻度自愈 决策依据:SLI 实时值 + 错误预算消耗比例 + 服务优先级参数

1.5 自愈成熟度模型

不同团队的自愈能力差异较大,以下成熟度模型可用于评估当前阶段:

成熟度等级 特征 MTTR 典型值 Runbook 形态
L0:人工 完全依赖 on-call 工程师手动排查 30 – 120 分钟 无 Runbook 或纯文档
L1:辅助 有 Runbook 文档,人工按步骤执行 15 – 45 分钟 静态 Markdown 文档
L2:半自动 部分步骤自动化,人工确认后执行 5 – 15 分钟 参数化脚本 + 审批
L3:全自动 基于 SLO 自动触发,无需人工介入 < 5 分钟 参数化 Runbook + 自愈引擎
L4:预测性 基于趋势预测提前触发自愈 < 1 分钟 ML 模型 + 动态参数调整
课程目标:本课程将帮助团队从 L1/L2 跃迁至 L3,通过 Runbook 参数化设计实现 SLO 驱动的全自动自愈。