1. SLI 基础概念:定义、核心价值与原则

SLI(Service Level Indicator,服务等级指标)是衡量软件服务某一维度表现的可量化度量值。在 CI/CD 流水线语境下,SLI 将抽象的“流水线质量”转化为具体的数字,是后续 SLO 制定、错误预算计算和性能调优的基石。

1.1 什么是 SLI

SLI 是对服务某个特性(如可用性、延迟、吞吐量、错误率)的直接观测值。它回答“服务现在表现如何”的问题。例如:

  • 可用性 SLI:流水线任务成功完成的比例。
  • 延迟 SLI:从代码提交到构建完成所消耗的 P95 时间。
  • 吞吐量 SLI:单位时间内流水线处理的构建请求数。
  • 错误率 SLI:因基础设施或配置错误导致的流水线失败次数占比。
关键区分:SLI 是原始测量值,SLO(Service Level Objective)是基于 SLI 设定的目标阈值。例如“P95 延迟 < 5 分钟”是 SLO,而“最近 1 小时 P95 延迟 = 3.2 分钟”是 SLI。

1.2 SLI 在 CI/CD 流水线中的核心价值

将 SLI 引入 CI/CD 流水线,能够实现从“凭感觉优化”到“数据驱动决策”的转变。其核心价值体现在以下四个维度:

价值维度 具体说明 流水线场景示例
可观测性 量化流水线各阶段健康状况,暴露瓶颈 构建阶段 P95 耗时从 8 分钟升至 15 分钟,触发告警
客观决策 用数据替代直觉,指导资源投入优先级 测试阶段失败率 12%,决定优先修复 flaky test 而非优化部署速度
故障定位 通过 SLI 趋势变化快速缩小根因范围 部署成功率 SLI 骤降,关联到新引入的镜像扫描步骤
持续改进 建立基线,衡量调优措施的实际效果 缓存优化后,构建 SLI 中位数从 6 分钟降至 4 分钟

1.3 SLI 定义原则

定义有效的 CI/CD 流水线 SLI 需要遵循以下四项原则,避免指标泛滥或无法落地:

  1. 用户视角原则:SLI 应反映流水线使用者(开发人员、QA、SRE)的真实体验。例如“代码提交后多久能收到构建结果通知”比“构建服务器 CPU 使用率”更贴近用户价值。
  2. 可测量原则:指标必须能够被精确、一致地采集,且采集成本可控。避免定义“代码质量满意度”这类主观或无法自动采集的指标。
  3. 可行动原则:SLI 恶化时,团队应有明确的行动路径。如果“流水线总耗时”上升,团队能通过拆分阶段、增加并发或优化依赖来干预。
  4. 最小化原则:从少量关键指标开始(通常 3-5 个),避免指标爆炸。优先覆盖流水线的“黄金信号”:延迟、错误率、吞吐量。
实践建议:在定义 SLI 时,先回答“如果这个指标变差,我们是否会立即采取行动?”如果答案是否定的,该指标很可能不适合作为 SLI。
SLI 在 CI/CD 流水线中的核心价值与定义原则 SLI 服务等级指标 可观测性 量化健康,暴露瓶颈 客观决策 数据驱动优先级 故障定位 趋势变化缩小根因 持续改进 建立基线衡量效果 用户视角原则 反映真实体验 可测量原则 精确一致采集 可行动原则 有明确干预路径 最小化原则 从 3-5 个关键指标开始 SLI 是连接“用户价值”与“技术指标”的桥梁,定义时需兼顾可观测性与可行动性

1.4 常见 CI/CD 流水线 SLI 示例

以下表格列举了流水线各阶段常用的 SLI,以及对应的采集方式和典型目标:

流水线阶段 SLI 名称 定义口径 采集方式
代码提交 提交触发延迟 从 git push 到 webhook 被流水线接收的 P50 时间 Git 事件时间戳 vs 流水线入口日志
构建 构建成功率 成功完成的构建数 / 总触发构建数 × 100% 构建系统 API / 日志
单元测试 测试执行时间 所有测试用例从开始到结束的 P95 耗时 测试框架报告 + 时间戳
集成测试 环境就绪时间 从请求测试环境到环境状态为 Ready 的 P90 时间 环境管理平台事件日志
部署 部署回滚率 触发回滚的部署次数 / 总部署次数 × 100% 部署系统状态变更记录
全流水线 端到端交付时间 从代码合并到生产环境部署完成的 P95 时长 多系统时间戳关联
常见误区:不要将基础设施指标(如 CPU、内存)直接作为流水线 SLI。基础设施指标是“手段”,流水线 SLI 应关注“结果”。例如“构建服务器 CPU 使用率 90%”不是 SLI,“构建 P95 延迟 12 分钟”才是 SLI。

1.5 SLI 与 SLO、错误预算的关系

SLI 不是孤立存在的,它与 SLO、错误预算共同构成服务等级管理体系。三者关系如下:

  • SLI(指标):实际观测到的数值,如“过去 7 天部署成功率为 99.2%”。
  • SLO(目标):基于 SLI 设定的期望阈值,如“部署成功率 ≥ 99.5%”。
  • 错误预算(Error Budget):SLO 允许的容错空间,计算公式为 1 - SLO。例如 SLO 为 99.5%,则错误预算为 0.5%。当 SLI 消耗的错误预算接近上限时,团队应暂停新功能发布,优先提升可靠性。
流水线场景示例:设定“构建成功率 SLO = 99.9%”,则每月错误预算为 0.1%(约 43 分钟)。如果某周构建失败率上升导致消耗了 30% 的错误预算,团队应立即排查失败根因,避免月底突破 SLO。
SLI / SLO / 错误预算关系 SLI 实际观测值 SLO 期望目标阈值 错误预算 容错空间 1 - SLO 管理闭环 SLI 持续观测 → 与 SLO 对比 → 计算错误预算消耗 消耗过快 → 暂停新功能 → 投入可靠性改进 → SLI 恢复

1.6 本章小结

  • SLI 是 CI/CD 流水线可观测性的基础,将质量转化为可量化数字。
  • 核心价值包括:可观测性、客观决策、故障定位、持续改进。
  • 定义 SLI 需遵循用户视角、可测量、可行动、最小化四项原则。
  • SLI 与 SLO、错误预算构成闭环管理体系,驱动流水线持续优化。