diff --git a/hugo/content/en/observability_pipelines/sources/opentelemetry.md b/hugo/content/en/observability_pipelines/sources/opentelemetry.md index 37a55de9e92..326e3699efb 100644 --- a/hugo/content/en/observability_pipelines/sources/opentelemetry.md +++ b/hugo/content/en/observability_pipelines/sources/opentelemetry.md @@ -15,13 +15,16 @@ products: - name: Metrics icon: metrics url: /observability_pipelines/configuration/?tab=metrics#pipeline-types +- name: Traces + icon: apm + url: /observability_pipelines/configuration/?tab=traces#pipeline-types --- {{< product-availability >}} ## Overview -Use Observability Pipelines' OpenTelemetry (OTel) source to collect logs or metrics from your OTel Collector through HTTP or gRPC. +Use Observability Pipelines' OpenTelemetry (OTel) source to collect logs, metrics, or traces ({{< tooltip text="in Preview" tooltip="Traces for Observability Pipelines is in Preview. Contact your account manager to request access." >}}) from your OTel Collector through HTTP or gRPC. **Notes**: - If you are using the Datadog Distribution of OpenTelemetry (DDOT) Collector, use the OpenTelemetry source to [send data to Observability Pipelines](#send-data-from-the-datadog-distribution-of-opentelemetry-collector-to-observability-pipelines). @@ -160,6 +163,42 @@ Set the listener address environment variables to the following default values. - HTTP listener address: `worker:4318` - gRPC listener address: `worker:4317` +{{% /tab %}} +{{% tab "Traces" %}} + +
Traces for Observability Pipelines is in Preview. Contact your account manager to request access.
+ +### HTTP configuration example + +The Worker exposes the HTTP endpoint on port 4318, which is the default port. You can configure the port value in the Worker. + +For example, to configure an OTel trace exporter over HTTP in Python: + +```python + from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter + http_exporter = OTLPSpanExporter( + endpoint="http://worker:4318/v1/traces" + ) +``` + +### gRPC configuration example + +The Worker exposes the gRPC endpoint on port 4317, which is the default port. You can configure the port value in the Worker. + +For example, to configure an OTel trace exporter over gRPC in Python: + +```python + from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter + grpc_exporter = OTLPSpanExporter( + endpoint="grpc://worker:4317" + ) +``` + +Set the listener address environment variables to the following default values. If you configured different port values in the Worker, use those instead. + +- HTTP listener address: `worker:4318` +- gRPC listener address: `worker:4317` + {{% /tab %}} {{< /tabs >}} @@ -250,6 +289,47 @@ To send metrics from the Datadog Distribution of the OpenTelemetry (DDOT) Collec [8]: /observability_pipelines/processors/custom_processor [9]: https://docs.datadoghq.com/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset/?tab=helm#configure-the-opentelemetry-collector +{{% /tab %}} +{{% tab "Traces" %}} + +
Traces for Observability Pipelines is in Preview. Contact your account manager to request access.
+ +To send traces from the Datadog Distribution of the OpenTelemetry (DDOT) Collector: +1. Deploy the DDOT Collector using Helm. See [Install the DDOT Collector as a Kubernetes DaemonSet][5] for instructions. +1. [Set up a pipeline][6] on Observability Pipelines using the [OpenTelemetry source](#set-up-the-source-in-the-pipeline-ui). + 1. (Optional) Datadog recommends adding an [Edit Fields processor][7] to the pipeline that appends the field `op_otel_ddot:true`. + 1. When you install the Worker, for the OpenTelemetry source environment variables: + 1. Set your HTTP listener to `0.0.0.0:4318`. + 1. Set your gRPC listener to `0.0.0.0:4317`. + 1. After you install the Worker and deployed the pipeline, update the OpenTelemetry Collector's [`otel-config.yaml`][9] to include an exporter that sends traces to Observability Pipelines. For example: + ``` + exporters: + otlphttp: + endpoint: http://opw-observability-pipelines-worker..svc.cluster.local:4318 + ... + service: + pipelines: + traces: + exporters: [otlphttp] + ``` + Replace `` with the Kubernetes namespace where the Observability Pipelines Worker is deployed (for example, `default`). + 1. Redeploy the Datadog Agent with the updated [`otel-config.yaml`][9]. For example, if the Agent is installed in Kubernetes: + ``` + helm upgrade --install datadog-agent datadog/datadog \ + --values ./agent.yaml \ + --set-file datadog.otelCollector.config=./otel-config.yaml + ``` + +**Notes**: +- Traces sent from DDOT might have nested objects that prevent Datadog from parsing the traces correctly. To resolve this, Datadog recommends using the [Custom Processor][8] to flatten the nested `resource` object. +- If the DDOT Collector and the Observability Pipelines Worker are running on the same host, their default OTLP receiver ports (4317/4318) may conflict. In a typical Kubernetes deployment, the Collector and the Worker run in separate pods, so this is not an issue. + +[5]: /opentelemetry/setup/ddot_collector/install/kubernetes_daemonset/?tab=datadogoperator +[6]: /observability_pipelines/configuration/set_up_pipelines/ +[7]: /observability_pipelines/processors/edit_fields#add-field +[8]: /observability_pipelines/processors/custom_processor +[9]: https://docs.datadoghq.com/opentelemetry/setup/ddot_collector/install/kubernetes_daemonset/?tab=helm#configure-the-opentelemetry-collector + {{% /tab %}} {{< /tabs >}}