Autodiscovery basique
Nouvelles annonces sur les technologies sans serveur et réseau ainsi que sur le RUM (Real-User Monitoring) dévoilées à la conférence Dash ! Nouvelles annonces dévoilées à la conférence Dash !

Autodiscovery basique

Présentation

Dans une infrastructure conteneurisée, les conteneurs peuvent basculer d’un host à un autre, ce qui complique leur surveillance. En raison du dynamisme des systèmes conteneurisés, la surveillance manuelle n’est pas une chose aisée.

Pour y remédier, vous pouvez utiliser la fonction Autodiscovery de Datadog afin d’identifier automatiquement les services qui s’exécutent sur un conteneur précis et de rassembler des données sur ces services. Lorsqu’un conteneur se lance, l’Agent Datadog identifie les services qui s’y exécutent, recherche la configuration de surveillance correspondante et initie la collecte de métriques.

La fonction Autodiscovery vous permet de définir des modèles de configuration pour des checks d’Agent et de spécifier les conteneurs sur lesquels chaque check doit s’appliquer.

L’Agent recherche des événements de création, destruction, démarrage ou encore d’arrêt de conteneur avant d’activer, de désactiver et de régénérer les configurations de check statiques lors de ces événements. Lorsque l’Agent inspecte les conteneurs en cours d’exécution, il vérifie si chaque conteneur correspond à l’un des identifiants de conteneur Autodiscovery présents dans les modèles chargés. À chaque correspondance, l’Agent génère une configuration de check statique en remplaçant les template variables par les valeurs spécifiques du conteneur correspondant. Il active ensuite le check avec la configuration statique.

Fonctionnement

Le schéma ci-dessus représente un nœud de host avec trois pods, notamment un pod Redis et un pod d’Agent. Le Kubelet, qui planifie les conteneurs, s’exécute en tant que binaire sur ce nœud et expose les endpoints /metrics et /pods. Toutes les 10 secondes, l’Agent interroge /pods et trouve les spécifications Redis. Il peut également consulter les informations sur le pod Redis.

Dans cet exemple, les spécifications Redis comprennent les annotations suivantes :

annotations:
  ad.datadoghq.com/redis.check_names: '["redisdb"]'
  ad.datadoghq.com/redis.init_configs: '[{}]'
  ad.datadoghq.com/redis.instances: |
    [
      {
        "host": "%%host%%",
        "port":"6379",
        "password":"%%env_REDIS_PASSWORD%%"
      }
    ]
  ad.datadoghq.com/redis.logs: '[{"source":"redis","service":"redis"}]'

check_names comprend les noms des checks à exécuter, tandis qu’init_configs indique certains paramètres de configuration, comme l’intervalle minimum de collecte. Chaque élément d’instances représente la configuration à exécuter sur une instance d’un check. À noter qu’ici, %%host%% est une template variable dont la valeur correspond automatiquement à l’adresse IP de votre conteneur.

L’Agent génère ainsi une configuration de check statique.

Configuration

Il vous suffit de suivre les deux étapes suivantes pour configurer Autodiscovery pour votre infrastructure :

  1. Activez Autodiscovery sur votre Agent Datadog.
  2. Créez des modèles de configuration spécifiques à chaque intégration pour chaque service à surveiller. Sachez que Datadog fournit des modèles de configuration automatique pour certains services conteneurisés de base, tels qu’Apache et Redis.

Activer Autodiscovery

Avec l’Agent exécuté sur un host

Ajoutez le bloc de configuration suivant au fichier de configuration datadog.yaml :

listeners:
  - name: docker
config_providers:
  - name: docker
    polling: true

Ajoutez le bloc de configuration suivant au fichier de configuration datadog.yaml :

listeners:
  - name: kubelet
config_providers:
  - name: kubelet
    polling: true
  # nécessaire pour prendre en charge les anciens modèles de configuration d'étiquette docker
  - name: docker
    polling: true

ECS Fargate ne peut pas être surveillé lorsque l’Agent Datadog est exécuté en tant que binaire sur un host.

Avec l’Agent exécuté en tant que conteneur

Pour activer automatiquement Autodiscovery sur des conteneurs Docker, montez /var/run/docker.sock dans l’Agent conteneurisé.

La fonction Autodiscovery est activée par défaut sur Kubernetes.

Pour vous en assurer, vérifiez que la variable d’environnement suivante est définie :

KUBERNETES=true

Pour activer Autodiscovery sur des conteneurs dans Kubernetes, ajoutez la variable d’environnement suivante lors du démarrage de l’Agent conteneurisé :

ECS_FARGATE=true

Modèles d’intégration

Une fois la fonction Autodiscovery activée, l’Agent Datadog essaie automatiquement de l’utiliser pour un certain nombre de services, notamment Apache et Redis, en se basant sur les fichiers de configuration Autodiscovery par défaut.

Vous pouvez définir un modèle d’intégration de plusieurs façons : avec des annotations de pod Kubernetes, des étiquettes Docker, un fichier de configuration monté sur l’Agent, une ConfigMap ou encore des stockages key-value.

L’exemple suivant décrit un modèle d’intégration Redis défini dans des annotations de pod Kubernetes. Il contient un paramètre password personnalisé et tague tous ses logs avec les attributs source et service adéquats :

apiVersion: v1
kind: Pod
metadata:
  ## nom de votre pod
  name: redis
  annotations:
    ## noms des check ; correspondent aux noms du référentiel integrations_core 
    ad.datadoghq.com/redis.check_names: '["redisdb"]'
    ## quelques paramètres de configuration, comme l'intervalle minimum de collecte
    ad.datadoghq.com/redis.init_configs: '[{}]'
    ad.datadoghq.com/redis.instances: |
      [
        ## configuration à exécuter pour une instance du check
        {
          "host": "%%host%%",
          "port":"6379",
          "password":"%%env_REDIS_PASSWORD%%"
        }
      ]
    ## configuration de la collecte de logs
    ad.datadoghq.com/redis.logs: '[{"source":"redis","service":"redis"}]'
  labels:
    name: redis
spec:
  containers:
    - name: redis
      image: httpd
      ports:
        - containerPort: 80

Pour utiliser la fonction Autodiscovery avec d’autres services, définissez des modèles pour les services à surveiller. Consultez la section Modèles d’intégration Autodiscovery pour en savoir plus.

Pour aller plus loin