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 进行对齐。
2.2 良好 SLI 的三大特征
并非所有指标都适合作为 SLI。一个高质量的 SLI 必须同时满足以下三个特征,否则会导致度量失真或无法驱动改进。
- 可测量(Measurable):指标必须能够被自动化工具或系统以确定的频率和精度采集,且采集成本可控。例如,“构建耗时”可以通过 CI 工具 API 精确获取,而“开发人员满意度”则不适合作为 SLI。
- 有意义(Meaningful):指标必须直接反映用户或下游系统所关心的服务质量。例如,对于部署流水线,“部署频率”比“代码行数”更有意义。
- 可行动(Actionable):当 SLI 偏离预期时,团队必须能够基于该指标采取明确的改进措施。例如,“构建失败率”升高后,团队可以回滚代码、修复测试或扩容构建节点。
常见陷阱:避免选择“虚荣指标”(如总构建次数)作为 SLI。这类指标虽然容易测量,但无法反映真实质量,也无法指导团队采取有效行动。始终问自己:“这个指标变差时,我们能做什么?”
2.3 CI/CD 流水线中的典型 SLI 示例
在跨团队 CI/CD 流水线场景中,常见的 SLI 可以按阶段和维度进行分类。以下表格展示了部分典型 SLI 及其与三大特征的对应关系。
| 阶段 | SLI 名称 | 测量方式 | 可测量 | 有意义 | 可行动 |
|---|---|---|---|---|---|
| 代码提交 | 提交到触发构建延迟 | Webhook 时间戳差值 | ✅ | ✅ | ✅ |
| 构建阶段 | 构建成功率 | 成功构建数 / 总构建数 | ✅ | ✅ | ✅ |
| 测试阶段 | 单元测试通过率 | 通过用例数 / 总用例数 | ✅ | ✅ | ✅ |
| 部署阶段 | 部署回滚率 | 回滚次数 / 总部署次数 | ✅ | ✅ | ✅ |
| 全流水线 | 端到端交付时长(P95) | 从提交到生产就绪的耗时 | ✅ | ✅ | ✅ |
设计建议:每个团队应从上述表格中选择 3~5 个核心 SLI 作为初始度量集。优先选择那些“可测量”成本低、“可行动”路径清晰的指标,逐步建立流水线的健康基线。