Follow this guide to deploy the Datadog Distribution of OpenTelemetry (DDOT) Collector alongside the Datadog Agent on Amazon ECS Fargate. Because ECS Fargate does not support host-based deployments, the Datadog Agent runs as a sidecar container in the same ECS task as your application.
Need additional OpenTelemetry components? If you need components beyond those included in the default package, follow Use Custom OpenTelemetry Components to extend the Datadog Agent's capabilities. For a list of components included by default, see OpenTelemetry Collector components.
The AWS CLI configured with permissions to create and manage ECS task definitions and services.
Network: 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
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
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.
Create an ECS task definition
On ECS Fargate, the Datadog Agent and your application run as containers within the same ECS task. Create an ECS task definition that includes both containers.
The Datadog Agent image must be public.ecr.aws/datadog/agent:latest-full. The latest-full image includes the DDOT Collector. The standard latest image does not.
Use the following task definition as a starting point:
<TASK_FAMILY>: A name for your ECS task definition family.
<DD_API_KEY_SECRET_ARN>: The ARN of the AWS Secrets Manager secret or SSM Parameter Store parameter that contains your Datadog API key. The task execution role must have secretsmanager:GetSecretValue (Secrets Manager) or ssm:GetParameters (SSM) permission to retrieve the secret.
<DATADOG_SITE>: Your Datadog site. Your site is . (Ensure the correct DATADOG SITE is selected on the right.)
<AWS_REGION>: The AWS region where your ECS tasks run (for example, us-east-1).
<APP_CONTAINER_NAME>: The name of your application container.
<APP_IMAGE>: Your application container image.
<SERVICE_NAME>: The name of your service.
<VERSION>: The version of your service.
<ENV>: Your deployment environment (for example, production).
<EXECUTION_ROLE_ARN>: The ARN of your ECS task execution IAM role.
Configure ECS resource detection
The DDOT Collector’s infraattributes processor enriches your telemetry with ECS infrastructure tags when the aws.ecs.task.arn resource attribute is present. To provide this attribute, add the ECS resource detector to your OpenTelemetry SDK.
The ECS resource detector automatically populates the following attributes:
aws.ecs.task.arn
aws.ecs.launchtype (set to fargate)
cloud.provider
Refer to your language’s OpenTelemetry SDK documentation to add the ECS resource detector. For example:
Example application instrumented with the OpenTelemetry API
As an example, you can use the Calendar sample application that’s already instrumented for you. The following code instruments the CalendarService.getDate() method using the OpenTelemetry annotations and API:
Because the DDOT Collector runs as a sidecar container in the same ECS task, your application sends OTLP data to localhost. Add the following environment variables to your application container in the task definition:
Replace <CLUSTER_NAME> with your ECS cluster name, <SERVICE_NAME> with a name for your ECS service, <SUBNET_IDS> with your subnet IDs (comma-separated), and <SECURITY_GROUP_IDS> with your security group IDs.
If you are updating an existing service to a new task definition revision, run:
Use Datadog to explore the observability data for your application.
Logs
View logs to monitor and troubleshoot application and system operations.
Traces
View traces and spans to observe the status and performance of requests processed by your application, with infrastructure metrics correlated in the same trace.
Runtime metrics
Monitor your runtime (JVM) metrics for your applications.
Collector health metrics
View metrics from the DDOT Collector to monitor the Collector health.