1. SLO 基础概念:什么是 SLO、SLI、SLA,三者的区别与联系
在构建自动化故障响应体系之前,必须首先理解三个核心度量指标:SLI(Service Level Indicator,服务等级指标)、SLO(Service Level Objective,服务等级目标)和 SLA(Service Level Agreement,服务等级协议)。这三者构成了从“测量”到“承诺”的完整链路,也是后续所有告警阈值、自愈策略和故障降级的数学基础。
1.1 核心定义
| 术语 | 英文全称 | 核心定义 | 典型示例 |
|---|---|---|---|
| SLI | Service Level Indicator | 对服务某个维度(如延迟、错误率、吞吐量)的实际测量值,是原始数据。 | 过去 5 分钟 P99 延迟 = 120ms |
| SLO | Service Level Objective | 对 SLI 设定的目标阈值,是团队内部承诺的“好服务”边界。 | P99 延迟 ≤ 200ms,每月 99.9% 的时间满足 |
| SLA | Service Level Agreement | 与客户或业务方签订的正式合同条款,通常附带经济惩罚或补偿。 | P99 延迟 ≤ 500ms,每月 99.5% 的时间满足,否则赔偿 10% 月费 |
关键认知: SLO 是内部工程目标,通常比 SLA 更严格(SLO 阈值 < SLA 阈值),为故障响应预留了“燃烧预算”缓冲空间。
1.2 三者的区别与联系
三者的关系可以用“测量 → 目标 → 承诺”的递进链条来理解。SLI 是原始观测数据,SLO 是基于 SLI 设定的内部质量红线,SLA 则是将 SLO 转化为对外的商业契约。
- SLI → SLO: 从“实际值”到“期望值”的转化。例如,将“请求延迟”这个 SLI 设定为“99% 的请求在 200ms 内完成”这个 SLO。
- SLO → SLA: 从“内部目标”到“外部承诺”的转化。SLA 通常比 SLO 宽松,因为需要预留安全边际,避免因内部波动直接触发赔偿。
- SLA 依赖 SLO: 没有 SLO 的 SLA 是盲目的。SLA 的阈值和持续时间必须基于 SLO 的历史数据和燃烧速率来制定。
工程实践建议: 建议将 SLO 设置为 SLA 的 70%-80%。例如,如果 SLA 要求 99.9% 可用性,内部 SLO 应设为 99.95% 或更高,这样即使 SLO 短暂被违反,仍有缓冲空间避免 SLA 违约。
1.3 为什么 SLO 是自动化故障响应的基石?
自动化故障响应(告警自愈)的核心逻辑是:当系统状态偏离预期时,自动触发纠正动作。而“预期”的数学定义正是 SLO。没有 SLO,告警阈值只能靠“拍脑袋”,自愈动作也无法量化评估效果。
SLO 在自动化故障响应中扮演三个关键角色:
- 定义“故障”的数学边界: 故障不再是“系统挂了”这种二元状态,而是“SLI 违反 SLO 的持续时间或燃烧速率”。例如,错误率 SLI 超过 SLO 阈值持续 5 分钟,即定义为一次“事件”。
- 提供自愈触发与终止条件: 自愈动作的启动条件 = SLI 进入 SLO 燃烧预算的“危险区”;自愈动作的终止条件 = SLI 恢复到 SLO 安全范围内。
- 量化自愈效果: 通过对比自愈前后的 SLI 恢复时间(MTTR)和 SLO 燃烧速率,可以客观评估自动化策略的有效性。
常见误区: 不要将告警阈值直接设置为 SLO 边界。SLO 是长期统计目标,而告警需要更灵敏的“燃烧速率”检测。例如,SLO 是“月度 99.9%”,告警应在“过去 10 分钟燃烧速率达到月度预算的 10%”时触发,而不是等到月底才发现 SLO 被违反。
1.4 从 SLI 到 SLO 再到告警自愈的链路
下图展示了 SLI 采集、SLO 计算、燃烧速率告警与自愈动作之间的完整数据流:
1.5 SLO 燃烧预算:自动化决策的量化依据
SLO 燃烧预算(Error Budget)是连接 SLO 与自动化故障响应的核心桥梁。它将抽象的“可用性百分比”转化为可消耗的“时间预算”或“错误次数预算”。
燃烧预算的计算公式:
Error Budget = (1 - SLO) × 总时间窗口
示例:
SLO = 99.9%(月度)
总时间窗口 = 30天 × 24小时 × 60分钟 = 43200 分钟
Error Budget = (1 - 0.999) × 43200 = 43.2 分钟
含义:整个月内,系统最多允许 43.2 分钟的“坏服务”时间。
自动化故障响应系统通过监控“燃烧速率”(即单位时间内消耗的 Error Budget 比例)来决定告警优先级和自愈策略的激进程度:
| 燃烧速率等级 | 消耗预算比例(10分钟窗口) | 告警级别 | 推荐自愈动作 |
|---|---|---|---|
| 正常 | < 2% | 无 | 无需动作 |
| 警告 | 2% - 5% | P3 | 自动扩容 / 预热缓存 |
| 严重 | 5% - 10% | P2 | 流量切换 / 重启异常实例 |
| 危急 | > 10% | P1 | 全自动降级 / 回滚 / 限流 |
核心原则: 燃烧速率越快,自愈动作的侵入性可以越大。因为快速消耗 Error Budget 意味着如果不立即干预,SLO 将在短时间内被彻底违反。自动化系统应基于燃烧速率动态调整自愈策略的“激进程度”。
1.6 本章小结
SLI、SLO、SLA 构成了服务可靠性管理的度量金字塔。SLI 是原始数据,SLO 是内部目标,SLA 是外部承诺。SLO 之所以成为自动化故障响应的基石,是因为它提供了:
- 明确的故障定义: 不再是模糊的“系统挂了”,而是“SLI 违反 SLO 阈值”。
- 量化的决策依据: 燃烧预算和燃烧速率决定了告警的优先级和自愈动作的强度。
- 闭环的验证标准: 自愈是否成功,取决于 SLI 是否恢复到 SLO 安全范围内。