Chaosblade:一款简单易用且功能强大的混沌工程工具集
中文版 README
Wiki: DeepWiki
🔥🔥🔥 重大更新:Chaosblade智能代理发布 - Blade AI
Blade AI作为ChaosBlade生态中的智能代理层:在基础层调用ChaosBlade执行故障注入;在上层集成意图理解、安全审计、效果验证、安全恢复、结构化报告等编排能力——将故障演练从“手动编写命令”转变为“对话式交互”完成。
详细信息请参考:https://github.com/chaosblade-io/chaosblade/blob/feature/blade-ai/blade-ai/README_en.md
- 发布版本:https://github.com/chaosblade-io/chaosblade/releases/tag/blade-ai-v0.1.0
- 代码分支:blade-ai-v0.1.0
简介
ChaosBlade是阿里巴巴开源的实验注入工具,遵循混沌工程原则与混沌实验模型,帮助企业提升分布式系统的容错能力,保障企业上云或向云原生架构迁移过程中的业务连续性。
ChaosBlade是“美猴王”内部开源项目,基于阿里巴巴近十年的故障测试与演练实践,融合了集团各业务的最佳思想与实践。
ChaosBlade不仅简单易用,还支持丰富的实验场景。场景包括:
- 基础资源:如CPU、内存、网络、磁盘、进程等实验场景;
- Java应用:如数据库、缓存、消息、JVM本身、微服务等,还可指定任意类方法注入各种复杂实验场景;
- C++应用:如指定任意方法或代码行注入延迟、篡改变量及返回值;
- 容器:如杀死容器,容器内CPU、内存、网络、磁盘、进程等实验场景;
- 云原生平台:如Kubernetes平台节点的CPU、内存、网络、磁盘、进程实验场景,Pod网络及Pod自身(如杀死Pod)实验场景,以及前述Docker容器等容器实验场景;
按领域将场景封装为独立项目,既能规范领域内场景,又便于场景的横向与纵向扩展。通过遵循混沌实验模型,可统一调用chaosblade cli。目前包含的项目有:
- https://github.com/chaosblade-io/chaosblade%EF%BC%9A%E6%B7%B7%E6%B2%8C%E5%AE%9E%E9%AA%8C%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7%EF%BC%8C%E5%8C%85%E5%90%AB%E5%88%9B%E5%BB%BA%E5%AE%9E%E9%AA%8C%E3%80%81%E9%94%80%E6%AF%81%E5%AE%9E%E9%AA%8C%E3%80%81%E6%9F%A5%E8%AF%A2%E5%AE%9E%E9%AA%8C%E3%80%81%E5%87%86%E5%A4%87%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83%E3%80%81%E5%8F%96%E6%B6%88%E5%AE%9E%E9%AA%8C%E7%8E%AF%E5%A2%83%E7%AD%89%E5%91%BD%E4%BB%A4%E3%80%82%E6%98%AF%E6%B7%B7%E6%B2%8C%E5%AE%9E%E9%AA%8C%E7%9A%84%E6%89%A7%E8%A1%8C%E5%B7%A5%E5%85%B7%EF%BC%8C%E6%89%A7%E8%A1%8C%E6%96%B9%E5%BC%8F%E5%8C%85%E6%8B%ACCLI%E5%92%8CHTTP%E3%80%82%E6%8F%90%E4%BE%9B%E5%AE%8C%E6%95%B4%E7%9A%84%E5%91%BD%E4%BB%A4%E3%80%81%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E5%8F%8A%E5%9C%BA%E6%99%AF%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E%EF%BC%8C%E6%93%8D%E4%BD%9C%E7%AE%80%E5%8D%95%E6%B8%85%E6%99%B0%E3%80%82
- https://github.com/chaosblade-io/chaosblade-spec-go%EF%BC%9A%E6%B7%B7%E6%B2%8C%E5%AE%9E%E9%AA%8C%E6%A8%A1%E5%9E%8BGolang%E8%AF%AD%E8%A8%80%E5%AE%9A%E4%B9%89%EF%BC%8C%E4%BD%BF%E7%94%A8Golang%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0%E7%9A%84%E5%9C%BA%E6%99%AF%E5%8F%AF%E5%9F%BA%E4%BA%8E%E6%AD%A4%E8%A7%84%E8%8C%83%E4%BE%BF%E6%8D%B7%E5%AE%9E%E7%8E%B0%E3%80%82
- https://github.com/chaosblade-io/chaosblade-exec-os%EF%BC%9A%E5%9F%BA%E7%A1%80%E8%B5%84%E6%BA%90%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E5%AE%9E%E7%8E%B0%E3%80%82
- https://github.com/chaosblade-io/chaosblade-exec-docker%EF%BC%9ADocker%E5%AE%B9%E5%99%A8%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E5%AE%9E%E7%8E%B0%EF%BC%8C%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8Docker API进行标准化。
- https://github.com/chaosblade-io/chaosblade-exec-cri%EF%BC%9A%E5%AE%B9%E5%99%A8%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E5%AE%9E%E7%8E%B0%EF%BC%8C%E9%80%9A%E8%BF%87%E8%B0%83%E7%94%A8CRI%E8%BF%9B%E8%A1%8C%E6%A0%87%E5%87%86%E5%8C%96%E3%80%82
- https://github.com/chaosblade-io/chaosblade-operator%EF%BC%9AKubernetes%E5%B9%B3%E5%8F%B0%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E5%AE%9E%E7%8E%B0%EF%BC%8C%E9%80%9A%E8%BF%87Kubernetes%E6%A0%87%E5%87%86CRD%E6%96%B9%E5%BC%8F%E5%AE%9A%E4%B9%89%E6%B7%B7%E6%B2%8C%E5%AE%9E%E9%AA%8C%EF%BC%8C%E9%9D%9E%E5%B8%B8%E6%96%B9%E4%BE%BF%E4%BD%BF%E7%94%A8Kubernetes%E8%B5%84%E6%BA%90%E6%93%8D%E4%BD%9C%E6%96%B9%E5%BC%8F%EF%BC%88%E5%8C%85%E6%8B%ACkubectl%E3%80%81client-go%E7%AD%89%EF%BC%89%E5%88%9B%E5%BB%BA%E3%80%81%E6%9B%B4%E6%96%B0%E3%80%81%E5%88%A0%E9%99%A4%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%EF%BC%8C%E4%B9%9F%E5%8F%AF%E4%BD%BF%E7%94%A8%E5%89%8D%E8%BF%B0chaosblade cli工具。
- https://github.com/chaosblade-io/chaosblade-exec-jvm%EF%BC%9AJava%E5%BA%94%E7%94%A8%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E5%AE%9E%E7%8E%B0%EF%BC%8C%E9%87%87%E7%94%A8Java Agent技术动态挂载,无需任何接入,零成本使用,同时支持卸载并完全回收Agent创建的各类资源。
- https://github.com/chaosblade-io/chaosblade-exec-cplus%EF%BC%9AC++%E5%BA%94%E7%94%A8%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E5%AE%9E%E7%8E%B0%EF%BC%8C%E9%87%87%E7%94%A8GDB%E6%8A%80%E6%9C%AF%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95%E5%8F%8A%E4%BB%A3%E7%A0%81%E8%A1%8C%E7%BA%A7%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E6%B3%A8%E5%85%A5%E3%80%82
- https://github.com/chaosblade-io/chaosblade-box%EF%BC%9A%E5%85%B7%E5%A4%87%E6%B7%B7%E6%B2%8C%E5%B7%A5%E7%A8%8B%E5%B9%B3%E5%8F%B0%E4%B8%8E%E9%9F%A7%E6%80%A7%E6%B5%8B%E8%AF%95%E5%B9%B3%E5%8F%B0%E8%83%BD%E5%8A%9B%E3%80%82%E5%85%B3%E4%BA%8E%E9%9F%A7%E6%80%A7%E6%B5%8B%E8%AF%95%E5%B9%B3%E5%8F%B0%E8%83%BD%E5%8A%9B%E7%9A%84%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%EF%BC%8C%E5%8F%82%E8%A7%81https://github.com/chaosblade-io/chaosblade-box/tree/main2%E5%88%86%E6%94%AF%E3%80%82
CLI命令
chaosblade支持CLI和HTTP调用方式。支持的命令如下:
- prepare:别名p,混沌工程实验前的准备工作,例如对Java应用进行演练时,需要挂载Java Agent。例如,对应用名称为business的应用进行演练,在目标主机执行
blade p jvm --process business。若挂载成功,返回uid用于状态查询或Agent撤销。
- revoke:别名r,撤销之前的混沌工程实验准备工作,例如卸载Java Agent。命令为
blade revoke UID
- create:别名c,创建混沌工程实验。命令格式为
blade create [TARGET] [ACTION] [FLAGS]。例如,实现Dubbo消费者调用xxx.xxx.Service接口延迟3秒,执行命令blade create dubbo delay --consumer --time 3000 --Service xxx.xxx.Service,若注入成功,返回实验uid用于状态查询及销毁实验。
- destroy:别名d,销毁混沌工程实验,例如销毁上述Dubbo延迟实验,命令为
blade destroy UID
- status:别名s,查询准备阶段或实验状态,命令为
blade status UID或blade status --type create
- server:启动Web服务器,暴露HTTP服务,通过HTTP请求调用chaosblade。例如,在目标机器xxxx执行:
blade server start -p 9526,执行CPU满负载实验:curl "http://xxxx:9526/chaosblade?cmd=create%20cpu%20fullload"
使用blade help [COMMAND]或blade [COMMAND] -h命令查看帮助
体验演示
下载chaosblade演示镜像,体验blade工具集的使用
下载镜像命令:
script
docker pull chaosbladeio/chaosblade-demo
运行演示容器:
script
docker run -it --privileged chaosbladeio/chaosblade-demo
进入容器后,可阅读README.txt文件进行混沌实验,祝您使用愉快。
云原生
https://github.com/chaosblade-io/chaosblade-operator%E9%A1%B9%E7%9B%AE%E6%98%AF%E9%9D%A2%E5%90%91%E4%BA%91%E5%8E%9F%E7%94%9F%E5%B9%B3%E5%8F%B0%E7%9A%84%E6%B7%B7%E6%B2%8C%E5%AE%9E%E9%AA%8C%E6%B3%A8%E5%85%A5%E5%B7%A5%E5%85%B7%E3%80%82%E5%AE%83%E9%81%B5%E5%BE%AA%E6%B7%B7%E6%B2%8C%E5%AE%9E%E9%AA%8C%E6%A8%A1%E5%9E%8B%E5%AF%B9%E5%AE%9E%E9%AA%8C%E5%9C%BA%E6%99%AF%E8%BF%9B%E8%A1%8C%E6%A0%87%E5%87%86%E5%8C%96%EF%BC%8C%E5%B0%86%E5%AE%9E%E9%AA%8C%E5%AE%9A%E4%B9%89%E4%B8%BAKubernetes CRD资源,把实验模型映射为Kubernetes资源属性,将混沌实验模型与Kubernetes声明式设计友好结合。在依托混沌实验模型便捷开发场景的同时,也能很好地融入Kubernetes设计理念,通过kubectl或编写代码直接调用Kubernetes API创建、更新、删除混沌实验,资源状态可清晰指示实验执行状态,规范Kubernetes故障注入。除使用上述方式执行实验外,还可使用chaosblade cli方式便捷执行Kubernetes实验场景及查询实验状态。详情请阅读中文文档:云原生下的混沌工程实践
编译
详细编译步骤参见BUILD.md。
Bugs与反馈
如需报告bug、提问或参与讨论,请提交https://github.com/chaosblade-io/chaosblade/issues%E3%80%82
您也可以通过以下方式联系我们:
- 钉钉群(推荐中文用户):23177705
- Slack群:chaosblade-io
- Gitter房间:chaosblade community
- :
- ***:chaosblade.io
贡献
我们欢迎任何贡献,即使只是标点符号的修改。详情参见CONTRIBUTING。关于社区参与同学的晋升阶梯,参见:(https://github.com/chaosblade-io/community/blob/main/Contributor_Ladder.md)
企业登记
我们开源项目的初衷是降低企业落地混沌工程的门槛,因此高度重视项目在企业中的使用情况。欢迎大家在https://github.com/chaosblade-io/chaosblade/issues/32%E8%BF%9B%E8%A1%8C%E7%99%BB%E8%AE%B0%E3%80%82%E7%99%BB%E8%AE%B0%E5%90%8E%E5%B0%86%E9%82%80%E8%AF%B7%E5%8A%A0%E5%85%A5%E4%BC%81%E4%B8%9A%E9%82%AE%E4%BB%B6%E7%BB%84%EF%BC%8C%E5%85%B1%E5%90%8C%E8%AE%A8%E8%AE%BA%E6%B7%B7%E6%B2%8C%E5%B7%A5%E7%A8%8B%E5%9C%A8%E4%BC%81%E4%B8%9A%E8%90%BD%E5%9C%B0%E8%BF%87%E7%A8%8B%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E5%88%86%E4%BA%AB%E8%90%BD%E5%9C%B0%E7%BB%8F%E9%AA%8C%E3%80%82
贡献者
代码贡献者
本项目的存在得益于所有贡献者的努力。[贡献]。
许可证
Chaosblade采用Apache License 2.0许可证。完整许可证文本参见LICENSE。