ramuponugumati/aws-incident-response-war-room
GitHub: ramuponugumati/aws-incident-response-war-room
AWS事件响应作战室,模拟事件响应流程。
Stars: 0 | Forks: 0
# AWS 事件响应作战室
一个用于 AWS 生产中断的多代理事件响应模拟器。
该项目模拟了一个小型 SRE 作战室,其中专业代理检查遥测数据,诊断可能的根本原因,提出补救措施,检查成本影响,并起草事件通讯。
## 最高目标
将嘈杂的生产警报转换为安全、有证据支持的响应计划:
1. 检测事件并总结症状。
2. 调查日志、指标和最近的变化。
3. 提出使用命令或基础设施更改的补救措施。
4. 检查成本和影响范围。
5. 生成 Slack 更新和事后分析草案。
6. 在任何实际补救措施之前需要人工批准。
## 生产代理团队
| 代理 | 责任 | 输入 | 输出 |
| --- | --- | --- | --- |
| 协调器 | 协调所有代理并拥有最终建议 | 事件有效负载、代理输出 | 最终响应计划、批准请求 |
| 侦探 | 从遥测数据和变更历史中找到可能的根本原因 | CloudWatch 日志、指标、部署事件 | 根本原因假设、证据时间线 |
| AWS DevOps 代理 | 将诊断转换为 AWS 原生操作补救措施 | 根本原因、手册、ECS/Lambda/CloudFormation 元数据 | AWS CLI 命令、回滚步骤、IaC 补丁说明 |
| AWS 安全代理 | 检查 IAM、CloudTrail、秘密暴露、网络暴露和危险影响范围 | 建议的修复方案、IAM 上下文、CloudTrail 事件、资源策略 | 安全风险评级、所需批准、更安全的替代方案 |
| 可靠性工程师 | 审查可用性、回滚安全性、SLO 影响、验证检查 | 指标、拓扑、补救计划 | 可靠性风险评级、验证计划 |
| 成本守护者 | 检查修复方案是否会改变基础设施支出 | 修复计划、服务规模、定价提示 | 成本风险评级、警告、替代方案 |
| 笔记员 | 编写事后分析、Slack 更新和执行摘要 | 时间线、影响、诊断、修复计划 | 利益相关者准备通讯 |
## MVP 范围
第一个版本使用本地事件数据而不是实时 AWS 访问。这保持了演示的可靠性和安全性,同时保留了我们可以稍后连接到 AWS API 的相同接口。
包含的 MVP 数据源:
- CloudWatch 风格的日志样本
- 指标快照
- 部署/更改事件
- 手册片段
- 模拟服务元数据
## 演示事件
`checkout-api:v42` 部署后,Checkout API 开始返回 HTTP 500 错误。
侦探应确定在部署后不久开始的数据库连接超时。修复者应建议回滚到上一个任务定义或恢复数据库连接池设置。成本守护者应确认回滚不会增加额外支出。笔记员应生成简洁的 Slack 更新和事后分析草案。
## 建议的技术堆栈
- Node.js 与轻量级本地服务
- Docker 化的 checkout API
- ECS Fargate + ALB + CloudWatch
- CloudFormation 用于可部署的 AWS 资源
- AWS CLI 配置文件 `ramuponu-admin` 在 `us-east-1`
- 首先使用确定性的本地代理;稍后使用 OpenAI 代理
## 仓库布局
```
aws-incident-response-war-room/
README.md
docs/
design.md
demo-script.md
data/
incidents/
runbooks/
src/
agents/
tools/
workflows/
```
## 构建阶段
### 阶段 1:本地模拟
- 创建种子事件数据。
- 将每个代理构建为单独的模块。
- 从命令行运行一个端到端的事件。
- 打印最终的响应事件包。
### 阶段 2:交互式 UI
- 添加一个用于作战室的 Web 仪表板。
- 显示代理卡、证据、时间线、批准门和生成的通讯。
### 阶段 3:AWS 集成
- 用 AWS SDK 调用替换模拟遥测工具。
- 支持只读 CloudWatch、ECS、Lambda 和 CloudFormation 检查。
- 保持补救操作的批准门。
## 生产级演示方向
现场演示应首先使用真实的 AWS 只读检查:
- CloudWatch 警报、日志和指标
- ECS 服务事件和任务定义
- Lambda 错误和配置
- CloudTrail 最近更改事件
- 执行角色的 IAM 上下文
有风险的补救措施应保持批准门。应用程序可以生成命令,但应在人类明确批准之前不执行更改 AWS 的操作。
## 当前命令
运行确定性的本地作战室:
```
npm run war-room
```
运行特定的本地场景:
```
npm run scenario:cpu
npm run scenario:memory
npm run scenario:security
npm run scenario:app-bug
```
触发已部署的事件场景:
```
npm run trigger -- cpu
npm run trigger -- memory
npm run trigger -- security
npm run trigger -- app-bug
npm run trigger -- healthy
```
运行仪表板:
```
npm run dashboard
```
运行启用实时允许列表补救的仪表板:
```
npm run dashboard:live
```
本地运行 checkout API:
```
npm run checkout
```
准备就绪后部署到 AWS:
```
npm run deploy
```
如果本地未安装 Docker,部署将回退到 AWS CodeBuild 以构建和推送 checkout API 容器镜像。
清理所有演示资源:
```
npm run cleanup
```
部署和清理脚本默认为:
- AWS 配置文件:`ramuponu-admin`
- 区域:`us-east-1`
- 堆栈:`war-room-demo-checkout`
- 资源前缀/标记:`war-room-demo`
实时更改执行需要人工批准和:
```
export WAR_ROOM_ALLOW_MUTATIONS=1
```
对于此演示,允许列表的实时补救将重置 checkout 应用程序的事件模式为 `healthy` 并验证 `/health`。
标签:Alerting, Automation, AWS, AWS CLI, AWS DevOps, Change History, CloudTrail, CloudWatch, Cost Impact, Cost Management, Disaster Recovery, DPI, Human Approval, IAM, Incident Communications, Incident Response, Infrastructure as Code (IaC), Logs, Metrics, MITM代理, Monitoring, Postmortem, Reliability, Remediation, Risk Assessment, Rollback, Security, Slack Integration, SRE, System Recovery, Telemetry, Validation, War Room, 偏差过滤, 凭据导出, 自定义脚本, 请求拦截, 隐蔽技术