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.
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.
Prerequisite: Deploy Datadog Agents as a DaemonSet in your Kubernetes cluster using the EKS integration documentation.
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
Update the volumeMounts
object in your Datadog Agent’s DaemonSet YAML file:
volumeMounts:
- name: datadog-config
mountPath: /conf.d
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
To enable log collection, update the Agent’s DaemonSet with the dedicated Kubernetes log collection instructions .
Select the namespace to deploy the datadog-agent
and service, for example: monitoring
. Use this in the option to deploy the appmesh-injector with:
```shell
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
.
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.
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:
Parameter | Value |
---|---|
Virtual node name | datadog |
Service discovery type | DNS |
Hostname | app.datadoghq.com or app.datadoghq.eu |
Listener port | 443 |
Listener protocol | tcp |
Create a virtual service with the following details:
Parameter | Value |
---|---|
Virtual service name | app.datadoghq.com or app.datadoghq.eu |
Provider | Virtual node |
Virtual node | datadog |
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 : [{}]
},
Enable log 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.
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.
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:
Parameter | Value |
---|---|
Virtual node name | datadog |
Service discovery type | DNS |
Hostname | app.datadoghq.com or app.datadoghq.eu |
Listener port | 443 |
Listener protocol | tcp |
Create a virtual service with the following details:
Parameter | Value |
---|---|
Virtual service name | app.datadoghq.com or app.datadoghq.eu |
Provider | Virtual node |
Virtual node | datadog |
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 : [{}]
},
Enable log collection with the instructions in the ECS integration documentation.
Enable trace collection with the instructions in the ECS integration documentation.
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.
Refer to the Envoy integration for a list of metrics.
The AWS App Mesh integration does not include any events.
The AWS App Mesh integration does not include any service checks.
Need help? Contact Datadog support.
Additional helpful documentation, links, and articles: