Autodiscovery avec JMX
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Autodiscovery avec JMX

Lorsque l’Agent Datadog utilise des configurations d’intégration basées sur JMX, ces dernières sont parfois trop lourdes pour être incluses dans des étiquettes/annotations Autodiscovery. Il convient alors d’utiliser les identificateurs de conteneur Autodiscovery.

L’exemple d’intégration Datadog/Kafka ci-dessous fait appel à JMX pour recueillir les métriques et à l’Agent Datadog pour les envoyer à Datadog.

Préparation de l’Agent

  1. Activez l’intégration Kafka en renommant conf.yaml.example en conf.yaml dans le répertoire de l’intégration Kafka : /etc/datadog-agent/conf.d/kafka.d

  2. Remplacez les valeurs des paramètres dans conf.yaml pour adapter la configuration à la logique Autodiscovery : Par défaut, les valeurs des paramètres dans les fichiers de configuration correspondent à celles du host. Si vous utilisez l’Agent avec Autodiscovery, faites appel aux template variables Autodiscovery. Dans l’exemple suivant, modifiez la valeur du paramètre host en la faisant passer de localhost à %%host%% :

      instances:
    
          ## @param host - string - required
          ## Kafka host to connect to.
          #
         - host: %%host%%
    
      # (...)
  3. Pour indiquer à l’Agent que vous souhaitez appliquer ce fichier de configuration à vos conteneurs Kafka, configurez le paramètre ad_identifiers au début de votre fichier conf.yaml :

      ad_identifiers:
        - CUSTOM_AD_IDENTIFIER
    
      instances:
    
          ## @param host - string - required
          ## Kafka host to connect to.
          #
         - host: %%host%%
    
      # (...)

    Remarque : l’exemple ci-dessus utilise une valeur personnalisée pour ad_identifers, mais vous pouvez spécifier le nom raccourci de l’image du conteneur si vous le souhaitez.

  4. Activez Autodiscovery sur votre Agent.

  1. Récupérez les fichiers de configuration conf.yaml et metrics.yaml associés à l’intégration Datadog/Kafka. Pour ce faire, accédez à votre répertoire de configuration des intégrations. Vous trouverez ci-dessous la liste des intégrations basées sur JMX ainsi que de leurs fichiers associés :

    IntégrationFichier des métriquesFichier de configuration
    ActiveMqmetrics.yamlconf.yaml.example
    Cassandrametrics.yamlconf.yaml.example
    Hivemetrics.yamlconf.yaml.example
    Jboss Wildflymetrics.yamlconf.yaml.example
    Kafkametrics.yamlconf.yaml.example
    Solrmetrics.yamlconf.yaml.example
    Prestometrics.yamlconf.yaml.example
    Tomcatmetrics.yamlconf.yaml.example
  2. Renommez conf.yaml.example en conf.yaml.

  3. Remplacez les valeurs des paramètres dans conf.yaml pour adapter la configuration à la logique Autodiscovery : Par défaut, les valeurs des paramètres dans les fichiers de configuration correspondent à celles du host. Si vous utilisez l’Agent avec Autodiscovery, faites appel aux template variables Autodiscovery à la place. Dans l’exemple suivant, modifiez la valeur du paramètre host en la faisant passer de localhost à %%host%% :

      instances:
    
          ## @param host - string - required
          ## Kafka host to connect to.
          #
         - host: %%host%%
    
      # (...)
  4. Pour indiquer à l’Agent que vous souhaitez appliquer ce fichier de configuration à vos conteneurs Kafka, configurez le paramètre ad_identifiers au début de votre fichier conf.yaml :

      ad_identifiers:
        - CUSTOM_AD_IDENTIFIER
    
      instances:
    
          ## @param host - string - required
          ## Kafka host to connect to.
          #
         - host: %%host%%
    
      # (...)

    Remarque : l’exemple ci-dessus utilise une valeur personnalisée pour ad_identifers, mais vous pouvez spécifier le nom raccourci de l’image du conteneur si vous le souhaitez.

  5. Une fois Autodiscovery activé sur votre Agent, montez ces fichiers de configuration (conf.yaml et metrics.yaml) dans le dossier conf.d/kafka.d/ de votre Agent.

  6. (Facultatif) Si vous ne pouvez pas monter ces fichiers dans le conteneur de l’Agent (par exemple si vous utilisez AWS ECS), créez une nouvelle image Docker de l’Agent en y intégrant ces deux fichiers de configuration :

    FROM datadog/agent:latest
    COPY <PATH_JMX_CONF_FILE> conf.d/kafka.d/
    COPY <PATH_JMX_METRICS_FILE> conf.d/kafka.d/

Ensuite, utilisez cette nouvelle image personnalisée en tant qu’Agent conteneurisé classique.

Préparation du conteneur

Une fois l’Agent configuré et lancé, utilisez l’étiquette/l’annotation com.datadoghq.ad.check.id: IDENTIFICATEUR_AD_PERSONNALISÉ pour votre conteneur Kafka afin d’appliquer la configuration du check via Autodiscovery :

apiVersion: v1
kind: Pod
# (...)
metadata:
  name: '<NOM_POD>'
  annotations:
    ad.datadoghq.com/<IDENTIFICATEUR_CONTENEUR>.check.id: 'IDENTIFICATEUR_AD_PERSONNALISÉ'
    # (...)
spec:
  containers:
    - name: '<IDENTIFICATEUR_CONTENEUR>'
# (...)

Remarques :

  • Pour appliquer une configuration spécifique à un conteneur donné, Autodiscovery identifie les conteneurs via leur nom, et non via leur image. II cherche à faire correspondre <IDENTIFICATEUR_CONTENEUR> à .spec.containers[0].name, et non à .spec.containers[0].image.
  • Si vous définissez directement vos pods Kubernetes (avec kind: Pod), ajoutez les annotations de chaque pod directement dans sa section metadata. Si vous définissez indirectement les pods avec des ReplicationControllers, des ReplicaSets ou des Deployments, ajoutez les annotations de pod dans .spec.template.metadata.

Dockerfile :

LABEL "com.datadoghq.ad.check.id"= 'IDENTIFICATEUR_AD_PERSONNALISÉ'

docker-compose.yaml :

labels:
  com.datadoghq.ad.check.id: IDENTIFICATEUR_AD_PERSONNALISÉ

Commande d’exécution Docker :

-l com.datadoghq.ad.check.id= 'IDENTIFICATEUR_AD_PERSONNALISÉ'

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.id: IDENTIFICATEUR_AD_PERSONNALISÉ

Pour aller plus loin