

0 / 2 embers
0 / 3000 xp
click for more info
Complete a lesson to start your streak
click for more info
Difficulty: 4
click for more info
Not enough gems
Cost: 6 gems
1: Tracing
incomplete
2: Installing Jaeger
incomplete
3: Request Tracing
incomplete
4: Instrumenting Traces
incomplete
5: Adding Spans
incomplete
6: Reading Traces
incomplete
7: Distributed Tracing
incomplete
Back
ctrl+,
Next
ctrl+.
This lesson's interactive features are locked, please to keep using them
Let's take a closer look at a full trace in Jaeger. This is my "create shortlink" trace:
You should have seen something similar in the last lesson. Notice a few things:
auth.validate_password span takes a long time. That makes sense; it's checking a password hash.handler.shorten_link span is the actual business logic of the requesthttp.verify_destination child span is taking almost all of the time of the handler.shorten_link span.This check was added with good intentions – who wants to redirect users to a broken link? – but it runs on every shortlink creation request and, aside from auth, is the hottest path in the application.
It tells us something simple: checking the destination URL is by far the most expensive part of the "create shortlink" operation: much slower than actually saving the link to disk.
We use OpenTelemetry + Google's Cloud Trace on Boot.dev. One of our favorite dashboards shows the slowest median traces by HTTP handler across our entire app. It helped us find out that our "boss fight" xp calculations were slowing down lesson submissions... even when a boss fight wasn't active!