Chaosblade 是遵循混沌工程(Chaos Engineering)原理的实验工具,用于模拟常见的故障场景,帮助提升分布式系统的可恢复性和对故障的容错性。
Chaosblade 是内部 MonkeyKing 对外开源的项目,其建立在阿里巴巴近十年故障测试和演练实践基础上,结合了集团各业务的最佳创意和实践。
Chaosblade 可直接编译运行,cli 命令提示使执行混沌实验更加简单。目前支持的演练场景有操作系统类的 CPU、磁盘、进程、网络,Java 应用类的 Dubbo、MySQL、Servlet 和自定义类方法延迟或抛异常,C++ 应用指定方法或者行做延迟、抛异常、修改返回值等以及杀容器、杀 Pod,具体可执行 blade create -h
查看:
Chaosblade 的 cli 工具是 blade,下载或编译后可直接使用。blade 命令列表如下:
blade p jvm --process business
。如果挂载成功,返回挂载的 uid,用于状态查询或者撤销挂载使用。blade revoke UID
blade create [TARGET] [ACTION] [FLAGS]
,比如实施一次 Dubbo consumer 调用 xxx.xxx.Service 接口延迟 3s,则执行的命令为 blade create dubbo delay --consumer --time 3000 --service xxx.xxx.Service
,如果注入成功,则返回实验的 uid,用于状态查询和销毁此实验使用。blade destroy UID
blade status UID
或者 blade status --type create
以上命令帮助均可使用 blade help [COMMAND]
查看,也可查看新手指南,快速上手使用。
下载 chaosblade demo 镜像体验 blade 工具的使用。
下载镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest
启动镜像:
docker run -it registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest
进入镜像之后,可阅读 README.txt 文件实施混沌实验,Enjoy it。
在项目根目录下执行以下命令进行编译:
make
如果在 mac 操作系统上编译 linux 包,可执行:
make build_linux
如果编译 chaosblade 镜像,可执行:
make build_image
编译过程解析:
清除编译后文件:
make clean