OpenTelemetry (often shortened to OTel) is a vendor-neutral, open-source collection of APIs, SDKs, and tools for generating, collecting, and exporting telemetry data — traces, metrics, and logs — from your applications and infrastructure.

What it is

OpenTelemetry is a Cloud Native Computing Foundation (CNCF) project — currently its second most active project after Kubernetes. It defines a common specification for how telemetry should be generated and shaped, and ships language-specific implementations (SDKs) that follow that spec for Java, Python, Go, JavaScript/Node.js, .NET, Ruby, PHP, Rust, C++, Swift, and Erlang/Elixir, among others.

Concretely, OpenTelemetry gives you four things:

  • A specification — the data model and semantics that every signal (trace, metric, log) must follow, so telemetry means the same thing regardless of language or backend.
  • APIs — the interfaces your code calls to create spans, record metrics, and emit logs. Stable across SDK versions.
  • SDKs — the reference implementations that process and export the data the API produces (sampling, batching, resource attribution).
  • The Collector — a standalone binary that receives, processes, and exports telemetry, decoupling your app from any specific backend.

A brief history

OpenTelemetry was formed in 2019 by merging two earlier, competing CNCF projects: OpenTracing (distributed tracing) and OpenCensus (Google's stats + tracing library). Both had overlapping goals and incompatible APIs, which fragmented the ecosystem — instrumentation libraries had to pick one or the other, and vendors had to support both. Merging them into a single project meant one API surface, one set of semantic conventions, and one wire protocol that every vendor could target.

💡
Why the merger mattered

Before OpenTelemetry, switching observability vendors often meant rewriting instrumentation. OTel decouples "how you instrument" from "where the data goes" — you change an exporter config, not application code.

What it is not

This trips up almost everyone new to the project, so it's worth stating plainly:

OpenTelemetry isOpenTelemetry is not
An instrumentation and data-collection standardA storage backend or database
A way to generate and ship telemetryA dashboard, alerting, or visualization tool
Vendor-neutral by designOwned or controlled by any single vendor
A wire protocol (OTLP) plus SDKsA replacement for Jaeger, Prometheus, or Grafana

You still need a backend — Jaeger or Tempo for traces, Prometheus or Mimir for metrics, Loki or Elasticsearch for logs — or a commercial observability vendor. OpenTelemetry just makes sure the data getting to that backend is generated in a consistent, portable way.

Why it matters

  • No vendor lock-in. Instrument once with the OTel API; swap the backend by changing an exporter, not your code.
  • One correlated view. Traces, metrics, and logs share the same resource attributes (service name, version, environment) so they can be correlated in a single backend.
  • Ecosystem-wide adoption. Most observability vendors (Datadog, Honeycomb, New Relic, Grafana, Splunk, Dynatrace, and more) accept OTLP natively — OpenTelemetry has effectively become the industry's common telemetry format.
  • Auto-instrumentation. Many popular frameworks and libraries ship OTel instrumentation out of the box, so you get useful traces before writing a single manual span.

The moving parts, at a glance

You'll meet each of these in depth in later guides — for now, just recognize the names:

PieceRole
APIWhat you code against — stable interfaces for creating spans, metrics, and logs.
SDKThe implementation behind the API — processes, batches, and samples telemetry.
InstrumentationCode (auto or manual) that calls the API to produce telemetry.
OTLPOpenTelemetry Protocol — the wire format used to ship telemetry between processes.
CollectorA standalone process that receives, transforms, and routes telemetry to one or more backends.
Takeaway

OpenTelemetry standardizes how telemetry is produced and transported. It deliberately stays out of the business of storing or visualizing that data — that's still your backend's job.