-
Notifications
You must be signed in to change notification settings - Fork 947
v1.3.0 版本特性介绍
$ blade c systemd stop --service docker
{"code":200,"success":true,"result":"a6da606fbcdea2cb"}
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
新增 --avoid-being-killed
参数来控制占用内存的进程是否被杀死,通过调整进程优先级来实现。适用于内存100%的场景。
可以通过 --javaHome
参数指定 JAVA_HOME 路径,用于挂载 java agent。
blade c jvm cpufullload --javaHome /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home --process tomcat
从 v1.2.0 版本开始,无需先执行 prepare jvm 挂载探针操作,直接执行 create 操作会先判断探针是否挂载,没有挂载会重新挂载探针,v1.3.0版本新增 -refresh
参数,添加此参数会每次都会重新挂载探针,适用于探针更新时使用
blade c jvm cpufullload --process tomcat --refresh
需要特别注意 --interval
参数是必填项
blade c jvm full-gc --process spring --effect-count 5 --interval 1000
{"code":200,"success":true,"result":"2ee474df48fe5f85"}
支持指定请求延迟或抛异常
blade create gateway delay --requestPath /consumer/hello --time 20000
blade create gateway throwCustomException --exception java.lang.Exception --requestPath /consumer/hello
支持 logback 日志记录延迟或抛异常
blade create log delay --logback --time 1000 --effect-count 100
blade create log throwCustomException --logback --exception java.lang.NullPointException
使用 http 请求延迟时,如果配置的延迟时间大于系统服务的超时时间,则会触发请求超时异常。
通过正则表达式匹配请求
./blade create servlet modifyCode --code 500 --requestpath-regex-pattern /greeting/2*
./blade create servlet modifyCode --code 500 --querystring-regex-pattern name=1*
通过 --call-point
参数控制,服务名和方法之间使用|
分隔。
blade create http delay --time 500 --uri http://api.bservice.xxx.com/api/user/list --call-point com.xxx.service.AService|a1Method
dubbo matchers: {"matchers":{"appname":"test_provider","service":"com.test.provider.api.DubboTestService","version":"1.0.0","group":"test","methodname":"testDubbo","timeout":"3000"}}
daemonset.enable
是控制是否部署 chaosblade-tool
daemonset,此 daemonset 目前进展 docker 容器下起作用,作用如下:
- 解决演练的目标容器中没有 tc 命令问题
- 支持节点演练
如果没有以上需求,可以将其设置为 false,即在使用 helm 安装时配置 daemonset.enable=false 此版本增强了此参数,在 1.3.0 版本之前,chaosblade-tool 的部署是通过 chaosblade operator 来控制部署,当前版本是单独出一个 yaml 文件部署,方便修改部署参数,支持指定节点部署。
chaosblade-deploy-mode
参数控制演练工具部署模式,取值有 download
和 copy
,默认是 copy。 copy 类似于 kubectl cp 命令,但如果同时演练机器数量多时,会对 apiserver 造成一定的负载压力,适用于小规模演练。download 是在容器内执行 curl 命令下载工具,需要配置文件下载地址,即使在大规模演练下对 apiserver 的影响有限。
- copy: 从 chaosblade-operator 容器中拷贝所需工具到目标容器。
- download: 从指定的 url 中下载所需工具到目标容器。需要配置
chaosblade-download-url
参数或者在部署 chaosblade-operator 时指定blade.downloadUrl
配置。需要注意文件目录和文件名应如下,应保持如下目录:
.
├── bin
├── blade
├── lib.tar.gz
└── yaml.tar.gz
- bin:存放基础资源实验工具
- blade: chaosblade cli 工具
- lib.tar.gz:lib 文件压缩包
- yaml.tar.gz:yaml 文件压缩包
部署规则:
- 先判断
--chaosblade-override
参数是否为true,如果是,即使文件已存在,也会重新部署所需文件; - 根据
--chaosblade-path
参数(默认为 /opt),判断 chaosblade 目录是否存在,不存在,则创建; - 判断 chaosblade/blade 文件是否存在,不存在则copy 或下载;
- 判断 chaosblade/yaml 目录是否存在,不存在则copy 或下载 yaml.tar.gz 并解压;
- 判断 chaosblade/bin/chaos_os 文件是否存在,不存在则copy 或下载;
- 根据实验场景下载所需要的其他文件:
- 如果是 Java,则判断 chaosblade/lib 目录是否存在,不存在则copy或者下载lib.tar.gz 并解压
- 如果是网络实验,则判断 chaosblade/bin/chaos_tcnetwork 文件是否存在,不存在则copy或下载。
- 依次类推。
blade c k8s pod-cpu fullload --names logtail-ds-gzd72 --namespace kube-system -d --kubeconfig ~/.kube/config
{"code":200,"success":true,"result":"5bf33579c3f768ee"}
blade c k8s pod-cpu fullload --chaosblade-deploy-mode download --chaosblade-download-url https://chaosblade.oss-xxx.aliyuncs.com/agent/github/1.3.0 --names logtail-ds-gzd72 --namespace kube-system -d --kubeconfig ~/.kube/config
{"code":200,"success":true,"result":"dcdf0a13814fcacc"}
helm install chaosblade-operator chaosblade-operator-1.3.0-v3.tgz --namespace chaosblade --set blade.downloadUrl=https://chaosblade.oss-xxxxx.aliyuncs.com/agent/github/1.3.0
创建实验时添加 --chaosblade-override
参数,会重新部署工具到目标容器,适用于工具更新时使用。
v1.2.0及之前版本是通过 containerId 来查找演练容器,如果网络不可访问,容器会被重建,containerId 发生改变,所以导致恢复失败,v1.3.0 版本内部使用 container name 来查找。
blade s --type c --action stop
{
"code": 200,
"success": true,
"result": [
{
"Uid": "a6da606fbcdea2cb",
"Command": "systemd",
"SubCommand": "stop",
"Flag": " --service=docker",
"Status": "Success",
"Error": "",
"CreateTime": "2021-08-05T11:07:05.373964934+08:00",
"UpdateTime": "2021-08-05T11:07:06.615654415+08:00"
}
]
}
blade s --type c --flag-filter service
{
"code": 200,
"success": true,
"result": [
{
"Uid": "a6da606fbcdea2cb",
"Command": "systemd",
"SubCommand": "stop",
"Flag": " --service=docker",
"Status": "Success",
"Error": "",
"CreateTime": "2021-08-05T11:07:05.373964934+08:00",
"UpdateTime": "2021-08-05T11:07:06.615654415+08:00"
}
]
}