OpenTelemetry (OTel)
Open vendor neutral standard for telemetry data (traces, metrics, logs) across all software systems. Now the emerging standard for LLM observability too.
Last updated: April 26, 2026
What Is OpenTelemetry (OTel)?
OpenTelemetry is an open, vendor neutral standard and toolset for generating and exporting telemetry. It reached Graduated maturity in the CNCF on May 11, 2026. It defines the data model and APIs for traces, metrics and logs, SDKs for most major languages, the OTLP wire protocol, and the Collector, a vendor agnostic service that receives, processes and exports telemetry data. The point is portability: instrument once with OTel, and the data can go to Datadog, Honeycomb, Grafana, Langfuse or another backend by changing exporter configuration, not application code. LangSmith and Phoenix, two LLM focused platforms, both accept traces over OpenTelemetry.
For LLM applications the relevant part is the GenAI semantic conventions: agreed span names, attributes and metrics for model calls, agents and tool execution. They are in Development status as of October 2026 and now live in their own repository, so pin instrumentation package versions and read release notes before upgrading. OpenLLMetry, built on OpenTelemetry, is one community option for instrumenting LLM libraries. The SDKs also read standard variables such as OTEL_SERVICE_NAME and OTEL_EXPORTER_OTLP_ENDPOINT, so the destination can change per environment without a code change.
Code Example
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
resource = Resource.create({"service.name": "support-agent"})
provider = TracerProvider(resource=resource)
provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter()))
tracer = provider.get_tracer("support-agent")
with tracer.start_as_current_span("chat example-model"):
pass
provider.shutdown() # flushes the batch processor before exitMinimal tracer setup with a service name and a console exporter. For a Collector or backend, swap in an OTLP exporter from the opentelemetry-exporter-otlp-proto-http package. Calling shutdown flushes the batch processor.
When Should You Use OpenTelemetry (OTel)?
Default to OTel for any new instrumentation. Even if you start with one observability vendor, OTel preserves your option to switch later without rewriting code. A vendor SDK can be quicker to start with if you will never send data anywhere else, but you give up that portability. Use sampling to control volume.
Common Questions
Is OpenTelemetry a backend?
No. It defines APIs, SDKs, a protocol and the Collector, but it does not store or display data. You still need a backend such as Grafana, Honeycomb, Datadog or Langfuse to query it.
Sources
Related Terms
Building with OpenTelemetry (OTel)?
I've shipped this pattern in real production systems. If you want a second pair of eyes on your architecture, that's what I do.