Datadog and OpenTelemetry Compatibility
Overview
Datadog offers multiple setup options to accommodate various use cases, from full OpenTelemetry (OTel) implementations to hybrid setups using both OpenTelemetry and Datadog components. This page covers the compatibility between different setups and supported Datadog products and features, helping you choose the best configuration for your needs.
Setups
The following setups are supported:
The Agent with embedded OTel Collector (Preview) supports two data flow options:
OTel SDK → embedded Collector, orDatadog SDK → Datadog AgentFeature compatibility
Supported Datadog features
The following table shows Datadog feature compatibility across different setups:
Supported OpenTelemetry features
The following table shows OpenTelemetry feature compatibility across different setups:
Feature | Full OTel | OTel to Datadog Agent (OTLP) | OTel API with Datadog SDK and Agent | Datadog Agent with embedded OTel Collector (Preview) | Full Datadog |
---|
Span Links | | | | | |
More details
Runtime metrics
Setups using the OpenTelemetry SDK follow the OpenTelemetry Runtime Metrics specification.
Real User Monitoring (RUM)
To enable full RUM functionality, you need to inject supported headers to correlate RUM and traces.
Cloud Network Monitoring (CNM)
Span-level or endpoint-level monitoring is not supported.
For more information, see Cloud Network Monitoring Setup.
Live Processes
For OTel to Datadog Agent (OTLP), you must enable the Process Agent.
Source Code Integration
For unsupported languages in OpenTelemetry setups, configure telemetry tagging to link data to a specific commit.
Best practices
When using Datadog and OpenTelemetry together, Datadog recommends the following best practices to ensure optimal performance and to avoid potential issues:
- Avoid mixed instrumentation: Do not use both a Datadog SDK and an OpenTelemetry SDK to instrument the same application, as this leads to undefined behavior.
- Avoid Agent and separate Collector on same host: Do not run the Datadog Agent and a separate OpenTelemetry Collector on the same host, as this may cause issues. However, you can run Agents and Collectors on different hosts within the same fleet.
Further reading
Additional helpful documentation, links, and articles: