The hidden gems of distributed tracing
summary
Demo code wires Helidon (frontend) and Quarkus (backend) into Jaeger via an OpenTelemetry collector, exporting span metrics to Prometheus; traces show intermittent 504s, pod restarts and cache hit counts so the faulty endpoint (/activity) and offending versions are identifiable. Uses a Trace-Debug-ID header to mark local/debug traces, compares batch span processor vs simple processing, and combines Jaeger samplers (probabilistic 0.8, rate limit 5 rps) with tail-based sampling policies in the collector to avoid oversampling while still capturing error and latency spikes.
AI-written summary · about
chapters (17)
- 0:00Introduction to talk
- 1:07Why distributed tracing
- 5:01Evolution of tracing standards
- 7:28How tracing works in practice
- 10:17OpenTelemetry configuration guide
- 12:01Demo setup overview
- 17:36Analyzing application errors
- 20:05Debugging with custom headers
- 24:20Correlating traces and metrics
- 25:27Prometheus query and analysis
- 26:53Caching behavior analysis
- 28:18Helidon and Quarkus implementation
- 29:19Sampling strategies explained
- 30:22Tail-based sampling policies
- 32:48Avoiding oversampling
- 33:50Code and resources overview
- 35:03Q&A session
related talks
39mThe Hidden Gems of Distributed Tracing
50mI'm Tracing you!
01h 14mIntro + Deep Dive: Jaeger
37mDeep Dive: Jaeger – Steve Flanders
31mDistributed Tracing Integration with OpenTelemetry and Knative
37mDeep Dive: Jaeger
37mOpenTelemetry & Distributed Tracing: A Jaeger v2 Deep Dive
34mDistributed Tracing Integration with OpenTelemetry and Knative
