Distributed tracing

Traces

Head sampling throws away the interesting requests before it knows they were interesting. Northwind decides after the trace completes.

Two rows of 14 traces, four containing errors. Head sampling at 30% keeps only one of the four error traces; tail sampling keeps all four. 100 TRACES, 4 CONTAINING ERRORS Head sampling at 30% 1 of 4 errors kept Tail sampling all 4 errors kept error trace healthy trace discarded

How traces works

Tail-based by default

The sampling decision happens once the whole trace is assembled, so every error and every request over your latency objective is kept, whatever the rate.

Spans join metrics automatically

Service, endpoint and status labels are shared across signals, so a latency spike on a metric chart links straight to the traces underneath it.

OpenTelemetry native

OTLP in, no proprietary agent required. The collector config is eleven lines and is in the docs.

Specification

The numbers that matter.

Published rather than discovered during a proof of concept.

Traces specifications
SamplingTail-based, policy-driven
Ingest protocolsOTLP gRPC and HTTP, Jaeger, Zipkin
Max span size2 MB
Trace assembly window60 seconds

See traces on your own data.