混沌测试工具chaosblade介绍及常用命令汇总

本文介绍了混沌测试及开源工具ChaosBlade,它能提升分布式系统容错能力。还说明了环境搭建步骤,给出测试指导文档地址。详细介绍常用命令,如挂载、取消挂载、构造异常、销毁异常、查询状态等,最后强调测试注意事项,要验证系统表现并销毁异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是混沌测试

类似于“故障演练”,通过构造各类异常,验证系统在碰到这些异常时是否有做好对应的监控告警、预案处理,针对性地进行加固,防范,从而避免故障发生时所带来的严重后果。通过对各类异常提前做好监控告警和预案处理,增强系统的健壮性,增强分布式系统的信心。

ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力。

代码git地址:https://github.com/chaosblade-io/chaosblade

二、环境搭建

  1. 登录容器或linux服务器终端,下载chaosblade安装包。
    命令:wget https://chaosblade.oss-cn-hangzhou.aliyuncs.com/agent/github/0.6.0/chaosblade-0.6.0-linux-amd64.tar.gz
    在这里插入图片描述

  2. 解压安装包,输入命令: tar zxvf chaosblade-0.6.0-linux-amd64.tar.gz
    在这里插入图片描述

进入解压后的文件夹,即可直接使用工具:
在这里插入图片描述

三、测试指导文档

官方文档介绍:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/

官方说明和示例压缩包,有需要可以下载使用:chaosblade-help-doc-master.zip

四、常用命令介绍

  1. 挂载 java agent,执行 java 实验场景必要步骤
    ps -ef | grep java(或者你应用的名称) 查找到需要测试的应用的pid:
    在这里插入图片描述

./blade prepare jvm --pid 1
使用上面命令挂载agent,挂载成功会返回200,此时最好记录下result内的UID,取消挂载时会用到这个UID:
在这里插入图片描述

取消挂载使用revoke,使用挂载时返回的UID:
./blade revoke 41814dc1ee3df6a1
在这里插入图片描述

  1. 构造各类常用异常命令
    代码中找到需要进行的方法,假设为:com.xxxx.xxxx.web.xxxxController#method1,则下面命令中classname $1的值:com.xxxx.xxxx.web.xxxxController,methodname $2值:method1
操作项命令内容
JVM超时(controller层http方法超时)./blade create jvm delay --time 2000 --classname=$1 --methodname=$2 --pid 1
JVM异常(controller层http方法异常)./blade create jvm throwCustomException --classname=$1–methodname=$2 --exception java.lang.Exception --pid 1
dubbo类超时./blade create dubbo delay --time $1 --service $2 --methodname $3 --consumer --pid 1
dubbo类异常./blade create dubbo throwCustomException --exception java.lang.Exception --service $1 --methodname $2 --consumer --pid 1
redis超时./blade c jedis delay --time $1
redis异常./blade c jedis throwCustomException --exception java.lang.Exception --exception-message “chaosblade mock Error”
redis线程池打满./blade c jvm throwCustomException --exception java.lang.Exception --classname org.apache.commons.pool2.impl.GenericObjectPool --methodname borrowObject --pid 1
Mybatis超时./blade c jvm delay --time $1 --classname org.apache.ibatis.binding.MapperMethod --methodname execute --pid 1
Mybatis异常./blade c jvm throwCustomException --exception java.lang.Exception --classname org.apache.ibatis.binding.MapperMethod --methodname execute --pid 1
CPU打满./blade create cpu load
内存打满./blade c mem load --mode ram --mem-percent 100
磁盘空间打满./blade c disk fill --percent 100
磁盘读写IO打满./blade create disk burn --read --write
JVM堆内存OOM./blade c jvm oom --area HEAP
  1. 销毁异常
    异常构造成功会返回200,同时会有UID,取消异常时会使用到这个UID:
    在这里插入图片描述

销毁异常使用destory,使用创建异常时返回的UID:
./blade destroy 959d6b44f346f61c
在这里插入图片描述

  1. 查询异常状态
    查询还未取消挂载的UID ./blade status --type prepare
    查询还未销毁的UID ./blade status --type create
    running状态的即为还未取消或销毁的UID
    在这里插入图片描述

五、注意事项

  • 创建异常后,可以通过业务现象、日志等方式去验证异常发生后,系统的表现是否符合预期,系统是否有正常触发告警,是否有针对该接口异常做好预案,预案是否生效等。测试完成后,记得销毁异常,避免影响正常业务测试。
  • 举例:假设A系统会调B系统dubbo接口,为了验证当B系统dubbo接口超时或挂掉时,A系统是否有正常触发告警,是否有预案处理,则需要在A系统应用容器中,分别构造B系统dubbo接口方法的接口超时、接口异常两类异常,然后做验证。并且此时只是构造的只是调用方:A调B接口的异常,被调用方:B接口本身并不会异常,所以即使其他系统也有调用B的这个dubbo接口,其他系统业务不会因为A系统在做异常测试而受到影响,依然正常工作。
  • 各类硬件异常测试,目的在于测试各种硬件异常情况下,验证服务稳定性、监控告警、流量调度、弹性伸缩等能力。

=================================================================================================
以上就是本次的全部内容,如果对你有帮助,欢迎关注我的vx公众号:程序员杨叔,各类文章都会第一时间在上面发布,持续分享全栈测试知识干货,你的支持就是作者更新最大的动力~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值