1. SLI 基础概念:定义、关系与可观测性角色
SLI(Service Level Indicator,服务等级指标)是可观测性体系中最底层的量化基石。它回答一个核心问题:“用户此刻感受到的服务到底好不好?”。在基础设施领域,SLI 将 CPU、内存、网络、存储等原始指标转化为可度量的服务质量信号。
1.1 SLI 定义
SLI 是对服务某个特定维度质量的直接测量值,通常表示为一段时间内的比率、百分比或延迟分位数。它不是原始监控数据(如“CPU 使用率 75%”),而是经过口径加工后的服务质量表达。
| 维度 | 原始指标示例 | SLI 口径示例 |
|---|---|---|
| 可用性 | HTTP 200 响应数 / 总请求数 | 99.5% 请求成功(非 5xx) |
| 延迟 | P99 响应时间 = 320ms | 95% 请求在 200ms 内完成 |
| 吞吐量 | QPS = 1500 | 每秒成功处理请求 ≥ 1000 |
| 饱和度 | 内存使用率 = 82% | 内存使用率 ≤ 85% |
关键认知:SLI 必须包含分母(总事件数)和分子(好事件数),且分母不能为零。例如“请求成功率 = 成功请求数 / 总请求数 × 100%”。
1.2 SLI 与 SLO / SLA 的关系
三者构成一个从测量 → 目标 → 承诺的层级结构。SLI 是底层数据,SLO 是内部目标,SLA 是外部契约。
记忆口诀:SLI 是“测什么”,SLO 是“要多少”,SLA 是“赔多少”。
| 概念 | 定义 | 示例 | 责任方 |
|---|---|---|---|
| SLI | 实际测量的服务质量数值 | 过去 30 天请求成功率 = 99.92% | SRE / 可观测性团队 |
| SLO | SLI 的目标阈值,内部承诺 | 月度请求成功率 ≥ 99.9% | SRE + 产品团队 |
| SLA | 对外公布的承诺,含惩罚条款 | 月度可用性 ≥ 99.95%,否则退款 10% | 法务 + 业务团队 |
三者之间的典型关系:SLA 比 SLO 更宽松(留出安全缓冲),SLO 比 SLI 当前值略高(驱动改进)。例如:
- SLI 实际值:99.92%
- SLO 目标值:99.95%(需要提升)
- SLA 承诺值:99.90%(低于 SLO,留 0.05% 缓冲)
1.3 SLI 在可观测性中的角色
在可观测性“三大支柱”(指标、日志、链路追踪)中,SLI 主要属于指标(Metrics)领域,但它同时串联起日志和链路数据,形成完整的服务质量视图。
- 统一语言:SLI 让开发、运维、业务团队用同一把尺子讨论服务质量。
- 告警触发源:SLI 违反 SLO 是最高优先级的告警,直接触发事故响应流程。
- 容量规划依据:长期 SLI 趋势反映基础设施瓶颈,指导扩容和架构优化。
- 故障定位入口:SLI 下降时,通过下钻到日志和链路追踪定位根因。
常见误区:不要将原始监控指标直接当作 SLI。例如“CPU 使用率 90%”不是 SLI,只有将其转化为“CPU 使用率 ≤ 85% 的时间占比 ≥ 99%”才构成 SLI。SLI 必须包含好事件定义和时间窗口。
1.4 基础设施 SLI 的典型分类
在基础设施层面,SLI 通常按资源类型分为四大类,每类都有标准的口径设计模式:
| 资源类型 | 典型 SLI 口径 | 好事件定义 | 常见窗口 |
|---|---|---|---|
| 计算 | CPU 使用率 ≤ 80% 的时间占比 | CPU ≤ 80% | 5 分钟 / 1 小时 |
| 内存 | 内存使用率 ≤ 85% 的时间占比 | 内存 ≤ 85% | 5 分钟 / 1 小时 |
| 网络 | 网络丢包率 ≤ 0.1% 的时间占比 | 丢包率 ≤ 0.1% | 1 分钟 / 5 分钟 |
| 存储 | 磁盘 IO 延迟 P99 ≤ 10ms 的时间占比 | P99 ≤ 10ms | 5 分钟 / 1 小时 |