【混沌测试】ChaosBlade:从安装到实战

在这里插入图片描述

1.工具介绍

🚀 GitHub 地址:https://github.com/chaosblade-io/chaosblade

ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。

Chaosblade 是内部 MonkeyKing 对外开源的项目,其建立在阿里巴巴近十年故障测试和演练实践基础上,结合了集团各业务的最佳创意和实践。

logo
ChaosBlade 不仅使用简单,而且支持丰富的实验场景,场景包括:

  • 基础资源:比如 CPU、内存、网络、磁盘、进程等实验场景。
  • Java 应用:比如数据库、缓存、消息、JVM 本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景。
  • C++ 应用:比如指定任意方法或某行代码注入延迟、变量和返回值篡改等实验场景。
  • Docker 容器:比如杀容器、容器内 CPU、内存、网络、磁盘、进程等实验场景。
  • 云原生平台:比如 Kubernetes 平台节点上 CPU、内存、网络、磁盘、进程实验场景,Pod 网络和 Pod 本身实验场景如杀 Pod,容器的实验场景如上述的 Docker 容器实验场景。

将场景按领域实现封装成一个个单独的项目,不仅可以使领域内场景标准化实现,而且非常方便场景水平和垂直扩展,通过遵循混沌实验模型,实现 chaosblade cli 统一调用。目前包含的项目如下:

  • chaosblade混沌实验管理工具,包含创建实验、销毁实验、查询实验、实验环境准备、实验环境撤销等命令,是混沌实验的执行工具,执行方式包含 CLI 和 HTTP 两种。提供完善的命令、实验场景、场景参数说明,操作简洁清晰。
  • chaosblade-spec-go:混沌实验模型 Golang 语言定义,便于使用 Golang 语言实现的场景都基于此规范便捷实现。
  • chaosblade-exec-os基础资源 实验场景实现。
  • chaosblade-exec-dockerDocker 容器 实验场景实现,通过调用 Docker API 标准化实现。
  • chaosblade-exec-cri容器 实验场景实现,通过调用 CRI 标准化实现。
  • chaosblade-operatorKubernetes 平台 实验场景实现,将混沌实验通过 Kubernetes 标准的 CRD 方式定义,很方便的使用 Kubernetes 资源操作的方式来创建、更新、删除实验场景,包括使用 kubectl、client-go 等方式执行,而且还可以使用上述的 chaosblade cli 工具执行。
  • chaosblade-exec-jvmJava 应用 实验场景实现,使用 Java Agent 技术动态挂载,无需任何接入,零成本使用,而且支持卸载,完全回收 Agent 创建的各种资源。
  • chaosblade-exec-cplusC++ 应用 实验场景实现,使用 GDB 技术实现方法、代码行级别的实验场景注入。

2.安装步骤

2.1 准备

你可以从 Releases 地址下载最新的 chaosblade 工具包,解压即用。
在这里插入图片描述
你可以用 lscpu 命令检查 Linux 系统是使用 AMD 还是 ARM 架构。

在这里插入图片描述

查看输出中的 Architecture 字段,如果显示 x86_64,则系统是 AMD64 架构。

2.2 安装

博主使用的是 1.7.4 版本。

cd /usr/local/chaosblade
tar -xzf chaosblade-1.7.4-linux-amd64.tar.gz

在这里插入图片描述
在这里插入图片描述

运行以下命令验证 ChaosBlade 是否安装成功。

在这里插入图片描述

3.实战

🚀 使用教程https://chaosblade.io/docs/experiment-types/host/

在这里插入图片描述

3.1 模拟 CPU 负载实验

🚀 实验指导https://chaosblade.io/docs/experiment-types/host/cpu/blade_create_cpu_load

使用 ChaosBlade 的 blade create 命令来模拟 CPU 占用率达到 50 % 50\% 50%

./blade create cpu fullload --cpu-percent 50

返回如下:

{"code":200,"success":true,"result":"e3d80b7db0adaef1"}

可以使用 tophtop 命令来查看 CPU 占用率,确认是否达到了预期的 50 % 50\% 50%

在这里插入图片描述

我们可以看一下云主机的 CPU 利用率指标。

在这里插入图片描述

实验完成后,可以使用 blade destroy 命令来停止实验。

./blade destroy e3d80b7db0adaef1

在这里插入图片描述

我们看一下整个实验过程的 CPU 利用率的情况。

在这里插入图片描述

3.2 模拟内存占用实验

🚀 实验指导https://chaosblade.io/docs/experiment-types/host/mem/blade_create_mem_load

使用 ChaosBlade 的 blade create 命令来模拟内存占用率达到 50 % 50\% 50%

./blade create mem load --mode ram --mem-percent 50

在这里插入图片描述

可以使用 free -mtop 命令来查看内存占用率,确认是否达到了预期的 50 % 50\% 50%

在这里插入图片描述

实验完成后,可以使用 blade destroy 命令来停止实验。

./blade destroy 404700834746a2a5

在这里插入图片描述

3.3 模拟磁盘 IO 负载实验

🚀 实验指导https://chaosblade.io/docs/experiment-types/host/disk/blade%20create%20disk%20burn

在执行实验之前可先观察磁盘 IO 读写负载。

iostat -x -t 10

在这里插入图片描述
rkB/swkB/s%utiliostat 命令输出中的几个重要指标,用于监控系统磁盘 I/O 性能。下面是对这些指标的简要解释:

  • rkB/sRead Kilobytes per second
    • 含义:表示 每秒钟从磁盘读取的数据量,单位是千字节(KB)。
    • 用途:用于衡量磁盘读取操作的性能。数值越大,表示读取速度越快。
  • wkB/sWrite Kilobytes per second
    • 含义:表示 每秒钟写入磁盘的数据量,单位是千字节(KB)。
    • 用途:用于衡量磁盘写入操作的性能。数值越大,表示写入速度越快。
  • %utilUtilization
    • 含义:表示 磁盘设备的利用率,即磁盘设备在采样期间处于繁忙状态的时间百分比。
    • 用途:用于衡量磁盘设备的负载情况。数值越高,表示磁盘设备越繁忙。如果 %util 接近 100%,可能表示磁盘设备已经达到了其最大处理能力,可能会出现性能瓶颈

执行磁盘读 IO 负载高场景。

./blade create disk burn --read --path /home
  • --path string:指定提升磁盘 IO 的目录,会作用于其所在的磁盘上,默认值是 /
  • --read:触发提升磁盘读 IO 负载,会创建 600M 的文件用于读,销毁实验会自动删除。
  • --size string:块大小, 单位是 M,默认值是 10,一般不需要修改,除非想更大的提高 IO 负载。
  • --timeout string:设定运行时长,单位是秒,通用参数。
  • --write:触发提升磁盘写 IO 负载,会根据块大小的值来写入一个文件,比如块大小是 10,则固定的块的数量是 100,则会创建 1000M 的文件,销毁实验会自动删除。

执行 iostat 命令可以看到读负载增大,使用率达 99.8 % 99.8\% 99.8%

在这里插入图片描述
实验完成后,可以使用 blade destroy 命令来停止实验。

./blade destroy 9440545fd5599b6b

在这里插入图片描述
在这里插入图片描述

可同时执行读写 IO 负载场景,不指定 path,默认值是 /

./blade create disk burn --read --write

在这里插入图片描述

通过 iostat 命令可以看到,整个磁盘的 IO 使用率达到了 94.37 % 94.37\% 94.37%

在这里插入图片描述

可以看一下云主机针对硬盘相关的指标数据。

在这里插入图片描述

实验完成后,可以使用 blade destroy 命令来停止实验。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G皮T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值