**OpenTelemetry (OTel)** is the open source, vendor-neutral observability framework that provides a single SDK, API, and collector for capturing and exporting metrics, logs, and traces from any service. It is the de facto standard for instrumentation — the layer beneath [[Prometheus]], [[Loki]], [[Jaeger]], and [[Tempo]].
---
### First Principle: Instrumentation should be separate from the backend. Instrument once; route to whatever observability tool you choose.
Before OpenTelemetry, changing your tracing backend meant re-instrumenting every service. OTel's SDK captures telemetry in a vendor-neutral format; the OTel Collector routes it to any backend — [[Prometheus]], [[Loki]], [[Jaeger]], [[Tempo]], Datadog, or all of them simultaneously.
---
### Key Considerations
- **Three Pillars**: OTel covers all three observability signals — metrics (OTLP metrics, convertible to [[Prometheus]] format), logs (structured log records), and traces (spans and trace context propagation).
- **OTel Collector**: A standalone service that receives telemetry via OTLP, gRPC, Jaeger, Zipkin, Prometheus, and more — transforms it — and exports to one or more backends. The routing hub of the observability stack.
- **Context Propagation**: OTel standardises how trace context (trace ID, span ID) propagates across service boundaries via W3C Trace Context headers.
- **Auto-Instrumentation**: For many languages (Java, Python, Node.js, Go), OTel provides auto-instrumentation agents that capture spans without code changes.
- **Semantic Conventions**: OTel defines standard attribute names for common operations — making telemetry from different services comparable without custom mappings.
- **Adoption**: All major APM vendors, cloud providers, and observability tools now support OTLP. OpenTelemetry is the plumbing the entire observability ecosystem is standardising on.
---
### How It Fits
```
Services (instrumented via OTel SDK / auto-instrument)
→ OTel Collector (receives, processes, routes)
→ [[Prometheus]] (metrics) + [[Loki]] (logs) + [[Tempo]] / [[Jaeger]] (traces)
→ [[Grafana]] (unified visualisation)
```
[[Prometheus]] | [[Loki]] | [[Jaeger]] | [[Tempo]] | [[Grafana]] | [[Open Source Hyperscaler MoC]]