From 92d11b5c80bab933cd7b7308a6045dfb047167f8 Mon Sep 17 00:00:00 2001 From: May Lee Date: Fri, 31 Jul 2026 14:45:05 -0400 Subject: [PATCH 1/5] add doc --- config/_default/menus/main.en.yaml | 15 ++- .../destinations/_index.md | 2 + .../destinations/opentelemetry.md | 95 +++++++++++++++++++ .../guide/environment_variables.md | 3 + .../destination_env_vars/opentelemetry.md | 5 + 5 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 content/en/observability_pipelines/destinations/opentelemetry.md create mode 100644 layouts/shortcodes/observability_pipelines/configure_existing_pipelines/destination_env_vars/opentelemetry.md diff --git a/config/_default/menus/main.en.yaml b/config/_default/menus/main.en.yaml index 85d749e0ac6..cb366e4d114 100644 --- a/config/_default/menus/main.en.yaml +++ b/config/_default/menus/main.en.yaml @@ -7051,31 +7051,36 @@ menu: parent: observability_pipelines_destinations identifier: observability_pipelines_opensearch weight: 420 + - name: OpenTelemetry + url: observability_pipelines/destinations/opentelemetry + parent: observability_pipelines_destinations + identifier: observability_pipelines_destinations_opentelemetry + weight: 421 - name: SentinelOne url: observability_pipelines/destinations/sentinelone parent: observability_pipelines_destinations identifier: observability_pipelines_sentinelone - weight: 421 + weight: 422 - name: Socket url: observability_pipelines/destinations/socket parent: observability_pipelines_destinations identifier: observability_pipelines_socket - weight: 422 + weight: 423 - name: Splunk HEC url: observability_pipelines/destinations/splunk_hec/logs/ parent: observability_pipelines_destinations identifier: observability_pipelines_splunk_hec - weight: 423 + weight: 424 - name: Sumo Logic Hosted Collector url: observability_pipelines/destinations/sumo_logic_hosted_collector parent: observability_pipelines_destinations identifier: observability_pipelines_sumo_logic_hosted_collector - weight: 424 + weight: 425 - name: Syslog url: observability_pipelines/destinations/syslog parent: observability_pipelines_destinations identifier: observability_pipelines_syslog - weight: 425 + weight: 426 - name: Packs url: observability_pipelines/packs/ parent: observability_pipelines diff --git a/content/en/observability_pipelines/destinations/_index.md b/content/en/observability_pipelines/destinations/_index.md index df7a2e99197..68f1a673789 100644 --- a/content/en/observability_pipelines/destinations/_index.md +++ b/content/en/observability_pipelines/destinations/_index.md @@ -77,12 +77,14 @@ These are the available destinations: - [Datadog Metrics][1] - [Elasticsearch][2] - [HTTP/S Client][3] +- [OpenTelemetry][5] - [Splunk HEC][4] [1]: /observability_pipelines/destinations/datadog_metrics/ [2]: /observability_pipelines/destinations/elasticsearch/ [3]: /observability_pipelines/destinations/http_client/ [4]: /observability_pipelines/destinations/splunk_hec/metrics +[5]: /observability_pipelines/destinations/opentelemetry/ {{% /tab %}} {{< /tabs >}} diff --git a/content/en/observability_pipelines/destinations/opentelemetry.md b/content/en/observability_pipelines/destinations/opentelemetry.md new file mode 100644 index 00000000000..00cea33e3a4 --- /dev/null +++ b/content/en/observability_pipelines/destinations/opentelemetry.md @@ -0,0 +1,95 @@ +--- +title: OpenTelemetry Destination +disable_toc: false +products: +- name: Metrics + icon: metrics + url: /observability_pipelines/configuration/?tab=metrics#pipeline-types +--- + +{{< product-availability >}} + +## Overview + +Use Observability Pipelines' OpenTelemetry destination to send metrics over HTTP/S to an OpenTelemetry (OTel) Collector or other OTLP-compatible endpoint. + +**Note**: If you use the OpenTelemetry destination for your pipeline, you **must** use the OpenTelemetry source because the Worker cannot convert events to OpenTelemetry Protocol (OTLP) format. + +## Set up destination + +
For Secrets Management: Only enter the identifier for the HTTP/S Client URI and, if applicable, the TLS key pass. Do not enter the actual values.
+ +Configure the OpenTelemetry destination when you [set up a pipeline][3]. You can set up a pipeline in the [UI][1], using the [API][4], or with [Terraform][5]. The steps in this section are configured in the UI. + +After you select the OpenTelemetry destination in the pipeline UI, enter the identifier for your HTTP/S Client URI. If you leave it blank, the [default](#secret-defaults) is used. + +**Notes**: +- The Worker can only send counter, gauge, and histogram metrics to OpenTelemetry. OpenTelemetry does not support other metrics types so the Worker drops them. See [Filter out unsupported metrics](#filter-out-unsupported-metrics) for more information. +- If you are sending your metrics to a Prometheus OTLP receiver, set your OTLP receiver to allow out-of order samples. Otherwise, the Prometheus OTLP receiver rejects the out of order sample and the Worker logs a bad request error and drops the batch of metrics. +- If you enter secret identifiers and then choose to use environment variables, the environment variable is the identifier entered and prepended with `DD_OP_`. For example, if you entered `PASSWORD_1` for a password identifier, the environment variable for that password is `DD_OP_PASSWORD_1`. + +### Optional settings + +#### Enable TLS + +{{% observability_pipelines/tls_settings %}} + +#### Buffering + +{{% observability_pipelines/destination_buffer %}} + +## Filter out unsupported metrics + +The Worker can only send counter, gauge, and histogram metrics to OpenTelemetry. The following Datadog metrics are not supported because they cannot be converted to OTLP format: + +- StatsD-type metrics +- Distribution metrics +- Sketch metrics + +If one of these metrics is in a batch to be encoded and sent to OpenTelemetry, the Worker drops the unsupported metric, logs an error, and updates the `component_error_total` metric. Datadog recommends using a [filter processor][9] to filter out unsupported metric types. + +## Secret defaults + +{{% observability_pipelines/set_secrets_intro %}} + +{{< tabs >}} +{{% tab "Secrets Management" %}} + +- HTTP/S Client URI endpoint identifier + - References the HTTP/S URI endpoint to which the Worker sends OpenTelemetry data. For example: `http://localhost:4319/v1/metrics`. + - The default identifier is `DESTINATION_OTEL_HTTP_CLIENT_URI`. +- HTTP/S Client TLS passphrase identifier (when TLS is enabled): + - The default identifier is `DESTINATION_OTEL_HTTP_CLIENT_KEY_PASS`. + +{{% /tab %}} + +{{% tab "Environment Variables" %}} + +{{% observability_pipelines/configure_existing_pipelines/destination_env_vars/opentelemetry %}} + +{{% /tab %}} +{{< /tabs >}} + +## Metrics + +For [component metrics][6] and [destination buffer metrics][7] emitted by all destinations, see the [Pipelines Usage Metrics][8] documentation. To filter or group by OpenTelemetry destination metrics, use the tag `component_type:opentelemetry`. + +## How the destination works + +### Event batching + +A batch of events is flushed when one of these conditions occurs. See [event batching][2] for more information. + +| Maximum Events | Maximum Size (MB) | Timeout (seconds) | +|----------------|-------------------|---------------------| +| TKTK | TKTK | TKTK | + +[1]: https://app.datadoghq.com/observability-pipelines +[2]: /observability_pipelines/destinations/#event-batching +[3]: /observability_pipelines/configuration/set_up_pipelines/ +[4]: /api/latest/observability-pipelines/ +[5]: https://registry.terraform.io/providers/datadog/datadog/latest/docs/resources/observability_pipeline +[6]: /observability_pipelines/monitoring_and_troubleshooting/pipeline_usage_metrics/#component-metrics +[7]: /observability_pipelines/monitoring_and_troubleshooting/pipeline_usage_metrics/#destination-buffer-metrics +[8]: /observability_pipelines/monitoring_and_troubleshooting/pipeline_usage_metrics/ +[9]: /observability_pipelines/processors/filter/ diff --git a/content/en/observability_pipelines/guide/environment_variables.md b/content/en/observability_pipelines/guide/environment_variables.md index 3d231af5ff5..c6e559036f2 100644 --- a/content/en/observability_pipelines/guide/environment_variables.md +++ b/content/en/observability_pipelines/guide/environment_variables.md @@ -125,6 +125,9 @@ Some Observability Pipelines components require setting up environment variables ### OpenSearch {{% observability_pipelines/configure_existing_pipelines/destination_env_vars/opensearch %}} +### OpenTelemetry +{{% observability_pipelines/configure_existing_pipelines/destination_env_vars/opentelemetry %}} + ### SentinelOne {{% observability_pipelines/configure_existing_pipelines/destination_env_vars/sentinelone %}} diff --git a/layouts/shortcodes/observability_pipelines/configure_existing_pipelines/destination_env_vars/opentelemetry.md b/layouts/shortcodes/observability_pipelines/configure_existing_pipelines/destination_env_vars/opentelemetry.md new file mode 100644 index 00000000000..e409d9ff0b6 --- /dev/null +++ b/layouts/shortcodes/observability_pipelines/configure_existing_pipelines/destination_env_vars/opentelemetry.md @@ -0,0 +1,5 @@ +- HTTP/S client URI endpoint: + - The HTTP/S URI endpoint to which the Worker sends OpenTelemetry data. For example: `http://localhost:4319/v1/metrics`. + - The default environment variable is `DD_OP_DESTINATION_OTEL_HTTP_CLIENT_URI`. +- HTTP/S Client TLS passphrase (when enabled): + - The default environment variable is `DD_OP_DESTINATION_OTEL_HTTP_CLIENT_KEY_PASS`. From d6b23102e745bc2c5cf3bfa5a234f1297699aa17 Mon Sep 17 00:00:00 2001 From: May Lee Date: Fri, 31 Jul 2026 15:09:55 -0400 Subject: [PATCH 2/5] remove note --- .../en/observability_pipelines/destinations/opentelemetry.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/content/en/observability_pipelines/destinations/opentelemetry.md b/content/en/observability_pipelines/destinations/opentelemetry.md index 00cea33e3a4..94b5d21e49c 100644 --- a/content/en/observability_pipelines/destinations/opentelemetry.md +++ b/content/en/observability_pipelines/destinations/opentelemetry.md @@ -13,8 +13,6 @@ products: Use Observability Pipelines' OpenTelemetry destination to send metrics over HTTP/S to an OpenTelemetry (OTel) Collector or other OTLP-compatible endpoint. -**Note**: If you use the OpenTelemetry destination for your pipeline, you **must** use the OpenTelemetry source because the Worker cannot convert events to OpenTelemetry Protocol (OTLP) format. - ## Set up destination
For Secrets Management: Only enter the identifier for the HTTP/S Client URI and, if applicable, the TLS key pass. Do not enter the actual values.
From ff89786f85bd42dd91f5902cc44a7752ecef4e1e Mon Sep 17 00:00:00 2001 From: May Lee Date: Fri, 31 Jul 2026 16:04:01 -0400 Subject: [PATCH 3/5] Apply suggestion from @maycmlee --- .../en/observability_pipelines/destinations/opentelemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/observability_pipelines/destinations/opentelemetry.md b/content/en/observability_pipelines/destinations/opentelemetry.md index 94b5d21e49c..50b26e739b4 100644 --- a/content/en/observability_pipelines/destinations/opentelemetry.md +++ b/content/en/observability_pipelines/destinations/opentelemetry.md @@ -11,7 +11,7 @@ products: ## Overview -Use Observability Pipelines' OpenTelemetry destination to send metrics over HTTP/S to an OpenTelemetry (OTel) Collector or other OTLP-compatible endpoint. +Use Observability Pipelines' OpenTelemetry destination to send metrics over HTTP/S to an OpenTelemetry (OTEL) Collector or other OTLP-compatible endpoint. ## Set up destination From 8addd0736437c8c62d54c669da436f37b8540432 Mon Sep 17 00:00:00 2001 From: May Lee Date: Fri, 31 Jul 2026 16:40:50 -0400 Subject: [PATCH 4/5] small edit --- .../en/observability_pipelines/destinations/opentelemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/observability_pipelines/destinations/opentelemetry.md b/content/en/observability_pipelines/destinations/opentelemetry.md index 50b26e739b4..c1d250d1d73 100644 --- a/content/en/observability_pipelines/destinations/opentelemetry.md +++ b/content/en/observability_pipelines/destinations/opentelemetry.md @@ -23,7 +23,7 @@ After you select the OpenTelemetry destination in the pipeline UI, enter the ide **Notes**: - The Worker can only send counter, gauge, and histogram metrics to OpenTelemetry. OpenTelemetry does not support other metrics types so the Worker drops them. See [Filter out unsupported metrics](#filter-out-unsupported-metrics) for more information. -- If you are sending your metrics to a Prometheus OTLP receiver, set your OTLP receiver to allow out-of order samples. Otherwise, the Prometheus OTLP receiver rejects the out of order sample and the Worker logs a bad request error and drops the batch of metrics. +- If you are sending your metrics to a Prometheus OTLP receiver, set your OTLP receiver to allow out-of-order samples. Otherwise, the Prometheus OTLP receiver rejects the out of order sample and the Worker logs a bad request error and drops the batch of metrics. - If you enter secret identifiers and then choose to use environment variables, the environment variable is the identifier entered and prepended with `DD_OP_`. For example, if you entered `PASSWORD_1` for a password identifier, the environment variable for that password is `DD_OP_PASSWORD_1`. ### Optional settings From 8e3cee3521225781670964baef70b6fcac186e4e Mon Sep 17 00:00:00 2001 From: May Lee Date: Fri, 31 Jul 2026 16:42:24 -0400 Subject: [PATCH 5/5] another small edit --- .../en/observability_pipelines/destinations/opentelemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/observability_pipelines/destinations/opentelemetry.md b/content/en/observability_pipelines/destinations/opentelemetry.md index c1d250d1d73..85be19941b8 100644 --- a/content/en/observability_pipelines/destinations/opentelemetry.md +++ b/content/en/observability_pipelines/destinations/opentelemetry.md @@ -11,7 +11,7 @@ products: ## Overview -Use Observability Pipelines' OpenTelemetry destination to send metrics over HTTP/S to an OpenTelemetry (OTEL) Collector or other OTLP-compatible endpoint. +Use Observability Pipelines' OpenTelemetry destination to send metrics over HTTP/S to an OpenTelemetry (OTEL) Collector or another OpenTelemetry Protocol (OTLP)-compatible endpoint. ## Set up destination