Skip to content

An ongoing & curated collection of awesome software, frameworks and libraries, learning tutorials and videos, technical guidelines and best practices about Chaos Engineering.

License

exajobs/chaos-engineering-collection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chaos Engineering Collection

An ongoing & curated collection of awesome software, frameworks and libraries, learning tutorials and videos, technical guidelines and best practices about Chaos Engineering. Thanks to our daily readers and contributors. The goal is to build a categorized community-driven collection of very well-known resources. Sharing, suggestions and contributions are always welcome!

About Chaos Engineering

Table of Contents

0. Introduction

One of the earliest examples of a chaos fault injection was disabling servers using a tool created by Netflix called Chaos Monkey. Chaos Monkey worked by randomly disabled production server instances to ensure that they could handle such failure scenarios.

Similarly, for Kubernetes there are tools targeting deleting pods, such as Kube-monkey, Target's Pod-reaper and Powerfulseal made by Bloomberg.

For Docker a tool called Pumba by A. Ledenev can target containers and for Docker Swarm the docker-chaosmonkey can target services.

Other tools in this area include BBC's Chaos Lamdba for terminating EC2 instances and GomJabbar for targeting private clouds.

Chaos related fault injection can also be done on a more application specific level. Two such system are ChaosMachine and TripleAgent targeting JVM based applications.

The network layer is another fault injection vector with a lot of support from tools. Quite a few of them utilize Iptables in combination with Traffic Control network emulation to inject different kinds of network failures including latency and dropping a percentage of traffic.

Open-source examples include Netflix's Latency Monkey, Pumba, Blockade, Muxy, and Comcast.

Some close-source alternatives are Gremlin and ChaosCat. All tools are capable to be used either directly with a deployment environment or with some setup.

For more resource based injection, at the level of CPU, RAM, disk and similar, there are tools that can help with this. Gremlin, for example, can execute several such attacks, both ChaosCat and a dedicated tools like cpu-troll can facilitate the execution of CPU usage attacks.

1. Principles of Chaos Engineering

A chaos experiment is defined as the following five points by the Principles of chaos engineering

  • Build a Hypothesis around Steady State Behavior
  • Vary Real-world Events
  • Run Experiments in Production
  • Automate Experiments to Run Continuously
  • Minimize Blast Radius

More details in the following link ;-)

2. Fault Injection

Generic Tools

  • The Simian Army - A suite of tools for keeping your cloud operating in top form.
  • Chaos Monkey - A resiliency tool that helps applications tolerate random instance failures.
  • Chaos Toolkit - A chaos engineering toolkit to help you build confidence in your software system.
  • Chaos Toolkit Turbulence - This is an extension for Chaos Toolkit which adds support for Turbulence attacks.
  • Monarch - This is a series of tools for Chaos Toolkit.
  • Muxy - A chaos testing tool for simulating a real-world distributed system failures.
  • Chaos Blade - Chaosblade is an experimental tool that follows the principles of Chaos Engineering and is used to simulate common fault scenarios, helping to improve the recoverability of faulty systems and the fault tolerance of faults.
  • Cthulhu - Chaos Engineering tool that helps evaluating the resiliency of microservice systems simulating various disaster scenarios against a target infrastructure in a data-driven manner.
  • Namazu - Programmable fuzzy scheduler for testing distributed systems.
  • Chaos Scimmia - Chaos Engineering for Redis.
  • HavocLeopard - A set of simple chaos engineering apps that can be used to royally screw up your on-prem servers.
  • Arcdata - Open source incident management and volunteer scheduling application for Red Cross Disaster Services.
  • AWS Chaos Scripts - Collection of python scripts to run failure injection on AWS infrastructure.

CPU's

Memory

File system

Disk

Networking

  • Toxiproxy - A TCP proxy to simulate network and system conditions for chaos and resiliency testing.

Security

Languages

Compilation time

  • ChaosCat - Chaos engineering for Pull Requests - Taking a not-even-good joke a bit too far.

Run time

  • Byteman - A Swiss Army Knife for Byte Code Manipulation.
  • Byte-Monkey - Bytecode-level fault injection for the JVM. It works by instrumenting application code on the fly to deliberately introduce faults like exceptions and latency.
  • Perses - A project to cause (controlled) destruction to a JVM application.
  • Wiremock - API mocking (Service Virtualization) which enables modeling real world faults and delays.
  • MockLab - API mocking (Service Virtualization) as a service which enables modeling real world faults and delays.
  • Flaw - Inject failures on api calls for local chaos engineering.
  • Havoc - Havoc is a collection of dangerous code that wreck havoc in .NET applications and the operating system for chaos-engineering.
  • Utilities for frontend chaos engineering - Utilities for frontend chaos engineering.
  • CHAOS GOPHER - A collection of unix style tools in GO to do chaos engineering or testing.
  • Chaos Monkey for Spring Boot - Injects latencies, exceptions, and terminations into Spring Boot applications.
  • React Chaos - Chaos Engineering for your React apps.
  • Chaos QoaLa - ChaosQoaLa is a chaos engineering tool for injecting failure into JavaScript backed GraphQL end points.
  • Chaos Reverse-engineering - Chaos engineering approach by Reverse-engineering.

Application

Kernel & Operating System

Containers & Orchestrators

  • Royal Chaos - This repository contains the chaos engineering systems invented at KTH Royal Institute of Technology.
  • Pumba - Chaos testing and network emulation for Docker containers (and clusters).
  • Blockade - Docker-based utility for testing network failures and partitions in distributed applications.
  • Chaos Engineering for Docker - Chaos Engineering for Docker.
  • Chaos Engineering with Docker EE - Chaos Engineering with Docker EE.
  • Chaos Util - Docker image with utilities for Chaos Engineering.
  • Drax - DC/OS Resilience Automated Xenodiagnosis tool. It helps to test DC/OS deployments by applying a Chaos Monkey-inspired, proactive and invasive testing approach.
  • Pod-Reaper - A rules based pod killing container. Pod-Reaper was designed to kill pods that meet specific conditions that can be used for Chaos testing in Kubernetes.
  • Chaoskube - ChaosKube periodically kills random pods in your Kubernetes cluster.
  • Litmus - Framework for Kubernetes environments that enables users to run test suites, capture logs, generate reports and perform chaos tests.
  • Chaos Operator - Chaos engineering via kubernetes operator.
  • Kube Entropy - A little chaos engineering application for kubernetes resilience testing.
  • Chaos Coordinator - Chaos Coordinator is a set of tools that allow for chaos testing of the infrastructure used by Kubernetes clusters on Azure.
  • kubernetes-chaos-lab - A brief guide to setting up your first chaos engineering lab on Kubernetes!.
  • Chaos Mesh - A Chaos Engineering Platform for Kubernetes.

Hypervisors

  • VMware Mangle - Orchestrating Chaos Engineering.
  • Turbulence - Tool focused on BOSH environments capable of stressing VMs, manipulating network traffic, and more. It is very simmilar to Gremlin.

Cloud

Examples Projects

3. Observability

Specific tools

General Use

4. Incident Management Tool

  • Banjaxed - Open source incident management tool.

5. Cost of SEVs

6. Chaos As A Sevice

  • Gremlin Inc. - Failure as a Service.
  • Chaos Engineering Experiment Automation - Chaos Engineering Experiment Automation.
  • Pystol.org - The cloud chaos engineering toolbox.
  • Cyphon - Open source incident management and response platform.
  • Controlled Chaos - An all-in-one application that allows teams to create, execute, and analyze chaos engineering experiments with no previous DevOps experience or additional infrastructure setup.
  • Chaos Platform - Chaos Engineering Platform for Everyone.
  • Chaos Hub - Chaos Hub stands on the shoulders of the Chaos Toolkit to provide a complete, user-friendly, platform to automate and collaborate on your Chaos Engineering and Resiliency efforts.
  • steadybit - Chaos Engineering platform that helps to proactively reduce downtime and provide visibility into systems to detect issues

7. Gamedays

8. Forums and Groups

9. References

10. Contributing

Contributions welcome! Read the contribution guidelines first.

11. License

MIT License

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.

Back to top

About

An ongoing & curated collection of awesome software, frameworks and libraries, learning tutorials and videos, technical guidelines and best practices about Chaos Engineering.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published