ChaosBlade故障注入工具--cpu,内存,磁盘占用\IO,网络注入等

前言:

本文介绍一款开源的故障注入工具chaosblade,该工具原本由阿里研发,现已开源;工具特点:功能强大,使用简单。

该工具故障注入包含:cpu,内存,磁盘io,磁盘占用,网络注入等

简写:

status --> s;   destroy -->d;     create --> c;

使用方法:

工具获取连接:https://github.com/chaosblade-io/chaosblade/releases

将工具上传至待测机器并解压

进入解压的工具目录,执行对应注入命令

./blade create cpu load --cpu-list 0-3 --cpu-percent 80

执行成功,会返回一个id,如需撤销故障注入,执行如下命令

./blade d {id}

查询曾经注入的故障id,便于删除

./blade s --type c

磁盘注入:

参数介绍:

--path string     需要填充的目录,默认值 /

--size string      需要填充的文件大小,单位M,取值整数,例如:--size 1024

--reserve string   保留磁盘大小,单位MB,取值为不包含单位的正整数,例如:--reserve 1024。如果size、percent、reserve参数都存在,优先级:percent > reserve > size.。

--percent string   指定磁盘使用率,如 --percent 80

--retain-handle    是否保留填充    (亲测,只要不加timeout参数,默认保留填充,只有磁盘空间注入有此参数)       

--timeout string   设定运行时长,单位秒    (此参数为通用参数,各种故障场景几乎都可以加)

例如:

blade create disk fill --path /home --percent 80 --retain-handle   填充home目录80%的使用空间

blade create disk fill --path /home --size 200 --retain-handle     填充home目录200M

blade create disk fill --path /home --reserve 200 --retain-handle   仅保留/home目录200M

cpu注入:

blade create cpu load --cpu-list 0,1 --cpu-percent 80     --加压0,1两个核心,负载到80%

blade create cpu load --cpu-list 0-15 --cpu-percent 60

blade create cpu load --cpu-count 3                  --将3个核心加压

blade create cpu fullload                           --cpu满载

 blade create cpu load --cpu-list 0,1,2 --timeout 100     --将0,1,2三个核心加压100s,不带timeout参数默认一直加压

内存注入:

blade create mem load --mode ram --mem-percent 80           --占用80%的ram内存

blade create mem load --mode ram --mem-percent 80 --rate 100  --占用80%ram内存,占用速率100M每秒,rate参数只在占用ram时生效。

blade create mem load --mode catche --reserve 100    --占用catche内存,保留100M内存,速率100M/S,不加mode参数,默认值为catche,采用ram占用必须加mode参数。

注:内存注入满了会导致blade故障无法消除,推荐加percent参数;不使用任何参数会默认将内存加满,使用需谨慎。

磁盘IO注入:

blade create disk burn --write --path /home            --将/home目录挂载磁盘读取磁盘压力加大

blade create disk burn --write --read --path /home       --同时加大磁盘读写压力

blade creat disk burn --write --size 100 --path /home     --加大磁盘写的压力,块大小为100M,此参数可不加,默认10M。

网络相关注入:

注:项目网络延迟,丢包等故障注入平时都是使用tc命令,blade注入原理也是使用tc,这里不总结了,很少用此工具进行丢包,延时注入,有兴趣可以自己研究。

篡改dns域名解析:

blade create network dns --domain www.baidu.com --ip 10.0.0.0   --篡改本地域名解析ip为10.0.0.0。(ps:此条没试过,大家可以试试)

网络包损坏:

Eg:blade create network corrupt --percent 80 --destination-ip 1.1.1.1 --interface eth0   指定eth0发向1.1.1.1的包损坏80%

网络包乱序:

此场景参数较多,列举一下:

--destination-ip string  目标ip,支持子网掩码,如192.168.1.0/24,则对此网段所有ip生效

--exclude-port string   排除掉的对端端口,可以指定多个,如:80,22,80-100;此参数不能与--local-port/--remote-port参数一起使用

--exclude-ip string     排除受影响的ip,支持逗号分隔和子网掩码

--interface string      指定网卡

--local-port string     本地端口

--offset string         延迟事件上下浮动值,单位ms

--remote-port  string   远程端口

--correlation string      和上一包的相关性,取值0-100,必要参数

--gap string            包序列大小,取值正整数

--percent string         立即发送百分比,其实就是不搞乱序的包占比

--time string           网络延时时间

--force                强制覆盖tc规则

--timeout string         设定运行时长

--ignore-peer-port       针对添加--exclude-port参数报ss命令找不到的情况下使用

    

Eg:blade create network reorder --correlation 80 --percent 80 --gap 2 --time 500 --interface eth0 --destination-ip 1.1.1.1    针对目标ip1.1.1.1的网络包进行乱序处理

网络包重复:

--destination-ip string  目标ip,支持子网掩码,如192.168.1.0/24,则对此网段所有ip生效

--exclude-port string   排除掉的对端端口,可以指定多个,如:80,22,80-100;此参数不能与--local-port/--remote-port参数一起使用

--exclude-ip string     排除受影响的ip,支持逗号分隔和子网掩码

--interface string      指定网卡

--local-port string     本地端口

--offset string         延迟事件上下浮动值,单位ms

--remote-port  string   远程端口

--percent string        包重复百分比

--force               强制覆盖tc规则

--timeout string        设定运行时长

--ignore-peer-port       针对添加--exclude-port参数报ss命令找不到的情况下使用

Eg:blade create network duplicate --percent 80 --interface eth0 --destination-ip 1.1.1.1   指定ip,指定网口包重复80%

网络端口占用:

--port string           指定占用端口,必选项

--force               强制占用该端口,会将已使用该端口进程kill掉

--timeout string        设定运行时长

Eg:blade create network occupy --port 8080 --force    强制占用8080端口

其他

ChaosBlade可以对docker容器内进行故障注入,当前项目没有用到,如有需要可自行研究。

Eg:blade create docker cpu load

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519278.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring源码:手写AOP

文章目录 一、概念1、AOP是什么?2、相关概念1)目标对象Target2)通知Advice3)连接点Joinpoint4)切点Pointcut5)切面Aspect6)织入Weaving 二、分析三、实现1、实现Advice1)前置通知2&a…

Linux系统的进程,看完它,相信你想kill“it“就kill“it“o((>ω< ))o

Linux系统的进程 众所周知,不管在什么系统中,进程和线程都是操作系统中高并发处理中产生了重要的作用。Linux作为一个操作系统,也必须要拥有这两者才可以进行高并发。 进程是资源分配的最小单位。每一个进程都是相互独立的,不管是…

c语言-大小写字母的转换

目录 方法一:库函数直接转换 1、toupper的测试代码 2、tolower的测试代码 方法二:通过修改ASCII码值转换 1、自己实现大写转小写 2、自己实现小写转大写 结语 前言: 在使用c语言写代码时,通常会遇到很多将大小写字母相互…

非线形优化 Matlab和Python (含01规划)

MATLAB:fmincon 在matlab中,一般使用fmincon来解决非线性优化问题 [x,fval,exitflag,output,lambda,grad,hessian]fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 一般使用: [x,fval,exitflag]fmincon(fun,x0,A,b,Aeq,beq,lb,ub,non…

基于C/S架构的在线阅读器

项目简介 本项目实现了用户的基本阅读功能。项目内容涉及到IO,网络编程,C,QT等知识点。本次项目服务器搭建在ubuntu上,客户端ui在QT中实现,客户端和服务器使用套接字通信。 一、基本功能展示 (1&#xff…

力扣513 找树左下角的值 Java版本

文章目录 题目描述解题思路代码 题目描述 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 提示: 二…

python 截取字符串string.split

目录 作用语法只要第一个值获得第3个值遍历 作用 根据某个符号对数据进行截取 从而获得自己想要的内容 语法 使用’string.split’ 方法 对字符串’123/abc/BPYC’ 以 ‘/’ 进行截取 string "123/abc/BPYC" substring string.split("/") print(subs…

cocos creator 3.7.2使用shader实现图片扫光特效

简介 功能:图片实现扫光效果 引擎:cocos Creator 3.7.2 开发语言:ts 完整版链接 链接https://lengmo714.top/284d90f4.html 效果图 shader代码 // Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd. CCEffect %{techniques:- passes:- vert: sprite-vs:vertfrag…

MySQL 备份方案

优质博文:IT-BLOG-CN 一、为什么要备份 【1】容灾恢复:硬件故障、不经意的 Bug 导致数据损坏,或者服务器及其数据由于某些原因不可获取或无法使用等(例如:机房大楼烧毁,恶意的黑客攻击或 Mysql 的 Bug 等&…

Linux:线程控制和原生线程库

文章目录 线程的id和LWP线程的终止线程的返回值问题关于原生线程库问题 本篇总结的内容主要是关于线程的控制专题 线程的id和LWP 对于获取线程的id来说&#xff0c;在Linux系统中存在这样的调用 这个调用就可以获取返回当前线程的id 先写出下面的实例代码 #include <ios…

基于springboot+vue的高校教师电子名片系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

OJ习题之——圆括号编码

圆括号编码 1.题目描述2.完整代码3.图例演示 1.题目描述 题目描述 令Ss1 s2 …sn是一个规则的圆括号字符串。S以2种不同形式编码&#xff1a; &#xff08;1&#xff09;用一个整数序列Pp1 p2 … pn编码&#xff0c;pi代表在S中第i个右圆括号的左圆括号数量。&#xff08;记为…