2、SLO台账定义:什么是SLO台账、台账的核心字段(SLI、目标、窗口期)、台账的维护原则
SLO台账是SRE体系中的核心资产,它将抽象的“可靠性承诺”转化为可量化、可审计、可追溯的结构化记录。与零散配置的告警规则不同,SLO台账以服务维度组织,每一条记录对应一个明确的SLO定义,并关联其度量方式、目标阈值与评估周期。本节将定义SLO台账的概念,拆解其核心字段,并给出维护原则。
2.1 什么是SLO台账
SLO台账(Service Level Objective Ledger)是一份集中管理所有SLO定义及其元数据的结构化清单。它不仅是监控系统的配置源,更是容量规划、故障定级、Error Budget核算的基准参照。
台账 vs 监控告警规则: 监控规则关注“是否触发阈值”,SLO台账关注“承诺的可靠性目标是什么、如何度量、窗口期多长”。台账是规则的上层语义定义。
一个完整的SLO台账应具备以下特征:
- 唯一性: 每个SLO在台账中有唯一ID,与具体服务版本或功能模块绑定。
- 可追溯性: 记录SLO的创建时间、变更历史、负责人及审批记录。
- 可计算性: 台账中的字段可直接用于Error Budget消耗计算与容量推演。
- 可审计性: 支持定期评审,确保SLO定义与业务实际需求一致。
2.2 台账的核心字段
SLO台账的每条记录必须包含以下三个核心字段:SLI(服务等级指标)、目标(Target)、窗口期(Window)。三者共同构成一个可执行的SLO定义。
| 核心字段 | 定义 | 示例 | 说明 |
|---|---|---|---|
| SLI | 衡量服务质量的量化指标,通常为比率或分布值 | 请求成功率、P99延迟、吞吐量 | 必须可采集、可计算,且与用户体验直接相关 |
| 目标(Target) | SLI在窗口期内必须达到的阈值 | 99.9%、≤200ms、1000 QPS | 目标值决定Error Budget总量,过高或过低均不合理 |
| 窗口期(Window) | 评估SLO达标情况的时间跨度 | 30天滚动、7天滚动、日历月 | 窗口期影响Error Budget的消耗速率与恢复速度 |
实践建议: 窗口期推荐使用滚动窗口(如28天或30天),避免日历月带来的边界效应。滚动窗口能更平滑地反映近期服务质量变化。
除核心字段外,台账还应包含以下辅助字段以增强可管理性:
- 服务名称/ID: 关联CMDB或服务目录。
- SLO类型: 可用性SLO、延迟SLO、吞吐SLO、持久性SLO。
- Error Budget总量: 由目标值推导得出(1 - 目标)× 总时间窗口。
- 负责人: 负责该SLO的团队或个人。
- 状态: 生效中、已废弃、待评审。
- 创建时间/变更时间: 用于审计与版本管理。
2.3 台账的维护原则
SLO台账不是一次性产物,需要持续维护。以下四项原则确保台账长期有效:
- 单一数据源原则: 所有SLO定义以台账为准,监控系统、告警系统、容量规划工具均从台账同步数据,避免定义分散导致的不一致。
- 版本化与变更审批原则: 每次修改SLO目标或窗口期,必须记录变更原因、审批人、生效时间。建议使用Git或类似工具管理台账文件。
- 定期评审原则: 每季度或每半年对台账进行全量评审,检查SLI是否仍能反映用户体验、目标是否过高或过低、窗口期是否合理。
- 废弃清理原则: 已下线服务或不再使用的SLO应及时标记为“已废弃”,避免台账膨胀干扰容量规划决策。
常见陷阱: 台账中SLO目标值长期不更新,导致Error Budget与实际业务脱节。例如,服务架构已优化但SLO目标仍沿用旧值,造成Error Budget虚高,掩盖真实容量风险。
2.4 SLO台账结构示意
下图展示了一个典型SLO台账的字段关系与维护流程,帮助理解台账在SRE体系中的位置。
2.5 台账与Error Budget的关系
SLO台账是Error Budget消耗模型的数据底座。每一条台账记录直接决定:
- Error Budget总量: 窗口期总时间 ×(1 - 目标值)。例如,30天窗口期、99.9%目标,则Error Budget总量为 30×24×60×60×0.001 = 2592秒。
- 消耗速率基准: 台账中的SLI实时数据与目标值对比,计算已消耗的Error Budget比例。
- 容量规划触发条件: 当Error Budget消耗速率超过预设阈值时,台账驱动容量规划流程启动。
关键认知: 没有台账,Error Budget就是无源之水。台账的准确性与完整性直接决定容量规划的可信度。
下图展示SLO台账如何与Error Budget消耗模型联动,形成容量规划闭环。
2.6 台账维护的自动化建议
对于大规模微服务架构,手动维护台账不可持续。建议采用以下自动化策略:
- 台账即代码: 使用YAML或JSON定义台账,存储在Git仓库中,通过CI/CD流水线同步至监控与容量规划系统。
- 自动校验: 在提交台账变更时,自动检查SLI是否可采集、目标值是否在合理范围(如99%~99.999%)、窗口期是否为正整数天。
- 变更通知: 台账变更自动通知相关服务负责人与SRE团队,确保变更透明可追溯。
台账即代码示例(YAML):
slo_ledger:
- id: "svc-auth-availability"
service: "auth-service"
sli: "request_success_rate"
target: 0.999
window_days: 30
owner: "team-auth"
status: "active"
created_at: "2025-01-01"
- id: "svc-payment-p99-latency"
service: "payment-service"
sli: "p99_latency_ms"
target: 200
window_days: 7
owner: "team-payment"
status: "active"
created_at: "2025-01-15"
通过以上定义与维护原则,SLO台账将成为容量规划工作中最可靠的基准参照,确保每一次扩容、限流、降级决策都有据可依。