AWS Distro for OpenTelemetry (ADOT)
Overview
ADOT provides open source observability components for collecting metrics, traces, and logs.
Install ADOT Operator
helm repo add adot https://aws.github.io/aws-otel-collector
helm repo update
helm install adot-operator adot/aws-otel-collector \
--namespace monitoring \
--create-namespaceCertificate for IRSA
# Create IRSA for ADOT
eksctl create iamserviceaccount \
--name adot-collector \
--namespace monitoring \
--cluster my-cluster \
--attach-role-arn arn:aws:iam::123456789:role/ADOTExecutionRole \
--approveMetrics Collector Configuration
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: my-app-collector
spec:
mode: daemonset
serviceAccount: adot-collector
env:
- name: AWS_REGION
value: us-west-2
- name: AWS_ROLE_ARN
value: arn:aws:iam::123456789:role/ADOTExecutionRole
- name: AWS_WEB_IDENTITY_TOKEN_FILE
value: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
prometheusMargin: 20s
prometheus:
config:
receivers:
prometheus:
config:
scrape_configs:
- job_name: kubernetes-pods
kubernetes_sd_configs:
- role: pod
exporters:
prometheusremotewrite:
endpoint: https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-xxxxx/api/v1/remote_write
auth:
authenticator: sigv4
service:
pipelines:
metrics:
receivers: [prometheus]
exporters: [prometheusremotewrite]Instrumentation for Applications
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
name: my-app-instrumentation
spec:
propagators:
- tracecontext
- baggage
sampler:
type: parentbased_always_onTraces with X-Ray
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: xray-collector
spec:
mode: deployment
exporters:
awsxray:
region: us-west-2
logging:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [awsxray, logging]