目录
ChaosBlade简介
- ChaosBlade 是阿里巴巴开源的一款简单易用、功能强大的混沌实验注入工具,提供丰富故障场景实现,可实现底层故障的注入,特点是操作简洁、无侵入、扩展性强。
- Chaosblade 是内部 MonkeyKing 对外开源的项目,其建立在阿里巴巴近十年故障测试和演练实践基础上,结合了集团各业务的最佳创意和实践。
- Chaosblade 可直接编译运行,cli 命令提示使执行混沌实验更加简单。目前支持的演练场景有操作系统类的 CPU、磁盘、进程、网络,Java 应用类的 Dubbo、MySQL、Servlet 和自定义类方法延迟或抛异常等以及杀容器、杀 Pod,具体可执行 blade create -h 查看:
- 目前我涉及到业务线引入此工具的目的就在于在微服务架构中优化原有的故障植入方式,并扩展一些新的植入场景,如服务异常,mysql操作,网络异常,特定方法异常等。
项目地址:https://github.com/chaosblade-io/chaosblade
使用文档
Chaosblade 的 cli 工具是 blade,下载或编译后可直接使用。blade 命令列表如下:
- prepare:简写 p,混沌实验前的准备,比如演练 Java 应用,则需要挂载 java agent。要演练应用名是 business 的应用,则在目标主机上执行
blade p jvm --process business
。如果挂载成功,返回挂载的 uid,用于状态查询或者撤销挂载使用。 - revoke:简写 r,撤销之前混沌实验准备,比如卸载 java agent。命令是
blade revoke UID
- create: 简写是 c,创建一个混沌演练实验,指执行故障注入。命令是
blade create [TARGET] [ACTION] [FLAGS]
,比如实施一次 Dubbo consumer 调用 xxx.xxx.Service 接口延迟 3s,则执行的命令为blade create dubbo delay --consumer --time 3000 --service xxx.xxx.Service
,如果注入成功,则返回实验的 uid,用于状态查询和销毁此实验使用。 - destroy:简写是 d,销毁之前的混沌实验,比如销毁上面提到的 Dubbo 延迟实验,命令是
blade destroy UID
- status:简写 s,查询准备阶段或者实验的状态,命令是 blade status UID 或者
blade status --type create
Demo体验
如果不想在本地配置环境,可以下载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 文件实施混沌实验
本地编译
首先需要安装Go环境
我用的是ubuntu的集群,直接使用
sudo apt-get install golang
注意要配置好GOPATH的地址,go的环境变量可以