混沌工程开源工具对比
本文对比开源混沌工程工具
Chaos Monkey
平台:Spinnaker
发布:2012 Netflix
语言:Go
第一个开源的混沌工程工具,包含了故障注入工具Simian Army,可让您的云以最佳状态运行。 Chaos Monkey,第一个成员,是一个弹性工具,有助于确保您的应用程序可以容忍随机实例故障
- Pros:知名的历史工具,随时创建故障
- Cons:需要 Spinnaker 和 MySQL,只能进行 shutdown,对爆炸变径控制有限,只能随机的,没有恢复和回滚机制,无法写自己代码
ChaosBalde
Platforms: Docker, Kubernetes, bare-metal, cloud platforms
Release year: 2019
Creator: Alibaba
Language: Go
modular设计,适用场景多,包括主机、c++应用、kubernetes等
通过CLI执行,提供完整生命周期的CLI:blade prepare/create/destroy
通过Custom Resource Definitions (CRDs) 操作k8s
- Pros:支持类型多;应用级别注入(java、c++、node.js);多种使用方式 CLI、kubernetes manifests、REST API
- Cons:缺乏调度、安全、报告能力
Chaos Mesh
Platform: Kubernetes
Release year: 2020
Creator: PingCAP
Language: Go
Kubernetes 环境下混沌实验,缺乏 node-leave 支持,缺乏调度和时间方面 ad-hoc
- Pros: web UI 支持暂停与恢复实验,支持 GitHub Actions 便于自动化 CI/CD
- Cons:没有 node-level 攻击、仪表盘安全可以整个集群范围内混沌实验
Litmus
Platforms: Kubernetes
Release year: 2018
Creator: MayaData
Language: TypeScript
类似 Chaos Mesh,原始为了测试 kubernetes 存储方案 OpenEBS,测试容器、Pods、nodes ; ChaosHub 集中式公共实验存储库,任何人都可以为其作出贡献;Limus Probes 健康监测功能,可以在实验前、实验中、实验后检测应用健康 ,通过运行 shell 命令、HTTP请求、kubernetes命令检测环境
- Pros:Web UI 提供了 dashboard 和 应用弹性能力得分;ChaosHub 提供大量实验场景;自动的系统监控检测
- Cons:实验过程复杂;清除实验开销较大;web ui功能有限;按实验控制的权限局限性
Chaos Toolkit
Platforms: Docker, Kubernetes, bare-metal, cloud platforms
Release year: 2018
Creator: ChaosIQ
Language: Python
Chaos Toolkit 可让您完全控制实验的运行方式,直至在目标系统上执行的命令。但是由于这种 DIY 方法,Chaos Toolkit 更像是一个您需要构建的框架,而不是现成的 Chaos Engineering 解决方案
PowerfulSeal
Platforms: Kubernetes
Release year: 2017
Creator: Bloomberg
Language: Python
没有提供其他工具无法提供的功能。语法易于理解,不同的模式对实验提供了更好的控制,但它的攻击类型数量有限,并且缺乏其他区分功能。
Toxiproxy
Platforms: Any
Release year: 2014
Creator: Shopify
Language: Go
网络故障注入工具,两个组件:proxy server 和 clinet
Istio
Platform: Kubernetes
Release year: 2017
Creators: Google, IBM, and Lyft
Language: Go
服务网格,流量管控支持混沌实验功能,Istio 可以注入延迟 或 HTTP 错误到虚拟服务的网络流量中; 默认 health checks 和 envoy statistics 可以监控系统
Corns:只有两种类型实验,局限于Istio
Kubedoom
Platforms: Kubernetes
Release year: 2019
Creator: David Zuber (storax)
Language: C++
局限于 pods
工具功能对比
Tool | Works with | Total attack types | Application attacks | Host attacks | Container/Pod attacks | GUI | CLI | REST API | Metrics/reporting | Attack sharing | Attack halting | Attack scheduling | Target randomization | Custom attacks | Health checks |
Gremlin | Containers, Kubernetes, bare metal, cloud | 12 | ?? | ?? | ??? | ?? | ?? | ??? | ??? | ?? | ?? | ?? | ?? | ?? | |
Chaos Monkey | Amazon Web Services (requires Spinnaker) | 1 | ?? | ? | ?? | ? | ? | ?? | ?? | ?? | |||||
ChaosBlade | Containers, Kubernetes, bare metal, cloud | 40 | ?? | ?? | ?? | ?? | ?? | ?? | |||||||
Chaos Mesh | Kubernetes | 17 | ?? | ?? | ?? | ?? | ? | ?? | ?? | ?? | ?? | ||||
Litmus | Kubernetes | 39 | ? | ?? | ?? | ?? | ?? | ? | ?? | ?? | ?? | ?? | ?? | ?? | |
Chaos Toolkit | Containers, Kubernetes, bare metal, cloud | Based on driver | ? | ?? | ?? | ? | ?? | ? | ?? | ? | ? | ?? | ?? | ?? | |
PowerfulSeal | Kubernetes | 5+? | ?? | ?? | ? | ?? | ? | ?? | ? | ? | ?? | ||||
ToxiProxy | Network | 6 | ??? | ?? | ? | ?? | |||||||||
Istio | Kubernetes | 2 | ?? | ?? | ?? | ?? | |||||||||
KubeDoom | Kubernetes | 1 | ?? | ?? | ?? | ||||||||||
AWS FIS | Amazon Web Services (RDS, EC2, ECS, EKS) | 7+ | ?? | ?? | ?? | ?? | ?? |