3. SLI 与 SLO 基础:定义、设定与常见类型
在可观测性与服务画像体系中,SLI(Service Level Indicator,服务等级指标)与SLO(Service Level Objective,服务等级目标)是衡量服务健康度的核心量化工具。SLI 回答“服务现在怎么样”,SLO 回答“服务应该怎么样”。本章将系统梳理两者的定义、设定方法及常见类型,为后续“变更检测触发 SLI 口径重算”奠定基础。
3.1 SLI 定义:可观测的量化信号
SLI 是对服务某个特定维度(如延迟、错误率、吞吐量)的直接测量值,通常以时间窗口内的比率、分位数或计数形式呈现。一个有效的 SLI 必须满足:可采集、可聚合、可对比。
SLI 核心公式(通用形式):
SLI = (符合预期行为的事件数) / (总事件数) × 100%
例如:过去 5 分钟内,请求延迟 ≤ 200ms 的请求数 / 总请求数 = 99.5%
SLI = (符合预期行为的事件数) / (总事件数) × 100%
例如:过去 5 分钟内,请求延迟 ≤ 200ms 的请求数 / 总请求数 = 99.5%
SLI 的采集粒度直接影响后续 SLO 的准确性与告警灵敏度。常见的采集方式包括:
- 客户端埋点:在应用代码中插入指标采集逻辑(如 Prometheus Client、OpenTelemetry SDK)。
- 服务网格代理:通过 Sidecar(如 Istio/Envoy)自动捕获请求级指标。
- 基础设施探针:负载均衡器、API 网关、数据库代理层输出的访问日志与指标。
3.2 SLO 设定:从指标到目标
SLO 是围绕 SLI 设定的目标阈值,通常以“时间窗口内的达标百分比”表示。例如:“过去 30 天内,99.9% 的请求延迟 ≤ 200ms”。SLO 的设定直接决定服务的可靠性预算与告警策略。
| SLO 等级 | 允许不可用时间/月 | 典型适用场景 |
|---|---|---|
| 99.9%(三个九) | 约 43 分钟 | 内部工具、开发环境 |
| 99.95%(三个九半) | 约 21 分钟 | 标准线上服务 |
| 99.99%(四个九) | 约 4.3 分钟 | 核心交易、支付链路 |
| 99.999%(五个九) | 约 26 秒 | 电信、金融核心系统 |
设定 SLO 的黄金法则:不要追求“完美”的 100%。SLO 越严格,运维成本与告警噪声呈指数级增长。建议从 99.9% 起步,根据业务容忍度逐步收紧。
3.3 常见 SLI 类型与分类
根据 Google SRE 经典分类及行业实践,SLI 主要分为以下四大类。每类对应不同的采集口径与计算方式。
| SLI 类别 | 典型指标 | 采集口径示例 | 常见聚合方式 |
|---|---|---|---|
| 延迟(Latency) | P50 / P95 / P99 响应时间 | 服务端收到请求到返回响应的耗时 | 分位数、平均值、直方图 |
| 错误率(Error Rate) | HTTP 5xx 占比 / 业务异常率 | 状态码非 2xx/3xx 的请求数 / 总请求数 | 比率、滑动窗口计数 |
| 吞吐量(Throughput) | QPS / TPS / RPS | 每秒成功处理的请求数 | 速率、峰值、均值 |
| 可用性(Availability) | 服务正常运行时间占比 | 健康检查通过次数 / 总检查次数 | 时间窗口比率 |
3.4 SLI 口径:定义即计算规则
SLI 的口径(Measurement Definition)决定了“什么事件算分母、什么事件算分子”。口径变更(如调整延迟阈值、排除健康检查请求、修改错误码范围)会直接导致 SLI 数值跳变,进而影响 SLO 达标状态。这是本课程后续“变更检测触发重算”的核心触发条件。
口径变更典型场景:
• 将延迟 SLI 的阈值从 200ms 调整为 500ms → SLI 数值瞬间升高,SLO 可能“被动达标”。
• 将 4xx 错误从错误率分母中排除 → 错误率 SLI 下降,掩盖真实问题。
• 新增/删除某个上游依赖的调用链指标 → 吞吐量 SLI 口径变化。
• 将延迟 SLI 的阈值从 200ms 调整为 500ms → SLI 数值瞬间升高,SLO 可能“被动达标”。
• 将 4xx 错误从错误率分母中排除 → 错误率 SLI 下降,掩盖真实问题。
• 新增/删除某个上游依赖的调用链指标 → 吞吐量 SLI 口径变化。
3.5 实践建议:SLI/SLO 初始化清单
- 选择 3~5 个核心 SLI:覆盖延迟、错误率、吞吐量、可用性,避免指标过多导致运维负担。
- 明确口径定义:在可观测平台(如 Grafana、Datadog)中为每个 SLI 建立文档化的口径规则。
- 设定初始 SLO:参考行业基准(如 99.9%),结合业务容忍度调整。
- 建立错误预算:SLO 达标线之上的剩余空间即为错误预算,用于指导发布节奏与告警阈值。
- 记录口径版本:每次口径变更需记录变更时间、原因、影响范围,为后续重算提供审计依据。
关键结论:SLI 是服务的“体温计”,SLO 是“健康标准”。口径是体温计的“刻度定义”。刻度一旦改变,体温读数必须重新解释——这正是本课程要解决的自动化问题。