4. SLI 与 SLO 基础:服务等级指标与服务等级目标
在可观测性与告警降噪体系中,服务等级指标(SLI)和服务等级目标(SLO)是定义系统健康度的核心量化工具。没有明确的 SLI 与 SLO,告警将失去判断基准,DORA 度量体系中的部署频率也无法与用户体验建立关联。本节将系统讲解 SLI 的定义原则、SLO 的设定方法,以及错误预算的引入机制。
4.1 服务等级指标(SLI)的定义原则
SLI 是对服务某个特定维度真实表现的量化度量。它回答的是“服务现在到底怎么样”的问题。定义 SLI 需遵循以下核心原则:
- 用户视角优先:SLI 必须从用户(或下游服务)的感知出发,而非内部实现细节。例如,用“页面加载时间”而非“CPU 使用率”。
- 可测量且可重复:指标必须能被稳定采集,且在不同时间、不同环境下测量结果具有可比性。
- 覆盖关键路径:优先定义直接影响核心业务流程的指标,如登录、下单、搜索等。
- 有限且聚焦:每个服务通常只定义 3~5 个核心 SLI,避免指标泛滥导致监控疲劳。
💡 实战建议: 在定义 SLI 时,先列出用户最关心的 3 个操作(如“搜索商品”“提交订单”“支付成功”),再为每个操作定义 1~2 个 SLI,如延迟和错误率。
4.1.1 常见 SLI 分类与口径
| SLI 类别 | 典型口径 | 测量方式 |
|---|---|---|
| 延迟 | 请求响应时间(P50/P95/P99) | 服务端埋点、APM 工具 |
| 错误率 | HTTP 5xx 占比 / 业务错误码占比 | 负载均衡日志、应用日志 |
| 吞吐量 | 每秒请求数(RPS) | 网关指标、服务端计数器 |
| 可用性 | 成功请求数 / 总请求数 | 健康检查、探针 |
| 饱和度 | CPU 使用率 / 内存使用率 / 队列深度 | 系统指标采集 |
4.2 服务等级目标(SLO)的设定方法
SLO 是为 SLI 设定的目标阈值,它定义了“服务达到什么程度才算健康”。SLO 的设定直接影响告警阈值和错误预算的计算。
4.2.1 SLO 设定步骤
- 确定 SLI 基线:收集过去 2~4 周的历史数据,了解当前服务的真实表现。
- 对齐业务期望:与产品、业务方沟通,明确可接受的用户体验下限。
- 设定目标值:通常以“百分比”形式表达,如“99.9% 的请求延迟低于 200ms”。
- 定义时间窗口:SLO 的计算周期,常见为 30 天滚动窗口或 7 天滚动窗口。
- 区分严格等级:核心服务使用更严格的 SLO(如 99.99%),非核心服务可适当放宽。
⚠️ 避坑指南: 不要将 SLO 设定得过于理想化(如 100%),这会导致错误预算为零,任何微小故障都会触发告警,反而降低运维效率。通常 99.9% ~ 99.99% 是合理区间。
4.2.2 SLI 与 SLO 关系示例
| 服务 | SLI 口径 | SLO 目标 | 时间窗口 |
|---|---|---|---|
| 用户登录服务 | P99 延迟 | ≤ 500ms | 30 天滚动 |
| 商品搜索服务 | 错误率 | ≤ 0.1% | 7 天滚动 |
| 支付网关 | 可用性 | ≥ 99.99% | 30 天滚动 |
4.3 错误预算的引入
错误预算(Error Budget)是 SLO 的衍生概念,它表示在 SLO 允许范围内,服务可以“犯错”的总时间或总请求量。错误预算 = 1 - SLO。例如,SLO 为 99.9% 的服务,其错误预算为 0.1%,即每月(约 43200 分钟)允许宕机 43.2 分钟。
4.3.1 错误预算的核心作用
- 平衡稳定性与迭代速度:当错误预算充足时,团队可以更频繁地部署新功能(提升部署频率);当错误预算耗尽时,应暂停发布,优先修复稳定性。
- 驱动告警降噪:告警阈值应基于错误预算消耗速率设定,而非固定静态值。只有当错误预算消耗速度超过预期时,才触发告警。
- 量化风险决策:产品经理和工程师可以基于剩余错误预算,共同决定是否上线高风险变更。
🚨 关键认知: 错误预算不是“浪费额度”,而是风险预算。它让团队在创新与稳定之间做出有数据支撑的权衡,避免因过度追求 100% 可用性而扼杀部署频率。
4.4 SLI/SLO/错误预算关系图
下图展示了 SLI、SLO 与错误预算之间的核心关系,以及它们如何共同驱动告警降噪与部署频率决策:
4.5 错误预算驱动的告警降噪实战
在 DORA 度量体系中,部署频率的提升往往伴随着稳定性风险。错误预算提供了一种量化风险的机制,让告警不再“一刀切”。以下是基于错误预算的告警策略对比:
| 告警策略 | 传统方式 | 错误预算驱动方式 |
|---|---|---|
| 触发条件 | 单次延迟 > 200ms 即告警 | 错误预算消耗速率 > 预期值(如 10%/小时) |
| 告警频率 | 频繁误报,容易产生告警疲劳 | 仅在风险累积时告警,降噪效果显著 |
| 对部署频率的影响 | 任何异常都可能导致发布暂停 | 错误预算充足时,允许快速迭代 |
| 业务对齐 | 技术指标驱动,与用户体验脱节 | 直接反映用户可接受的故障时间 |
📊 实战案例: 某电商平台将支付服务的 SLO 设为 99.95%(月错误预算 21.6 分钟)。当错误预算消耗超过 50% 时,触发 P2 告警;消耗超过 80% 时,触发 P1 告警并自动冻结发布管道。该策略使告警量下降 60%,同时部署频率提升 40%。
4.6 本章小结
- SLI 是服务的真实测量值,必须从用户视角定义,聚焦关键路径。
- SLO 是 SLI 的目标阈值,设定时需结合历史数据与业务期望,避免过于理想化。
- 错误预算 = 1 - SLO,是连接稳定性与迭代速度的桥梁,也是告警降噪的核心依据。
- 在 DORA 度量体系中,合理的 SLI/SLO 设计能够直接提升部署频率,同时保障用户体验。