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/config/environment_variable_support.md b/content/en/opentelemetry/config/environment_variable_support.md index a659979922c..f1e8375ce56 100644 --- a/content/en/opentelemetry/config/environment_variable_support.md +++ b/content/en/opentelemetry/config/environment_variable_support.md @@ -41,6 +41,12 @@ The precedence rules on this page describe how *Datadog SDKs* resolve configurat 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]. 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..38241d943d9 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][5], ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -136,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/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..7bc6f6a8d6d 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][3], ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -114,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/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..d3aab7c3f1a 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][2], ensure the Datadog Agent is listening for DogStatsD traffic on port 8125 (UDP). OTel configuration does not route Runtime Metrics through OTLP. ## Setup @@ -125,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 cbdbbea2733..8117567e8aa 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][2], 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 ``` @@ -129,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/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..c0d172e12f8 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. @@ -564,11 +568,11 @@ 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/ [2]: https://app.datadoghq.com/organization-settings/api-keys/ [3]: https://helm.sh 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: 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 | diff --git a/layouts/shortcodes/otel-overview-native.en.md b/layouts/shortcodes/otel-overview-native.en.md index e816daa8758..f8dd307c409 100644 --- a/layouts/shortcodes/otel-overview-native.en.md +++ b/layouts/shortcodes/otel-overview-native.en.md @@ -12,10 +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. This means you can write code against the standard OTel interfaces without needing the official OpenTelemetry SDK.
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/ \ No newline at end of file +[100]: /developers/dogstatsd/