AWS App Mesh

Supported OS Linux Mac OS Windows

Overview

AWS App Mesh is a service mesh that provides application-level networking to your micro services running on Amazon ECS Fargate or Amazon EKS clusters.

Setup

Use the instructions below to enable metric collection for the AWS App Mesh proxy sidecar, called Envoy. Users can choose to add sidecars in one of three modes: deploying, patching the deployment later, or using the AWS App Mesh injector controller. All modes are supported by the following steps.

Metric collection

Prerequisite: Deploy Datadog Agents as a DaemonSet in your Kubernetes cluster using the EKS integration documentation.

  1. Due to limitations in App Mesh, forwarding metrics from EKS to Datadog requires the Egress filter to be set to Allow External Traffic.

  2. Create a ConfigMap in your cluster to automatically discover App Mesh’s Envoy side cars that are added to each pod:

      apiVersion: v1
      kind: ConfigMap
      metadata:
      name: datadog-config
      data:
      envoy: |-
        ad_identifiers:
        - aws-appmesh-envoy
        init_config:
        instances:
        - stats_url: http://%%host%%:9901/stats
          tags:
            - <TAG_KEY>:<TAG_VALUE>  # Example - cluster:eks-appmesh    
    
  3. Update the volumeMounts object in your Datadog Agent’s DaemonSet YAML file:

          volumeMounts:
           - name: datadog-config
             mountPath: /conf.d
    
  4. Update the volumes object in your Datadog Agent’s DaemonSet YAML file:

         volumes:
          - name: datadog-config
            configMap:
              name: datadog-config
              items:
              - key: envoy
                path: envoy.yaml
    

Log collection

Log collection is not supported for this site.

To enable log collection, update the Agent’s DaemonSet with the dedicated Kubernetes log collection instructions.

Trace collection

Select the namespace to deploy the datadog-agent and service, for example: monitoring. Use this in the option to deploy the appmesh-injector with:

  helm upgrade -i appmesh-controller eks/appmesh-controller \
  --namespace appmesh-system \
  --set sidecar.logLevel=debug \
  --set tracing.enabled=true \
  --set tracing.provider=datadog \
  --set tracing.address=ref:status.hostIP \
  --set tracing.port=8126

Alternatively, the appmesh injector can be deployed by following the App Mesh with EKS documentation using the option enable-datadog-tracing=true or environment variable ENABLE_DATADOG_TRACING=true.

Metric collection

Prerequisite: Add Datadog Agents to each of your Fargate task definitions with App Mesh enabled, such as an Envoy sidecar injected, using the ECS Fargate integration documentation.

  1. Due to limitations in App Mesh, forwarding metrics from an ECS task to Datadog requires the Egress filter to be set to Allow External Traffic.

  2. Update all task definitions containing the Envoy sidecar and Datadog Agent with the following Docker labels. See Integration Setup for ECS Fargate for details.

        "dockerLabels": {
              com.datadoghq.ad.instances : [{"stats_url": "http://%%host%%:9901/stats"}]
              com.datadoghq.ad.check_names : ["envoy"]
              com.datadoghq.ad.init_configs : [{}]
            },
    

Log collection

Log collection is not supported for this site.

Enable log collection with the instructions in the ECS Fargate integration documentation.

Trace collection

  1. Enable trace collection with the instructions in the ECS Fargate integration documentation.

Set the AWS App Mesh parameters ENABLE_ENVOY_DATADOG_TRACING and DATADOG_TRACER_PORT as environment variables in the ECS Fargate task definition. Learn more in the AWS App Mesh documentation.

Metric collection

Prerequisite: Add Datadog Agents to each of your ECS EC2 task definitions with App Mesh enabled, such as an Envoy sidecar injected, using the ECS integration documentation.

  1. Due to limitations in App Mesh, forwarding metrics from an ECS task to Datadog requires the Egress filter to be set to Allow External Traffic.

  2. Update all task definitions containing the Envoy sidecar and Datadog Agent with the following Docker labels. See Integration Setup for ECS Fargate for details.

        "dockerLabels": {
              com.datadoghq.ad.instances : [{"stats_url": "http://%%host%%:9901/stats"}]
              com.datadoghq.ad.check_names : ["envoy"]
              com.datadoghq.ad.init_configs : [{}]
            },
    

Log collection

Log collection is not supported for this site.

Enable log collection with the instructions in the ECS integration documentation.

Trace collection

  1. Enable trace collection with the instructions in the ECS integration documentation.

  2. Set the AWS App Mesh parameters ENABLE_ENVOY_DATADOG_TRACING and DATADOG_TRACER_PORT as environment variables in the ECS task definition. Learn more in the AWS App Mesh documentation.

Data Collected

Metrics

See the Envoy integration for a list of metrics.

Events

The AWS App Mesh integration does not include any events.

Service Checks

The AWS App Mesh integration does not include any service checks.

Troubleshooting

Need help? Contact Datadog support.

Further Reading

Additional helpful documentation, links, and articles: