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

news2024/10/25 5:11:37

前言:

本文介绍一款开源的故障注入工具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.coloradmin.cn/o/1497684.html

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

相关文章

2024.3.7 FreeRTOS 作业

思维导图 练习题 1.使用ADC采样光敏电阻数值,如何根据这个数值调节LED灯亮度。 //打开定时器3的通道3,并且设置为PWM功能HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1…

牛客网 华为机试 坐标移动

本题是需要将输入的字符串,得到移动位置的信息,同时要判断移动信息的合法性。 所以我们可以考虑先通过正则表达式过滤得到正确的字符串。 正确的字符串应该以ADWS其中一个字母开头,然后后面接着1个或者2个(0-9)的数字。…

灵根孕育源流出,心性修持大道生

解法&#xff1a; 手动本地跑了一下1e9&#xff0c;显然超时。 然后预处理发现开不了这么大的数组。 肯定有规律&#xff0c;打表看看 代码如下 #include<iostream> #include<vector> #include<algorithm> #include<cmath> using namespace std; #…

NetSuite Mass Update 批量更新功能

NetSuite中有一个小而精的便捷功能&#xff0c;但是也是一个很容易在实践中被大家遗忘的隐藏功能&#xff0c;就是Mass Update批量更新&#xff0c;在此想和各位分享一下&#xff5e;该功能主要是可以帮助用户快速将符合固定标准的记录中的单个/多个字段直接进行批量更新。如果…

016集——n等分cad多段线、弧、圆等——vba实现

cad命令行输入“div”选择图元后可n等分图元&#xff0c;若图中有大量图元需要n等分&#xff0c;这时可借助vba一键实现。 代码逻辑框架为&#xff1a;通过创建句柄函数来选择实体&#xff0c;通过sendcommand函数向命令行输入命令。 先来个小程序练练手&#xff1a;在屏幕上指…

leetcode 热题 100_滑动窗口最大值

题解一&#xff1a; 双端队列&#xff1a;滑动窗口的本质是在窗口末尾添加一个元素&#xff0c;并移除头部的一个元素。对于添加的元素&#xff0c;直接和当前最大值比较即可&#xff0c;但对于移除的元素&#xff0c;如果移除的是原先的最大值&#xff0c;则需要重新遍历窗口寻…

【语法】C++学习

注意 使用devc对vector初始化使用vector v1 {1, 2, 3, 4, 5}; 报错 解决 在编译器选项中加入以下代码 -static-libgcc -stdc11

MySQL-查询SQL语句的执行过程:连接器->查询缓存(8就没了)->分析器->优化器->执行器->返回结果

MySQL-查询SQL语句的执行过程&#xff1a;连接器->查询缓存<8就没了>->分析器->优化器->执行器->返回结果 查询SQL语句的执行过程1、主要步骤2、实用案例 查询SQL语句的执行过程 1、主要步骤 在MySQL中&#xff0c;一条查询SQL语句的执行过程非常复杂且…

利用auto-py-to-exe库的简单图形界面实现.py到.exe的转换

文章目录 1. auto-py-to-exe 简介2. 安装与使用3. 配置项介绍4. 打包完成 1. auto-py-to-exe 简介 运行 .py 文件需要配套相应的 Python 解释器和相关的依赖项&#xff0c;而很多时候我们会面临光有待演示的 .py 程序&#xff0c;而没有支持演示的环境的尴尬。一种解决办法就是…

代码随想录 回溯算法-子集

目录 78.子集 90.子集|| 491.非递减子序列 78.子集 78. 子集 中等 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集 &#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#…

教程篇:Groq API+沉浸式翻译插件 体验最快AI翻译

1、进入https://console.groq.com/keys 申请一个API&#xff08;目前免费&#xff01;抓紧白嫖&#xff09; 2、安装Chrome插件&#xff1a;沉浸式翻译。 https://immersivetranslate.com/ 3、照着抄&#xff08;注意将apikey&#xff0c;换成自己申请的groq的api-key&…

算法刷题Day1 | 704.二分查找、27.移除元素

目录 0 引言1 二分查找1.1 我的解题1.2 修改后1.3 总结 2 移除元素2.1 暴力求解2.2 双指针法&#xff08;快慢指针&#xff09; &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;算法专栏&#x1f4a5; 标题&#xff1a;代码随想录算法训练营第一天…

什么是单点登录(SSO)前端用 iframe 实现单点登录 超详细说明!!

目录 什么是单点登录&#xff1f; 使用 iframe 实现单点登录 什么是单点登录&#xff1f; 单点登录的英文名叫做&#xff1a;Single Sign On&#xff08;简称SSO&#xff09;。 单点登录是一种身份验证过程&#xff0c;允许用户通过一次登录验证即可访问多个应用程序或服务…

达梦数据库基础操作(二):表空间操作

达梦数据库基础操作(二)&#xff1a;表空间操作 1. 表空间操作 1.1 达梦表空间介绍 表空间的概念&#xff1a; 每个DM 数据库都是由一个或者多个表空间组成&#xff0c;表空间是一个逻辑的存储容器&#xff0c;它位于逻辑结构的顶层&#xff0c;用于存储数据库中的所有数据&am…

ChatMASTER部署教程

项目简介 ChatMASTER&#xff0c;基于AI大模型api实现的自建后端Chat服务&#xff0c;支出同步响应及流式响应&#xff0c;完美呈现打印机效果。支持一键切换ChatGPT(3.5、4.0)模型、文心一言(支持Stable-Diffusion-XL作图)、通义千问、讯飞星火、智谱清言(ChatGLM)等主流模型…

《JAVA与模式》之迭代子模式

系列文章目录 文章目录 系列文章目录前言一、聚集和JAVA聚集二、迭代子模式的结构三、白箱聚集与外禀迭代子四、外禀迭代子的意义五、黑箱聚集与内禀迭代子 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给…

教育界杂志《教育界》杂志社教育界编辑部2024年第2期目录

教育视界 小学语文课内外阅读的有效融合策略 任小惠; 2-4 项目化学习在初中音乐教学中的应用探索 毛海蓉; 5-7 探索之窗《教育界》投稿&#xff1a;cn7kantougao163.com 儿童无边界阅读支撑系统的建构与实施 袁干斌;蒯红良; 8-10 中学教学 基于核心素养培养的高…

【Spring高级】第2讲:容器实现类

目录 BeanFactory实现BeanDefinition后置处理器单例bean创建后置处理器顺序总结 ApplicationContext实现ClassPathXmlApplicationContextFileSystemXmlApplicationContextAnnotationConfigApplicationContextAnnotationConfigServletWebServerApplicationContext BeanFactory实…

Lazada本土店与跨境店区别,附店铺防关联攻略

许多新手商家在初入跨境电商时&#xff0c;对于平台账号类别并不清楚。Lazada是最大的东南亚在线购物平台之一&#xff0c;如果你的跨境目标正指向东南亚&#xff0c;那么Lazada一定是是你的首选平台。那么接下来让小编带大家认识Lazada本土店与跨境店的区别&#xff01; 一、本…