2. SLI 基础概念:服务等级指标

在构建跨团队 CI/CD 流水线的可观测体系时,服务等级指标(Service Level Indicator, SLI)是所有度量与决策的基石。SLI 是对服务某个维度质量的量化测量值,它回答了一个最基本的问题:“我们的流水线现在到底有多好?”

核心定义:SLI 是经过明确定义、可重复采集的数值指标,用于衡量服务在特定时间窗口内满足用户或系统关键行为的能力。在 CI/CD 场景中,SLI 通常聚焦于速度、稳定性、成功率和资源效率。

2.1 SLI 与 SLO / SLA 的关系

SLI 并非孤立存在,它与 SLO(服务等级目标)和 SLA(服务等级协议)构成一个层级化的质量治理模型。理解三者的区别与联系,是设计有效流水线度量的前提。

概念 定义 CI/CD 流水线示例 核心特征
SLI 实际测量的指标值 “过去 1 小时构建通过率 = 94.5%” 可测量、数值化、实时
SLO SLI 的目标阈值或范围 “构建通过率 ≥ 95%” 目标导向、内部承诺
SLA 对外承诺的正式协议(含后果) “核心流水线可用性 ≥ 99.9%,否则赔付” 合同约束、外部责任
实践要点:在跨团队协作中,建议先定义 SLI 的采集口径,再基于历史数据设定合理的 SLO。SLA 通常只用于面向客户或上下游强依赖的接口级承诺,内部团队间优先使用 SLO 进行对齐。
SLI / SLO / SLA 层级关系图 SLI / SLO / SLA 层级关系 SLI:服务等级指标 实际测量值 | 例:构建通过率 94.5% SLO:服务等级目标 目标阈值 | 例:构建通过率 ≥ 95% SLA:服务等级协议 合同承诺 | 例:可用性 ≥ 99.9% 数据驱动 合同约束

2.2 良好 SLI 的三大特征

并非所有指标都适合作为 SLI。一个高质量的 SLI 必须同时满足以下三个特征,否则会导致度量失真或无法驱动改进。

  1. 可测量(Measurable):指标必须能够被自动化工具或系统以确定的频率和精度采集,且采集成本可控。例如,“构建耗时”可以通过 CI 工具 API 精确获取,而“开发人员满意度”则不适合作为 SLI。
  2. 有意义(Meaningful):指标必须直接反映用户或下游系统所关心的服务质量。例如,对于部署流水线,“部署频率”比“代码行数”更有意义。
  3. 可行动(Actionable):当 SLI 偏离预期时,团队必须能够基于该指标采取明确的改进措施。例如,“构建失败率”升高后,团队可以回滚代码、修复测试或扩容构建节点。
常见陷阱:避免选择“虚荣指标”(如总构建次数)作为 SLI。这类指标虽然容易测量,但无法反映真实质量,也无法指导团队采取有效行动。始终问自己:“这个指标变差时,我们能做什么?”
良好 SLI 三大特征 良好 SLI 的三大特征 可测量 自动化采集 确定频率与精度 有意义 反映用户关心维度 与业务价值关联 可行动 偏离时可采取措施 驱动改进闭环 三者缺一不可,共同构成有效 SLI 避免虚荣指标,聚焦可观测、可改进

2.3 CI/CD 流水线中的典型 SLI 示例

在跨团队 CI/CD 流水线场景中,常见的 SLI 可以按阶段和维度进行分类。以下表格展示了部分典型 SLI 及其与三大特征的对应关系。

阶段 SLI 名称 测量方式 可测量 有意义 可行动
代码提交 提交到触发构建延迟 Webhook 时间戳差值 ✅ ✅ ✅
构建阶段 构建成功率 成功构建数 / 总构建数 ✅ ✅ ✅
测试阶段 单元测试通过率 通过用例数 / 总用例数 ✅ ✅ ✅
部署阶段 部署回滚率 回滚次数 / 总部署次数 ✅ ✅ ✅
全流水线 端到端交付时长(P95) 从提交到生产就绪的耗时 ✅ ✅ ✅
设计建议:每个团队应从上述表格中选择 3~5 个核心 SLI 作为初始度量集。优先选择那些“可测量”成本低、“可行动”路径清晰的指标,逐步建立流水线的健康基线。