---
title: Datadog and OpenTelemetry Compatibility
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > OpenTelemetry in Datadog > Datadog and OpenTelemetry Compatibility
---

# Datadog and OpenTelemetry Compatibility

## Overview{% #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{% #setups %}

Datadog supports several configurations for using OpenTelemetry. The primary difference between these setups is the choice of SDK (OpenTelemetry or Datadog) and the collector used to process and forward telemetry data.

| Setup Type                                                                                            | API                     | SDK         | Collector/Agent                               |
| ----------------------------------------------------------------------------------------------------- | ----------------------- | ----------- | --------------------------------------------- |
| [**Datadog SDK + DDOT (Recommended)**](https://docs.datadoghq.com/opentelemetry/setup/ddot_collector) | Datadog API or OTel API | Datadog SDK | Datadog Distribution of OTel Collector (DDOT) |
| [**OTel SDK + DDOT**](https://docs.datadoghq.com/opentelemetry/setup/ddot_collector)                  | OTel API                | OTel SDK    | Datadog Distribution of OTel Collector (DDOT) |
| [**OTel SDK + OSS Collector**](https://docs.datadoghq.com/opentelemetry/collector_exporter/)          | OTel API                | OTel SDK    | OTel Collector (OSS)                          |
| [**Direct OTLP Ingest**](https://docs.datadoghq.com/opentelemetry/setup/agentless)                    | OTel API                | OTel SDK    | N/A (Direct to Datadog endpoint)              |

## Feature compatibility{% #feature-compatibility %}

The following table shows feature compatibility across different setups:

| Feature                                                                                                                               | Datadog SDK + DDOT (Recommended) | OTel SDK + DDOT                             | OTel SDK + OSS Collector                    | Direct OTLP Ingest                                                                                      |
| ------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| [Cloud SIEM](https://docs.datadoghq.com/security/cloud_siem/)                                                                         | yes                              | yes                                         | yes                                         | yes                                                                                                     |
| [Correlated Traces, Metrics, Logs](https://docs.datadoghq.com/opentelemetry/correlate/)                                               | yes                              | yes                                         | yes                                         | yes                                                                                                     |
| [Distributed Tracing](https://docs.datadoghq.com/tracing/trace_collection/)                                                           | yes                              | yes                                         | yes                                         | yes                                                                                                     |
| [LLM Observability](https://docs.datadoghq.com/llm_observability/instrumentation/otel_instrumentation/)                               | yes                              | yes                                         | yes                                         | yes                                                                                                     |
| [Runtime Metrics](https://docs.datadoghq.com/tracing/metrics/runtime_metrics/)                                                        | yes                              | yes(Java, .NET, Go only)                    | yes(Java, .NET, Go only)                    | yes(Java, .NET, Go only)                                                                                |
| [Span Links](https://docs.datadoghq.com/tracing/trace_collection/span_links/)                                                         | yes                              | yes                                         | yes                                         | yes                                                                                                     |
| [Trace Metrics](https://docs.datadoghq.com/tracing/metrics/metrics_namespace/)                                                        | yes                              | yes                                         | yes                                         | yes(Sampled (Calculated from spans that reach Datadog; reflects any OTel-side sampling you configure.)) |
| [Database Monitoring](https://docs.datadoghq.com/opentelemetry/correlate/dbm_and_traces/) (DBM)                                       | yes                              | yes                                         |
| [Infrastructure Host List](https://docs.datadoghq.com/infrastructure/list/)                                                           | yes                              | yes                                         | yes                                         |
| [Cloud Network Monitoring](https://docs.datadoghq.com/network_monitoring/performance/) (CNM)                                          | yes                              | yes                                         |
| [Live Container Monitoring/Kubernetes Explorer](https://docs.datadoghq.com/containers/)                                               | yes                              | yes                                         |
| [Live Processes](https://docs.datadoghq.com/infrastructure/process/)                                                                  | yes                              | yes                                         |
| [Universal Service Monitoring](https://docs.datadoghq.com/universal_service_monitoring/) (USM)                                        | yes                              | yes                                         |
| [App and API Protection](https://docs.datadoghq.com/security/application_security/) (AAP)                                             | yes                              |
| [Continuous Profiler](https://docs.datadoghq.com/profiler/)                                                                           | yes                              |
| [Data Observability: Jobs Monitoring](https://docs.datadoghq.com/data_jobs/) (DJM)                                                    | yes                              |
| [Data Streams Monitoring](https://docs.datadoghq.com/data_streams/) (DSM)                                                             | yes                              | N/A (OTel does not offer DSM functionality) | N/A (OTel does not offer DSM functionality) |
| [Real User Monitoring](https://docs.datadoghq.com/opentelemetry/correlate/rum_and_traces/?tab=browserrum#opentelemetry-support) (RUM) | yes                              |
| [Source code integration](https://docs.datadoghq.com/integrations/guide/source-code-integration/)                                     | yes                              |

## API support{% #api-support %}

Datadog SDKs provide support for the OpenTelemetry Traces, Metrics, and Logs APIs across various languages. Find your language in the table below for setup guides and support details.

| Language                                                                           | Traces API | Metrics API         | Logs API            |
| ---------------------------------------------------------------------------------- | ---------- | ------------------- | ------------------- |
| [.NET](https://docs.datadoghq.com/opentelemetry/instrument/api_support/dotnet/)    | yes        | yes                 | yes                 |
| [Python](https://docs.datadoghq.com/opentelemetry/instrument/api_support/python/)  | yes        | yes                 | yes                 |
| [Node.js](https://docs.datadoghq.com/opentelemetry/instrument/api_support/nodejs/) | yes        | yes                 | yes                 |
| [Java](https://docs.datadoghq.com/opentelemetry/instrument/api_support/java/)      | yes        | *Not Yet Supported* | *Not Yet Supported* |
| [Go](https://docs.datadoghq.com/opentelemetry/instrument/api_support/go/)          | yes        | *Not Yet Supported* | *Not Yet Supported* |
| [Ruby](https://docs.datadoghq.com/opentelemetry/instrument/api_support/ruby/)      | yes        | Alpha               | *Not Yet Supported* |
| [PHP](https://docs.datadoghq.com/opentelemetry/instrument/api_support/php/)        | yes        | *Not Yet Supported* | *Not Yet Supported* |

## More details{% #more-details %}

### LLM Observability{% #llm-observability %}

OpenTelemetry traces that have [generative AI attributes](https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-spans/) are automatically converted into LLM Observability traces. To disable this conversion, see [Disabling LLM Observability conversion](https://docs.datadoghq.com/llm_observability/instrumentation/otel_instrumentation/).

### Runtime metrics{% #runtime-metrics %}

- **Datadog SDK setups**: Emit [Runtime Metrics](https://docs.datadoghq.com/tracing/metrics/runtime_metrics/) using DogStatsD (UDP port 8125). Ensure DogStatsD is enabled in your Datadog Agent.
- **OpenTelemetry SDK setups**: Follow the [OpenTelemetry Runtime Metrics](https://docs.datadoghq.com/opentelemetry/integrations/runtime_metrics/) specification and are typically sent using OTLP (port 4317/4318).

### Real User Monitoring (RUM){% #real-user-monitoring-rum %}

To enable full RUM functionality, you need to [inject supported headers](https://docs.datadoghq.com/real_user_monitoring/correlate_with_other_telemetry/apm/) to correlate RUM and traces.

### Cloud Network Monitoring (CNM){% #cloud-network-monitoring-cnm %}

Span-level or endpoint-level monitoring is **not** supported.

For more information, see [Cloud Network Monitoring Setup](https://docs.datadoghq.com/network_monitoring/cloud_network_monitoring/setup/).

### Source Code Integration{% #source-code-integration %}

For unsupported languages in OpenTelemetry setups, [configure telemetry tagging](https://docs.datadoghq.com/integrations/guide/source-code-integration/?tab=go#configure-telemetry-tagging) to link data to a specific commit.

## Support levels{% #support-levels %}

Datadog provides different levels of support for OpenTelemetry components and configurations:

- **Datadog Supported Components**: Datadog-owned components such as the [Datadog Connector](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/connector/datadogconnector/README.md), [Datadog Exporter](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/README.md), and [Infra Attribute Processor](https://github.com/DataDog/datadog-agent/tree/main/comp/otelcol/otlp/components/processor/infraattributesprocessor#readme). These components are maintained by Datadog, receive regular updates, and are prioritized for bug fixes and feature enhancements.

- **Community Supported Components**: OpenTelemetry components [included with the DDOT Collector](https://docs.datadoghq.com/opentelemetry/setup/ddot_collector/#opentelemetry-collector-components) by default. Datadog helps ensure these components are secure, stable, and compatible.

- **Custom Components**: OpenTelemetry components or configurations not included by default, such as [custom Collector components](https://docs.datadoghq.com/opentelemetry/setup/ddot_collector/custom_components) or [instrumentation of unsupported runtimes](https://docs.datadoghq.com/opentelemetry/guide/instrument_unsupported_runtimes). Datadog provides guidance and documentation as a starting point but does not directly support these components' functionality. For issues with custom components, engage with the [OpenTelemetry community](https://opentelemetry.io/community/) or the component maintainers.

## Platform and environment support{% #platform-and-environment-support %}

While the OpenTelemetry Collector can be deployed in many environments, certain platforms have specific limitations or support requirements.

- **AWS EKS Fargate**: This environment is **not currently supported** and will result in incorrect infrastructure host billing when used with the OpenTelemetry Collector. Official support is planned for a future release. See the [Collector setup guide](https://docs.datadoghq.com/opentelemetry/collector_exporter/) for the most up-to-date information.

## Best practices{% #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**: In most cases, you should not use both a Datadog SDK and an OpenTelemetry SDK in the same application, as this leads to undefined behavior.
  - **Exception**: Support for some languages, such as Python, requires both the Datadog SDK and the OpenTelemetry SDK to be installed.
  - Always follow the specific [language-specific instrumentation documentation](https://docs.datadoghq.com/tracing/trace_collection/custom_instrumentation/otel_instrumentation/) to ensure you are using the correct and supported setup.
- **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{% #further-reading %}

- [OpenTelemetry Troubleshooting](https://docs.datadoghq.com/opentelemetry/troubleshooting/)
