Trace waterfall
checkout 2200ms
├─ auth 45ms
├─ inventory 90ms
└─ db.pool.wait 1700ms
└─ db.query 240ms- Read the evidence before deciding what it means.
- Prefer a hypothesis that explains multiple independent signals.
Follow one request across services using traces, spans, parent-child relationships, attributes and status so latency and errors can be localized.
A trace groups spans that represent units of work. Parent-child relationships describe call structure, while timestamps and durations show where time was spent.
The slowest request path is not necessarily the service with the most spans. Focus on spans that block user-visible completion and on dependency waits.
Head and tail sampling reduce telemetry volume but can discard useful incidents if configured poorly. Sampling policy should preserve enough evidence for reliability/security goals.
checkout 2200ms
├─ auth 45ms
├─ inventory 90ms
└─ db.pool.wait 1700ms
└─ db.query 240msGoal: Parse a synthetic trace and identify the dominant blocking span.
cat > /tmp/spans.csv <<'EOF'
span,parent,duration_ms
checkout,,2200
auth,checkout,45
inventory,checkout,90
db.pool.wait,checkout,1700
db.query,db.pool.wait,240
EOFpython3 - <<'PY'
import csv
r=list(csv.DictReader(open('/tmp/spans.csv')))[1:]
print(max(r,key=lambda x:int(x['duration_ms'])))
PYExplain why a long `db.pool.wait` span supports pool saturation more directly than an application CPU hypothesis.
Tracing is especially valuable when latency spans multiple services and queues.
Send and inspect the bundled sample trace through the Collector.
cd labs/observability-stackdocker compose up -d./send-otlp-trace.shdocker compose logs otel-collector --tail=120 | grep -E "checkout|db.pool.wait|academy-checkout"Three concept checks plus one scenario check. Open each answer only after deciding first.
A timed unit of work within a trace, with context and attributes.
The causal/call structure connecting work within the request.
Work whose latency directly blocks completion of the observed request path.
Waiting for a database connection, not executing the query itself.
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.