name: 混沌计划 description: 为系统设计混沌工程实验 - 识别故障模式、创建实验假设并生成GameDay计划 allowed-tools: 读取、Glob、Grep、任务、询问用户问题 argument-hint: <系统或服务名称>
混沌计划命令
此命令帮助为系统设计混沌工程实验和GameDay计划。
目的
生成全面的混沌工程计划,包括:
- 系统韧性评估
- 故障模式识别
- 实验假设和设计
- GameDay规划
- 安全措施和回滚程序
工作流程
第一阶段:系统发现
首先,理解系统:
如果提供了系统/服务名称:
- 在代码库中搜索服务定义
- 识别依赖项和集成
- 查找现有的韧性模式(断路器、重试机制)
- 检查监控和警报配置
分析架构:
系统分析清单:
□ 服务边界和责任
□ 外部依赖项(数据库、API、队列)
□ 内部服务依赖项
□ 数据流和关键路径
□ 当前在位的韧性模式
□ 现有的监控和可观察性
第二阶段:故障模式识别
识别潜在的故障模式:
基础设施故障:
- 实例/容器崩溃
- 服务间网络分区
- 磁盘耗尽
- 内存压力
- CPU饱和
应用故障:
- 服务不可用
- 响应缓慢 / 延迟峰值
- 错误响应
- 连接池耗尽
- 资源泄漏
依赖项故障:
- 数据库故障转移/不可用
- 缓存未命中/不可用
- 外部API超时/故障
- 消息队列备份
数据故障:
- 损坏的数据
- 过时数据(复制延迟)
- 模式不兼容
第三阶段:稳态定义
定义“健康”状态:
识别关键指标:
稳态指标:
基于请求(RED):
- 请求速率:[基准] 请求/秒
- 错误率:< [阈值]%
- 持续时间(p99):< [阈值]毫秒
基于资源(USE):
- CPU利用率:< [阈值]%
- 内存利用率:< [阈值]%
- 队列深度:< [阈值]
业务指标:
- [指标1]:[基准/阈值]
- [指标2]:[基准/阈值]
第四阶段:实验设计
为识别的故障模式设计实验:
针对每个优先级的故障模式,创建:
实验:[名称]
假设:
"当[故障条件]发生时,[系统组件]将
[预期行为],因为[推理]。"
故障注入:
- 类型:[延迟/错误/终止/分区等]
- 目标:[服务/实例/依赖项]
- 幅度:[故障程度]
- 持续时间:[多长时间]
爆炸半径:
- 受影响的组件:[列表]
- 用户影响估计:[百分比/描述]
中止条件:
- 错误率 > [阈值]
- 延迟 p99 > [阈值]
- [业务指标]被违反
- 收到客户投诉
回滚步骤:
1. [恢复故障的步骤]
2. [验证恢复的步骤]
成功标准:
□ [指标]保持在[边界]内
□ [恢复]在[时间]内发生
□ [警报]按预期触发
第五阶段:实验优先级排序
按以下方式对实验进行优先级排序:
基于风险的优先级排序:
| 因素 | 权重 |
|---|---|
| 故障可能性 | 高 |
| 发生后的影响 | 高 |
| 当前不确定性 | 中 |
| 测试简便性 | 低 |
建议顺序:
- 高影响 + 高不确定性
- 高影响 + 低不确定性(验证假设)
- 中影响 + 高不确定性
- 较低优先级项目
第六阶段:GameDay规划
如果需要多个实验或团队练习:
GameDay计划:[标题]
日期:[提议日期]
持续时间:[小时]
参与者:[需要的团队/角色]
目标:
1. 验证[韧性模式/假设]
2. 实践[事件响应/协调]
3. 测试[运行手册/恢复程序]
GameDay前清单:
□ 利益相关者批准
□ 参与者简报安排
□ 监控仪表板验证
□ 紧急停止开关测试
□ 回滚程序文档化
□ 沟通渠道设置
日程:
[时间] - 简报和角色分配
[时间] - 基线捕获
[时间] - 场景1:[名称]
[时间] - 汇报 / 休息
[时间] - 场景2:[名称]
[时间] - 快速汇报
[时间] - 清理和验证
场景:
场景1:[名称]
- 目标:[我们在测试什么]
- 假设:[预期行为]
- 注入:[故障详情]
- 持续时间:[时间]
- 成功标准:[指标]
场景2:[名称]
[相同结构]
安全:
- 紧急停止开关:[如何立即停止]
- 回滚:[如何恢复所有更改]
- 沟通:[主要渠道]
- 升级:[如果发生真正事件,联系谁]
角色:
- GameDay负责人:[责任]
- 场景执行人:[责任]
- 观察员:[责任]
- 记录员:[责任]
GameDay后:
- 快速汇报:同一天
- 正式事后分析:1周内
- 行动项追踪于:[系统]
第七阶段:输出生成
生成交付物:
- 韧性评估 - 当前状态分析
- 实验目录 - 优先级排序的实验列表
- 详细实验计划 - 可执行的设计
- GameDay计划 - 如果请求,完整的GameDay文档
- 实施清单 - 安全执行的步骤
使用示例
# 为特定服务规划混沌工程
/sd:混沌计划 订单服务
# 结合架构上下文规划
/sd:混沌计划 @docs/architecture/payment-system.md
# 为整个系统规划GameDay
/sd:混沌计划 "电商平台" --gameday
交互元素
使用询问用户问题来:
- 澄清系统边界
- 验证故障模式优先级
- 确认爆炸半径可接受性
- 审查实验设计
- 最终确定GameDay参数
输出
此命令生成:
- 韧性评估报告
- 优先级排序的实验目录
- 详细实验设计
- GameDay计划(如果适用)
- 安全清单
相关技能
此命令利用:
混沌工程基础- 实验设计原则韧性模式- 测试和验证的模式gameday-planning- GameDay执行指导事件响应- 处理发现的问题
相关代理
如需持续的混沌工程咨询:
混沌工程师- 韧性测试专业知识