混沌工具包AWS MCP服务器
一个模型上下文协议(MCP)服务器,提供用于为AWS基础设施生成和管理Chaos Toolkit实验的工具。此服务器实现了actions.md规范中的所有混沌操作。
特性
- AZ故障模拟:生成实验以模拟整个可用区故障
- EC2混沌测试:停止、终止、重新启动实例和分离卷
- ASG混沌测试:创建自动缩放组故障场景
- SSM混沌操作:通过系统管理器执行混沌命令
- 网络混沌:修改安全组并模拟网络问题
- RDS混沌:数据库实例和集群故障场景
- 负载平衡器混乱:目标注销和健康检查修改
- 实验管理:运行、验证和回滚混沌实验
- 状态管理:用于安全回滚的自动状态文件处理
安装
新环境
# 1. Clone the repository
# Option 1: GitHub
git clone https://github.com/RadiumGu/chaostoolkit-aws-mcp-server.git
# Option 2: Gitee (China mirror)
git clone https://gitee.com/radiumgu/chaostoolkit-aws-mcp-server.git
cd chaostoolkit-aws-mcp-server
# 2. Install dependencies with uv
uv sync --all-groups
# 3. Install additional Chaos Toolkit dependencies
pip install chaostoolkit chaostoolkit-aws aws-az-failure-chaostoolkit对于现有环境
# Update dependencies
cd chaostoolkit-aws-mcp-server
uv sync --all-groups3.配置AWS凭据
# For AWS China regions
aws configure --profile awscn
AWS Access Key ID [None]: your-access-key
AWS Secret Access Key [None]: your-secret-key
Default region name [None]: cn-north-1
Default output format [None]: json用法
使用MCP客户端
添加到MCP客户端配置中:
{
"chaostoolkit-aws-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/chaostoolkit-aws-mcp-server",
"run",
"chaostoolkit-aws-mcp-server"
],
"env": {
"AWS_REGION": "cn-north-1"
}
}
}可用工具
AZ故障工具
chaos_generate_az_failure_experiment-使用生成AZ故障实验azchaosaws.ec2.actions.fail_azchaos_isolate_az_network-生成隔离AZ网络连接的实验chaos_simulate_az_partition-生成实验以模拟AZ网络分区chaos_generate_asg_az_failure_experiment-使用生成ASG AZ故障azchaosaws.asg.actions.fail_az
EC2混沌工具
chaos_stop_instances-生成停止EC2实例的实验chaos_terminate_instances-生成终止EC2实例的实验chaos_reboot_instances-生成重启EC2实例的实验chaos_detach_volumes-生成分离EBS卷的实验
ASG混沌工具
chaos_suspend_asg_processes-生成暂停ASG过程的实验chaos_terminate_random_instances-生成终止随机ASG实例的实验
SSM混沌工具
chaos_ssm_send_command-生成发送SSM命令的实验chaos_ssm_stress_cpu-通过SSM生成CPU压力实验chaos_ssm_fill_disk-通过SSM生成磁盘填充实验chaos_ssm_kill_process-通过SSM生成进程终止实验
网络混沌工具
chaos_modify_security_groups-生成修改安全组规则的实验chaos_simulate_network_latency-生成网络延迟模拟实验
RDS混沌工具
chaos_reboot_db_instance-生成重启RDS实例的实验chaos_failover_db_cluster-生成故障转移RDS群集的实验
负载均衡器混沌工具
chaos_deregister_targets-生成注销ALB/NLB靶标的实验
实验管理工具
chaos_run_experiment-从JSON文件执行Chaos Toolkit实验chaos_validate_experiment-验证Chaos Toolkit实验JSON语法chaos_rollback_from_state-使用状态文件执行回滚操作
示例用法
1.生成AZ故障实验:
Use the chaos_generate_az_failure_experiment tool with:
- title: "Production AZ Failure Test"
- az: "cn-north-1a"
- failure_type: "network"
- health_check_url: "https://my-app.com/health"2.生成SSM CPU压力实验:
Use chaos_ssm_stress_cpu with:
- title: "CPU Stress Test"
- instance_ids: ["i-1234567890abcdef0"]
- cpu_cores: 4
- duration_seconds: 3003.生成EC2实例终止实验:
Use chaos_terminate_instances with:
- title: "Instance Termination Test"
- instance_ids: ["i-1234567890abcdef0", "i-0987654321fedcba0"]
- az: "cn-north-1a"4.进行实验:
Use chaos_run_experiment with:
- experiment_file: "./experiment.json"
- journal_path: "./experiment-journal.json"5.必要时回滚:
Use chaos_rollback_from_state with:
- state_files: ["./fail_az.ec2.json"]支持的混沌动作
此服务器实现了规范中的所有混乱操作:
1.AZ故障模拟
- 模拟故障 -模拟整个可用区故障
- isolate_az_network 网络 -隔离AZ网络连接
- block_az交通 -特定AZ交通
- drain_az状态 -清空AZ实例
- 模拟分区 -模拟AZ网络分区
2.EC2混沌实验
- 停止状态 -停止EC2实例
- 终止实例 -终止实例
- 重新启动实例 -重新启动实例
- 详细信息_卷数 -分离EBS卷
- 应力cpu -CPU压力测试
- fill_disk -磁盘填充测试
3.ASG混沌实验
- suspend_asg过程 -暂停ASG进程(启动、终止、健康检查等)
- 结果_过程 -恢复ASG流程
- change_asg_子网 -修改ASG子网配置
- detach_random_实例 -随机分离ASG实例
- terminate_random_实例 -随机终止ASG实例
- set_asg_容量 -修改ASG容量(最小/最大/所需)
- stop_random_实例 -随机停止ASG实例
4.SSM混沌实验
- send_命令 -通过SSM发送混沌命令
- run_shell_command -执行shell命令进行故障注入
- stress_cpu_via_ssm -通过SSM进行CPU压力测试
- fill_disk_via_ssm -通过SSM填充磁盘
- kill过程 -终止指定进程
- 网络腐败 -网络数据包损坏
- 记忆压力 -记忆压力测试
- io_stress -IO压力测试
5.网络层混沌实验
- 黑洞交通 -网络黑洞
- modify_security_groups -修改安全组规则
- detach_internet_gateway -断开互联网网关
- 模拟网络延迟 -网络延迟注入
- packet_loss_模拟 -丢包模拟
6.负载均衡器混沌实验
- 注销_目标 -注销ALB/NLB目标
- 修改健康检查 -修改健康检查
- simulate_lb故障 -模拟负载平衡器故障
7.RDS/数据库混沌实验
- reboot_db_实例 -重新启动数据库实例
- 故障转移_db_cluster -数据库群集故障转移
- simulate_db-connection_limit -模拟连接限制
- 注入延迟 -数据库延迟注入
先决条件
- Python 3.10+
- 已安装Chaos工具包(
pip install chaostoolkit) - Chaos Toolkit AWS扩展(
pip install chaostoolkit-aws) - AWS AZ故障混沌工具包扩展(
pip install aws-az-failure-chaostoolkit) - 已配置AWS凭据
- 混乱操作所需的AWS权限
发展
# Install development dependencies
uv sync --all-groups
# Run tests
uv run pytest --cov --cov-branch --cov-report=term-missing
# Run linting
uv run ruff check
uv run mypy src/测试覆盖率
当前测试覆盖率: 36% 通过12项测试
- 涵盖核心功能
- 实验生成单元测试
- 异步测试支持
许可证
阿帕奇-2.0
