混沌工程 chaosblade

阿里巴巴开源异常测试工具

环境准备

下载linux编译后的版本 chaosblade下载

解压后可直接使用 ./blade --help

使用方法

系统级故障

进程异常

进行夯住

验证上游程序的容错能力,原理 kill -STOP 进程号
./blade create process stop --process 31653
{"code":200,"success":true,"result":"408f353fd15c0e0f"}
/blade destroy 408f353fd15c0e0f
{"code":200,"success":true,"result":"command: process stop --debug=true --process=31653"}

内存故障

root权限,mount
执行内存占用 50%,原理mount(有些机器限制了mount的root权限)
blade create mem load --mem-percent 50

磁盘故障

磁盘满

磁盘满下对系统服务的影响,验证稳定性、以及报警信息
./blade create disk fill --path /home --size 4000 (单位M)
{"code":200,"success":true,"result":"7a3d53b0e91680d9"}
blade destroy 7a3d53b0e91680d9

磁盘IO
原理:dd命令

读IO
blade create disk burn --read --path /home
写IO
blade create disk burn --write --path /home
读写IO
blade create disk burn --read --write

CPU异常

查看帮助:

./blade create cpu -h

应用例子:
./blade create cpu load --cpu-percent 80 , CPU占用80%
{"code":200,"success":true,"result":"3035526eb16d9b2b"}
result为本次异常的ID信息
查看异常注入情况
top 后 按1 ,可查看每个cpu的负载情况。负载符合设定异常

混沌工程 chaosblade_第1张图片
cpu资源图

删除异常
./blade d 3035526eb16d9b2b

网络异常

切记要添加 --timeout 参数,否则可能导致机器瘫痪
原理:基于linux自带的tc流量控制工具实现
tc执行必须root账号,如果进行流量控制,需要切到root执行blade命令
如果机器是64位,执行tc之前先创建一个软链,不然在用netem库时会出现错误[Netem] Unknown qdisc "netem":ln -s /usr/lib64/tc/ /usr/lib/tc
网络丢包 lost
网络延迟 delay

jvm故障

查看帮助文档

java堆内存异常

先执行 prepare 操作,挂载 java agent,执行 java 实验场景必要步骤
blade prepare jvm --pid 27313 # 设置异常的进程id
{"code":200,"success":true,"result":"af9ec083eaf32e26"}
执行进程内 CPU 满载
./blade create jvm OutOfMemoryError --area HEAP --wild-mode true --pid=27313
{"code":200,"success":true,"result":"26addd388b81cc90"}
停止实验
blade destroy 26addd388b81cc90
卸载 agent
blade revoke af9ec083eaf32e26
在内存异常关注是否oom

java进程cpu异常

./blade c jvm cfl --process 31653


混沌工程 chaosblade_第2张图片
所有核满载

./blade d ${ID信息}

销毁异常注入

UID、result id查询,用来停止服务
如果忘记了返回的ID信息,可以使用 ./blade status --type 进行查询,需要制定 type类型
./blade status --type create # 注入的异常
./blade status --type prepare # jvm的


混沌工程 chaosblade_第3张图片
image

远程注入异常

./blade server --help 可以在目标机器上启动http服务,其他机器通过http访问注入异常

docker

c++异常

k8s

附录

chaosblade github代码库路径
chaosblade使用:干货 | 阿里巴巴混沌测试工具ChaosBlade
chaosblade中文学习官方文档

你可能感兴趣的:(混沌工程 chaosblade)