ChaosBlade进行混沌实验操作

本文详细介绍了如何使用ChaosBlade进行混沌工程实验,包括ChaosBlade的安装配置、JVM实验室的准备、各种故障注入方法(如方法延时、返回值修改、异常抛出)以及实验结束后的卸载流程,旨在帮助开发者理解和实践混沌工程。
摘要由CSDN通过智能技术生成

ChaosBlade-box 简介

ChaosBlade 是阿里开源的混沌工程品牌,包含 chaosblade 工具和 chaosblade-box 平台等项目。ChaosBlade 按照混沌工程的思想,将故障抽象成了一个个实验,并按照科学实验的方法对其过程进行组织。chaosblade 工具支持了大量的故障场景和丰富的命令参数,能够很方便地对常见故障场景进行实验
参考:
https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade-create

(一)配置ChaosBlade

1.下载release文件
curl https://chaosblade.oss-cn-hangzhou.aliyuncs.com/agent/github/1.2.0/chaosblade-1.2.0-linux-amd64.tar.gz -o chaosblade-1.2.0-linux-amd64.tar.gz
2. 解压缩
tar -zxvf chaosblade-1.2.0-linux-amd64.tar.gz && rm chaosblade-1.2.0-linux-amd64.tar.gz
3. 给当前会话新增blade命令,下文都将使用该命令
 alias blade="/xxxx/chaosblade-1.2.0/blade"

(二)JVM 实验室准备

可以参考 https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade-prepare-jvm
1.获取服务的进程号:

ps -aux | grep xxx服务名

2.挂载java agent

 -j 参数为服务下的 Java 目录(一般为 /home/work/bin/service-name/java )
--pid 参数为上一步得到的进程号
blade prepare jvm -j /home/work/bin/service-name/java/ --pid 32676
{"code":200,"success":true,"result":"5ee14b7d133333d"}

返回code为200则说明挂载成功,请记录result对应的实验对象id:5ee14b7d133333d,之后会用于实验卸载

挂载成功后,就可以进行实验了。但是一定要注意,所有的实验都结束后,一定要将 agent 卸载掉详见(四) 结束jvm实验。 agent 挂载成功后可以进行任意多次第 1,2, 3, 中描述的实验,各个实验也可以同时进行,但要在卸载 agent 之前将每个创建成功的实验都销毁掉。

(三)注入

1.注入方法延时
--time 为延时时长,单位为毫秒
--classname 为该方法所在的类的
--methodename 为该方法的方法名
--pid 为之前挂载好 agent 的进程号
1) 对一个方法注入8秒的延时
blade create jvm delay --time 8000 --classname=com...类名--methodname=方法名 --pid 32676
{"code":200,"success":true,"result":"d0e4be6ee34eab76"}
返回code为200则说明注入成功
2) 销毁该实验,撤销注入的延时,参数d0e4be6ee34eab76是步骤1)中返回的实验对象Id
blade destroy d0e4be6ee34eab76
{"code":200,"success":true,"result":{"target":"jvm","action":"delay","flags":{"classname":"com...类名","methodname":"方法名","pid":"32676","time":"8000"}}}
返回code为200则说明成功销毁了实验

具体参考:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade-create-jvm/blade-create-jvm-delay

2.修改方法返回值

chaosblade 可直接修改方法的返回为指定值,更多参数见 blade create jvm return
https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade-create-jvm/blade-create-jvm-return

1) 修改方法的返回值,将该方法的所有调用返回值都修改为false
方法的返回值类型需要是基本类型,value参数值的类型需要和方法返回值类型相匹配,value可以为null,这种情况下不遵从上述约束
--value 指定方法的固定返回值
blade create jvm return --value false --classname com.xxx.类名 --methodname 方法名--pid 32676
{"code":200,"success":true,"result":"b847f4d9f8f1cb1f"}
2) 销毁该实验
blade d b847f4d9f8f1cb1f
3.抛出自定义异常

blade create jvm throwCustomException 可以让对特定方法的调用直接抛出一个异常
详见:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/blade-create-jvm/blade-create-jvm-throwcustomexception

1)让一个方法抛出自定义的异常
--exception 参数为要抛出异常的全限定名,必须继承 java.lang.Exception 或java.lang.Exception 本身
--exception-mesage 参数为异常所带的自定义信息
blade create jvm throwCustomException --exception java.lang.Exception --exception-message 自定义异常 --classname com...类名 --methodname 方法名--pid 32676
{"code":200,"success":true,"result":"06fc1ce09c721f90"}
2) 销毁该实验
blade d 06fc1ce09c721f90

(四)结束JVM实验

JVM 实验结束后,需要卸载之前加载到目标进程上的 agent。请在卸载 agent 前确认已将所有实验都撤销完毕,以免影响线上业务。
如果忘了加载 agent 时返回的实验对象 id,可以通过 status 命令查看

blade status --type prepare

{
        "code": 200,
        "success": true,
        "result": [
                {
                        "Uid": "5ee14b7d18d895fd",
                        "ProgramType": "jvm",
                        "Process": "",
                        "Port": "17758",
                        "Pid": "32676",
                        "Status": "Running",
                        "Error": "",
                        "CreateTime": "2021-06-09T15:31:32.449179887+08:00",
                        "UpdateTime": "2021-06-09T15:31:45.729185574+08:00"
                }
          ]
}
  1. 卸载 agent,参数 5ee14b7d18d895fd 为之前 prepare 命令返回的实验对象 Id
blade r 5ee14b7d18d895fd
chaosblade 虚拟机是什么? chaosblade 虚拟机是一种基于虚拟机技术的混沌工程实验环境,使用 VirtualBox 或 VMware Workstation 等虚拟化软件创建。用户可以在虚拟机中进行混沌工程实验,例如模拟网络延迟、磁盘故障、节点宕机等。虚拟机中安装了 chaosblade 工具,用户可以使用命令行工具或 Web 界面来管理实验任务。 chaosblade 虚拟机的特点: 1. 提供了一个独立的实验环境,不会影响主机或其他虚拟机。 2. 可以在虚拟机中模拟多种故障场景。 3. 支持通过命令行或 Web 界面来管理实验任务。 4. 虚拟机中已经安装了 chaosblade 工具,无需再次安装。 5. 可以在虚拟机中进行混沌工程实验,以测试应用程序的容错性和稳定性。 如果您需要在独立的环境中进行混沌工程实验,那么可以考虑使用 chaosblade 虚拟机。 如何创建 chaosblade 虚拟机? 以下是使用 VirtualBox 创建 chaosblade 虚拟机的步骤: 1. 下载 VirtualBox 软件并安装。 2. 下载 chaosblade 虚拟机镜像,可以从官网或 GitHub 上下载。 3. 打开 VirtualBox 软件,点击 "新建" 按钮创建新的虚拟机。 4. 在创建虚拟机的过程中,选择 "从文件中导入虚拟机" 选项,并选择下载的 chaosblade 虚拟机镜像文件。 5. 完成虚拟机的创建,并启动虚拟机。 6. 在虚拟机中使用以下命令来验证 chaosblade 是否安装成功: ``` blade version ``` 如果输出版本号,则说明 chaosblade 安装成功。 7. 在虚拟机中使用以下命令来创建实验任务: ``` blade create network delay --time 3000 --interface eth0 ``` 这个命令会在 eth0 网卡上模拟 3 秒的网络延迟,可以测试应用程序的容错性。 注意:在使用 chaosblade 虚拟机之前,请确保您已经安装了 VirtualBox 或 VMware Workstation 等虚拟化软件,并且具有足够的权限来创建和管理虚拟机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值