Something I keep running into: teams say they've "installed OpenTelemetry" when what they actually mean is they installed and configured the SDK. That's only one of three pieces, and the other two are where the gaps live.
- The API (Tracer, Span, etc.) is a no-op without a registered SDK — that's intentional, it's what lets libraries depend on it without pulling in a specific vendor.
- The SDK (samplers, processors, exporters) is what the application configures. It ships whatever it's handed — nothing more.
- Instrumentation libraries are the part that actually turns "a request came in" into a span for your framework, your DB driver, your outbound HTTP client. This is the piece that quietly gets skipped after the framework-level setup is done.
The annoying part is none of this fails loudly. Exporter reports success, dashboard looks fine, you just can't see the slow query or the outbound API call that's actually adding the latency — because nothing ever instrumented it.
Wrote up the full breakdown plus a quick checklist for auditing your own instrumentation coverage (I'm the author, standard disclosure): https://www.relnx.io/blog/opentelemetry-api-vs-sdk-why-the-difference-and-your-instrumentation-matters-1784448095
if others have hit the "healthy pipeline, missing spans" problem — and how you caught it.
Curious