Why it matters

Traces make cross-service debugging tractable. Jaeger is the standard open-source choice. Understanding it enables real microservices ops.

Advertisement

The architecture

Agent: sidecar or per-host, receives spans from services (UDP/gRPC).

Collector: receives spans, processes, sends to storage.

Storage: Elasticsearch, Cassandra typical. Retention days to weeks.

Query + UI: search traces by service, operation, tags. Visualize as timeline.

Jaeger stackServicesemit spansCollector + storageprocess + persistQuery + UIsearch + visualizeSampling reduces volume; tail-based keeps interesting traces
Jaeger components.
Advertisement

How it works end to end

Sampling: head-based (decide at trace start) or tail-based (decide after full trace).

Tail-based keeps error traces, slow traces, sampled fraction of normal. Best of both worlds.

Alternatives: Grafana Tempo (cheaper storage), Zipkin (older, smaller footprint), commercial (Honeycomb, Datadog).