Symptom versus cause
SYMPTOM: checkout good-event ratio below SLO
CAUSE CANDIDATES: DB connection errors · queue saturation · bad release- Page on the user-impacting symptom when urgent.
- Use internal telemetry and change history to narrow the cause.
Use black-box and white-box evidence, the four golden signals and symptom-versus-cause reasoning to build monitoring that supports reliability decisions instead of accumulating dashboards.
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.
A page should normally tell the on-call engineer that a user-relevant symptom requires action. CPU, queue depth or a failed dependency may explain the symptom, but those causes should not automatically page humans when users remain unaffected.
This separation reduces noise while preserving diagnostic depth.
Latency, traffic, errors and saturation provide broad coverage for request-serving systems. They are not a mandatory dashboard template; adapt them to the service and user journey.
Distinguish successful-request latency from fast failures, and treat saturation as capacity pressure rather than simply 100% resource utilization.
Metrics, logs and traces can be correlated to investigate unexpected behaviour. SRE uses these signals in service of reliability outcomes: detection, triage, capacity planning, change validation and post-incident learning.
Averages can look healthy while the p95 or p99 user experience is poor. Use distributions or threshold-based latency SLIs for user-facing decisions, then inspect percentiles as diagnostic context.
High-cardinality labels such as request IDs or unbounded user identifiers can make metrics expensive and unstable. Keep high-cardinality detail in logs/traces and use bounded dimensions in metrics.
For request-serving services, RED asks about rate, errors and duration. For infrastructure resources, USE asks about utilization, saturation and errors.
Neither framework replaces a user SLI; they organize diagnostic evidence around the service-level symptom.
SYMPTOM: checkout good-event ratio below SLO
CAUSE CANDIDATES: DB connection errors · queue saturation · bad releaseGoal: Classify synthetic signals into latency, traffic, errors and saturation, then identify symptom and likely causes.
cat > /tmp/sre-signals.json <<'EOF'
{"request_rate":420,"p95_ms":880,"error_ratio":0.07,"cpu":0.52,"queue_depth":950,"queue_capacity":1000,"deploy":"2026-09-30T10:00:00Z"}
EOFpython3 - <<'PY2'
import json
x=json.load(open('/tmp/sre-signals.json'))
print('traffic_rps',x['request_rate'])
print('latency_p95_ms',x['p95_ms'])
print('errors_pct',x['error_ratio']*100)
print('queue_saturation_pct',x['queue_depth']*100/x['queue_capacity'])
PY2State the user-visible symptom first, then list at least two cause hypotheses including the deployment marker.
Reliability monitoring should tell responders what is broken for users and provide enough context to investigate why.
Generate success, failure and slow traffic, then inspect Prometheus query results.
./ops/setup-sre-local-lab.shcurl -s -o /dev/null http://127.0.0.1:8000/okcurl -s -o /dev/null http://127.0.0.1:8000/slowcurl -s -o /dev/null http://127.0.0.1:8000/fail || truecurl -fsS http://127.0.0.1:9090/api/v1/query --get --data-urlencode 'query=sum by (outcome) (increase(sre_demo_requests_total[5m]))'Three concept checks plus one scenario check.
Latency, traffic, errors and saturation.
Black-box monitoring observes externally visible behaviour; white-box monitoring uses internal system telemetry.
Symptoms express user impact and urgency, while causes are diagnostic hypotheses that can change without requiring a human page.
Saturation; the queue is approaching its limit even though CPU is not.
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.