**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]]