Xoxoftware - XOXO Creative Studio | Web & Mobile App Development | Fred Cheung | Hong Kong
AWSMonitoring

AWS Distro for OpenTelemetry

AWS-supported distribution of OpenTelemetry — instrument once, send correlated traces, metrics, and logs to multiple observability backends.

Key point

  • AWS Distro for OpenTelemetry (ADOT) is the AWS-supported distribution of the open-source OpenTelemetry (OTel) project — instrument an application once and send traces, metrics, and logs to multiple backends (X-Ray, CloudWatch, Prometheus, Datadog, etc.).
  • ADOT replaces the need for vendor-specific SDKs (X-Ray SDK, CloudWatch Agent for custom metrics) with a single, vendor-neutral instrumentation layer and collector.

Overview

AWS Distro for OpenTelemetry (ADOT) is a secure, production-ready, AWS-supported distribution of the OpenTelemetry project — it provides SDKs, auto-instrumentation agents, and a collector to capture traces, metrics, and logs from applications and send them to one or more observability backends.

ADOT is free to use. Costs come from the destination services (X-Ray, CloudWatch, Prometheus) that receive the telemetry data.


Core Concepts

ConceptDescription
OpenTelemetry (OTel)CNCF open-source standard for collecting traces, metrics, and logs in a vendor-neutral way
ADOT SDKAWS distribution of OTel SDKs for Java, Python, JavaScript, Go, .NET, Ruby, PHP, Swift, and Android
ADOT CollectorA pipeline process that receives, processes, and exports telemetry data to one or more backends
ReceiverCollector component that ingests data (OTLP, Jaeger, Zipkin, StatsD, X-Ray, Prometheus, etc.)
ProcessorCollector component that transforms data in-flight (batching, filtering, attribute modification)
ExporterCollector component that sends data to a backend (X-Ray, CloudWatch, Prometheus, OTLP, Datadog)
Auto-instrumentationAutomatic trace capture without code changes — available for Java, Python, JavaScript, and .NET
OTLPOpenTelemetry Protocol — the standard wire protocol for sending telemetry between components

How ADOT Works

Application (any language)
    → ADOT SDK / Auto-instrumentation Agent
        → ADOT Collector
            ├── Receiver (OTLP, Jaeger, StatsD, X-Ray)
            ├── Processor (batch, filter, attributes)
            └── Exporter(s)
                ├── AWS X-Ray (traces)
                ├── Amazon CloudWatch (metrics + logs)
                ├── Amazon Managed Prometheus (metrics)
                ├── Third-party (Datadog, Splunk, New Relic, etc.)
                └── Any OTLP-compatible backend

Deployment Models

ModelHowBest For
SidecarCollector runs as a sidecar container alongside the appECS, EKS per-pod collection
DaemonCollector runs as a DaemonSet (one per node) or host-level processEKS cluster-wide, EC2 instances
Lambda LayerADOT Lambda Layer adds collector and auto-instrumentation to LambdaServerless tracing
EKS Add-onManaged ADOT add-on installed via EKS console or APISimplified EKS observability
On-premisesCollector installed on any host with outbound HTTPS to AWSHybrid cloud, multi-cloud tracing

Supported Compute Platforms

PlatformIntegration Method
Amazon ECS (Fargate)Sidecar container with ADOT Collector
Amazon ECS (EC2)Sidecar or daemon container
Amazon EKSEKS managed add-on, DaemonSet, or sidecar
AWS LambdaADOT Lambda Layer (auto-instrumentation + collector)
Amazon EC2Install ADOT Collector as a system service
AWS App RunnerBuilt-in OpenTelemetry support
On-premisesInstall ADOT Collector on any Linux, Windows, or container
Other cloudsInstall ADOT Collector with IAM credentials for AWS export

ADOT vs X-Ray SDK vs CloudWatch Agent

CriteriaADOTX-Ray SDKCloudWatch Agent
StandardOpenTelemetry (vendor-neutral, CNCF)AWS-proprietaryAWS-proprietary
Signal typesTraces + metrics + logsTraces onlyMetrics + logs only
Multi-backend exportYes — any OTel-compatible backendX-Ray onlyCloudWatch only
Auto-instrumentationYes (Java, Python, JS, .NET)LimitedNo (agent collects OS metrics)
Vendor lock-inLow — switch backends without re-instrumentHigh — tied to X-RayHigh — tied to CloudWatch
AWS recommendationPreferred for new applicationsSupported, not deprecatedStill recommended for OS-level metrics
Language supportJava, Python, JS, Go, .NET, Ruby, PHP, SwiftJava, Python, JS, Go, .NET, RubyN/A (agent-based, not SDK)

When to Use ADOT vs X-Ray SDK

ScenarioRecommendation
New application — need distributed tracingADOT (AWS recommended)
Existing app already instrumented with X-Ray SDKKeep X-Ray SDK (no need to migrate unless multi-backend is needed)
Need to send traces to both X-Ray and a third-partyADOT (multi-exporter)
Multi-cloud or hybrid — services on AWS + other cloudsADOT (vendor-neutral)
Only need OS-level metrics (CPU, memory, disk)CloudWatch Agent
Need metrics + traces from a single instrumentationADOT
Lambda with minimal setup — traces onlyX-Ray active tracing (simplest) or ADOT Lambda Layer

Common Use Cases

  • Vendor-neutral observability — Instrument once with OpenTelemetry, export to X-Ray for traces and CloudWatch for metrics without separate SDKs.
  • Multi-backend tracing — Send the same trace data to both AWS X-Ray and a third-party APM tool (Datadog, Splunk, New Relic) simultaneously.
  • EKS cluster observability — Deploy ADOT as an EKS managed add-on to collect traces and Prometheus metrics from all pods cluster-wide.
  • Hybrid/multi-cloud tracing — Run ADOT Collector on on-premises or non-AWS servers to send traces to X-Ray for a unified service map.
  • Lambda observability — Add the ADOT Lambda Layer for automatic trace capture with zero code changes via auto-instrumentation.

SAA/SAP Exam Tips

SAA Tip: "Vendor-neutral tracing" or "send traces to multiple backends" → AWS Distro for OpenTelemetry (ADOT). X-Ray SDK sends traces to X-Ray only.

SAP Tip: For new applications, AWS recommends ADOT over the X-Ray SDK. Existing X-Ray SDK instrumentation continues to work — migration is optional.

SAP Tip: ADOT itself is free. Costs are incurred by the destination services (X-Ray per trace, CloudWatch per metric, Prometheus per ingested sample). Factor in multi-backend export when estimating observability costs.


Cross-Cloud Equivalents

ProviderService / SolutionNotes
AWSAWS Distro for OpenTelemetryBaseline
AzureAzure Monitor OpenTelemetry DistroAzure's OTel distribution for .NET, Python, JS
GCPGoogle Cloud OpenTelemetry supportNative OTel integration with Cloud Trace
On-PremisesOpenTelemetry Collector (upstream), Jaeger, Grafana AlloyCommunity OTel collector + backends

Pricing Model

DimensionUnitNotes
ADOT SDKFreeNo charge for the SDK or auto-instrumentation agent
ADOT CollectorFreeNo charge for the collector — runs on existing compute
Destination costsVariesX-Ray: per million traces. CloudWatch: per metric/log GB. Prometheus: per sample ingested.

  • AWS X-Ray — distributed tracing backend that receives traces from ADOT or the X-Ray SDK
  • Amazon CloudWatch — metrics, logs, and alarms — receives metrics and logs from ADOT Collector
  • Amazon ECS and EKS — run ADOT Collector as a sidecar or EKS managed add-on
  • AWS Lambda — add ADOT Lambda Layer for auto-instrumented tracing
Built by Fred Cheung @CookedRicer · Powered by Fumadocs & Github Copilot

On this page