Présentation
Amazon ECS est un service d’orchestration de conteneurs évolutif et à hautes performances qui prend en charge les conteneurs Docker. Grâce à l’Agent Datadog, vous pouvez surveiller des conteneurs et tâches ECS sur chaque instance EC2 de votre cluster.
Pour configurer Amazon ECS avec Datadog, vous pouvez utiliser Fleet Automation ou effectuer une installation manuelle. Si vous préférez effectuer une installation manuelle, exécutez un conteneur d’Agent par host Amazon EC2 en créant une définition de tâche de l’Agent Datadog et en la déployant en tant que service daemon. Chaque Agent surveille ensuite les autres conteneurs sur son host. Consultez la section Effectuer une installation manuelle pour plus de détails.
Configuration de Fleet Automation
Suivez le guide d’installation dans l’application de Fleet Automation pour terminer la configuration sur ECS. Après avoir effectué les étapes décrites dans le guide dans l’application, Fleet Automation génère une définition de tâche ou un modèle CloudFormation prêt à l’emploi, avec votre clé API pré-injectée.
Configuration manuelle
Pour surveiller vos conteneurs et tâches ECS, déployez l’Agent Datadog en tant que conteneur une fois sur chaque instance EC2 de votre cluster ECS. Pour cela, créez une définition de tâche pour le conteneur de l’Agent Datadog et déployez-le en tant que service daemon. Chaque conteneur d’Agent Datadog surveille alors les autres conteneurs sur son instance EC2 respective.
Les instructions suivantes supposent que vous avez déjà configuré un cluster EC2. Consultez la documentation Amazon ECS pour découvrir comment créer un cluster.
- Créer et ajouter une définition de tâche ECS
- Planifier l’Agent de Datadog en tant que service daemon
- Configurer des fonctionnalités supplémentaires pour l’Agent Datadog (facultatif)
Remarque : la fonction Autodiscovery de Datadog peut être utilisée avec ECS et Docker afin de découvrir et de surveiller automatiquement les tâches s’exécutant dans votre environnement.
Certaines étapes de configuration diffèrent pour la conformité FIPS. Veuillez tenir compte des instructions de configuration spécifiques dans la documentation Conformité FIPS.
Créer une définition de tâche ECS
Cette définition de tâche ECS lance le conteneur de l’Agent Datadog avec les configurations nécessaires. Pour modifier la configuration de l’Agent, modifiez la définition de cette tâche et redéployez le service daemon. Vous pouvez configurer la définition de cette tâche à l’aide de la console de gestion AWS ou de l’interface de ligne de commande AWS.
L’exemple suivant montre comment effectuer une surveillance générale de l’infrastructure avec une configuration minimale. Toutefois, si vous souhaitez découvrir d’autres exemples de définition de tâche où diverses fonctionnalités sont activées, consultez la section Configurer les fonctionnalités supplémentaires de l’Agent.
Créer et gérer le fichier de définition de tâche
Pour les conteneurs Linux, téléchargez datadog-agent-ecs.json.
These files provide minimal configuration for core infrastructure monitoring. For more sample task definition files with various features enabled, see the
Set up additional Agent features section on this page.
Modifier le fichier de définition de tâche de base
Remplacez le placeholder <YOUR_DATADOG_API_KEY> par la clé d’API Datadog de votre compte pour définir la variable d’environnement DD_API_KEY. Sinon, vous pouvez aussi fournir l’ARN d’un secret stocké dans AWS Secrets Manager.
Définissez la variable d’environnement DD_SITE sur votre site Datadog, à savoir .
If DD_SITE is not set, it defaults to the US1 site, datadoghq.com.
Si vous le souhaitez, ajoutez une variable d’environnement DD_TAGS afin de spécifier des tags supplémentaires.
Pour un déploiement sur un cluster ECS Anywhere, ajoutez la ligne suivante à la définition de votre tâche ECS (facultatif) :
"requiresCompatibilities": ["EXTERNAL"]
Pour ajouter un check de santé de l’Agent, ajoutez la ligne suivante à la définition de votre tâche ECS (facultatif) :
"healthCheck": {
"retries": 3,
"command": ["CMD-SHELL","agent health"],
"timeout": 5,
"interval": 30,
"startPeriod": 15
}
Enregistrer la définition de tâche
Une fois votre fichier de définition de tâche créé, exécutez la commande suivante afin d’enregistrer le fichier dans AWS.
aws ecs register-task-definition --cli-input-json file://<path to datadog-agent-ecs.json>
Une fois votre fichier de définition de tâche créé, utilisez la console AWS pour l’enregistrer.
- Connectez-vous à votre console AWS et accédez à la section Elastic Container Service.
- Sélectionnez Task Definitions dans le volet de navigation. Depuis le menu Create new task definition, sélectionnez Create new task definition with JSON.
- Dans la zone de l’éditeur JSON, collez le contenu du fichier de définition de votre tâche.
- Sélectionnez Create.
Exécuter l’Agent en tant que service daemon
Pour qu’un conteneur d’Agent Datadog s’exécute sur chaque instance EC2, exécutez la définition de tâche de l’Agent Datadog en tant que service daemon.
Planifier un service daemon dans AWS à l’aide de la tâche ECS de Datadog
- Connectez-vous à la console AWS et accédez à la section ECS. Sur la page Clusters, choisissez le cluster sur lequel vous exécutez l’Agent.
- Depuis l’onglet Services de votre cluster, sélectionnez Create.
- Sous Deployment configuration, sélectionnez Daemon pour le champ Service type.
- Il n’est pas nécessaire de configurer la répartition des charges ou l’autoscaling.
- Cliquez sur Next Step, puis sur Create Service.
Les fichiers de définition de tâche fournis à la section précédente sont basiques. Ils déploient un conteneur d’Agent avec une configuration simplifiée permettant de recueillir des métriques générales à propos des conteneurs de votre cluster ECS. L’Agent peut également exécuter des intégrations d’Agent basées sur des étiquettes Docker découvertes sur vos conteneurs.
Fonctionnalités supplémentaires :
APM
Consultez la documentation relative à la configuration APM et le fichier d’exemple datadog-agent-ecs-apm.json.
Log Management
Consultez la documentation relative à la collecte de logs et le fichier d’exemple datadog-agent-ecs-logs.json.
DogStatsD
Si vous utilisez DogStatsD, modifiez la définition du conteneur de l’Agent Datadog afin d’ajouter le mappage du port du host pour 8125/udp et de définir la variable d’environnement DD_DOGSTATSD_NON_LOCAL_TRAFFIC sur true :
{
"containerDefinitions": [
{
"name": "datadog-agent",
(...)
"portMappings": [
{
"hostPort": 8125,
"protocol": "udp",
"containerPort": 8125
}
],
"environment" : [
{
"name": "DD_API_KEY",
"value": "<YOUR_DATADOG_API_KEY>"
},
{
"name": "DD_SITE",
"value": "datadoghq.com"
},
{
"name": "DD_DOGSTATSD_NON_LOCAL_TRAFFIC",
"value": "true"
}
]
}
],
(...)
}
Cette configuration permet au trafic DogStatsD d’être acheminé depuis les conteneurs d’application jusqu’au conteneur de l’Agent Datadog en passant par le host et le port du host. Toutefois, le conteneur d’application doit utiliser l’adresse IP privée du host pour ce trafic. Pour ce faire, définissez la variable d’environnement DD_AGENT_HOST sur l’adresse IP privée de l’instance EC2, qui peut être récupérée depuis le système Instance Metadata Service (IMDS). Une autre solution consiste à définir l’adresse sous forme de code lors de l’initialisation. L’implémentation pour DogStatsD est la même que pour APM. Consultez la rubrique Configurer l’endpoint de l’Agent de trace pour obtenir des exemples de configuration de l’endpoint de l’Agent.
Assurez-vous que les paramètres des groupes de sécurité sur vos instances EC2 n’exposent pas publiquement les ports pour APM et DogStatsD.
Collecte de processus
Pour recueillir des informations sur les live processes pour l’ensemble de vos conteneurs, et les envoyer à Datadog, définissez la variable d’environnement DD_PROCESS_AGENT_ENABLED dans la définition de votre tâche :
{
"containerDefinitions": [
{
"name": "datadog-agent",
(...)
"environment" : [
{
"name": "DD_API_KEY",
"value": "<YOUR_DATADOG_API_KEY>"
},
{
"name": "DD_SITE",
"value": "datadoghq.com"
},
{
"name": "DD_PROCESS_AGENT_ENABLED",
"value": "true"
}
]
}
],
(...)
}
Cloud Network Monitoring
Cette fonctionnalité est uniquement disponible pour Linux.
Consultez le fichier d’exemple datadog-agent-sysprobe-ecs.json.
Si vous vous servez Amazon Linux 1 (AL1, anciennement Amazon Linux AMI), consultez datadog-agent-sysprobe-ecs1.json.
Si vous disposez déjà d’une définition de tâche, modifiez votre fichier de façon à inclure la configuration suivante :
{
"containerDefinitions": [
(...)
"mountPoints": [
(...)
{
"containerPath": "/sys/kernel/debug",
"sourceVolume": "debug"
},
(...)
],
"environment": [
(...)
{
"name": "DD_SYSTEM_PROBE_NETWORK_ENABLED",
"value": "true"
}
],
"linuxParameters": {
"capabilities": {
"add": [
"SYS_ADMIN",
"SYS_RESOURCE",
"SYS_PTRACE",
"NET_ADMIN",
"NET_BROADCAST",
"NET_RAW",
"IPC_LOCK",
"CHOWN"
]
}
},
],
"requiresCompatibilities": [
"EC2"
],
"volumes": [
(...)
{
"host": {
"sourcePath": "/sys/kernel/debug"
},
"name": "debug"
},
(...)
],
"family": "datadog-agent-task"
}
Chemin réseau
Network Path pour Datadog Cloud Network Monitoring est en disponibilité limitée. Contactez votre représentant Datadog pour vous inscrire.
Pour activer Network Path sur vos clusters ECS, activez le module traceroute system-probe en ajoutant la variable d’environnement suivante dans votre fichier datadog-agent-sysprobe-ecs.json :
"environment": [
(...)
{
"name": "DD_TRACEROUTE_ENABLED",
"value": "true"
}
],
Pour surveiller des chemins individuels, suivez les instructions ici pour configurer des fonctionnalités supplémentaires de l’Agent :
Ces fichiers déploient un conteneur d’Agent avec une configuration de base pour recueillir les métriques principales concernant les conteneurs de votre cluster ECS. L’Agent peut également exécuter des intégrations de l’Agent en fonction des Docker Labels découvertes sur vos conteneurs.
Pour surveiller les chemins de trafic réseau et permettre à l’Agent de découvrir et surveiller automatiquement les chemins réseau en fonction du trafic réseau réel, sans avoir à spécifier manuellement les endpoints, ajoutez les variables d’environnement supplémentaires suivantes à votre datadog-agent-sysprobe-ecs.json :
"environment": [
(...)
{
"name": "DD_NETWORK_PATH_CONNECTIONS_MONITORING_ENABLED",
"value": "true"
}
],
En option, pour configurer le nombre de workers (la valeur par défaut est 4), ajustez la variable d’environnement suivante dans votre fichier datadog-agent-sysprobe-ecs.json :
"environment": [
(...)
{
"name": "DD_NETWORK_PATH_COLLECTOR_WORKERS",
"value": "10"
}
],
Mode AWSVPC
Pour l’Agent 6.10 et les versions ultérieures, le mode awsvpc est pris en charge par les conteneurs d’application, tant que les groupes de sécurité autorisent le groupe de sécurité de l’instance de host de se connecter aux conteneurs d’application sur les ports concernés.
Vous pouvez exécuter l’Agent en mode awsvpc. Toutefois, Datadog vous le déconseille, car il serait difficile de récupérer l’IP de l’interface réseau Elastic (ENI) afin d’accéder à l’Agent pour les métriques DogStatsD et les traces APM. Exécutez plutôt l’Agent en mode bridge avec un mappage de port, afin de pouvoir récupérer plus facilement l’adresse IP du host via le serveur de métadonnées.
Dépannage
Besoin d’aide ? Contactez l’assistance Datadog.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: