Datadog and OpenTelemetry Compatibility
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.
The following setups are supported:
The Agent with embedded OTel Collector (Preview) supports two data flow options:
OTel SDK → embedded Collector, orDatadog SDK → Datadog AgentThe following table shows Datadog feature compatibility across different setups:
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 | | | | | |
Setups using the OpenTelemetry SDK follow the OpenTelemetry Runtime Metrics specification.
To enable full RUM functionality, you need to inject supported headers to correlate RUM and traces.
Span-level or endpoint-level monitoring is not supported.
For more information, see Cloud Network Monitoring Setup.
For OTel to Datadog Agent (OTLP), you must enable the Process Agent.
For unsupported languages in OpenTelemetry setups, configure telemetry tagging to link data to a specific commit.
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.
Additional helpful documentation, links, and articles: