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 的调整与运维动作的触发。

SLI、SLO、错误预算关系流程图 SLI → SLO → 错误预算 关系模型 SLI 服务等级指标 (测量什么) SLO 服务等级目标 (目标阈值) 错误预算 Error Budget (剩余容错空间) 反馈调整 SLO 阈值 公式:错误预算 = 1 - SLO(例如 SLO=99.9% → 错误预算=0.1%) 当错误预算耗尽时,应停止发布新功能,优先恢复可靠性

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%): 触发事故管理流程,回滚近期变更。
错误预算消耗状态机 错误预算消耗状态与运维决策 预算充足 剩余 > 50% 预算中等 剩余 20%~50% 预算紧张 剩余 < 20% 预算耗尽 剩余 0% 对应运维决策 充足 → 正常发布 | 中等 → 限制高风险变更 | 紧张 → 冻结发布,启动应急 | 耗尽 → 事故管理,回滚变更 注:消耗速度比值更重要,快速消耗即使未耗尽也应关注
常见误区: 错误预算不是“允许故障的额度”,而是“用户可接受的不可用上限”。即使预算未耗尽,频繁消耗也会降低用户信任。SLO 不应设得过高(如 99.999%),否则错误预算过小,运维窗口几乎为零,反而导致频繁告警疲劳。

3.6 在 Argo CD 面板中的呈现思路

后续章节将详细实现,此处先建立概念映射:

  • 组件拓扑节点 绑定对应的 SLI 指标(如 Elasticsearch 节点的查询延迟)。
  • 节点颜色/状态 根据 SLO 合规率动态变化(绿=合规,黄=接近违规,红=违规)。
  • 错误预算进度条 显示在拓扑图侧边或节点详情浮窗中,直观展示剩余容错空间。