Chaos Monkey vs Gremlin: Which Chaos Engineering Tool Should You Use?
Chaos engineering is no longer a Netflix-only practice. Teams of all sizes now deliberately inject failures into their systems to discover weaknesses before users do. Two tools dominate the conversation: Chaos Monkey, the open-source originator, and Gremlin, the commercial platform that productized the concept. Choosing between them depends on your infrastructure, team maturity, and how much operational overhead you're willing to accept.
What Is Chaos Engineering?
Chaos engineering is the practice of intentionally introducing failures — terminated instances, network latency, CPU saturation, disk corruption — to verify that your system degrades gracefully. The goal isn't to break things randomly; it's to run controlled experiments that expose hidden assumptions in your architecture.
The discipline emerged from Netflix's 2011 decision to move to AWS and the recognition that distributed systems fail in unpredictable ways. Waiting for production incidents to reveal weaknesses is expensive. Deliberately triggering controlled failures in lower-risk conditions is cheaper.
Chaos Monkey: The Original
Chaos Monkey was open-sourced by Netflix in 2012 and remains the most recognized chaos tool. It operates by randomly terminating EC2 instances within Auto Scaling Groups during business hours — forcing engineers to be present when failures occur.
How It Works
Chaos Monkey integrates with Spinnaker, Netflix's continuous delivery platform. It reads your Spinnaker application list, selects random instances from configured Auto Scaling Groups, and terminates them on a schedule. Configuration is minimal:
{
"enabled": true,
"meanTimeBetweenKillsInWorkDays": 5,
"minTimeBetweenKillsInWorkDays": 1,
"grouping": "app",
"regionsAreIndependent": true
}The newer open-source version (Chaos Monkey for Spring Boot, or the Go rewrite) supports AWS, GCE, and other platforms. But the Spinnaker dependency is a real constraint — teams not using Spinnaker face significant setup work.
What Chaos Monkey Does Well
- Free. No licensing cost. If your team has engineering capacity to operate it, the tool cost is zero.
- Simple mental model. It terminates instances. That's it. No complex attack library to configure.
- Battle-tested. Netflix runs this against production continuously.
- Community. Years of blog posts, incident reports, and configuration guides exist.
What Chaos Monkey Doesn't Do
Chaos Monkey terminates instances. It does not inject network latency, fill disks, consume CPU, corrupt packets, or test specific application-layer failures. For anything beyond instance termination, you need additional tools — Chaos Kong (zone failure), Latency Monkey (deprecated), or purpose-built alternatives.
The Spinnaker coupling is also limiting. If you're running Kubernetes, ECS, or a non-AWS environment, integrating Chaos Monkey requires significant custom work.
Gremlin: The Commercial Platform
Gremlin launched in 2016, founded by former Netflix and Amazon engineers who saw the demand for a productized chaos platform. It covers a much broader attack surface and offers a polished UI, team management, and safety guardrails.
Attack Categories
Gremlin organizes failures into three categories:
State attacks — affect instance state:
- Shutdown (terminate instance)
- Time travel (clock skew)
- Process killer
- Disk (fill disk with garbage)
- Memory (allocate RAM to exhaust heap)
- CPU (spike CPU to configured percentage)
Network attacks — affect network behavior:
- Latency (add configurable delay)
- Packet loss (drop percentage of packets)
- Bandwidth (throttle throughput)
- DNS (corrupt or block DNS resolution)
- Blackhole (drop all traffic to/from targets)
Application-layer attacks (via Gremlin Application Failure Flags):
- Feature flags that inject failures at the code level
How Gremlin Works
Gremlin runs an agent (daemon) on each target host or container. Attacks are configured via the web UI, CLI, or API:
# Install agent
curl https://rpm.gremlin.com/gremlin.repo -o /etc/yum.repos.d/gremlin.repo
yum install -y gremlin gremlind
# Authenticate
gremlin init
# Run a CPU attack
gremlin attack-cpu --length 60 --cores 2 --targets hosts/my-server-01Kubernetes support works via DaemonSet:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: gremlin
namespace: gremlin
spec:
selector:
matchLabels:
app: gremlin
template:
spec:
containers:
- name: gremlin
image: gremlin/gremlin:latest
env:
- name: GREMLIN_TEAM_ID
valueFrom:
secretKeyRef:
name: gremlin
key: team_id
- name: GREMLIN_TEAM_SECRET
valueFrom:
secretKeyRef:
name: gremlin
key: team_secretGremlin's Safety Features
Gremlin includes a "halt" button that stops all running attacks immediately across all agents. This matters during chaos experiments — when something goes wrong that wasn't expected, you need to stop quickly. Chaos Monkey has no equivalent.
Gremlin also supports:
- Blast radius controls — target specific percentage of hosts, not all
- Scheduled experiments — run attacks at defined times with defined durations
- Team-based RBAC — control who can run which attacks
- Audit log — full history of every attack run
Head-to-Head Comparison
| Dimension | Chaos Monkey | Gremlin |
|---|---|---|
| Cost | Free | Starts ~$500/month |
| Attack types | Instance termination only | 20+ attack types |
| Infrastructure support | AWS (Spinnaker), limited others | AWS, GCP, Azure, K8s, containers |
| UI | Minimal | Full web dashboard |
| Safety controls | None built-in | Halt button, blast radius limits |
| Setup effort | High (Spinnaker required) | Moderate (agent install) |
| API/automation | Limited | Full REST API |
| Reporting | None | Built-in reporting and history |
When to Choose Chaos Monkey
Use Chaos Monkey if:
- You're already running Spinnaker
- You're AWS-first and instance-termination resilience is your primary concern
- You have no chaos engineering budget
- You have engineering capacity to build additional tooling around it
Don't use Chaos Monkey if you need network-level failures, Kubernetes-native support, or team-based access controls without building them yourself.
When to Choose Gremlin
Use Gremlin if:
- You need attack variety beyond instance termination (network, CPU, memory, disk)
- Your team is newer to chaos engineering and needs guardrails and a UI
- You're running Kubernetes or multi-cloud
- You need compliance-friendly audit logs
- The operational cost savings from better resilience justify the licensing cost
The $500+/month starting price is meaningful for small teams but trivial compared to the cost of a major production incident.
Alternatives Worth Knowing
LitmusChaos — CNCF-hosted, Kubernetes-native, free. Covers most of Gremlin's attack types. Steeper learning curve but strong community. Good middle ground.
Chaos Toolkit — Python-based framework for writing chaos experiments as code. Integrations for AWS, Kubernetes, Azure. Free, extensible, but requires more engineering.
AWS Fault Injection Simulator (FIS) — Native AWS service. No agents to manage. Tight IAM integration. Reasonable if you're AWS-only and want managed infrastructure.
Steadybit — European Gremlin alternative with strong Kubernetes support and a free tier.
Continuous Chaos vs. Targeted Experiments
Most teams start with targeted experiments: pick a known weak point, inject the failure, observe, fix. As maturity grows, some teams move toward continuous chaos — running attacks on a schedule in staging or production to catch regressions.
Continuous chaos requires:
- Reliable observability (metrics, traces, logs) to detect degradation
- Defined steady-state hypotheses to validate
- Automated stop conditions if blast radius grows unexpectedly
- Clear ownership when experiments trigger alerts
HelpMeTest adds a layer here: running functional tests during chaos experiments validates that user-facing behavior remains correct even while infrastructure is degraded. A load balancer rerouting traffic is working infrastructure resilience; HelpMeTest tests confirm that the checkout flow actually completes correctly during that rerouting.
Getting Started
For most teams new to chaos engineering:
- Start with Gremlin's free tier — limited attack types but zero setup friction. Run your first experiment in an hour.
- Define your steady state — what metrics define "healthy"? CPU below X%, error rate below Y%, p99 latency below Z ms.
- Write your hypothesis — "When one instance in the web tier is terminated, the load balancer reroutes traffic within 30 seconds and error rate stays below 0.1%."
- Run in staging first — build confidence before touching production.
- Verify with functional tests — automated tests running during the experiment confirm user-visible behavior, not just infrastructure metrics.
Chaos engineering without observability is noise. Chaos engineering without functional validation is incomplete. The combination — inject failures, observe metrics, verify user behavior — is what separates chaos engineering from random destruction.