Chaosblade是阿里巴巴内部的MonkeyKing开源项目。它基于阿里巴巴近十年的故障测试和实践,结合了集团业务的最佳理念和实践。 ChaosBlade 是一款遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具,可实现底层故障的注入,特点是操作简洁、无侵入、扩展性强。 ChaosBlade 基于 Apache License v2.0 开源协议,目前有 chaosblade 和 chaosblade-exe-jvm 两个仓库。 chaosblade 包含 CLI 和使用 Golang 实现的基础资源、容器相关的混沌实验实施执行模块。chaosblade-exe-jvm 是对运行在 JVM 上的应用实施混沌实验的执行器。ChaosBlade 社区后续还会添加 C++、Node.js 等其他语言的混沌实验执行器。 Chaosblade可以直接编译和运行,cli命令提示符可以更轻松地执行混沌工程实验。您可以执行blade create -h命令进行查看。 目前支持的实验区域包括os,java,docker和kubernetes,例如填充磁盘,查杀进程,网络延迟,Dubbo,MySQL,Servlet和Java应用程序类延迟或异常的自定义类方法,kill容器,kill Pod等等。 ## ChaosBlade 能解决哪些问题? ### 衡量微服务的容错能力 通过模拟调用延迟、服务不可用、机器资源满载等,查看发生故障的节点或实例是否被自动隔离、下线,流量调度是否正确,预案是否有效,同时观察系统整体的 QPS 或 RT 是否受影响。在此基础上可以缓慢增加故障节点范围,验证上游服务限流降级、熔断等是否有效。最终故障节点增加到请求服务超时,估算系统容错红线,衡量系统容错能力。 ### 验证容器编排配置是否合理 通过模拟杀服务 Pod、杀节点、增大 Pod 资源负载,观察系统服务可用性,验证副本配置、资源限制配置以及 Pod 下部署的容器是否合理。 ### 测试 PaaS 层是否健壮 通过模拟上层资源负载,验证调度系统的有效性;模拟依赖的分布式存储不可用,验证系统的容错能力;模拟调度节点不可用,测试调度任务是否自动迁移到可用节点;模拟主备节点故障,测试主备切换是否正常。 ### 验证监控告警的时效性 通过对系统注入故障,验证监控指标是否准确,监控维度是否完善,告警阈值是否合理,告警是否快速,告警接收人是否正确,通知渠道是否可用等,提升监控告警的准确和时效性。 ### 定位与解决问题的应急能力 通过故障突袭,随机对系统注入故障,考察相关人员对问题的应急能力,以及问题上报、处理流程是否合理,达到以战养战,锻炼人定位与解决问题的能力。 ## 功能和特点 ### 场景丰富度高 ChaosBlade 支持的混沌实验场景不仅覆盖基础资源,如 CPU 满载、磁盘 IO 高、网络延迟等,还包括运行在 JVM 上的应用实验场景,如 Dubbo 调用超时和调用异常、指定方法延迟或抛异常以及返回特定值等,同时涉及容器相关的实验,如杀容器、杀 Pod。后续会持续的增加实验场景。 ### 使用简洁,易于理解 ChaosBlade 通过 CLI 方式执行,具有友好的命令提示功能,可以简单快速的上手使用。命令的书写遵循阿里巴巴集团内多年故障测试和演练实践抽象出的故障注入模型,层次清晰,易于阅读和理解,降低了混沌工程实施的门槛。 ### 场景扩展方便 所有的 ChaosBlade 实验执行器同样遵循上述提到的故障注入模型,使实验场景模型统一,便于开发和维护。模型本身通俗易懂,学习成本低,可以依据模型方便快捷的扩展更多的混沌实验场景。 ## 体验演示 下载chaosblade演示映像并体验blade toolkit包的使用 ### 下载 image 命令: docker pull registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest
### 运行 demo 容器: docker run -it registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest