Offloading analytics data to AWS X-Ray exporter

Configure the DataPower Interact Gateway Collector to export distributed tracing data to AWS X-Ray for application performance monitoring.

Before you begin

Make sure

  • you have an AWS account with X-Ray enabled.
  • you have created an IAM role with permissions to write to AWS X-Ray.
  • you have the AWS region and role ARN for X-Ray access.

About this task

The AWS X-Ray exporter sends distributed tracing data from the OpenTelemetry Collector to AWS X-Ray for visualization and analysis of application performance.

Procedure

  1. Identify the namespace where the collector is deployed.
    kubectl get ns

    Sample output:

    NAME                    STATUS   AGE
    default                 Active   5h6m
    fyre-ci-293280          Active   5h2m
    Note: Lists all namespaces and their deployments, including the DataPower Interact Gateway. In this example, fyre-ci-293280 is the namespace in which the DataPower Interact Gateway is deployed.
  2. Create a Kubernetes secret containing the AWS X-Ray configuration.
    kubectl create secret generic aws-credentials \
      --from-literal=AWS_REGION='us-east-1' \
      --from-literal=AWS_ROLE_ARN='arn:aws:iam::123456789012:role/OTelXRayRole' \
      -n <namespace>
    Important: Replace us-east-1 and arn:aws:iam::123456789012:role/OTelXRayRole with your actual AWS region and IAM role ARN.

    Output:

    secret/aws-credentials created
  3. Verify that the secret was created successfully.
    kubectl get secret aws-credentials -n <namespace>
  4. Identify the collector deployment.
    kubectl get deployment -n <namespace> | grep collector

    Sample output:

    idig-nanogw-nanogw-analytics-collector   1/1     1     1     5h
  5. Edit the collector deployment to inject the secret as environment variables.
    kubectl edit deployment <deployment_name> -n <namespace>
    1. Locate the containers section for the analytics-collector container.
    2. Add the following envFrom section under the container definition:
      envFrom:
        - secretRef:
            name: aws-credentials
    3. Save and exit the editor.

      Sample deployment configuration:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: idig-nanogw-nanogw-analytics-collector
        namespace: <namespace>
      spec:
        replicas: 1
        selector:
          matchLabels:
            app.kubernetes.io/name: nanogw-analytics-collector
        template:
          metadata:
            labels:
              app.kubernetes.io/name: nanogw-analytics-collector
          spec:
            containers:
            - name: analytics-collector
              image: your-image:tag
              envFrom:
              - secretRef:
                  name: aws-credentials
  6. Identify the collector ConfigMap.
    kubectl get configmap -n <namespace> | grep collector

    Sample output:

    idig-nanogw-collector-config                       1      5h11m
  7. Edit the collector ConfigMap to add the AWS X-Ray exporter configuration.
    kubectl edit configmap <configmap_name> -n <namespace>
    1. Add the following exporter configuration under the exporters section:
      exporters:
        awsxray:
          region: '${AWS_REGION}'
          role_arn: '${AWS_ROLE_ARN}'
    2. Update the service pipelines to include the AWS X-Ray exporter:
      service:
        pipelines:
          traces/xray:
            receivers: [otlp]
            processors: [batch/apic]
            exporters: [awsxray]
    3. Save the ConfigMap.

      Sample ConfigMap structure:

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: idig-nanogw-collector-config
        namespace: <namespace>
      data:
        config.yaml: |
          receivers:
            ...
      
          processors:
            batch/apic:
              ...
      
          exporters:
            awsxray:
              region: '${AWS_REGION}'
              role_arn: '${AWS_ROLE_ARN}'
      
          service:
            pipelines:
              traces/xray:
                receivers: [otlp]
                processors: [batch/apic]
                exporters: [awsxray]
  8. Restart the collector deployment to apply the changes.
    kubectl rollout restart deployment <deployment_name> -n <namespace>

    Output:

    deployment.apps/idig-nanogw-nanogw-analytics-collector restarted
  9. Verify that the collector pods restart successfully.
    kubectl get pods -n <namespace> | grep collector

    Sample output:

    idig-nanogw-nanogw-analytics-collector-7d4f8ccf45-bk468   1/1   Running   0   30s

    The OpenTelemetry Collector is now configured to export distributed tracing data to AWS X-Ray. Traces will be sent to your AWS X-Ray service for analysis and visualization.