[Chaosblade] chaosblade-jvm-exec和chaosblade交互
chaosblade-jvm-exec 是负责 chaosblade 中 Jvm 故障注入的模块,是基于 jvm-sandbox 的 java agent。本篇文章介绍下他俩的目录关系,以及交互逻辑。
1 目录关系
chaosblade-jvm-exec 最终是打包成为一个jar包,放在sandbox的目录下面,sandbox又在chaosblade的目录下。
├── bin
│ ├── chaos_addfile
│ ├── chaos_appendfile
│ ├── chaos_burncpu
│ ├── chaos_burnio
│ ├── chaos_burnmem
│ ├── chaos_changedns
│ ├── chaos_chmodfile
│ ├── chaos_deletefile
│ ├── chaos_dropnetwork
│ ├── chaos_filldisk
│ ├── chaos_killprocess
│ ├── chaos_movefile
│ ├── chaos_occupynetwork
│ ├── chaos_os
│ ├── chaos_stopprocess
│ ├── chaos_stracedelay
│ ├── chaos_straceerror
│ ├── chaos_tcnetwork
│ └── strace
├── blade
├── chaosblade.dat
├── lib
│ └── sandbox
│ ├── bin
│ │ └── sandbox.sh
│ ├── cfg
│ │ ├── sandbox-logback.xml
│ │ ├── sandbox.properties
│ │ └── version
│ ├── example
│ │ └── sandbox-debug-module.jar
│ ├── install-local.sh
│ ├── lib
│ │ ├── sandbox-agent.jar
│ │ ├── sandbox-core.jar
│ │ └── sandbox-spy.jar
│ ├── module
│ │ ├── chaosblade-java-agent-1.2.0.jar
│ │ └── sandbox-mgr-module.jar
│ ├── provider
│ │ └── sandbox-mgr-provider.jar
│ ├── sandbox-module
│ └── tools.jar
├── logs
│ └── chaosblade.log
└── yaml├── chaosblade-jvm-spec-1.2.0.yaml└── chaosblade-os-spec-1.2.0.yaml
整个是chaosblade的目录, sandbox
在 lib/sandbox
下面, chaosblade-java-agent-1.2.0.jar(chaosblade-jvm-exec)
在lib/sandbox/module
下面,如果是为了快速的测试,直接替换 chaosblade-java-agent-1.2.0.jar 整个就可以测试了。
2 交互接口
chaosblade-jvm-exec 是sandbox的一个模块,也可以理解为sandbox 和 chaosblade的交互
2.1 prepare
blade功能 attach java进程
#prepare
sudo -u tomcat -H /tmp/chaosblade/blade prepare jvm -j /home/q/java/default --pid 4087 -P 8703 --debug
2.1.1 执行shell
# shell
/home/q/java/default/bin/java -Xms128M -Xmx128M -Xnoclassgc -ea -Xbootclasspath/a:/home/q/java/default/lib/tools.jar -jar /tmp/chaosblade/lib/sandbox/lib/sandbox-core.jar 4087 "/tmp/chaosblade/lib/sandbox/lib/sandbox-agent.jar" "home=/tmp/chaosblade/lib/sandbox;token=320732876429;server.ip=127.0.0.1;server.port=8703;namespace=chaosblade"
执行完了之后
sandbox会追加文件 ~/.sandbox.token
一行 chaosblade;111828312229;localhost;8703
包括namespace,token,ip和端口信息
生成日志文件 ~/logs/chaosblade/chaosblade.log
和 ~/logs/sandbox/sandbox.log
2.1.2 激活模块
# http
http://127.0.0.1:8703/sandbox/chaosblade/module/http/sandbox-module-mgr/active?1=1&ids=chaosblade
2.1.3 检查
http://127.0.0.1:8703/sandbox/chaosblade/module/http/chaosblade/status?1=1
2.2 revoke
卸载java agent
# revoke
/tmp/chaosblade/blade revoke 3cd60165a642daba
2.2.1 通过接口
# http
http://127.0.0.1:8703/sandbox/chaosblade/module/http/sandbox-control/shutdown?1=1
2.3 故障注入和销毁
2.3.1 注入故障
blade 操作
# create
curl "http://127.0.0.1:9526/chaosblade?cmd=create%20http%20throwCustomException%20--timeout=86400%20--exception=java.lang.Exception%20--uri=http://*/gongdan/order/search1%20--effect-percent=100%20--debug"
sandbox交互
POST /sandbox/chaosblade/module/http/chaosblade/create{"action": "throwCustomException","debug": "true","effect-percent": "100","exception": "java.lang.Exception","suid": "2980d9f16d631a8c","target": "http","uri": "http://*/gongdan/order/search1"
}
2.3.2 故障恢复
blade 操作
#destroy
/tmp/chaosblade/blade destroy 65c1c346aa05799a
sandbox 交互
GET /sandbox/chaosblade/module/http/chaosblade/destroy?suid=65c1c346aa05799a
遇到过的问题
prepare 操作没有指定端口的情况下,对同一个jvm 进程进行prepare的逻辑选择端口的逻辑?
blade 内部会有一次重试的逻辑。
了解了大概的逻辑,对于排查问题有一定帮助。
[Chaosblade] chaosblade-jvm-exec和chaosblade交互相关推荐
- 干货 | 阿里巴巴混沌测试工具ChaosBlade两万字解读
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 一.前言 ChaosBlade 是一款遵循混沌工程实验原理,建立在阿里巴巴近十年故障测试和演练 ...
- 详解ChaosBlade
详解ChaosBlade 详解ChaosBlade ChaosBlade: 一个简单易用且功能强大的混沌实验实施工具 项目介绍 实验场景 主要项目 使用文档 快速体验 新手指南 下载chaosblad ...
- 故障演练--使用 ChaosBlade 进行混沌实验
目录 一.ChaosBlade 简介 二.部分 JVM 实验介绍 1.权限 2.JVM 实验准备 3.注入方法延时 4.修改方法返回值 5.抛出自定义异常 6.使用自定义脚本替换指定类方法的内容 7. ...
- 阿里开源混沌工程工具 ChaosBlade
开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> 近日,阿里开源了混沌工程工具 ChaosBlade.该项目是遵循混沌工程(Chaos Engineering)原理 ...
- ChaosBlade x SkyWalking 微服务高可用实践
来源|阿里巴巴云原生公众号 前言 在分布式系统架构下,服务组件繁多且服务间的依赖错综复杂,很难评估单个故障对整个系统的影响,而且请求链路长,如果监控告警.日志记录等基础服务不完善会造成故障响应.故障定 ...
- ChaosBlade:混沌工程简介(一)
简介 随着微服务的盛行以及容器技术的普及,借助 Kubernetes 的容器编排能力,部署一套分布式系统的难度也越来越低.但随之而来的是越来越复杂的系统,以及越来越难的系统可靠性测试,有时仅仅是一个接 ...
- 未来技术展望(一):混沌工程与ChaosBlade
- 起源 - 混沌工程是在分布式系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心.由Netflix在2010年底提出,2012开源Chaos Monkey( ...
- JVM CPU Profiler技术原理及源码深度解析
本文介绍了JVM平台上CPU Profiler的实现原理,希望能帮助读者在使用类似工具的同时也能清楚其内部的技术实现. 引言 研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能 ...
- jvm线程分析命令_JVM:如何分析线程转储
jvm线程分析命令 本文将教您如何分析JVM线程转储,并查明问题的根本原因. 以我的观点,线程转储分析是掌握Java EE生产支持的任何个人最重要的技能. 您可以从线程转储快照中获取的信息量通常远远超 ...
最新文章
- 设计模式之C#实现---Builder
- Java虚拟机:JVM 主要组成部分与内存区域
- 我的特长是复制、粘帖
- 1.App瘦身经验总结
- 【51单片机快速入门指南】5.3:SPI控制晶联讯JLX12864G_08602 LCD屏幕
- perl连接oracle的方法,Perl 连接Oracle 数据库
- Debian11镜像更新为阿里巴巴开源镜像站镜像,切换root用户,解决用户名不在sudoers文件中此事将被报告,Debian11 文件夹对话框、火狐浏览器、命令终端等没有最大化和最小化
- Java 源码--Arrays
- numpy 几个比较重要的链接
- python入门经典代码-【python】编程语言入门经典100例--12
- Motion 5.6.1 for Mac(视频后期特效处理软件)
- 程序化导入导出EXCEL数据,完全由模板输出
- 十二、Oracle学习笔记:分页查询
- 群晖nas存储系统原理_群晖NAS 创建存储池和存储空间图文教程
- Email - 搭建自定义邮件服务器
- ArcPy常用基础功能
- 常用计算机英文缩写,常用计算机英文缩写含义
- 国庆节未休假的你,领到了三倍的工资吗?
- 矢量网络分析仪测试软件,ZND 矢量网络分析仪
- 大盘点!关于无线AP的实用技术,看这篇就够了
热门文章
- 各项的语言资源,从入门到精通
- Python爬取了猫眼47858万条评论,告诉你《飞驰人生》值不值得看?!
- 软通python机试_软通机试练习题
- java 字节 字符
- ui设计参考网站以及ui设计参考书籍
- 去掉搜索引擎中的Powered By Dvbbs.net (动网论坛)
- lisp 天正标高_天正lisp文件夹_晓东CAD家园-论坛-A/VLISP-[求助]:怎样设置这个lisp里的读取文件...
- mysql c dll_libmysql_c.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- Vue.js 父子组件通信的十种方式;告诉世界前端也能做 AI;你可能不知道的14个JavaScript调试技巧...
- php用户登入与注销(cookie)