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.mzph.cn/news/728284.shtml

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

相关文章

Unity3D 立方体纹理与自制天空盒详解

前言 在Unity3D中,立方体纹理和自制天空盒是常见的技术,它们可以帮助开发者创建出更加真实和引人入胜的游戏场景。本文将详细介绍Unity3D中立方体纹理和自制天空盒的实现方法,希望能帮助读者更好地理解和运用这些技术。 对惹,这…

计算机网络:应用层知识点汇总

文章目录 一、网络应用模型二、域名系统(DNS)三、文本传输协议(FTP)四、电子邮件五、万维网和HTTP协议 一、网络应用模型 p2p也就是对等模型 二、域名系统(DNS) 我们知道,随着人们建立一个网站…

记一次systemd服务启动找不到Java命令

首先systemd服务文件 /etc/systemd/system/test.service(文件简化处理了) [Unit] Descriptiontest Afternetwork.target [Service] ExecStart/opt/test/bin/test_start.sh [Install] WantedBymulti-user.target其中启动命令ExecStart指向的是一个sh启动脚本, 脚本内…

UnityAPI的学习——Random类

Random类是Unity中用于产生随机数的类,不可实例化,只有静态属性和静态方法 Random类静态属性 在Random类中,涉及的静态属性有insideUnitCircle属性、insideUnitSphere属性、onUnitSphere属性、rotationUnitform属性、rotation属性和seed属性…

文生视频Sora模型发布,是否引爆AI芯片热潮

文生视频Sora模型发布,是否引爆AI芯片热潮 1. 引言 在人工智能的历史长河中,每一次技术的飞跃都伴随着社会生产力的巨大变革。自2015年以来,深度学习技术的突破性进展,尤其是在自然语言处理、图像识别和机器学习等领域的成功应…

海外IP代理应用:亚马逊使用什么代理IP?

代理IP作为网络活动的有力工具,同时也是跨境电商的必备神器。亚马逊作为跨境电商的头部平台,吸引了大量的跨境电商玩家入驻,想要做好亚马逊,养号、测评都需要代理IP的帮助。那么应该使用什么代理IP呢?如何使用&#xf…

vue el-avatar 使用require提示无法找到图片

报错信息 错误代码 问题分析 vue初始化DOM树时没有挂载数据,导致无法找到模块 解决方案

抖音商家短视频直播流量变现运营SOP地图

【干货资料持续更新,以防走丢】 抖音商家短视频直播流量变现运营SOP地图 部分资料预览 资料部分是网络整理,仅供学习参考。 抖音运营资料合集(完整资料包含以下内容) 目录 【提升短视频运营效率的专业指南】 高效运营&#xf…

Springboot实现获取@Value中同字符串从yml加载后的值

问题描述: 自定义注解,希望能够和Value注解使用一样的value值表达式格式从而动态的从yml中获取配置。做到见名知意 测试流程 yml配置 test:abc: aaaaValue注解获取值 Value("2222.kk.${test.abc}.111") private String test;获取自定注解…

leetcode 39题组合总和

# 为什么c方法不用for循环, [:] 索引拷贝的区别 题目地址&#xff1a;https://leetcode.cn/problems/combination-sum/ # 1. 官方c解法&#xff1a; 提交测试了几个用例可以通过 cpp class Solution { public: void dfs(vector<int>& candidates, int target, v…

【安卓(Android)原生与H5开发区别】

安卓&#xff08;Android&#xff09;原生与H5开发 Android原生语言开发&#xff0c;指的是使用Java或Kotlin等编程语言对Android应用程序的用户界面部分进行开发。Android编程语言可以直接调用底层系统的API与功能。H5开发是指使用HTML、CSS和JavaScript等前端技术进行开发&a…

倒计时37天

复习1001. 马走日问题: 1.P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) //日常碎碎念&#xff1a;谁懂啊&#xff0c;dev突然不能用了&#xff0c;也不知道是哪里出了问题下了五六次都不能用&#xff0c;&#xff0c;&#xff0c;找远程安…

1 数据分析概述与职业操守 (3%)

1、 EDIT数字化模型 E——exploration探索 &#xff08;是什么&#xff09; 业务运行探索&#xff1a;探索关注企业各项业务的运行状态、各项指标是否合规以及各项业务的具体数据情况等。 D——diagnosis 诊断 (为什么) 问题根源诊断&#xff1a;当业务指标偏离正常值时&…

题解:CF1927F(Microcycle)

题解&#xff1a;CF1927F&#xff08;Microcycle&#xff09; 一、 理解题意 1. 题目链接 &#xff08;1&#xff09; CF链接 CodeForces-Contest-1927F &#xff08;2&#xff09; LG链接 洛谷-Problem-CF1927F 2. 题目翻译 &#xff08;1&#xff09; 题目描述 给定…

OWL中文文档合集

这些文档是我在2023年学习owl的时候翻译的官方的英文文档&#xff0c;当然在翻译过程中做了分类整理&#xff0c;总共有十篇&#xff0c;基本上涵盖了owl的方方面面&#xff0c;现在将它们归纳成合集。 关于OWL的中文文档&#xff1a; OWL教程1 OWL架构以及为什么要设计OWL h…

【STM32】HAL库 CubeMX教程---基本定时器 定时

目录 一、基本定时器的作用 二、常用型号的TIM时钟频率 三、CubeMX配置 四、编写执行代码 实验目标&#xff1a; 通过CUbeMXHAL&#xff0c;配置TIM6&#xff0c;1s中断一次&#xff0c;闪烁LED。 一、基本定时器的作用 基本定时器&#xff0c;主要用于实现定时和计数功能…

堆排序的应用

堆排序&#xff08;Heap Sort&#xff09;是一种基于比较的排序算法&#xff0c;它利用堆这种数据结构对一组数据进行排序。堆是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子节点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父节点…

RAG模型选取

1.Seq_length 根据实际使用时&#xff0c;一般的输出句子长度大小进行判断&#xff0c;如果检索到的一条完整的信息长度较长&#xff0c;则需要能输入长度更长的embedding 2.embedding维度 并非越大越好 根据语义丰富性进行选择&#xff0c;如果各种数据都有&#xff0c;那么…

系统学习Python——装饰器:“私有“和“公有“属性案例-[继承与委托]

分类目录&#xff1a;《系统学习Python》总目录 文章《系统学习Python——装饰器&#xff1a;“私有“和“公有“属性案例-[实现私有属性]》中的代码有点复杂&#xff0c;并且你最好自己跟踪运行它&#xff0c;看看它是如何工作的。然而为了帮助你理解&#xff0c;这里给出一些…

新能源车高压线束更换VR虚拟互动教学保障了培训安全可控

随着新能源汽车市场的快速发展&#xff0c;对于新能源汽车检修人才的需求也日益增长。然而&#xff0c;传统的培训模式往往存在一些限制&#xff0c;如培训周期长、成本高、实践机会少等。为了解决这些问题&#xff0c;新能源车检修VR互动培训应运而生&#xff0c;成为一种创新…