Picture this. A customer says checkout feels slow. You open the logs and find thousands of lines.
Which request was theirs? Which step was slow? Was it just them, or everyone?
Logs alone can't answer all of that. You need three kinds of data about the same request, and a way to connect them.
That's what OpenTelemetry gives you. It has a reputation for being complicated, but the core idea is small.
In this post you'll send traces, metrics and logs from a small FastAPI app into Grafana. The backend is one Docker command. The boilerplate is handled by zero-code instrumentation. You write a few lines yourself for the interesting parts.
Heads up on Python logs: In OpenTelemetry Python, traces and metrics are marked Stable , but logs are still marked Development . Logging works fine for this walkthrough. Just expect the logs side to change more than the other two.
What OpenTelemetry is (and what it isn't)
OpenTelemetry, or OTel for short, is an open standard and a set of tools for producing telemetry.…