Remarque : le check Docker Daemon est toujours tenu à jour, mais fonctionne uniquement avec la version 5 de l’Agent.
Pour utiliser l'intégration Docker avec la version 6 de l'Agent, consultez la section sur l'Agent v6 ci-dessous.
Présentation
Configurez ce check d’Agent pour obtenir des métriques du service Docker_daemon en temps réel pour :
Visualiser et surveiller les états de Docker_daemon
Être informé des failovers et des événements de Docker_daemon
Configuration
Installation
Pour recueillir des métriques Docker sur tous vos conteneurs, exécutez un Agent Datadog sur chaque host. Il existe deux façons d’exécuter l’Agent : directement sur chaque host, ou au sein d’un conteneur docker-dd-agent (conseillé).
Dans les deux cas, pour que le check Docker n’échoue pas, vos hosts requièrent l’activation de la gestion de mémoire cgroup. Consultez le référentiel docker-dd-agent pour savoir comment l’activer.
Installation sur un host
Vérifiez que Docker est en cours d’exécution sur le host.
Ajoutez l’utilisateur de l’Agent au groupe Docker : usermod -a -G docker dd-agent.
Créez un fichier docker_daemon.yaml en copiant le fichier d’exemple dans le répertoire conf.d de l’Agent. Si vous avez effectué l’installation standard de Docker sur votre host, vous n’avez rien à changer pour faire fonctionner l’intégration.
Pour activer d’autres intégrations, utilisez docker ps afin d’identifier les ports utilisés par les applications correspondantes.
Installation sur un conteneur
Vérifiez que Docker est en cours d’exécution sur le host.
Dans la commande ci-dessus, vous pouvez transmettre votre clé d’API à l’Agent Datadog à l’aide du flag de variable d’environnement -e de Docker. Le tableau ci-dessous répertorie d’autres variables disponibles :
Variable
Description
API_KEY
Configure votre clé d’API Datadog.
DD_HOSTNAME
Définit le hostname dans le fichier datadog.conf du conteneur de l’Agent. Si cette variable n’est pas définie, le conteneur de l’Agent utilise par défaut le champ Name (tel qu’indiqué par la commande docker info) en tant que hostname du conteneur de l’Agent.
DD_URL
Définit l’URL du serveur entrant de Datadog où l’Agent envoie les données. Cette variable s’avère utile lorsque vous utilisez l’Agent en tant que proxy.
LOG_LEVEL
Définit le niveau de détail de la journalisation (CRITICAL, ERROR, WARNING, INFO, DEBUG). Par exemple, -e LOG_LEVEL=DEBUG définit la journalisation sur le mode de debugging.
TAGS
Définit des tags de host en tant que chaîne délimitée par des virgules. Vous pouvez ajouter des tags simples et des tags clé/valeur sont disponibles. Par exemple : -e TAGS="tag-simple, clé-tag:valeur-tag".
EC2_TAGS
Cette fonctionnalité permet à l’Agent d’envoyer des requêtes et d’enregistrer des tags personnalisés à l’aide de l’API EC2 lors du démarrage. Pour l’activer, utilisez la commande -e EC2_TAGS=yes. Remarque : vous devez avoir associé un rôle IAM à l’instance pour bénéficier de cette fonctionnalité.
NON_LOCAL_TRAFFIC
Cette fonctionnalité permet de transmettre des données StatsD à partir de n’importe quelle adresse IP externe. Pour l’activer, utilisez la commande -e NON_LOCAL_TRAFFIC=yes. Elle est utilisée pour transmettre les métriques depuis d’autres conteneurs ou systèmes. Consultez la configuration réseau pour en savoir plus.
Définit les informations de configuration du proxy. Remarque : PROXY_PASSWORD est obligatoire pour la transmission d’un mot de passe d’authentification. Il ne peut pas être renommé. Pour en savoir plus, consultez la documentation relative au proxy de l’Agent.
L’image Docker standard repose sur Debian Linux, mais depuis la version 5.7 de l’Agent Datadog, il existe une image basée sur Alpine Linux. L’image Alpine Linux est beaucoup plus petite que l’image traditionnelle Debian. Elle hérite également des conceptions axées sur la sécurité d’Alpine.
Pour utiliser l’image Alpine Linux, ajoutez -alpine au tag de version. Par exemple :
Depuis la version 5.5.0 de l’Agent Datadog, l’image Docker suit un nouveau modèle de contrôle de version. Il permet de valider les modifications apportées à l’image Docker de l’Agent Datadog tout en conservant la même version de l’Agent.
La version de l’image Docker est exprimée de la façon suivante : X.Y.Z. X correspond à la version majeure de l’image Docker, Y à la version mineure et Z à la version de l’Agent.
Par exemple, la première version de l’image Docker qui est fournie avec l’Agent 5.5.0 de Datadog est 10.0.550.
Conteneurs personnalisés et informations supplémentaires
Pour en savoir plus sur l’élaboration de conteneurs Docker personnalisés avec l’Agent Datadog, l’image Alpine Linux, le contrôle de version et plus encore, consultez le projet docker-dd-agent sur Github.
Le dernier check Docker s’intitule docker. Il est rédigé en Go pour tirer pleinement parti de la nouvelle architecture interne. Depuis la v6.0, l’Agent ne charge plus le check docker_daemon, même s’il est toujours disponible et maintenu à jour pour l’Agent v5. Toutes les fonctionnalités ont été incluses dans les versions >6.0, à l’exception de ce qui suit :
Les options ecs_tags, performance_tags et container_tags sont obsolètes. Tous les tags pertinents sont recueillis par défaut.
L’option collect_container_count permettant d’activer la métrique docker.container.count n’est plus prise en charge. Vous devez utiliser docker.containers.running et .stopped.
Certaines options ont été déplacées du fichier docker_daemon.yaml vers le fichier datadog.yaml principal :
collect_labels_as_tags a été renommé docker_labels_as_tags et prend désormais en charge les tags dotés d’une cardinalité élevée. Consultez les informations détaillées dans datadog.yaml.example.
Les listes exclude et include ont été renommées ac_include et ac_exclude. Afin d’obtenir un filtrage cohérent entre tous les composants de l’Agent, le filtrage des tags arbitraires a été abandonné. Les seuls tags de filtrage pris en charge sont image (nom de l’image) et name (nom du conteneur). Le filtrage à l’aide d’expressions régulières est toujours disponible. Consultez datadog.yaml.example pour obtenir des exemples.
L’option docker_root a été divisée en deux options : container_cgroup_root et container_proc_root.
exclude_pause_container a été ajouté afin d’exclure les conteneurs en pause sur Kubernetes et Openshift (valeur par défaut : true). Cela évite de les supprimer de la liste d’exclusion par erreur.
Autres modifications :
La variable d’environnement TAGS a été renommée DD_TAGS.
La commande import effectue la conversion de l’ancien docker_daemon.yaml vers le nouveau docker.yaml. Elle déplace également les paramètres requis de docker_daemon.yaml vers datadog.yaml.
Données collectées
Métriques
Événements
L’intégration Docker génère les événements suivants :
Delete Image
Die
Erreur
Fail
Kill
Out of memory (oom)
Pause
Restart container
Restart Daemon
Update
Checks de service
docker.service_up Renvoie CRITICAL si l’Agent n’est pas capable de recueillir la liste des conteneurs du daemon Docker. Si ce n’est pas le cas, renvoie OK. Statuses: ok, critical
docker.container_health Renvoie CRITICAL si un conteneur n’est pas sain, renvoie OK si ce n’est pas le cas ou renvoie UNKNOWN si l’état de santé est inconnu. Statuses: ok, critical, unknown
docker.exit Renvoie CRITICAL si un conteneur est fermé avec un code de sortie différent de zéro. Si ce n’est pas le cas, renvoie OK. Statuses: ok, critical
Remarque : pour utiliser docker.exit, ajoutez collect_exit_code: true dans votre fichier YAML Docker et redémarrez l’Agent.