Datadog implementation guide · OpenTelemetry

Sending OpenTelemetry data to Datadog: choose the ingestion path, then govern the pipeline

Datadog accepts OpenTelemetry traces, metrics and logs through the Datadog Agent (with its embedded OpenTelemetry Collector, or by receiving OTLP directly), through an OpenTelemetry Collector you run yourself, or directly over OTLP where neither can run. The path you choose decides which Datadog features you get and where masking and sampling happen. This guide compares the paths against Datadog's current documentation and sets out the governed gateway pipeline Interkey uses for estates with services in several languages.

Interkey is an official Datadog partner. Checked against docs.datadoghq.com on 2 November 2026; Datadog revises its OpenTelemetry guidance regularly, so confirm the current documentation before you build.

In short

  • Datadog's recommended path: the Datadog Agent with the Datadog Distribution of OpenTelemetry (DDOT) Collector.
  • Your own Collector: for teams that want to manage the pipeline themselves, including tail-based sampling and transformations. For new Collector configurations Datadog now recommends its OTLP HTTP exporter with the span_metrics connector; the older Datadog Exporter and Connector remain supported.
  • The Agent as an OTLP receiver: applications send OTLP to the Agent on port 4317 (gRPC) or 4318 (HTTP); log ingestion over OTLP is off by default.
  • Application code does not change between paths: services instrumented with OpenTelemetry send the same OTLP data whichever path receives it.

The ingestion paths Datadog documents

The ingestion paths Datadog documents
PathWhat Datadog says it is forWhere processing runsCheck before choosing
Datadog Agent with DDOT Collector (Datadog's recommendation)Teams that want OpenTelemetry neutrality together with Datadog capabilities such as Fleet Automation and Universal Service MonitoringInside the Agent on each host or node; on Kubernetes, Datadog also documents a DDOT gateway, a separate central Collector service for tail-based sampling and centralised processingAvailability for your Agent version and platform; the components included in DDOT, against the processors your rules need
Your own OpenTelemetry CollectorTeams that manage their own Collector; flexible configuration, including tail-based sampling and data transformationsIn a Collector tier you operate, for example a gateway in KubernetesNeeds the Collector Contrib distribution, v0.154.0 or later when we checked; not supported for serverless or task-based runtimes such as ECS Fargate, EKS Fargate and AWS Lambda
Datadog Agent receiving OTLPApplications point at the Agent instead of a CollectorOn each host or node, inside the AgentTraces and metrics need Agent 7.32.0 or later, logs 7.48.0 or later; OTLP log ingestion is disabled by default "to prevent unexpected logs billing" and must be switched on deliberately
Direct OTLP ingestionEnvironments where running an Agent or Collector is not feasible: serverless, managed platforms, tightly resource-constrained setupsIn Datadog, apart from what each application's SDK doesNo Collector or Agent in your network, so no central masking or tail-based sampling before data leaves your environment; only SDK-level controls, such as head sampling, apply

Features depend on the path. Datadog states that the features available to you depend on these choices, and publishes a feature compatibility table. Read it against your must-have features, such as specific APM views or runtime metrics, before you standardise.

How we choose between them

Start with three questions:

  1. Does the Datadog Agent already run everywhere, and is Datadog the only destination? If yes, start with the Agent: DDOT if you want Collector pipelines managed with the Agent, or plain OTLP receiving for the simplest change.
  2. Do you need to send the same data to more than one destination, keep complete traces for errors and slow requests (tail-based sampling), or rewrite attributes centrally? If yes, you need a gateway tier: your own Collector, or on Kubernetes Datadog's DDOT gateway, provided its included components cover what you need, including exporters for any destination other than Datadog.
  3. Must personal data be masked inside your network for every language in the same way? Masking needs a processing tier you control inside your network, such as your own Collector gateway. If you plan to use DDOT instead, on each node or as a gateway, confirm it includes the processors your masking rules need. Direct ingestion alone cannot do it.

The paths can be combined: the Agent on each node for host and container data, and a Collector gateway for application telemetry from every language.

The reference pipeline for a multi-language estate

In Interkey's reference design, .NET 8, Java (Spring Boot) and Python (FastAPI and Flask) services send OTLP over HTTP to a Collector gateway of at least three replicas that scales with CPU load. The gateway sends traces, metrics and logs to your Datadog site over HTTPS.

  1. OTLP/HTTP :4318

    Python service .NET 8 service Java service
  2. Collector gateway (3+ replicas, autoscaled)

    memory limiter resource detection health-check filter personal-data masking (tail sampling) batch
  3. Datadog site

    HTTPS

Order matters: protect, enrich, filter, mask, sample, batch.

Inside the Collector, order matters:

Inside the Collector, order matters
StageWhy it is there
Memory limiter (always first)Refuses data when the Collector nears its memory limit, instead of crashing
Resource detectionAdds host, cloud and container metadata
Health-check filterDrops spans from liveness and readiness probes before they cost anything
Personal-data maskingDeletes, hashes or masks attributes and log text according to your policy
Tail sampling (optional)Keeps complete traces based on outcome, such as errors and slow requests
Batch (last before export)Groups data to reduce calls; Datadog's Exporter documentation requires a batch processor outside development environments and lists intake size limits, and batches that are too large are rejected with HTTP 413
Read more

Exporter choice in 2026. Interkey's reference design was built on Datadog's Exporter and Connector. For new Collector configurations Datadog now recommends its OTLP HTTP exporter with the span_metrics connector, and states that existing Exporter and Connector configurations remain supported and do not need to migrate. New gateways should follow Datadog's current recommendation; existing ones that work can stay as they are.

Accurate service metrics while sampling traces

Sampling keeps trace storage affordable, but request, error and latency metrics must reflect all traffic, not the sample. The fix is to split the work into two pipelines:

  • Pipeline A receives every span and computes request, error and latency metrics from all traffic.
  • Pipeline B applies sampling and sends only the kept traces to storage.

Datadog's own Collector example follows the same principle, separating trace processing from sampling "so span metrics are computed on all traces".

Read more

Tail-based sampling has a cost. Every span of a trace must reach the same Collector instance, so a first tier of load-balancing Collectors routes spans by trace ID to a second, sampling tier. The OpenTelemetry project notes that tail-sampling components must be stateful and can need significant compute.

A starting sampling policy by environment:

A starting sampling policy by environment
EnvironmentHead sampling (in the application)Tail sampling (in the Collector)Reason
Development / test100%OffFull visibility while debugging
UAT / staging100%Errors + slow + 25% baselineRealistic performance testing
Production, normal volume100%Errors + slow + 10–20% baselineEvery failure kept; predictable cost
Production, very high volume25–50%Errors + slow + 5–10% of the remainderTwo-stage reduction for scale

Logs and metrics are controlled separately: drop debug-level logs in the Collector, and use Datadog log indexes and exclusion filters to decide what is indexed and for how long. Excluded logs are removed from indexes but can still feed Live Tail, generate metrics and be archived. The billing side is covered in What drives your Datadog log bill.

Tags that make traces, metrics and logs line up

Datadog links every trace, metric and log from a service through three reserved tags: env, service and version. With OpenTelemetry you set them as resource attributes, and Datadog maps them:

Datadog tags and OpenTelemetry resource attributes
Datadog tagOpenTelemetry resource attributeSet with
serviceservice.nameOTEL_SERVICE_NAME
envdeployment.environment.name (deployment.environment is deprecated in its favour)OTEL_RESOURCE_ATTRIBUTES
versionservice.versionOTEL_RESOURCE_ATTRIBUTES

Datadog supports deployment.environment.name from Agent 7.58.0, Datadog Exporter v0.110.0 and its OTLP intake. If older Agents or Exporters are still in service, set both environment keys to the same value during the transition. In Kubernetes, also add the labels tags.datadoghq.com/env, tags.datadoghq.com/service and tags.datadoghq.com/version to both the workload and its pod template.

Gateway details that cause production incidents

  • The Datadog site must match your organisation. Set the site parameter to the site shown in the Datadog URL you log in to. A wrong site returns 403 even with a valid API key. Datadog sites are independent of each other, and data cannot be shared across sites.
  • gRPC can pin traffic to one replica. gRPC keeps long-lived connections, so a plain Kubernetes ClusterIP Service may send one client's traffic to a single Collector replica. Prefer OTLP over HTTP from applications, or use a headless Service with client-side load balancing.
  • Egress through a proxy. If the Collector accepts data but sends fail, outbound HTTPS to Datadog's intake for your site is usually blocked. Allow it, and set HTTPS_PROXY on the Collector where egress is proxied.
  • Pin versions. Run a specific Collector image and Java agent release in production, not "latest".
  • Keep the API key out of configuration files. Inject it from your secret manager or a Kubernetes Secret.
  • One host-metrics source per node. Running host metrics in both the Collector and the Datadog Agent double-counts.

Verifying the pipeline, one hop at a time

Each check isolates one hop, so a failure points to its cause.

  1. Collector is healthy:

    the health endpoint answers and the logs show no "refused" or "denied" errors.

  2. API key and site are valid:

    Datadog's key-validation endpoint for your site returns valid.

  3. The Collector accepts OTLP:

    a single synthetic span posted to the Collector returns HTTP 200 and appears in Datadog APM under its test service name.

  4. It holds under load:

    a short load test with the OpenTelemetry telemetry generator produces traces, metrics and logs at a known rate.

  5. Data flows through and out:

    the Collector's own metrics show accepted and sent spans rising together (see the table below).

  6. Pipelines are as configured:

    the Collector's built-in debug pages list the expected pipelines and recent spans.

  7. The application side is wired:

    the service can reach the Collector, and its OTEL_ variables are actually set inside the container.

  8. Datadog returns the data:

    a query from your CI pipeline finds the expected custom metric for the service and environment.

Collector metrics and healthy signals
Collector metricHealthy signal
Accepted spansIncreasing
Refused spansZero; non-zero usually means the memory limiter is pushing back
Sent spansIncreasing, close to accepted, minus what was sampled or filtered
Failed sendsZero; non-zero points to the key, site, network or proxy
Export queue sizeLow and stable; constant growth means egress to Datadog is blocked or too slow

Send the same Collector metrics to Datadog and put a monitor on failed sends, so the pipeline that watches your services is watched too.

Troubleshooting

Troubleshooting
SymptomLikely causeFix
Nothing in Datadog; Collector logs show 403Wrong API key or wrong siteValidate the key; set the site that matches your Datadog login URL
Collector accepts data but failed sends increaseOutbound HTTPS blocked by firewall or proxyAllow egress to Datadog intake for your site; set HTTPS_PROXY on the Collector
Services appear without env or versionResource attributes missingSet OTEL_RESOURCE_ATTRIBUTES with the environment key(s) and service.version
Traces broken into separate pieces per serviceContext propagation mismatchUse the tracecontext and baggage propagators in every service
.NET manual spans missingActivitySource not registeredRegister the source name in the tracing configuration
Logs not linked to tracesLogs sent outside OTLP without trace IDsExport logs over OTLP, or add trace_id and span_id to the log format
Request counts in APM look too lowMetrics computed after samplingCompute metrics from all spans before sampling
Refused spans increasingCollector memory pressureAdd replicas, raise the memory limit or reduce batch size
Duplicate host metricsCollector and Agent both collecting host metricsChoose one host-metrics source per node

What an OpenTelemetry-to-Datadog engagement covers

Interkey is an official Datadog partner and implements and operates Datadog from Riyadh. On a pipeline engagement we work through this checklist with your teams, and each item has a named owner on your side:

What an OpenTelemetry-to-Datadog engagement covers
#TaskTypical owner
1Approve the tagging standard (service, env, version, team)Architecture
2Store the Datadog API key in the secret manager; confirm the Datadog sitePlatform
3Deploy the ingestion path chosen above (Agent with DDOT, Collector gateway, or both)Platform
4Pass verification checks 1–6Platform
5Pilot one Python serviceApplication team
6Pilot one .NET serviceApplication team
7Pilot one Java serviceApplication team
8Prove one cross-language distributed trace end to endArchitecture
9Review personal-data masking rules with security and the data protection officerSecurity
10Agree the sampling policy per environment; measure ingestPlatform and finance
11Build the pipeline-health dashboard and monitorsSRE
12Add business spans and metrics for the top three customer journeysApplication teams

New to OpenTelemetry itself? Start with OpenTelemetry: what it standardises and how to adopt it.

Questions buyers ask

Do we need the Datadog Agent if we run our own Collector?

No. Datadog documents that a Collector can send traces, logs and metrics to Datadog without the Agent. Some Datadog capabilities are tied to the Agent and DDOT, so check the feature compatibility table for what you need.

We already use the Datadog Exporter. Do we have to migrate?

Datadog states that the Datadog Exporter and Connector remain supported and that existing configurations do not need to migrate. For new Collector configurations it recommends the OTLP HTTP exporter with the span_metrics connector.

Will switching on OTLP logs increase our bill?

It can. That is why log ingestion over OTLP is disabled by default on the Agent. Decide which logs are indexed, and for how long, before you enable it: What drives your Datadog log bill.

Can the same telemetry go to Datadog and to another destination?

Yes, if you run your own Collector: one pipeline can export to several destinations, such as Datadog and an internal data lake, without changing application code.

Is there a Datadog site in Saudi Arabia?

Not as of November 2026. Datadog's sites are in the United States, Germany, Japan, Australia and the United Kingdom. Masking in your own network before export is covered in Keeping personal data out of logs and traces, and the wider residency question in Observability data residency in Saudi Arabia.

Next step

Review your OpenTelemetry-to-Datadog design

Tell us which ingestion path you use or are considering, the languages and platforms involved, and what is not working. A specialist from the Riyadh team replies on Saudi working days, in Arabic or English.

Required field

The Riyadh team reviews your request and a specialist replies on Saudi working days, in Arabic or English. Your details are used only to reply to you. Privacy Notice

Or directly

+966-11-2180999 [email protected]

Tawuniya Towers, North Tower, 7th Floor, King Fahad Highway, Olaya, P.O. Box 56835, Riyadh 11564, Saudi Arabia

or Compare the ingestion paths

Published by Interkey. Last updated . Interkey is registered in Riyadh, Saudi Arabia under commercial registration 1010156897.