From b3f4f2e770a4321427d0186e4a3b1d6929dcc79b Mon Sep 17 00:00:00 2001 From: Brett Blue Date: Fri, 19 Dec 2025 14:00:49 -0700 Subject: [PATCH 1/8] Clarify SDK vs. API support and feature compatibility. --- content/en/opentelemetry/compatibility.md | 5 +++-- content/en/opentelemetry/instrument/api_support/_index.md | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/content/en/opentelemetry/compatibility.md b/content/en/opentelemetry/compatibility.md index 07ff4451213..9e98ab8d02d 100644 --- a/content/en/opentelemetry/compatibility.md +++ b/content/en/opentelemetry/compatibility.md @@ -59,7 +59,7 @@ Datadog provides support for the OpenTelemetry Traces, Metrics, and Logs APIs ac | [Node.js][33] | {{< X >}} | *Not Yet Supported* | {{< X >}} | | [Java][34] | {{< X >}} | *Not Yet Supported* | *Not Yet Supported* | | [Go][35] | {{< X >}} | *Not Yet Supported* | *Not Yet Supported* | -| [Ruby][36] | {{< X >}} | *Not Yet Supported* | *Not Yet Supported* | +| [Ruby][36] | {{< X >}} | Alpha | *Not Yet Supported* | | [PHP][37] | {{< X >}} | *Not Yet Supported* | *Not Yet Supported* | ## More details @@ -70,7 +70,8 @@ OpenTelemetry traces that have [generative AI attributes](https://opentelemetry. ### Runtime metrics -Setups using the OpenTelemetry SDK follow the [OpenTelemetry Runtime Metrics][1] specification. +- **Datadog SDK setups**: Emit [Runtime Metrics][23] using DogStatsD (UDP port 8125). Ensure DogStatsD is enabled in your Datadog Agent. +- **OpenTelemetry SDK setups**: Follow the [OpenTelemetry Runtime Metrics][1] specification and are typically sent using OTLP (port 4317/4318). ### Real User Monitoring (RUM) diff --git a/content/en/opentelemetry/instrument/api_support/_index.md b/content/en/opentelemetry/instrument/api_support/_index.md index 21cac9ce162..799502ba833 100644 --- a/content/en/opentelemetry/instrument/api_support/_index.md +++ b/content/en/opentelemetry/instrument/api_support/_index.md @@ -26,13 +26,15 @@ The telemetry produced by your running code can be processed, analyzed, and moni {{< img src="/opentelemetry/setup/otel-api-dd-sdk.png" alt="Diagram: OpenTelemetry API with Datadog SDKs sends telemetry data through the OTLP protocol to the Datadog Agent, which forwards to Datadog's platform." style="width:100%;" >}} -**Note:** You can also send your OpenTelemetry API instrumented traces to Datadog using the [OTel Collector][7]. +**Note**: You can also send your OpenTelemetry API instrumented traces to Datadog using the [OTel Collector][7]. By [instrumenting your code with OpenTelemetry APIs][2], your code: - Remains free of vendor-specific API calls. - Does not depend on Datadog SDKs at compile time (only runtime). +**Important**: Do not include the OpenTelemetry SDK in your application's dependencies. The Datadog SDK provides the implementation of the OpenTelemetry API. Including the OpenTelemetry SDK may cause conflicts or unexpected behavior. + To learn more, follow the link for your language: {{< partial name="apm/otel-instrumentation.html" >}} @@ -51,4 +53,4 @@ To learn more, follow the link for your language: [4]: /data_streams/ [5]: /security/application_security/ [6]: /infrastructure/process -[7]: /opentelemetry/setup/collector_exporter/ \ No newline at end of file +[7]: /opentelemetry/setup/collector_exporter/ From 68b74170dbe09ae4811dc6d75f338ea80067dd72 Mon Sep 17 00:00:00 2001 From: Brett Blue Date: Fri, 19 Dec 2025 14:01:21 -0700 Subject: [PATCH 2/8] Add network port requirements. --- .../config/environment_variable_support.md | 14 ++++++++------ layouts/shortcodes/otel-network-requirements.en.md | 7 +++++++ 2 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 layouts/shortcodes/otel-network-requirements.en.md diff --git a/content/en/opentelemetry/config/environment_variable_support.md b/content/en/opentelemetry/config/environment_variable_support.md index 5eebe0f6d26..ee478dfe9d6 100644 --- a/content/en/opentelemetry/config/environment_variable_support.md +++ b/content/en/opentelemetry/config/environment_variable_support.md @@ -35,6 +35,12 @@ This page describes the environment variables Datadog supports for OpenTelemetry
If both Datadog and OpenTelemetry environment variables are set, Datadog takes precedence. Datadog defaults also override OpenTelemetry defaults. See the relevant SDK Configuration page for default values and more information.
+## Network requirements + +{{% otel-network-requirements %}} + +**Note**: Even when `DD_METRICS_OTEL_ENABLED=true`, standard Runtime Metrics are still emitted through DogStatsD. + ## Datadog SDK configuration These environment variables enable the Datadog SDK to ingest OpenTelemetry Metrics and Logs API data. For guides on how to instrument your application, see the [language-specific instrumentation documentation][14]. @@ -47,10 +53,6 @@ These environment variables enable the Datadog SDK to ingest OpenTelemetry Metri : **Description**: Enables the automatic instrumentation components of the Datadog SDK to collect and emit metrics generated by the OTel Metrics API.
**Default**: `false` -`DD_LOGS_OTEL_ENABLED` -: **Description**: Enables the Datadog SDK's native OpenTelemetry Logs API implementation, allowing logs to be collected and exported in OTLP format.
-**Default**: `false` - `DD_LOGS_OTEL_ENABLED` : **Description**: Enables the Datadog SDK to collect and export logs in the OTLP format.
**Notes**: For most languages, this enables support for the OTel Logs API. For .NET, this enables interception of built-in loggers.
@@ -124,7 +126,7 @@ Trace exporter to be used
`OTEL_SDK_DISABLED` : **Description**: Disables the Datadog SDK's OpenTelemetry interoperability for all signals.
-**Notes**: **Notes**: When set to `true`, this effectively sets `DD_TRACE_OTEL_ENABLED=false`, `DD_LOGS_OTEL_ENABLED=false`, and `DD_METRICS_OTEL_ENABLED=false`.
+**Notes**: When set to `true`, this effectively sets `DD_TRACE_OTEL_ENABLED=false`, `DD_LOGS_OTEL_ENABLED=false`, and `DD_METRICS_OTEL_ENABLED=false`.
**Ruby & Go SDKs**: The OpenTelemetry SDK activates automatically upon import and configuration, so this setting is not applicable. ## OTLP Exporter configuration @@ -298,4 +300,4 @@ A comma-separated list of paths to extension jar files, or folders containing ja [13]: https://opentelemetry.io/docs/specs/otel/protocol/exporter/ [14]: /opentelemetry/instrument/api_support/ [15]: https://opentelemetry.io/docs/specs/otel/metrics/sdk_exporters/otlp/#additional-environment-variable-configuration -[16]: /opentelemetry/guide/otlp_delta_temporality/ \ No newline at end of file +[16]: /opentelemetry/guide/otlp_delta_temporality/ diff --git a/layouts/shortcodes/otel-network-requirements.en.md b/layouts/shortcodes/otel-network-requirements.en.md new file mode 100644 index 00000000000..58e30dda741 --- /dev/null +++ b/layouts/shortcodes/otel-network-requirements.en.md @@ -0,0 +1,7 @@ +When using the Datadog SDK with OTel API support, telemetry is transmitted through different protocols depending on the signal source. Ensure the following ports are accessible on your Datadog Agent or Collector: + +| Signal Source | Protocol | Port | Destination Component | +|---------------|----------|------|----------------------| +| OTel Metrics and Logs API | OTLP (gRPC/HTTP) | 4317 / 4318 | Datadog Agent OTLP Receiver or DDOT Collector | +| Datadog Tracing | Datadog trace intake | 8126 (TCP) | Datadog Trace Agent | +| Runtime Metrics | DogStatsD | 8125 (UDP) | DogStatsD Server | From 5e7488c5bb6c1c6d04805e31924aeed0fddf9a87 Mon Sep 17 00:00:00 2001 From: Brett Blue Date: Fri, 19 Dec 2025 14:02:20 -0700 Subject: [PATCH 3/8] Add network requirements to DDOT installation pages. --- .../ddot_collector/install/kubernetes_daemonset.md | 6 +++--- .../ddot_collector/install/kubernetes_gateway.md | 12 ++++++++---- .../setup/ddot_collector/install/linux.md | 6 ++++++ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset.md b/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset.md index 72bd1fe8a87..11e61d24d6e 100644 --- a/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset.md +++ b/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset.md @@ -36,12 +36,12 @@ Install and set up the following on your machine: - [Helm (v3+)][54] - [kubectl][5] -{{< callout btn_hidden="true" >}} -Support for deploying the DDOT Collector on Linux-based bare-metal hosts and virtual machines is in Preview. To get started, follow the Linux documentation. -{{< /callout >}} +**Network**: {{% otel-network-requirements %}} ## Install the Datadog Agent with OpenTelemetry Collector +
This installation is required for both Datadog SDK + DDOT and OpenTelemetry SDK + DDOT configurations. While the Datadog SDK implements the OpenTelemetry API, it still requires the DDOT Collector to process and forward OTLP metrics and logs.
+ ### Select installation method Choose one of the following installation methods: diff --git a/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md b/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md index 98bcfd8aa81..7ea02514444 100644 --- a/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md +++ b/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md @@ -56,11 +56,15 @@ Before you begin, ensure you have the following: * [Helm][3] (v3+). * Datadog Helm chart version 3.156.0 or higher. * [kubectl][4]. +* **Network**: + {{% otel-network-requirements %}} ## Installation and configuration This guide uses the Datadog Helm chart to configure the DDOT Collector gateway. Check out all the available configurations on the [Datadog Helm chart README][8]. +
This installation is required for both Datadog SDK + DDOT and OpenTelemetry SDK + DDOT configurations. While the Datadog SDK implements the OpenTelemetry API, it still requires the DDOT Collector to process and forward OTLP metrics and logs.
+ ### Deploying the gateway with a daemonset To get started, enable both the gateway and the DaemonSet Collector in your `values.yaml` file. This is the most common setup. @@ -287,7 +291,7 @@ targetSystem: "linux" fullnameOverride: "my-gw" datadog: apiKey: - appKey: + appKey: otelCollector: enabled: true # RBAC permissions are required for the k8s resolver in the loadbalancing exporter @@ -545,7 +549,7 @@ For advanced scenarios, you can deploy multiple gateway layers to create a proce receivers: [otlp] exporters: [otlp] ``` - + ## View gateway pods on Fleet Automation The DDOT Collector gateway includes the [Datadog extension][11] by default. This extension exports Collector build information and configurations to Datadog, allowing you to monitor your telemetry pipeline from Infrastructure Monitoring and Fleet Automation. @@ -564,9 +568,9 @@ To view your gateway pods: * **Startup race condition**: When deploying the DaemonSet and gateway in the same release, DaemonSet pods might start before the gateway service is ready, causing initial connection error logs. The OTLP exporter automatically retries, so these logs can be safely ignored. Alternatively, deploy the gateway first and wait for it to become ready before deploying the DaemonSet. * **Ignorable Core Agent Connection Logs**: Gateway pods might generate warning logs about failing to connect to a core Datadog Agent (for example, `grpc: addrConn.createTransport failed to connect`). This occurs because the gateway deployment does not include a core agent in the same pod. These logs are expected and can be safely ignored. This is being actively addressed. - + ## Further reading - + {{< partial name="whats-next/whats-next.html" >}} [1]: https://www.datadoghq.com/free-datadog-trial/ diff --git a/content/en/opentelemetry/setup/ddot_collector/install/linux.md b/content/en/opentelemetry/setup/ddot_collector/install/linux.md index 46cbc69f5f8..202f4da9b80 100644 --- a/content/en/opentelemetry/setup/ddot_collector/install/linux.md +++ b/content/en/opentelemetry/setup/ddot_collector/install/linux.md @@ -29,8 +29,14 @@ To complete this guide, you need the following: - A supported Linux distribution (for example, Debian, Ubuntu, CentOS, RHEL, Fedora, SUSE). - `curl` must be installed to use the one-line installation script. +**Network**: + +{{% otel-network-requirements %}} + ## Install the Datadog Agent with OpenTelemetry Collector +
This installation is required for both Datadog SDK + DDOT and OpenTelemetry SDK + DDOT configurations. While the Datadog SDK implements the OpenTelemetry API, it still requires the DDOT Collector to process and forward OTLP metrics and logs.
+ ### Installation To install the DDOT Collector on a Linux host, use the following one-line installation command: From d3ccb962ebcc3bc0bae68a5d95aaca2a183db4f7 Mon Sep 17 00:00:00 2001 From: Brett Blue Date: Fri, 19 Dec 2025 14:04:49 -0700 Subject: [PATCH 4/8] Update language-specific pages for port requirements. --- .../en/opentelemetry/instrument/api_support/dotnet/logs.md | 4 ++-- .../opentelemetry/instrument/api_support/dotnet/metrics.md | 3 ++- .../en/opentelemetry/instrument/api_support/nodejs/logs.md | 2 +- .../opentelemetry/instrument/api_support/nodejs/metrics.md | 3 ++- .../en/opentelemetry/instrument/api_support/python/logs.md | 2 +- .../opentelemetry/instrument/api_support/python/metrics.md | 3 ++- .../opentelemetry/instrument/api_support/ruby/metrics.md | 5 +++-- layouts/shortcodes/otel-overview-native.en.md | 7 ++++--- 8 files changed, 17 insertions(+), 12 deletions(-) diff --git a/content/en/opentelemetry/instrument/api_support/dotnet/logs.md b/content/en/opentelemetry/instrument/api_support/dotnet/logs.md index 08c53c6b8c9..037bf2065e0 100644 --- a/content/en/opentelemetry/instrument/api_support/dotnet/logs.md +++ b/content/en/opentelemetry/instrument/api_support/dotnet/logs.md @@ -20,7 +20,7 @@ This feature works by intercepting logs from the built-in `Microsoft.Extensions. ## Prerequisites - **Datadog SDK**: `dd-trace-dotnet` version [3.31.0][4] or later. -- **An OTLP-compatible destination**: You must have a destination ready to receive OTLP data, such as the Datadog Agent or OpenTelemetry Collector. +- **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel logs. ## Setup @@ -128,4 +128,4 @@ If you are using Datadog's traditional log injection (where `DD_LOGS_INJECTION=t [3]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core#install-the-tracer [4]: https://github.com/DataDog/dd-trace-dotnet/releases/tag/v3.31.0 [5]: /opentelemetry/instrument/api_support/dotnet/traces -[200]: /opentelemetry/setup/otlp_ingest_in_the_agent/?tab=host#enabling-otlp-ingestion-on-the-datadog-agent \ No newline at end of file +[200]: /opentelemetry/setup/otlp_ingest_in_the_agent/?tab=host#enabling-otlp-ingestion-on-the-datadog-agent diff --git a/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md b/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md index 0c87c7a717f..9f4add7722a 100644 --- a/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md @@ -17,7 +17,8 @@ further_reading: - **.NET Runtime**: Requires .NET 6+ (or `System.Diagnostics.DiagnosticSource` v6.0.0+). See [Version and instrument support](#net-version-and-instrument-support) for a list of supported instruments by version. - **Datadog SDK**: dd-trace-dotnet version 3.30.0 or later. -- **An OTLP-compatible destination**: You must have a destination ready to receive OTLP data, such as the Datadog Agent or OpenTelemetry Collector. +- **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup diff --git a/content/en/opentelemetry/instrument/api_support/nodejs/logs.md b/content/en/opentelemetry/instrument/api_support/nodejs/logs.md index d0a76798f25..647c716eec8 100644 --- a/content/en/opentelemetry/instrument/api_support/nodejs/logs.md +++ b/content/en/opentelemetry/instrument/api_support/nodejs/logs.md @@ -18,7 +18,7 @@ further_reading: - **Datadog SDK**: `dd-trace-js` version 5.73.0 or later. - **OpenTelemetry Logs API**: The `@opentelemetry/api-logs` package is required, in a version from `v0.200.0` up to `v1.0`. -- **An OTLP-compatible destination**: You must have a destination ready to receive OTLP data, such as the Datadog Agent or OpenTelemetry Collector. +- **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel logs.
The @opentelemetry/api-logs package is still experimental, and version 1.0 has not yet been released. New versions of this package may introduce breaking changes that affect compatibility. diff --git a/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md b/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md index 0319fba3bc4..88e3ba2b48b 100644 --- a/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md @@ -18,7 +18,8 @@ further_reading: - **Datadog SDK**: `dd-trace-js` version 5.81.0 or later. - **OpenTelemetry API**: `@opentelemetry/api` version 1.0.0 to 1.10.0. (The Datadog SDK provides the implementation for this API). -- **An OTLP-compatible destination**: You must have a destination ready to receive OTLP data, such as the Datadog Agent or OpenTelemetry Collector. +- **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup diff --git a/content/en/opentelemetry/instrument/api_support/python/logs.md b/content/en/opentelemetry/instrument/api_support/python/logs.md index 01678607a13..27d8316ef1e 100644 --- a/content/en/opentelemetry/instrument/api_support/python/logs.md +++ b/content/en/opentelemetry/instrument/api_support/python/logs.md @@ -16,7 +16,7 @@ further_reading: ## Prerequisites - **Datadog SDK**: `dd-trace-py` version 3.18.0 or later. -- **An OTLP-compatible destination**: You must have a destination ready to receive OTLP data, such as the Datadog Agent or OpenTelemetry Collector. +- **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel logs. ## Setup diff --git a/content/en/opentelemetry/instrument/api_support/python/metrics.md b/content/en/opentelemetry/instrument/api_support/python/metrics.md index 76cc47c2c17..15f5c987d94 100644 --- a/content/en/opentelemetry/instrument/api_support/python/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/python/metrics.md @@ -16,7 +16,8 @@ further_reading: ## Prerequisites - **Datadog SDK**: dd-trace-py version 3.18.0 or later. -- **An OTLP-compatible destination**: You must have a destination ready to receive OTLP data, such as the Datadog Agent or OpenTelemetry Collector. +- **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup diff --git a/content/en/opentelemetry/instrument/api_support/ruby/metrics.md b/content/en/opentelemetry/instrument/api_support/ruby/metrics.md index cbdbbea2733..01c0d75e9f9 100644 --- a/content/en/opentelemetry/instrument/api_support/ruby/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/ruby/metrics.md @@ -18,7 +18,8 @@ further_reading: ## Prerequisites - **Datadog SDK**: `datadog` gem version 2.23.0 or later. -- **An OTLP-compatible destination**: You must have a destination ready to receive OTLP data, such as the Datadog Agent or OpenTelemetry Collector. +- **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -31,7 +32,7 @@ Follow these steps to enable OTel Metrics API support in your Ruby application. gem 'opentelemetry-metrics-sdk', '~> 0.8' gem 'opentelemetry-exporter-otlp-metrics', '~> 0.4' ``` -2. +2. Install dependencies: ```sh bundle install ``` diff --git a/layouts/shortcodes/otel-overview-native.en.md b/layouts/shortcodes/otel-overview-native.en.md index e816daa8758..24d454f830e 100644 --- a/layouts/shortcodes/otel-overview-native.en.md +++ b/layouts/shortcodes/otel-overview-native.en.md @@ -14,8 +14,9 @@ Send custom application {{ $signal }} into Datadog using the OpenTelemetry (OTel {{ if $alternative }}This is an alternative to using {{ $alternative }} and means you can write code against the standard OTel interfaces while benefiting from all the features of the Datadog SDK.{{ else }}You can write code against the standard OTel interfaces whilst benefiting from all the features of the Datadog SDK.{{ end }} -The Datadog SDK provides a native implementation of the OpenTelemetry API. This means you can write code against the standard OTel interfaces without needing the official OpenTelemetry SDK. +The Datadog SDK provides a native implementation of the OpenTelemetry API. -
You should not install the official OpenTelemetry SDK or any OTLP Exporter packages. The Datadog SDK provides this functionality. Installing both can lead to runtime conflicts and duplicate data.
+- **Do** install the standard OpenTelemetry API packages (`io.opentelemetry:opentelemetry-api`) to instrument your code. +- **Do Not** install the OpenTelemetry SDK packages (`opentelemetry-sdk`). The Datadog SDK acts as the implementation provider; installing both can lead to runtime conflicts and duplicate telemetry. -[100]: /developers/dogstatsd/ \ No newline at end of file +[100]: /developers/dogstatsd/ From 24ed5305c191ce1579705fc8251f4cb5fc4e0597 Mon Sep 17 00:00:00 2001 From: Brett Blue Date: Fri, 19 Dec 2025 14:08:51 -0700 Subject: [PATCH 5/8] Undo spacing artifacts. --- .../setup/ddot_collector/install/kubernetes_gateway.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md b/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md index 7ea02514444..c0d172e12f8 100644 --- a/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md +++ b/content/en/opentelemetry/setup/ddot_collector/install/kubernetes_gateway.md @@ -291,7 +291,7 @@ targetSystem: "linux" fullnameOverride: "my-gw" datadog: apiKey: - appKey: + appKey: otelCollector: enabled: true # RBAC permissions are required for the k8s resolver in the loadbalancing exporter @@ -549,7 +549,7 @@ For advanced scenarios, you can deploy multiple gateway layers to create a proce receivers: [otlp] exporters: [otlp] ``` - + ## View gateway pods on Fleet Automation The DDOT Collector gateway includes the [Datadog extension][11] by default. This extension exports Collector build information and configurations to Datadog, allowing you to monitor your telemetry pipeline from Infrastructure Monitoring and Fleet Automation. @@ -570,9 +570,9 @@ To view your gateway pods: * **Ignorable Core Agent Connection Logs**: Gateway pods might generate warning logs about failing to connect to a core Datadog Agent (for example, `grpc: addrConn.createTransport failed to connect`). This occurs because the gateway deployment does not include a core agent in the same pod. These logs are expected and can be safely ignored. This is being actively addressed. ## Further reading - + {{< partial name="whats-next/whats-next.html" >}} - + [1]: https://www.datadoghq.com/free-datadog-trial/ [2]: https://app.datadoghq.com/organization-settings/api-keys/ [3]: https://helm.sh From 896c45fe087db8c94020fa96e75b3c9b092ab297 Mon Sep 17 00:00:00 2001 From: Brett Blue Date: Tue, 23 Dec 2025 17:43:04 -0700 Subject: [PATCH 6/8] Apply changes from review. --- content/en/opentelemetry/instrument/api_support/_index.md | 6 +++--- .../opentelemetry/instrument/api_support/dotnet/metrics.md | 3 ++- .../opentelemetry/instrument/api_support/nodejs/metrics.md | 3 ++- .../opentelemetry/instrument/api_support/python/metrics.md | 3 ++- .../opentelemetry/instrument/api_support/ruby/metrics.md | 3 ++- layouts/shortcodes/otel-overview-native.en.md | 7 +++---- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/content/en/opentelemetry/instrument/api_support/_index.md b/content/en/opentelemetry/instrument/api_support/_index.md index 799502ba833..8bb57f59bd5 100644 --- a/content/en/opentelemetry/instrument/api_support/_index.md +++ b/content/en/opentelemetry/instrument/api_support/_index.md @@ -20,7 +20,7 @@ algolia: tags: ['otel custom instrumentation'] --- -Datadog SDKs provide an implementation of the [OpenTelemetry API][1] for traces, metrics, and logs. This means you can maintain vendor-neutral instrumentation of your services, while still taking advantage of Datadog's native implementation, features, and products. +Datadog SDKs provide an implementation of the [OpenTelemetry API][1] for traces, metrics, and logs. This means you can maintain vendor-neutral instrumentation of your services, while still taking advantage of Datadog's native implementation, features, and products. The telemetry produced by your running code can be processed, analyzed, and monitored alongside Datadog's native telemetry, allowing you to take advantage of Datadog's unified platform and products like [Continuous Profiler][3], [Data Streams Monitoring][4], [App and API Protection][5], and [Live Processes][6]. @@ -33,9 +33,9 @@ By [instrumenting your code with OpenTelemetry APIs][2], your code: - Remains free of vendor-specific API calls. - Does not depend on Datadog SDKs at compile time (only runtime). -**Important**: Do not include the OpenTelemetry SDK in your application's dependencies. The Datadog SDK provides the implementation of the OpenTelemetry API. Including the OpenTelemetry SDK may cause conflicts or unexpected behavior. +## Get started -To learn more, follow the link for your language: +Select your language to view setup instructions: {{< partial name="apm/otel-instrumentation.html" >}} diff --git a/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md b/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md index 9f4add7722a..38241d943d9 100644 --- a/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/dotnet/metrics.md @@ -18,7 +18,7 @@ further_reading: - **.NET Runtime**: Requires .NET 6+ (or `System.Diagnostics.DiagnosticSource` v6.0.0+). See [Version and instrument support](#net-version-and-instrument-support) for a list of supported instruments by version. - **Datadog SDK**: dd-trace-dotnet version 3.30.0 or later. - **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. -- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog [Runtime Metrics][5], ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -137,4 +137,5 @@ Here is the minimum version required for each instrument type: [2]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-framework/#install-the-tracer [3]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/dotnet-core#install-the-tracer [4]: https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.metrics +[5]: /tracing/metrics/runtime_metrics/ [200]: /opentelemetry/setup/otlp_ingest_in_the_agent/?tab=host#enabling-otlp-ingestion-on-the-datadog-agent \ No newline at end of file diff --git a/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md b/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md index 88e3ba2b48b..7bc6f6a8d6d 100644 --- a/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/nodejs/metrics.md @@ -19,7 +19,7 @@ further_reading: - **Datadog SDK**: `dd-trace-js` version 5.81.0 or later. - **OpenTelemetry API**: `@opentelemetry/api` version 1.0.0 to 1.10.0. (The Datadog SDK provides the implementation for this API). - **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. -- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog [Runtime Metrics][3], ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -115,4 +115,5 @@ For more details, see the [OpenTelemetry Node.js onboarding docs][2]. [1]: /opentelemetry/config/environment_variable_support [2]: https://github.com/open-telemetry/opentelemetry-js/blob/4dded45ec67f90998d75e3ddbde9872b6b466183/doc/metrics.md#getting-started +[3]: /tracing/metrics/runtime_metrics/ [200]: /opentelemetry/setup/otlp_ingest_in_the_agent/?tab=host#enabling-otlp-ingestion-on-the-datadog-agent diff --git a/content/en/opentelemetry/instrument/api_support/python/metrics.md b/content/en/opentelemetry/instrument/api_support/python/metrics.md index 15f5c987d94..d3aab7c3f1a 100644 --- a/content/en/opentelemetry/instrument/api_support/python/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/python/metrics.md @@ -17,7 +17,7 @@ further_reading: - **Datadog SDK**: dd-trace-py version 3.18.0 or later. - **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. -- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog [Runtime Metrics][2], ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -126,4 +126,5 @@ If you are currently using the Datadog DogStatsD client and want to migrate to t {{< partial name="whats-next/whats-next.html" >}} [1]: /opentelemetry/config/environment_variable_support +[2]: /tracing/metrics/runtime_metrics/ [200]: /opentelemetry/setup/otlp_ingest_in_the_agent/?tab=host#enabling-otlp-ingestion-on-the-datadog-agent \ No newline at end of file diff --git a/content/en/opentelemetry/instrument/api_support/ruby/metrics.md b/content/en/opentelemetry/instrument/api_support/ruby/metrics.md index 01c0d75e9f9..8117567e8aa 100644 --- a/content/en/opentelemetry/instrument/api_support/ruby/metrics.md +++ b/content/en/opentelemetry/instrument/api_support/ruby/metrics.md @@ -19,7 +19,7 @@ further_reading: - **Datadog SDK**: `datadog` gem version 2.23.0 or later. - **An OTLP-compatible destination**: You must have a destination (Agent or Collector) listening on ports 4317 (gRPC) or 4318 (HTTP) to receive OTel metrics. -- **DogStatsD (Runtime Metrics)**: If you also use Datadog Runtime Metrics, ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. +- **DogStatsD (Runtime Metrics)**: If you also use Datadog [Runtime Metrics][2], ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -130,3 +130,4 @@ If you are using the OTel SDK with your own manual OTLP exporter configuration: {{< partial name="whats-next/whats-next.html" >}} [1]: /opentelemetry/config/environment_variable_support +[2]: /tracing/metrics/runtime_metrics/ diff --git a/layouts/shortcodes/otel-overview-native.en.md b/layouts/shortcodes/otel-overview-native.en.md index 24d454f830e..f8dd307c409 100644 --- a/layouts/shortcodes/otel-overview-native.en.md +++ b/layouts/shortcodes/otel-overview-native.en.md @@ -12,11 +12,10 @@ Send custom application {{ $signal }} into Datadog using the OpenTelemetry (OTel) {{ $signalCap }} API with the Datadog SDK (`{{ $sdk }}`). -{{ if $alternative }}This is an alternative to using {{ $alternative }} and means you can write code against the standard OTel interfaces while benefiting from all the features of the Datadog SDK.{{ else }}You can write code against the standard OTel interfaces whilst benefiting from all the features of the Datadog SDK.{{ end }} +{{ if $alternative }}This is an alternative to using {{ $alternative }} and means you can write code against the standard OTel interfaces while benefiting from all the features of the Datadog SDK.{{ else }}You can write code against the standard OTel interfaces while benefiting from all the features of the Datadog SDK.{{ end }} -The Datadog SDK provides a native implementation of the OpenTelemetry API. +The Datadog SDK provides a native implementation of the OpenTelemetry API. This means you can write code against the standard OTel interfaces without needing the official OpenTelemetry SDK. -- **Do** install the standard OpenTelemetry API packages (`io.opentelemetry:opentelemetry-api`) to instrument your code. -- **Do Not** install the OpenTelemetry SDK packages (`opentelemetry-sdk`). The Datadog SDK acts as the implementation provider; installing both can lead to runtime conflicts and duplicate telemetry. +
You should not install the official OpenTelemetry SDK or any OTLP Exporter packages. The Datadog SDK provides this functionality. Installing both can lead to runtime conflicts and duplicate data.
[100]: /developers/dogstatsd/ From 38e6119f3bedd410ad1e35611c68718bbb268f03 Mon Sep 17 00:00:00 2001 From: Brett Blue Date: Tue, 23 Dec 2025 17:46:44 -0700 Subject: [PATCH 7/8] Revert api_support index change for cleaner branch. --- .../en/opentelemetry/instrument/api_support/_index.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/content/en/opentelemetry/instrument/api_support/_index.md b/content/en/opentelemetry/instrument/api_support/_index.md index 8bb57f59bd5..21cac9ce162 100644 --- a/content/en/opentelemetry/instrument/api_support/_index.md +++ b/content/en/opentelemetry/instrument/api_support/_index.md @@ -20,22 +20,20 @@ algolia: tags: ['otel custom instrumentation'] --- -Datadog SDKs provide an implementation of the [OpenTelemetry API][1] for traces, metrics, and logs. This means you can maintain vendor-neutral instrumentation of your services, while still taking advantage of Datadog's native implementation, features, and products. +Datadog SDKs provide an implementation of the [OpenTelemetry API][1] for traces, metrics, and logs. This means you can maintain vendor-neutral instrumentation of your services, while still taking advantage of Datadog's native implementation, features, and products. The telemetry produced by your running code can be processed, analyzed, and monitored alongside Datadog's native telemetry, allowing you to take advantage of Datadog's unified platform and products like [Continuous Profiler][3], [Data Streams Monitoring][4], [App and API Protection][5], and [Live Processes][6]. {{< img src="/opentelemetry/setup/otel-api-dd-sdk.png" alt="Diagram: OpenTelemetry API with Datadog SDKs sends telemetry data through the OTLP protocol to the Datadog Agent, which forwards to Datadog's platform." style="width:100%;" >}} -**Note**: You can also send your OpenTelemetry API instrumented traces to Datadog using the [OTel Collector][7]. +**Note:** You can also send your OpenTelemetry API instrumented traces to Datadog using the [OTel Collector][7]. By [instrumenting your code with OpenTelemetry APIs][2], your code: - Remains free of vendor-specific API calls. - Does not depend on Datadog SDKs at compile time (only runtime). -## Get started - -Select your language to view setup instructions: +To learn more, follow the link for your language: {{< partial name="apm/otel-instrumentation.html" >}} @@ -53,4 +51,4 @@ Select your language to view setup instructions: [4]: /data_streams/ [5]: /security/application_security/ [6]: /infrastructure/process -[7]: /opentelemetry/setup/collector_exporter/ +[7]: /opentelemetry/setup/collector_exporter/ \ No newline at end of file From 20710c4205943cefcc25d2ad9f79410969b7d22e Mon Sep 17 00:00:00 2001 From: Brett Blue <84536271+brett0000FF@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:50:02 -0700 Subject: [PATCH 8/8] Update terminology from OTel API to OpenTelemetry API --- layouts/shortcodes/otel-network-requirements.en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/shortcodes/otel-network-requirements.en.md b/layouts/shortcodes/otel-network-requirements.en.md index 58e30dda741..61f498dac98 100644 --- a/layouts/shortcodes/otel-network-requirements.en.md +++ b/layouts/shortcodes/otel-network-requirements.en.md @@ -1,4 +1,4 @@ -When using the Datadog SDK with OTel API support, telemetry is transmitted through different protocols depending on the signal source. Ensure the following ports are accessible on your Datadog Agent or Collector: +When using the Datadog SDK with OpenTelemetry API support, telemetry is routed to different components depending on the signal source. Ensure the following ports are accessible on your Datadog Agent or Collector: | Signal Source | Protocol | Port | Destination Component | |---------------|----------|------|----------------------|