3. SLO 与错误预算基础概念:SLI、SLO、错误预算定义与关系
在云原生可观测性体系中,SLI、SLO 与 错误预算 是定义服务可靠性、指导运维决策的核心三角。理解三者定义与关系,是后续在 Argo CD 面板中呈现组件拓扑与可靠性状态的前提。
3.1 核心定义
| 术语 | 英文全称 | 定义 | 典型示例(日志平台) |
|---|---|---|---|
| SLI | Service Level Indicator | 服务等级指标,是衡量服务质量某一维度的具体量化指标。 | 日志写入请求成功率、查询 P99 延迟、日志索引吞吐量 |
| SLO | Service Level Objective | 服务等级目标,是对 SLI 设定的目标阈值或范围,代表用户可接受的可靠性水平。 | 日志写入成功率 ≥ 99.9%(30 天滚动窗口) |
| 错误预算 | Error Budget | 错误预算 = 1 - SLO,表示在 SLO 窗口内允许发生故障的总时间或总请求比例。 | SLO 为 99.9% 时,每月允许约 43 分钟不可用 |
关键认知: SLI 是“测量什么”,SLO 是“目标是多少”,错误预算则是“还剩多少容错空间”。三者构成闭环,驱动可靠性工程决策。
3.2 三者的关系模型
SLI → SLO → 错误预算 构成一条自上而下的推导链,同时错误预算又反向驱动 SLO 的调整与运维动作的触发。
3.3 日志平台中的 SLI 定义示例
在云原生日志平台中,常见的 SLI 维度包括:
- 可用性 SLI: 日志写入接口 HTTP 200 响应占比(排除计划内维护)。
- 延迟 SLI: 日志查询 P99 响应时间 ≤ 500ms。
- 吞吐量 SLI: 日志索引速率 ≥ 10000 条/秒。
- 持久性 SLI: 已确认写入的日志在 30 天内可检索比例 ≥ 99.999%。
实践建议: 每个组件(如 Fluentd、Kafka、Elasticsearch)应至少定义 1~2 个与用户体验直接相关的 SLI,避免指标过多导致运维噪音。
3.4 SLO 的窗口与合规周期
| 窗口类型 | 说明 | 适用场景 |
|---|---|---|
| 滚动窗口 | 持续计算最近 N 天/周的 SLI 合规率 | 生产环境长期可靠性跟踪 |
| 日历窗口 | 按自然月/季度计算合规率 | 商业合同 SLA 对齐 |
| 事件窗口 | 按单个发布或变更周期计算 | 发布质量门禁评估 |
3.5 错误预算的消耗与告警策略
错误预算的消耗速度直接反映服务健康度。常见策略:
- 预算充足(> 50% 剩余): 正常发布,持续监控。
- 预算中等(20% ~ 50% 剩余): 限制高风险变更,加强告警。
- 预算紧张(< 20% 剩余): 冻结发布,启动应急响应。
- 预算耗尽(0%): 触发事故管理流程,回滚近期变更。
常见误区: 错误预算不是“允许故障的额度”,而是“用户可接受的不可用上限”。即使预算未耗尽,频繁消耗也会降低用户信任。SLO 不应设得过高(如 99.999%),否则错误预算过小,运维窗口几乎为零,反而导致频繁告警疲劳。
3.6 在 Argo CD 面板中的呈现思路
后续章节将详细实现,此处先建立概念映射:
- 组件拓扑节点 绑定对应的 SLI 指标(如 Elasticsearch 节点的查询延迟)。
- 节点颜色/状态 根据 SLO 合规率动态变化(绿=合规,黄=接近违规,红=违规)。
- 错误预算进度条 显示在拓扑图侧边或节点详情浮窗中,直观展示剩余容错空间。