gremlin-chaos
Configures Gremlin (commercial) for cross-platform chaos engineering (fault injection, resilience testing) - installs the Gremlin agent on Linux / Windows / Kubernetes, picks attack types (resource, network, state, request), chains attacks into Scenarios (chaos experiments), integrates with the Reliability Score for forward-looking metrics. Use when the platform spans multiple environments (bare metal + cloud + serverless) and the team needs a commercial-supported solution per Gremlin's multi-platform support.
Install with skills.sh (any agent)
npx skills add testland/qa --skill gremlin-chaosgremlin-chaos
Overview
Gremlin is a commercial reliability platform for fault injection across bare metal, on-prem, multi-cloud, and serverless. It assigns each service a forward-looking Reliability Score from repeated resilience tests, so teams fix likely failure points before an incident (per gremlin-home (opens in new window)).
When to use
If the team is K8s-only and OSS-preferred, see litmus-chaos or chaos-mesh.
How to use
Install
Linux:
sudo apt install -y gremlin
sudo gremlin auth login --org-id <org-id> --user-id <user-id> --api-token <token>Kubernetes:
helm repo add gremlin https://helm.gremlin.com
helm install gremlin gremlin/gremlin \
--namespace gremlin --create-namespace \
--set gremlin.secret.create=true \
--set gremlin.secret.teamID=<team-id> \
--set gremlin.secret.clusterID=<cluster-id> \
--set gremlin.secret.teamSecret=<secret>The agent connects to the Gremlin Control Plane (cloud); attacks trigger via web UI or API.
Attack types
Gremlin groups fault injections into four classes (per gremlin-home (opens in new window) and the Gremlin docs):
| Class | Representative attacks | Effect |
|---|---|---|
| Resource | CPU, Memory, Disk I/O, Disk space | Starve or saturate a host resource |
| Network | Latency, Packet loss, DNS, Blackhole | Degrade or sever connectivity |
| State | Shutdown, Process killer, Time travel | Disrupt host / process state |
| Request | Request injection | Modify HTTP requests in flight |
The full per-attack table (all twelve attacks with their exact effect) lives in references/advanced-operations.md.
Worked example
A single end-to-end experiment: inject 500ms latency into the checkout service, scoped to one container for five minutes.
curl -X POST "https://api.gremlin.com/v1/attacks/new" \
-H "Authorization: Key $GREMLIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"command": {
"type": "latency",
"args": ["-l", "300", "-m", "500", "-c", "1", "-h", "^checkout\\..*$"]
},
"target": {
"type": "Random",
"percent": 10,
"containers": { "labels": { "app": "checkout" } }
}
}'Scenarios (chaining this latency attack with a downstream packet-loss attack), the Reliability Score model, the full CI workflow, and the compliance / audit posture are in references/advanced-operations.md.
Anti-patterns
| Anti-pattern | Why it fails | Fix |
|---|---|---|
| Manual UI-only attacks | Doesn't scale; per chaos principle 4 must automate. | API-driven Scenarios (references/advanced-operations.md). |
| Skipping abort conditions | Attack runs past safety threshold. | Define abort signals on every Scenario (references/advanced-operations.md). |
| Treating Reliability Score as the only signal | Score is service-level; per-attack verdicts matter too. | Both Score (trend) + per-attack verdicts (detail). |
| One-shot installation; team forgets | License paid; not used. | Schedule attacks; build into release process. |
| Production attacks without playbook | Real incident if attack escalates. | Per chaos-experiment-author: blast radius + abort. |
Limitations
References
Gremlin advanced operations - attacks, Scenarios, Reliability Score, CI, compliance
View source (opens in new window)Gremlin advanced operations - attacks, Scenarios, Reliability Score, CI, compliance
Deep reference for the gremlin-chaos SKILL.md. Consult when picking a specific attack, chaining attacks into a Scenario, wiring Gremlin into CI, reading the Reliability Score, or satisfying an audit / compliance requirement.
Per gremlin-home (opens in new window):
Full attack table
Per gremlin-home (opens in new window) and the broader Gremlin docs, the four attack classes expand into these individual attacks:
| Class | Attack | Effect |
|---|---|---|
| Resource | CPU | Spike CPU usage |
| Resource | Memory | Spike memory |
| Resource | Disk I/O | Spike disk I/O |
| Resource | Disk space | Fill disk |
| Network | Latency | Inject latency |
| Network | Packet loss | Drop packets |
| Network | DNS | DNS resolution failure |
| Network | Blackhole | Drop all packets to/from a target |
| State | Shutdown | Reboot the host |
| State | Process killer | Kill a specific process |
| State | Time travel | Skew the system clock |
| Request | Request injection | Modify HTTP requests in flight |
Running an attack via the web UI
Web UI workflow:
The UI provides safety: blast-radius scoping, abort button, notifications.
Authoring a Scenario
A Scenario chains multiple attacks:
# Pseudo-Scenario config (Gremlin's UI exports JSON; this approximates)
scenario:
name: "Checkout resilience test"
attacks:
- type: latency
target: { service: checkout }
length: 5min
latency: 500ms
- type: packet-loss
target: { service: payment }
length: 5min
loss-percent: 10
delay-after-previous: 1min
abort_conditions:
- "Sentry error rate > 2%"
- "Manual abort"Scenarios match per the chaos-experiment-author "vary real-world events" principle - combinations approximate real incidents.
Reliability Score
Per gremlin-home (opens in new window), Gremlin's differentiator is the "Reliability Score" - "individual services" get scores "based on dependency mapping, risk detection, and failure testing."
Score components (per Gremlin docs):
A service moving from "untested" to "score 80" via passing attacks creates an objective improvement signal.
API + CI automation
Trigger an attack directly from the API:
curl -X POST "https://api.gremlin.com/v1/attacks/new" \
-H "Authorization: Key $GREMLIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"command": {
"type": "latency",
"args": ["-l", "300", "-m", "500", "-c", "5", "-h", "^api\\.example\\.com$"]
},
"target": {
"type": "Random",
"containers": { "labels": { "app": "checkout" } }
}
}'The API enables CI integration - trigger a saved Scenario, wait for it to run, then evaluate a monitoring-driven verdict:
- name: Trigger Gremlin scenario
run: |
curl -X POST "https://api.gremlin.com/v1/scenarios/${{ vars.SCENARIO_ID }}/runs" \
-H "Authorization: Key ${{ secrets.GREMLIN_API_KEY }}"
- name: Wait + verdict
run: sleep 600 && ./scripts/datadog-verdict.shCompliance + audit
Gremlin's enterprise tier (per gremlin-home (opens in new window)'s positioning) provides:
Important for regulated industries where audit is non-negotiable.
References
Related skills
chaos-drill-protocol
Run protocol for a chaos experiment that has already been designed: the four pre-flight gates (non-production target, measured healthy baseline, live observability, a rollback that has actually been exercised), how to pick a conservative blast-radius bound, the sampling cadence and abort criteria fixed in writing before injection, and the recovery-validation step with its tolerance and timeout. Owns execution safety only, not experiment design: the steady-state hypothesis, the fault to inject, and the experiment file come from elsewhere. Use when an experiment definition exists and a fault is about to be injected into a running system, and the go/no-go gates, abort thresholds, and recovery check still need to be agreed and written down before the fault starts.
chaos-experiment-author
Build-an-X workflow for a chaos experiment per the Principles of Chaos Engineering - defines steady-state hypothesis, picks the variables (real-world events: network latency, node failure, region outage), sets the blast radius (which percentage / namespace / user cohort), automates execution, and emits the verdict (steady-state held / didn't hold). Use to scope a chaos experiment before running it via Litmus / Chaos Mesh / Gremlin / Toxiproxy.
chaos-mesh
Configures Chaos Mesh for Kubernetes-native chaos engineering - picks fault types (PodChaos, NetworkChaos, StressChaos, IOChaos, TimeChaos, DNSChaos, KernelChaos, HTTPChaos), targets via label selectors, controls blast radius via namespace whitelists + selector filters, schedules via CronJobs, observes via dashboard. Distinct from Litmus by architecture (Chaos Mesh has its own dashboard + workflow orchestration; Litmus uses ChaosCenter UI). Use when the target system runs on Kubernetes and fault experiments should be declared as CRDs in the cluster alongside the workloads they target.
chaos-results-reporter
Aggregates chaos drill verdicts over time into a resilience trend report - per-experiment hypothesis-held / blast-radius / time-to-detect / time-to-recover, degradation trends across runs, action items, and a stakeholder summary. Use when a team has completed one or more chaos drills and needs a structured trend report showing whether resilience is improving, degrading, or stable across iterations.
failure-injection-test-author
Orchestrates WireMock fault stubs (HTTP-level fault: 500s, malformed JSON, slow responses) with Toxiproxy (TCP-level: latency, packet loss, reset) into a single resilience test scenario - the test starts both, applies fault per scenario, runs the SUT against the impaired endpoints, verifies the SUT's resilience patterns. Use when one test must reproduce a combined network + HTTP failure - a cross-layer failure mode from an incident postmortem that neither pure HTTP fault stubs nor pure TCP chaos can cover alone, because most real failures span both layers.
litmus-chaos
Configures LitmusChaos for Kubernetes-native chaos engineering - installs via Helm, picks ChaosExperiments from the ChaosHub (`pod-delete`, `network-latency`, `node-cpu-hog`, etc.), authors a ChaosEngine CR scoping the experiment + steady-state probes, runs as part of the cluster, exports Prometheus metrics for the verdict. Use when the platform is Kubernetes (CNCF-hosted; cloud-native). Prefer over chaos-mesh when the team wants a ChaosCenter web UI for workflow scheduling and ChaosHub catalog browsing; use chaos-mesh for fine-grained network-fault policies via its own CRD family.
steady-state-hypothesis-validator
Validates a chaos experiment's steady-state hypothesis before execution: checks that each probe metric is measurable and observable, that a recent baseline exists, that tolerances are numerically meaningful and SLI-backed, that the measurement window is defined, and that the chosen metrics would actually move under the target failure mode. Use when a chaos experiment has been authored (via chaos-experiment-author) and the team needs a pre-flight verdict before running the drill in any environment.
toxiproxy-chaos
Configures Toxiproxy for TCP-level fault injection - runs as a sidecar / proxy between client and upstream, applies toxics (latency, bandwidth, slow_close, timeout, slicer, limit_data, reset_peer) via control API. Focused on the proxy itself rather than an API-level chaos runner, including non-test usage (chaos in dev environments, integration tests, pre-prod simulation). Use when the team needs TCP-precise fault injection in development / integration environments without K8s or commercial tooling.