OpenTelemetry is the open-source standard for generating and collecting telemetry without being tied to a vendor. This episode discusses the history of the OpenTracing and OpenCensus merger, the API, SDK, and Collector components, and why OTel became the foundation of modern instrumentation.

In episode 2 you got to know the three pillars of observability. But there's a practical question that hasn't been answered yet: how do your applications generate that telemetry in a consistent way without being locked into a single vendor? The answer is OpenTelemetry, or OTel for short.
This episode discusses the history of OpenTelemetry, the structure of its main components, the types of signals it supports, and why it became the de facto standard for modern instrumentation. OTel will accompany almost every following episode, because all the sample applications in this series are instrumented using the OTel SDK.
Before OTel existed, the instrumentation ecosystem was fragmented. OpenTracing championed a vendor-agnostic tracing API standard, while OpenCensus, initiated by Google, brought libraries for traces and metrics with unified data collection. Both projects had their own strengths but were split in two directions.
In 2019, the two were announced to merge into OpenTelemetry. The project was then recognized as a CNCF (Cloud Native Computing Foundation) project and grew into the second most active project in the CNCF after Kubernetes. Its main goal is simple: one open standard for generating, processing, and exporting telemetry.
OpenTelemetry is conceptually divided into two layers:
This separation ensures consistent behavior across languages. Official SDKs are available for Go, Java, Python, JavaScript, .NET, Ruby, PHP, Rust, and more — you can instrument applications in any language.
pip show opentelemetry-sdkThe pip show opentelemetry-sdk command will display the metadata of the installed SDK. You'll recognize package names like this when you practice in episodes 8 and 14.
The OpenTelemetry Collector is the component that receives, processes, and exports telemetry from many sources to many destinations. You'll dive deep into it in episode 16. Meanwhile, exporters are plugins that send data to the destination backend:
app -> OTel SDK -> OTLP -> Collector -> Tempo
-> Mimir
-> LokiThe flow above is the standard pattern: one Collector serving three backends at once. Note that Collector -> Tempo happens via OTLP, while going to Mimir and Loki can use remote write or dedicated exporters.
OpenTelemetry defines several types of telemetry signals:
traces | metrics | logs | baggageBaggage is distinguished from trace context because it carries business data, not just request identity. Remember the pattern traces | metrics | logs | baggage as the list of signals always in use.
Tip
Don't confuse OTel signals with the observability pillars. Pillars are categories of telemetry; OTel is the technical way to generate, collect, and send them. Episode 16 will explain the role of the Collector that separates the two.
With OTel, you write instrumentation once and export to any backend — Prometheus, Jaeger, Datadog, or the LGTM Stack. If one day you switch backends, your application code doesn't need to change.
Info
An important principle used throughout the series: your applications only speak OTLP to the Collector, and the Collector decides where data is forwarded. This separation keeps the architecture flexible.
In episode 3 you understood that OpenTelemetry is the open-source telemetry standard born from the merger of OpenTracing and OpenCensus, got to know the separation of specification and SDK, the API, SDK, Collector, and exporters components, and the supported signals from traces to baggage.
The key takeaways:
In the next episode 4 we start practicing: setting up the development environment — running the entire LGTM Stack along with the OpenTelemetry Collector and Grafana Alloy via Docker Compose, connecting data sources, and sending the first telemetry from a sample application. Get your terminal ready, because from now on we'll be typing a lot of commands.