1. 课程导论:SLI 与 SLO 基础概念、为什么需要管理 SLI 口径配置变更、Terraform 与 CI/CD 在其中的角色
1.1 SLI 与 SLO 基础概念
在站点可靠性工程(SRE)体系中,SLI(Service Level Indicator,服务等级指标)与SLO(Service Level Objective,服务等级目标)是衡量服务健康度的核心度量对。SLI 是实际观测到的量化指标,SLO 则是围绕 SLI 设定的目标阈值。
| 术语 | 定义 | 示例 |
|---|---|---|
| SLI | 对服务某一维度(延迟、错误率、吞吐量等)的实际测量值,通常以比率或分布形式呈现。 | 请求延迟 P99 ≤ 200ms;HTTP 500 错误率 ≤ 0.1% |
| SLO | 围绕 SLI 设定的目标边界,是服务等级协议(SLA)的内部承诺依据。 | 过去 30 天内,99.9% 的请求延迟 P99 ≤ 200ms |
| SLA | 对外部客户承诺的合同级目标,通常比 SLO 更宽松。 | 月度可用性 ≥ 99.5%(含赔偿条款) |
关键区分:SLI 是“测量什么”,SLO 是“目标是多少”。SLO 必须基于 SLI 定义,而 SLA 则基于 SLO 对外承诺。管理 SLI 口径,本质上是管理“测量什么”以及“如何测量”的规则。
1.2 为什么需要管理 SLI 口径配置变更
SLI 口径并非一成不变。随着业务演进、基础设施重构、监控工具升级,SLI 的定义规则、数据源、聚合方式、阈值边界都会频繁变动。缺乏对 SLI 口径配置的版本化管理,会引发以下问题:
- 口径漂移:不同团队对同一 SLI 使用不同的计算逻辑,导致 SLO 报告不一致。
- 回滚困难:口径变更后发现问题,无法快速恢复到上一个已知正确的配置版本。
- 审计缺失:无法追溯“谁在什么时间修改了哪个 SLI 口径”,合规性不达标。
- 环境差异:开发、预发、生产环境的 SLI 口径配置不同步,造成误告警或漏告警。
常见陷阱:很多团队直接在监控 UI 上手动修改 SLI 口径,认为“改一下阈值很简单”。这种操作没有变更记录、没有审批、没有回滚能力,一旦误改,恢复成本极高。
因此,SLI 口径配置变更需要纳入基础设施即代码(IaC)与CI/CD 流水线管理,实现可追溯、可审计、可自动化的变更流程。
1.3 Terraform 与 CI/CD 在其中的角色
本课程的核心技术栈是 Terraform 与 CI/CD 流水线,二者在 SLI 口径配置变更管理中承担互补角色:
| 角色 | 工具 | 职责 |
|---|---|---|
| 声明式定义 | Terraform | 将 SLI 口径(数据源、指标过滤、聚合窗口、阈值)以 HCL 代码形式声明,存储在 Git 仓库中。 |
| 变更自动化 | CI/CD 流水线 | 代码提交后自动执行 Terraform Plan/Apply,将口径配置推送到监控平台(如 Datadog、Prometheus、Grafana)。 |
| 版本控制 | Git | 记录每次口径变更的差异、提交人、时间戳,支持分支策略与代码审查。 |
| 合规与审计 | CI/CD + Terraform | 通过流水线门禁(Policy as Code)自动校验口径变更是否符合组织规范,生成审计日志。 |
下图展示了 Terraform 与 CI/CD 在 SLI 口径配置变更管理中的协作流程:
1.4 本课程的核心价值
通过本课程,你将掌握以下能力:
- 使用 Terraform 声明式定义 SLI 口径配置,消除手动操作。
- 将 SLI 口径变更纳入 CI/CD 流水线,实现自动化部署与回滚。
- 通过 Policy as Code 在流水线中自动校验口径合规性。
- 构建可审计、可复现的 SLI 配置管理流程,支撑 SRE 体系落地。
课程前置要求:具备基础的 Terraform 语法知识(resource、data source、provider),了解 Git 工作流与 CI/CD 基本概念(如 Jenkins、GitLab CI、GitHub Actions)。本课程将使用 Terraform 与 Prometheus/Grafana 作为主要演示平台。