Network Performance Monitoring is now generally available! Network Monitoring is now available!

AWS App Mesh

Agent Check Agent Check

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 AWS ECS Fargate or AWS 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. 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
    
  2. Update the volumeMounts object in your Datadog Agent’s DaemonSet YAML file:

           volumeMounts:
            - name: datadog-config
              mountPath: /conf.d
    
  3. 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

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-inject eks/appmesh-inject \
  --namespace appmesh-system \
  --set tracing.enabled=true \
  --set tracing.provider=datadog \
  --set tracing.address=datadog.monitoring \
  --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 (i.e. an Envoy sidecar injected) using the ECS Fargate integration documentation.

  1. To forward metrics from an ECS task with App Mesh to Datadog, follow the AWS App Mesh proposed model. In this approach, an external service is created as a virtual node to route outbound traffic.

    • In the App Mesh console, browse to your mesh.
    • Create a virtual node with the following details:

      ParameterValue
      Virtual node namedatadog
      Service discovery typeDNS
      Hostnameapp.datadoghq.com or app.datadoghq.eu
      Listener port443
      Listener protocoltcp
    • Create a virtual service with the following details:

      ParameterValue
      Virtual service nameapp.datadoghq.com or app.datadoghq.eu
      ProviderVirtual node
      Virtual nodedatadog
  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

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

Trace collection

APM services have limited availability. Contact Datadog support for details.

Metric collection

Prerequisite: Add Datadog Agents to each of your ECS EC2 task definitions with App Mesh enabled (i.e. an Envoy sidecar injected) using the ECS integration documentation.

  1. To forward metrics from an ECS task with App Mesh to Datadog, follow the AWS App Mesh proposed model. In this approach, an external service is created as a virtual node to route outbound traffic.

    • In the App Mesh console, browse to your mesh.
    • Create a virtual node with the following details:

      ParameterValue
      Virtual node namedatadog
      Service discovery typeDNS
      Hostnameapp.datadoghq.com or app.datadoghq.eu
      Listener port443
      Listener protocoltcp
    • Create a virtual service with the following details:

      ParameterValue
      Virtual service nameapp.datadoghq.com or app.datadoghq.eu
      ProviderVirtual node
      Virtual nodedatadog
  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

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

Trace collection

APM services have limited availability. Contact Datadog support for details.

Data Collected

Metrics

Refer to 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: