Tooling

Chaos Engineering

Inject faults to find failure modes before customers do.

The discipline: deliberately break things in controlled ways so you discover failure modes before they happen for real.

Open-source tools

  • Chaos Mesh (CNCF) — Kubernetes-native; CRD-driven faults: pod kill, network delay, IO chaos, time skew, kernel chaos. The default.
  • LitmusChaos (CNCF) — alternative; large hub of pre-built experiments.
  • Chaos Toolkit — language-agnostic framework with drivers.
  • Pumba — Docker chaos (network delay, pause, kill).
  • Toxiproxy (Shopify) — TCP-level proxy with configurable faults; great for apps.
  • kube-monkey — original Netflix Chaos Monkey-shape for k8s.

Hosted

  • Gremlin — paid; broad fault library; team-friendly UI.
  • AWS Fault Injection Service (FIS) — AWS-native chaos.
  • Azure Chaos Studio — Azure-native.
  • Steadybit — newer commercial.

Application-level fault injection

  • Toxiproxy — TCP-level faults for any app.
  • Service mesh fault injection — Istio / Linkerd can inject HTTP 5xx and delays.
  • fail-rs / failpoints (Rust), toxiproxy clients for many languages.

Game-day playbooks

  • Recovery playbooks — simulate region failure, DB primary loss, certificate expiry, etc.
  • Run-once tools like stress-ng, tc qdisc add … netem, manual iptables blocks for ad-hoc tests.

Patterns to adopt

  • Start in staging, not prod. Chaos Engineering ≠ "break prod for fun." Earn trust in lower envs first.
  • One variable at a time. A pod kill and a network partition is two experiments.
  • Pre-define abort criteria. "If error rate > 5%, halt the experiment."
  • Steady-state hypothesis. Define what "healthy" means for the system before the experiment.
  • Inject during business hours with team watching. Off-hours chaos = real outage with no one awake.
  • Chaos in CI — small failure injection in integration tests catches many regressions.

What to test for first

  • Single pod / node loss. Most basic test; many apps surprise you.
  • Network latency between services. Slow dependencies are common.
  • DNS failure / slow DNS. Apps without timeouts hang.
  • Disk full / IO slow. Logs / temp files / WAL growth.
  • Certificate expiry simulation. Time-skew tools like Chaos Mesh's TimeChaos.
  • DB primary loss / failover. Check that connection pooling reconnects.
  • Region / AZ outage. If you're multi-AZ.

Don't

  • Run chaos on systems with no monitoring. You won't see what broke.
  • Run chaos on systems without a rollback plan. "Stop it" must be one button.
  • Run chaos against customer data without isolation. Use shadow envs for invasive tests.

Pick this if…

  • Default OSS chaos for k8s: Chaos Mesh.
  • Want a hub of experiments to copy: LitmusChaos.
  • Hosted, team-friendly: Gremlin.
  • AWS-native: AWS FIS.
  • Application fault injection (no k8s): Toxiproxy.
  • You're not sure you're ready: add observability first; chaos comes later.

On this page