RousselTMLEARNING

Observability

Analyzing traces in the Jaeger interface

Search for traces, read a timeline, spot the critical path, compare two traces, use the dependency graph and Service Performance Monitoring (SPM).

1. Searching #

Finding the right trace.

Criteria #

CriterionExample
Service and operationcommandes, POST /commande
Tagserror=true, http.status_code=500, produit.id=42
DurationMin 1s
Range and limitLast hour, 20 results

The scatter plot at the top of the results places each trace by date and duration: isolated points at the top are the slow requests to examine first.

2. Reading a trace #

Timeline and critical path.

The timeline #

  • Each row is a span, indented under its parent; the bar shows its position and duration.
  • A span in red is in error; its logs (events) often contain the exception.
  • The critical path (highlighted) is the sequence of spans that determines the total duration: optimizing outside this path does not reduce latency.
  • Staircase spans reveal sequential calls that could be parallelized; dozens of identical spans reveal an N+1 problem.
Good practice: First look for the longest « leaf » span (no children) on the critical path: that is where time is really spent.

Comparing two traces #

The Compare view overlays two traces (a fast one and a slow one) and colors spans present in only one or with different durations: ideal for understanding why the same operation is sometimes slow.

3. Summary views #

Beyond a single trace.

Dependencies and SPM #

ViewContent
System ArchitectureGraph of calls between services, built from traces
Monitor (SPM)Throughput, error rate and latency (RED) per service and operation, from metrics derived from spans
Trace statisticsAggregated statistics of a trace's spans per service and operation

Service Performance Monitoring relies on the OpenTelemetry Collector's spanmetrics connector, which turns spans into metrics stored in Prometheus; Jaeger queries them for the Monitor tab.

connectors:
  spanmetrics:
exporters:
  prometheus: { endpoint: 0.0.0.0:8889 }
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [jaeger_storage_exporter, spanmetrics]
    metrics/spanmetrics:
      receivers: [spanmetrics]
      exporters: [prometheus]

Related articles

Distributed tracing with Jaeger: concepts and architecture

The concepts of distributed tracing (trace, span, context, propagation) and Jaeger: its history, its v2 archi…

Installing Jaeger v2: all-in-one, configuration and storage

Run Jaeger v2 as all-in-one, understand its configuration file (jaeger_storage and jaeger_query extensions, O…

Instrumenting applications for Jaeger with OpenTelemetry

Send traces to Jaeger with OpenTelemetry: auto-instrumentation (Java, Python, Node.js), SDK and manual spans,…

Keep learning

Support us

♥ SUPPORT US

Support RousselTM Learning

Courses, articles, labs and certificates stay free with no intrusive ads. A voluntary contribution, of any amount you choose, pays for hosting, lab environments and new content.

Contribute with PayPal Any amount · card or PayPal accountLearn more
QR code PayPal
Or scan this QR code with your phone

Thank you, every contribution counts!