项目简介
chaosArsenal是深信服开源的一款适用于Linux系统的通用可靠性测试工具。它能在系统中模拟软/硬件故障,以此验证系统面对可能出现的故障时的抵御能力,有助于发现系统潜在漏洞,满足分布式系统中对基础硬件、操作系统、中间件、业务应用等稳定性测试的需求。
项目的主要特性和功能
- 简单易用:核心设计理念是简单易用,工具解压即可使用,可快速部署上线。
- 丰富的故障注入能力:支持多种原子故障注入,覆盖CPU、内存、网络、文件系统、进程、磁盘、PCIE等多种软硬件场景。
- 良好的拓展性:可根据实际业务需求快速添加自定义原子故障注入能力,实现功能拓展。
- 多接口支持:支持cli和http两种控制接口,满足不同用户场景需求。
- 日志与数据库记录:使用sqlite数据库记录故障注入信息,用于重复注入检查、故障恢复和查询;日志路径为
$arsenal_pacakge/logs/operations.log,有备份和压缩机制。
安装使用步骤
编译
- 依赖软件:确保已安装Go 1.18.x及以上版本。
- 编译环境:使用Linux系统(已验证系统为ubutnu、Centos)。
- 快速构建:在Makefile所在目录下执行
make命令,编译生成的执行文件路径为output/chaosArsenal/。
使用
OpenAPI调用
- 启动server服务端:
- 不带参数启动,默认服务端口为
http://127.0.0.1:9095,命令:./arsenal server start。 - 带
ip和port启动,如./arsenal server start --host=10.103.176.172 --port=9095。 - 只带
ip启动,默认端口为9095,如./arsenal server start --host=10.103.176.172。 - 关闭server服务端,命令:
./arsenal server stop --signal stop。
- 不带参数启动,默认服务端口为
- 注入:注入命令的所有参数放在
http请求头,params为传入某个故障模式的所有参数,示例:curl -X 'POST' 'http://10.103.176.172:9095/arsenal/v1/faults' -H "Content-Type: application/json" -d '{"class": "os", "domain": "file", "fault-mode": "lost", "params": {"path":"/home/curtis/work/arsenal-os/kk.sh"}}'。 - 清理:根据注入时返回的
uuid清理已注入的命令,如curl -X 'DELETE' 'http://10.103.176.172:9095/arsenal/v1/faults/5d81e8f58ef7e8a1'。 - 查询:支持匹配单一字段和多个字段,如
curl -X 'GET' 'http://10.103.176.172:9095/arsenal/v1/faults?uuid=5d81e8f58ef7e8a1'。
CLI命令调用
- 注入:
- 常规命令,如
./arsenal inject os file corruption --path /home/curtis/work/arsenal-os/kk.sh --length 3 --offset 2。 - 带
timeout参数,如./arsenal inject os file corruption --path /home/curtis/work/arsenal-os/kk.sh --length 3 --offset 2 --timeout 1m:30s。
- 常规命令,如
- 清理:
cli命令完整命令清除,如./arsenal remove os file corruption --path /home/curtis/work/arsenal-os/kk.sh --length 3 --offset 2。- 根据
uuid参数清理,如./arsenal remove --uuid 5d81e8f58ef7e8a1。
- 查询:支持匹配单一字段和多个字段,如
./arsenal query --uuid 5d81e8f58ef7e8a1。
cli命令补全
执行./arsenal completion bash。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】