Hypothesis loop
Symptom → hypothesis → smallest discriminating check → evidence → keep/reject → next hypothesis- Prefer a check that distinguishes between hypotheses.
- Record what you learned so repeated incidents become faster to diagnose.
Use hypothesis-driven troubleshooting, change correlation, layered evidence and executable runbooks to shorten incidents without turning procedural documents into brittle magic.
Carry the same user journey forward: customer → edge/API → checkout → payment. Reuse prior SLI/SLO, alert, incident and recovery decisions where relevant so this module adds evidence to one reliability system rather than starting from zero.
Confirm the user-visible symptom, affected population, start time and whether a deployment, configuration or dependency change correlates with it. This prevents random command execution.
Build hypotheses that can be disproved by evidence instead of collecting every metric available.
A practical path is request/edge → service → dependency → runtime/resource → network/storage as evidence warrants. The order is not rigid; it exists to keep investigation connected to the symptom.
Correlate metrics, logs, traces and change events by time and request identity when available.
Good runbooks describe when the procedure applies, prerequisites, safe commands, expected evidence, rollback and escalation. They should not hide dangerous assumptions.
When the same runbook executes predictably and safely, consider automating the decision or remediation with guardrails.
A production runbook should state scope, prerequisites, evidence to collect, safe action, expected result, rollback/abort condition, escalation and post-action verification.
Automation is appropriate only when the decision boundary can be expressed safely. Use dry-run modes, bounded blast radius, idempotent actions, rate limits and a human approval gate when uncertainty is high.
Symptom → hypothesis → smallest discriminating check → evidence → keep/reject → next hypothesisWHEN: checkout SLI below objective after release
CHECK: confirm release correlation + DB healthy
ACTION: rollback one release
VERIFY: checkout good-event ratio recovers for 10 min
ABORT: rollback worsens errors or integrity signal changes
ESCALATE: no recovery after rollback
AUTOMATION GUARD: only one rollback, signed artifact, recorded change IDGoal: Correlate a deployment marker, latency, error and queue data to rank hypotheses.
cat > /tmp/triage.csv <<'EOF'
time,p95_ms,error_pct,queue,deploy
09:55,180,0.2,80,no
10:00,190,0.3,85,yes
10:05,850,5.0,700,no
10:10,1200,9.0,940,no
EOFpython3 - <<'PY2'
import csv
r=list(csv.DictReader(open('/tmp/triage.csv')))
print('deploy_at',[x['time'] for x in r if x['deploy']=='yes'])
print('max_queue',max(int(x['queue']) for x in r))
print('max_p95',max(int(x['p95_ms']) for x in r))
PY2For example: release increased work per request versus downstream slowdown. Name one evidence check that would discriminate between them.
Troubleshooting is fastest when each action is chosen to reduce uncertainty, not to demonstrate tool familiarity.
Inspect sockets/processes and query the demo service from the host.
./ops/setup-sre-local-lab.shcurl -sv http://127.0.0.1:8000/slow -o /dev/nullss -ltn 2>/dev/null | grep -E ':8000|:9090' || truedocker logs --tail 20 gnu-sre-demoThree concept checks plus one scenario check.
What user-visible symptom exists, who is affected and when did it begin?
It predicts evidence that can distinguish it from competing explanations.
When it is repeated, predictable, safe to guard and provides durable value when automated.
Treat both as hypotheses and gather discriminating evidence; temporal correlation alone does not prove the deployment caused the incident.
Progress is saved in this browser immediately. When you sign in to My Learning, it can also sync across devices.
Attempt the core lab and knowledge checks before marking the module complete.