混沌实施工具ChaosBlade实践

简介: 项目介绍ChaosBlade 是阿里巴巴开源的混沌工程原理和混沌实验模型的实验注入工具。ChaosBlade 使用比较简单,而且支持丰富的实验场景,场景包括:基础资源:比如 CPU、内存、网络、磁盘、进程等实验场景;Java 应用:比如数据库、缓存、消息、JVM 本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景;C++ 应用:比如指定任意方法或某行代码注入延迟、变量和返回值篡改等实验场景;Docker 容器:比如杀容器、容器内 CPU、内存、网络、磁盘、进程等实验场景;云原生平台:比如 Kubernetes 平台节点上 CPU、内存、网络、磁盘、进程实验场景,Pod

项目介绍
ChaosBlade 是阿里巴巴开源的混沌工程原理和混沌实验模型的实验注入工具。

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-docker: Docker 容器实验场景实现,通过调用 Docker API 标准化实现。
  • chaosblade-operator: Kubernetes 平台实验场景实现,将混沌实验通过 Kubernetes 标准的 CRD 方式定义,很方便的使用 Kubernetes 资源操作的方式来创建、更新、删除实验场景,包括使用 kubectl、client-go 等方式执行,而且还可以使用上述的 chaosblade cli 工具执行。
  • chaosblade-exec-jvm: Java 应用实验场景实现,使用 Java Agent 技术动态挂载,无需任何接入,零成本使用,而且支持卸载,完全回收 Agent 创建的各种资源。
  • chaosblade-exec-cplus: C++ 应用实验场景实现,使用 GDB 技术实现方法、代码行级别的实验场景注入。

下载 chaosblade
获取 chaosblade 最新的 release 包,目前支持的平台是 linux/amd64 和 darwin/64,下载对应平台的包。

https://github.com/chaosblade-io/chaosblade/releases

下载完成后直接解压,不用编译。

使用 chaosblade
进入解压后的文件夹,可以看到以下内容:

├── bin
│   ├── chaos_burncpu
│   ├── chaos_burnio
│   ├── chaos_changedns
│   ├── chaos_delaynetwork
│   ├── chaos_dropnetwork
│   ├── chaos_filldisk
│   ├── chaos_killprocess
│   ├── chaos_lossnetwork
│   ├── jvm.spec.yaml
│   └── tools.jar
├── blade
└── lib
    └── sandbox

其中 blade 是可执行文件,即 chaosblade 工具的 cli,混沌实验执行的工具。执行 ./blade help 可以查看支持命令有哪些

执行第一个混沌实验
我们拿 CPU 满载(CPU 使用率 100%) 演练场景举例(!!注意,切勿在生产系统机器上执行),执行以下命令实施实验:

./blade create cpu fullload

执行结果返回:

{"code":200,"success":true,"result":"1f0baf517cdf8979"}

通过 top 命令查看 CPU 使用率
image.png

可以看出cpu已经飙升上来了。此时命令已经生效,停止混沌实验,执行:

./blade destroy 1f0baf517cdf8979

返回以下结果,表示停止实验成功

{"code":200,"success":true,"result":{"Target":"cpu","Scope":"","ActionName":"fullload","ActionFlags":{},"ActionPrograms":null}}

再去观察 CPU 情况,CPU 负载已回到正常状态:
image.png

这样一个增加机器cpu负载就完成了。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 运维
运维告警别乱飞了!AI智能报警案例解析
运维告警别乱飞了!AI智能报警案例解析
659 0
|
算法 测试技术 数据库
性能测试 (performance measurement)
性能测试 (performance measurement) 是一种测试方法,用于评估系统、应用程序或算法在特定负载条件下的性能表现。性能测试可以测量系统的响应时间、吞吐量、并发用户数等指标,以评估系统在高负载情况下的稳定性和可靠性。通过性能测试,可以找出系统的瓶颈和潜在的优化点,从而提高系统的性能。
660 3
|
10月前
|
消息中间件 存储 JSON
日志采集 Agent 性能大比拼——LoongCollector 性能深度测评
为了展现 LoongCollector 的卓越性能,本文通过纵向(LoongCollector 与 iLogtail 产品升级对比)和横向(LoongCollector 与其他开源日志采集 Agent 对比)两方面对比,深度测评不同采集 Agent 在常见的日志采集场景下的性能。
901 35
|
7月前
|
人工智能 缓存 监控
大模型性能测试实战指南:从原理到落地的全链路解析
本文系统解析大模型性能测试的核心方法,涵盖流式响应原理、五大关键指标(首Token延迟、吐字率等)及测试策略,提供基于Locust的压测实战方案,并深入性能瓶颈分析与优化技巧。针对多模态新挑战,探讨混合输入测试与资源优化
|
人工智能 运维 监控
Zabbix告警分析新纪元:本地DeepSeek大模型实现智能化告警分析
本文由Zabbix中国峰会演讲嘉宾张世宏撰写,介绍如何通过集成Zabbix监控系统与深度求索(DeepSeek)AI助手,构建智能化告警处理方案。该方案利用Webhook机制传递告警信息,借助DeepSeek的智能分析能力,帮助运维团队快速识别问题根源并提供解决方案。文章详细描述了技术架构、环境搭建、Webhook配置及实际案例,展示了AI在运维领域的应用前景和优势。
2010 0
|
传感器 监控 物联网
Zabbix 7.0.0 发布,这些新特性很Nice!
【7月更文挑战第10天】
1037 1
Zabbix 7.0.0 发布,这些新特性很Nice!
|
网络安全 数据安全/隐私保护 开发者
【阿里云镜像】OpenSUSE全新安装并更改阿里OpenSUSE镜像源
【阿里云镜像】OpenSUSE全新安装并更改阿里OpenSUSE镜像源
1620 0
【阿里云镜像】OpenSUSE全新安装并更改阿里OpenSUSE镜像源
|
监控 测试技术 C++
好玩又实用,阿里巴巴开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让问题经常性的发生。在可控范围或环境下,通过不断重复失败过程,持续提升系统的容错和弹性能力。 那么,实施一次高效的混沌工程实验,需要几步呢? 答案:2 步。 ① 登陆 ChaosBlade ② 下载 release 版本,打造故障演练专属工具 高可用架构是保障服务稳定性的核心。
16911 102
|
NoSQL Java Redis
手机验证码登录
手机验证登录分为三个API接口,分别为:获取图片验证码、获取手机短信验证码、登录。 1.获取图片验证码:通过工具类生成图片验证码,将随机验证码保存到session中,将图片验证码转为base64码放到对应的entity字段里。
10258 0
|
tengine 算法 安全
ChaosBlade 是阿里巴巴开源的混沌工程工具
【2月更文挑战第23天】ChaosBlade 是阿里巴巴开源的混沌工程工具
405 1