When to Use ADOT
ADOT is a good fit when you are running containerised workloads on ECS or EKS and want to:- Send application logs, metrics, and traces to Bronto through one Collector
- Avoid CloudWatch log ingestion fees entirely
- Use an AWS-supported, pre-built distribution of the OpenTelemetry Collector without managing it yourself
Supported AWS Services
ADOT collects application logs, metrics, and traces from containerised workloads on:
For Lambda traces, use the ADOT Lambda Layer. For non-containerised AWS services, see the overview.
ADOT forwards the telemetry your workload sends it — it does not automatically discover application telemetry. Instrument your app with the OpenTelemetry SDK so it exports logs, metrics, and traces to the ADOT sidecar or DaemonSet.
What is ADOT?
The AWS Distribution for OpenTelemetry (ADOT) is an AWS-supported build of the OpenTelemetry Collector. It is available as a Docker image and can be deployed as a sidecar container (ECS) or a daemonset (EKS). It collects logs, metrics, and traces from your application via OTLP and forwards them to any OTLP-compatible backend — including Bronto. ADOT itself is free. You pay only for the compute running the container.Bronto Ingestion Endpoints
The
/v1/logs, /v1/metrics, and /v1/traces endpoints accept OTLP protobuf only. Metrics ingestion is in public beta.Setup on ECS (Sidecar)
Add the ADOT container as a sidecar to your ECS task definition. The typical local defaults arelocalhost:4317 for OTLP/gRPC and localhost:4318 for OTLP/HTTP. Use the receiver address, protocol, and TLS settings configured for your task when they differ; the sidecar then forwards the telemetry to Bronto.
ADOT Collector Configuration
Create a collector config file and make it available to the container (via S3, SSM Parameter Store, or a custom image).<REGION> with eu or us. In production, do not bake the API key into the YAML. Inject it into the container from AWS Secrets Manager as BRONTO_API_KEY, then use ${env:BRONTO_API_KEY} as the header value. ADOT also accepts the complete configuration through AOT_CONFIG_CONTENT, which can be populated from a protected SSM parameter at deployment time.
ECS Task Definition (sidecar container)
http://localhost:4317 over gRPC or http://localhost:4318 over HTTP. The exact host, port, protocol, and TLS settings depend on the task’s network mode and your Collector configuration.
Setup on EKS (DaemonSet)
Deploy ADOT as a DaemonSet so one collector pod runs per node. Application pods export telemetry to the node’s collector via the node IP or a local service.ConfigMap named adot-config.
Data Organization
ADOT uses OpenTelemetry resource attributes for routing. Bronto mapsservice.name to a Dataset and service.namespace to a Collection — see Data Organization for how datasets, collections, and tags work.
Set these in the resource block of your collector config:
Cost Notes
- No CloudWatch ingestion fees — logs, metrics, and traces go directly from ADOT to Bronto over OTLP/HTTP.
- Compute cost only — you pay for the ECS task or EKS pod running the collector, which is typically small relative to CloudWatch PUT and ingestion charges at scale.
- Compare with the CloudWatch Log Forwarder if your services already write to CloudWatch and the migration cost outweighs the savings.
For assistance, contact support@bronto.io.

