Remarque : les annotations AD v2 ont été ajoutées dans l’Agent Datadog 7.36 afin de simplifier la configuration de l’intégration. Pour les versions précédentes de l’Agent Datadog, utilisez les annotations AD v1.
Pour activer automatiquement Autodiscovery sur des conteneurs Docker, montez /var/run/docker.sock
dans l’Agent conteneurisé. Sous Windows, montez \\.\pipe\docker_engine
.
Il est possible de stocker vos modèles d’intégration en tant qu’étiquettes Docker. Grâce à Autodiscovery, l’Agent détecte s’il est exécuté sur Docker et examine automatiquement toutes les étiquettes à la recherche de modèles d’intégration. Autodiscovery s’attend à ce que les étiquettes ressemblent à ces exemples :
Dockerfile :
LABEL "com.datadoghq.ad.checks"='{"<INTEGRATION_NAME>": {"instances": [<INSTANCE_CONFIG>]}}'
docker-compose.yaml :
labels:
com.datadoghq.ad.checks: '{"<INTEGRATION_NAME>": {"instances": [<INSTANCE_CONFIG>]}}'
Avec les commandes docker run
, nerdctl run
ou podman run
:
-l com.datadoghq.ad.checks="{\"<INTEGRATION_NAME>\": {\"instances\": [<INSTANCE_CONFIG>]}}"
Remarque : vous pouvez échapper le fichier JSON lors de la configuration de ces étiquettes. Par exemple :
docker run --label "com.datadoghq.ad.checks="{\"apache\": {\"instances\": [{\"apache_status_url\":\"http://%%host%%/server-status?auto2\"}]}}"
Docker Swarm :
Pour utiliser le mode Swarm avec Docker Cloud, les étiquettes doivent être appliquées à l’image :
version: "1.0"
services:
...
project:
image: '<IMAGE_NAME>'
labels:
com.datadoghq.ad.checks: '{"<INTEGRATION_NAME>": {"instances": [<INSTANCE_CONFIG>]}}'
Remarque : lors de la configuration d’Autodiscovery, Datadog recommande l’utilisation des étiquettes Docker afin d’unifier la télémétrie au sein de votre environnement conteneurisé. Consultez la documentation relative au tagging de service unifié pour en savoir plus.
Pour activer automatiquement Autodiscovery sur des conteneurs Docker, montez /var/run/docker.sock
dans l’Agent conteneurisé. Sous Windows, montez \\.\pipe\docker_engine
.
Il est possible de stocker vos modèles d’intégration en tant qu’étiquettes Docker. Grâce à Autodiscovery, l’Agent détecte s’il est exécuté sur Docker et examine automatiquement toutes les étiquettes à la recherche de modèles d’intégration. Autodiscovery s’attend à ce que les étiquettes ressemblent à ces exemples :
Dockerfile :
LABEL "com.datadoghq.ad.check_names"='[<NOM_INTÉGRATION>]'
LABEL "com.datadoghq.ad.init_configs"='[<CONFIG_INIT>]'
LABEL "com.datadoghq.ad.instances"='[<CONFIG_INSTANCE>]'
docker-compose.yaml :
labels:
com.datadoghq.ad.check_names: '[<NOM_INTÉGRATION>]'
com.datadoghq.ad.init_configs: '[<CONFIG_INIT>]'
com.datadoghq.ad.instances: '[<CONFIG_INSTANCE>]'
Avec les commandes docker run
, nerdctl run
ou podman run
:
-l com.datadoghq.ad.check_names='[<NOM_INTÉGRATION>]' -l com.datadoghq.ad.init_configs='[<CONFIG_INIT>]' -l com.datadoghq.ad.instances='[<CONFIG_INSTANCE>]'
Remarque : vous pouvez échapper le fichier JSON lors de la configuration de ces étiquettes. Par exemple :
docker run --label "com.datadoghq.ad.check_names=[\"redisdb\"]" --label "com.datadoghq.ad.init_configs=[{}]" --label "com.datadoghq.ad.instances=[{\"host\":\"%%host%%\",\"port\":6379}]" --label "com.datadoghq.ad.logs=[{\"source\":\"redis\"}]" --name redis redis
Docker Swarm :
Pour utiliser le mode Swarm avec Docker Cloud, les étiquettes doivent être appliquées à l’image :
version: "1.0"
services:
...
project:
image: '<NOM_IMAGE>'
labels:
com.datadoghq.ad.check_names: '[<NOM_INTÉGRATION>]'
com.datadoghq.ad.init_configs: '[<CONFIG_INIT>]'
com.datadoghq.ad.instances: '[<CONFIG_INSTANCE>]'
Remarque : lors de la configuration d’Autodiscovery, Datadog recommande l’utilisation des étiquettes Docker afin d’unifier la télémétrie au sein de votre environnement conteneurisé. Consultez la documentation relative au tagging de service unifié pour en savoir plus.
Vous pouvez stocker des modèles en tant que fichiers locaux et les monter dans l’Agent conteneurisé. Cela ne nécessite aucun service externe ni aucune plateforme d’orchestration spécifique. Vous devrez cependant redémarrer les conteneurs de votre Agent à chaque fois qu’un modèle est modifié, ajouté ou supprimé. L’Agent recherche les modèles Autodiscovery dans le répertoire /conf.d
monté.
À partir de la version 6.2.0 (et 5.24.0) de l’Agent, les modèles par défaut utilisent le port par défaut pour le logiciel surveillé au lieu de le détecter automatiquement. Si vous devez utiliser un port différent, spécifiez un modèle Autodiscovery personnalisé dans les étiquettes de conteneur Docker
Ces modèles d’intégration peuvent convenir dans les cas simples. Toutefois, si vous avez besoin de personnaliser les configurations de votre intégration Datadog (par exemple pour activer des options supplémentaires, pour faire appel à des identificateurs de conteneur différents ou pour utiliser les index de template variables), vous devez écrire vos propres fichiers de configuration automatique :
- Créez un fichier
conf.d/<NOM_INTÉGRATION>.d/conf.yaml
sur votre host et ajoutez votre configuration automatique personnalisée. - Montez le répertoire
conf.d/
de votre host dans le répertoire conf.d/
de l’Agent conteneurisé.
Exemple de fichier de configuration automatique :
ad_identifiers:
<IDENTIFICATEUR_INTÉGRATION_AUTODISCOVERY>
init_config:
<CONFIG_INIT>
instances:
<CONFIG_INSTANCES>
Consultez la documentation sur les identificateurs de conteneur Autodiscovery pour obtenir des informations sur <IDENTIFICATEUR_INTÉGRATION_AUTODISCOVERY>
.
Remarque : vous n’avez pas à configurer <NOM_INTÉGRATION>
ici, car l’Agent le récupère directement à partir du nom du fichier.
Autodiscovery peut utiliser Consul, Etcd et Zookeeper comme sources de modèle d’intégration. Pour utiliser un stockage clé-valeur, vous devez le configurer dans le fichier de configuration datadog.yaml
de l’Agent et monter ce fichier dans l’agent conteneurisé. Vous pouvez également transmettre votre stockage clé-valeur comme variables d’environnement à l’Agent conteneurisé.
Configuration dans datadog.yaml :
Dans le fichier datadog.yaml
, définissez l’adresse <IP_STOCKAGE_CLÉ_VALEUR>
et le <PORT_STOCKAGE_CLÉ_VALEUR>
de votre stockage clé-valeur :
config_providers:
- name: etcd
polling: true
template_dir: /datadog/check_configs
template_url: '<IP_STOCKAGE_CLÉVALEUR>:<PORT_STOCKAGE_CLÉVALEUR>'
username:
password:
- name: consul
polling: true
template_dir: datadog/check_configs
template_url: '<IP_STOCKAGE_CLÉVALEUR>:<PORT_STOCKAGE_CLÉVALEUR>'
ca_file:
ca_path:
cert_file:
key_file:
username:
password:
token:
- name: zookeeper
polling: true
template_dir: /datadog/check_configs
template_url: '<IP_STOCKAGE_CLÉVALEUR>:<PORT_STOCKAGE_CLÉVALEUR>'
username:
password:
Redémarrez ensuite l’Agent pour prendre en compte le changement de configuration.
Configuration dans les variables d’environnement :
Lorsque le stockage clé-valeur est activé en tant que source de modèle, l’Agent recherche des modèles à partir de la clé /datadog/check_configs
. Autodiscovery s’attend à une hiérarchie clé-valeur comme suit :
/datadog/
check_configs/
<IDENTIFICATEUR_CONTENEUR>/
- check_names: ["<NOM_INTÉGRATION>"]
- init_configs: ["<CONFIG_INIT>"]
- instances: ["<CONFIG_INSTANCE>"]
...
Remarque : pour appliquer une configuration spécifique à un conteneur donné, Autodiscovery identifie les conteneurs par image en cas d’utilisation de stockages clé-valeur. En d’autres termes, il cherche à faire correspondre <IDENTIFICATEUR_CONTENEUR>
à .spec.containers[0].image
.