Skip to content

AWS Distro for OpenTelemetry (ADOT) Add-on

Amazon EKS supports using Amazon EKS API to install and manage the AWS Distro for OpenTelemetry (ADOT) Operator. This enables a simplified experience for instrumenting your applications running on Amazon EKS to send metric and trace data to multiple monitoring service options like Amazon CloudWatch, Prometheus, and X-Ray.

This add-on is not automatically installed when you first create a cluster, it must be added to the cluster in order to manage ADOT Collectors. For creating add-on in specific namespace, namespace property needs to be passed.

For more information on the add-on, please review the user guide.

Prerequisites

  • The ADOT Operator uses admission webhooks to mutate and validate the Collector Custom Resource (CR) requests. In Kubernetes, the webhook requires a TLS certificate that the API server is configured to trust. There are multiple ways for you to generate the required TLS certificate. However, the default method is to install the latest version of the cert-manager. You can install Certificate Manager using this user guide or you can use certificate-manager EKS blueprints addon which should be added before ADOT addon.

Usage

Example with default namespace

import * as cdk from 'aws-cdk-lib';
import * as blueprints from '@aws-quickstart/eks-blueprints';

const app = new cdk.App();

const addOn = new blueprints.addons.AdotCollectorAddOn();

const blueprint = blueprints.EksBlueprint.builder()
  .version("auto")
  .addOns(addOn)
  .build(app, 'my-stack-name');

Example with non-default namespace

import * as cdk from 'aws-cdk-lib';
import * as blueprints from '@aws-quickstart/eks-blueprints';

const app = new cdk.App();

const addOn = new blueprints.addons.AdotCollectorAddOn({
                namespace:'adot', //User supplied, non-default namespace
                version: 'v0.80.0-eksbuild.2'
              }),

const blueprint = blueprints.EksBlueprint.builder()
  .version("auto")
  .addOns(addOn)
  .build(app, 'my-stack-name');

Validation

To validate that ADOT add-on is installed properly, ensure that the ADOT kubernetes resources are running in the cluster

kubectl get all -n opentelemetry-operator-system

Output

NAME                                                             READY   STATUS    RESTARTS   AGE
pod/opentelemetry-operator-controller-manager-845cbd7bf7-b5s9l   2/2     Running   0          140m

NAME                                                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/opentelemetry-operator-controller-manager-metrics-service   ClusterIP   172.20.210.200   <none>        8443/TCP   140m
service/opentelemetry-operator-webhook-service                      ClusterIP   172.20.56.72     <none>        443/TCP    140m

NAME                                                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/opentelemetry-operator-controller-manager   1/1     1            1           140m

NAME                                                                   DESIRED   CURRENT   READY   AGE
replicaset.apps/opentelemetry-operator-controller-manager-845cbd7bf7   1         1         1       140m

Testing

Additionally, the aws cli can be used to determine which version of the add-on is installed in the cluster.

# Assuming cluster-name is my-cluster, below command shows the version of coredns installed. Check if it is same as the version installed via EKS add-on
aws eks describe-addon \
    --cluster-name my-cluster \
    --addon-name adot \
    --query "addon.addonVersion" \
    --output text

# Output
v0.51.0-eksbuild.1

Functionality

Applies the ADOT add-on to an Amazon EKS cluster.