name: slo-workshop description: 交互式SLO定义工作坊 - 指导定义SLIs、设置SLO目标、并建立错误预算策略,针对一个服务 allowed-tools: Read, Glob, Grep, Task, AskUserQuestion argument-hint: [service-name-or-context]
SLO工作坊命令
此命令运行一个交互式工作坊,帮助为服务定义SLOs(服务级别目标)。
目的
指导团队完成完整的SLO定义过程:
- 识别关键用户旅程
- 选择适当的SLIs(服务级别指标)
- 设置现实的SLO目标
- 建立错误预算策略
- 设计警报策略
工作流程
阶段1:服务理解
首先,理解服务上下文:
如果提供了服务名称或文件:
- 在代码库中搜索该服务
- 识别端点、依赖项和面向用户的功能
- 查找现有指标、SLOs或监控配置
通过问题收集上下文:
- 这个服务为用户做什么?
- 主要用户是谁(内部/外部)?
- 关键用户旅程是什么?
- 对用户来说,“正常工作”意味着什么?
阶段2:SLI选择
指导选择有意义的SLIs:
展示SLI类别:
常见SLI类型:
1. 可用性
"用户能访问服务吗?"
测量:成功请求 / 总请求
2. 延迟
"服务响应有多快?"
测量:百分位请求持续时间(p50, p90, p99)
3. 正确性
"服务返回正确结果吗?"
测量:正确响应 / 总响应
4. 吞吐量
"服务能处理负载吗?"
测量:每时间单位处理的请求
5. 新鲜度
"数据有多新?"
测量:提供给用户的数据年龄
对于每个相关SLI类型,定义:
- 什么算作“好”事件
- 什么算作“有效”事件(分母)
- 如何测量(指标、日志、合成)
阶段3:SLO目标设置
帮助设置适当的目标:
考虑因素:
- 当前基线(我们今天达到什么?)
- 用户期望(用户需要什么?)
- 工程能力(我们能维持什么?)
- 业务要求(合同要求什么?)
提供指导:
SLO目标指导:
起始点推荐:
- 可用性:从当前基线 - 0.1% 开始
- 延迟:从当前p99 + 20%缓冲 开始
常见目标:
- 99.9% = 每月43分钟停机时间
- 99.5% = 每月3.6小时停机时间
- 99% = 每月7.3小时停机时间
提示:
- 不要从100%开始(不可能维持)
- 不要设置无法测量的目标
- 保守目标更容易实现
- 可以随时间收紧目标
阶段4:错误预算策略
定义当错误预算消耗时发生什么:
错误预算计算:
错误预算 = 100% - SLO目标
示例:
SLO = 99.9%可用性
错误预算 = 0.1% = 每月43.2分钟
策略框架:
错误预算策略模板:
预算 > 50%:
- 正常开发速度
- 标准变更过程
预算 25-50%:
- 增加风险变更审查
- 优先可靠性改进
预算 < 25%:
- 暂停非关键功能工作
- 专注于可靠性改进
预算耗尽:
- 停止所有非关键部署
- 全员关注可靠性
- 为预算消耗事件进行事后分析
阶段5:警报策略
设计多窗口燃烧率警报:
解释燃烧率概念:
燃烧率警报:
燃烧率 = 消耗错误预算的速率
1x燃烧率 = 正好消耗月度预算
2x燃烧率 = 将在15天内耗尽预算
10x燃烧率 = 将在3天内耗尽预算
多窗口警报:
- 快速燃烧:1小时内14.4x速率(页面)
- 慢速燃烧:3天内3x速率(工单)
基于SLO目标定义警报阈值
阶段6:文档化
生成SLO文档:
# [服务名称] SLO定义
## 服务概述
[来自工作坊的描述]
## 关键用户旅程
1. [旅程1]
2. [旅程2]
## SLIs
### [SLI名称]
- 类型:[可用性/延迟等]
- 定义:[如何测量]
- 好事件:[什么算作好]
- 有效事件:[什么算作有效]
## SLO目标
| SLI | 目标 | 窗口 | 错误预算 |
|-----|------|------|----------|
| [SLI 1] | [%] | [天] | [时间] |
## 错误预算策略
### 预算 > 50%
[行动]
### 预算 25-50%
[行动]
### 预算 < 25%
[行动]
### 预算耗尽
[行动]
## 警报
| 警报 | 燃烧率 | 窗口 | 严重性 |
|-------|--------|------|--------|
| [名称] | [速率]x | [时间] | [页面/工单] |
## 审查计划
- 季度SLO审查
- 月度错误预算审查
- 重大事件后
使用示例
# 为特定服务启动工作坊
/sd:slo-workshop order-service
# 用上下文文件启动工作坊
/sd:slo-workshop @docs/services/payment-api.md
# 启动通用工作坊
/sd:slo-workshop
交互元素
在整个工作坊中,使用AskUserQuestion来:
- 收集服务上下文
- 验证SLI选择
- 确认目标适当性
- 审查错误预算策略
输出
工作坊产生:
- SLO定义文档 - 完整的SLO规范
- 实施清单 - 实施SLOs的步骤
- 审查计划 - 何时重新访问和调整
相关技能
此命令利用:
slo-sli-error-budget- SLO方法论细节observability-patterns- 测量方法distributed-tracing- 基于跟踪的SLIs
相关代理
对于无需交互式工作坊的SLO咨询:
observability-consultant- 通用可观察性指导