3. SLO台账基础:SLO、SLI、Error Budget定义,台账的常见字段
在可观测性工程中,SLO台账是连接技术指标与业务承诺的核心载体。本章将系统讲解SLO台账的三大基石——SLI、SLO、Error Budget,并拆解台账中每个字段的实际含义与填写规范。
3.1 核心概念定义
| 术语 | 全称 | 定义 | 示例 |
|---|---|---|---|
| SLI | Service Level Indicator | 服务等级指标,是衡量服务质量的具体量化指标 | 请求延迟P99、错误率、吞吐量 |
| SLO | Service Level Objective | 服务等级目标,是对SLI设定的目标阈值 | 99.9%的请求延迟<200ms |
| Error Budget | 错误预算 | 允许服务不达标的时间或次数上限 | 30天窗口内允许0.1%的失败 |
关键关系:SLI是原始测量值,SLO是目标承诺,Error Budget是SLO与100%之间的差值空间。三者构成“测量→承诺→容错”的闭环。
3.2 SLI:服务等级指标
SLI是SLO台账中最底层的原始数据来源。常见的SLI类型包括:
- 延迟(Latency):请求响应时间,通常以P50、P95、P99分位值表示
- 错误率(Error Rate):失败请求占总请求的比例,如HTTP 5xx占比
- 吞吐量(Throughput):单位时间内处理的请求数(RPS/QPS)
- 可用性(Availability):服务正常响应的时间占比
- 饱和度(Saturation):资源使用程度,如CPU、内存、连接池占用率
实践建议:在Jaeger链路数据中,SLI通常通过span标签(如
http.status_code、span.duration)聚合计算。建议每个服务至少定义2-3个核心SLI。
3.3 SLO:服务等级目标
SLO将SLI转化为可量化的业务承诺。SLO的常见表达格式为:
# 格式:[时间窗口内] [SLI指标] [比较条件] [目标值]
示例1:过去30天内,P99延迟 ≤ 200ms 的比例 ≥ 99.9%
示例2:过去7天内,HTTP 5xx错误率 ≤ 0.1%
SLO目标值的选择需平衡用户体验与运维成本:
- 99.9%(三个9):常见于内部工具、非关键业务
- 99.99%(四个9):适用于核心业务API、支付服务
- 99.999%(五个9):电信、金融核心系统,运维成本极高
3.4 Error Budget:错误预算
Error Budget = 100% - SLO目标值。它代表在SLO时间窗口内,服务可以“不达标”的最大容忍量。
| SLO目标 | Error Budget(30天窗口) | 允许故障时间 |
|---|---|---|
| 99.9% | 0.1% | 约43.2分钟 |
| 99.99% | 0.01% | 约4.32分钟 |
| 99.999% | 0.001% | 约25.9秒 |
常见误区:Error Budget不是“允许故障的额度”,而是“允许消耗的容错空间”。一旦Error Budget耗尽,应触发服务降级或冻结发布,而非继续容忍故障。
3.5 SLO台账常见字段
一个标准的SLO台账通常包含以下核心字段:
| 字段名 | 说明 | 示例值 |
|---|---|---|
| 服务名 | 被监控的服务标识,与Jaeger服务名一致 | order-service |
| SLO目标 | 量化的服务等级目标 | 99.9% |
| 时间窗口 | SLO评估的时间范围 | 30d(滚动窗口) |
| 当前合规率 | 当前时间窗口内实际达标比例 | 99.85% |
| SLI类型 | 使用的指标类型 | latency_p99 |
| Error Budget剩余 | 当前剩余的错误预算百分比 | 0.05% |
| 状态 | 合规/告警/违规 | 合规 |
3.6 SLO台账数据流关系图
3.7 台账字段填写规范
在实际运维中,台账字段的填写需遵循以下规范:
- 服务名:必须与Jaeger中的
service.name标签严格一致,避免大小写或连字符差异 - SLO目标:使用百分比格式,保留至少一位小数(如
99.9%) - 时间窗口:推荐使用滚动窗口(如
30d),避免日历窗口带来的边界效应 - 当前合规率:由SLI聚合计算得出,需与Jaeger指标源保持相同的时间对齐
- Error Budget剩余:计算公式为
Error Budget剩余 = SLO目标 - 当前合规率(当合规率低于目标时,剩余为负值)
实战要点:在Jaeger中,通过
span.duration和http.status_code标签可以快速计算延迟SLI和错误率SLI。建议在台账中额外记录“SLI计算口径”字段,避免不同团队对同一指标的理解偏差。
3.8 合规率与Error Budget的联动关系
上图展示了合规率与Error Budget的直观关系:
- 当当前合规率 ≥ SLO目标时,Error Budget为正数,服务处于健康状态
- 当当前合规率 < SLO目标时,Error Budget为负数,服务处于违规状态,需立即介入
- Error Budget的消耗速度决定了故障响应的紧急程度
台账管理建议:建议在台账中增加“Error Budget消耗速率”字段,用于预测当前消耗速度下,剩余预算还能支撑多久。结合Jaeger的实时链路数据,可以提前预警潜在的SLO违规风险。