Consul

Supported OS Linux Windows Mac OS

Intégration2.2.1

Dashboard Consul

Présentation

L’Agent Datadog recueille de nombreuses métriques sur les nœuds Consul, notamment pour :

  • Le nombre total de pairs Consul
  • La santé des services : le nombre de nœuds avec le statut Up, Passing, Warning ou Critical d’un service donné
  • La santé des nœuds : le nombre de services avec le statut Up, Passing, Warning ou Critical d’un nœud donné
  • Des coordonnées réseau : latences entre les centres de données et au sein de ces derniers

L’Agent Consul peut fournir davantage de métriques par l’intermédiaire de DogStatsD. Ces métriques sont davantage orientées sur la santé interne de Consul, et non sur celle des services qui dépendent de Consul. Elles concernent :

  • Les événements Serf et les bagotements de membre
  • Le protocole Raft
  • Les performances DNS

Et bien plus encore.

Enfin, en plus des métriques, l’Agent Datadog envoie également un check de service pour chaque check de santé de Consul, ainsi qu’un événement après chaque nouvelle élection de leader.

Implémentation

Installation

Le check Consul de l’Agent Datadog est inclus avec le package de l’Agent Datadog : vous n’avez donc rien d’autre à installer sur vos nœuds Consul.

Configuration

Host

Pour configurer ce check lorsque l’Agent est exécuté sur un host :

Collecte de métriques
  1. Modifiez le fichier consul.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent pour commencer à recueillir vos métriques de performance Consul. Consultez le fichier d’exemple consul.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

    init_config:
    
    instances:
      ## @param url - string - required
      ## Where your Consul HTTP server lives,
      ## point the URL at the leader to get metrics about your Consul cluster.
      ## Use HTTPS instead of HTTP if your Consul setup is configured to do so.
      #
      - url: http://localhost:8500
    
  2. Redémarrez l’Agent.

OpenMetrics

Vous avez également la possibilité d’activer l’option de configuration use_prometheus_endpoint pour obtenir des métriques supplémentaires à partir de l’endpoint Prometheus de Consul.

Remarque : utilisez DogStatsD ou Prometheus, mais n’activez pas les deux pour la même instance.

  1. Configurez Consul de façon à exposer des métriques sur l’endpoint Prometheus. Définissez le paramètre prometheus_retention_time imbriqué sous la clé telemetry de premier niveau dans le fichier de configuration principal de Consul :

    {
      ...
      "telemetry": {
        "prometheus_retention_time": "360h"
      },
      ...
    }
    
  2. Modifiez le fichier consul.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent pour commencer à utiliser l’endpoint Prometheus.

    instances:
        - url: <EXAMPLE>
          use_prometheus_endpoint: true
    
  3. Redémarrez l’Agent.

DogStatsD

Au lieu d’utiliser l’endpoint Prometheus, il est possible de configurer Consul de façon à envoyer les mêmes métriques supplémentaires à l’Agent par l’intermédiaire de DogStatsD.

  1. Pour y parvenir, ajoutez votre dogstatsd_addr imbriqué sous la clé telemetry de premier niveau dans le fichier de configuration principal de Consul :

    {
      ...
      "telemetry": {
        "dogstatsd_addr": "127.0.0.1:8125"
      },
      ...
    }
    
  2. Pour veiller à ce que les métriques soient correctement taguées, modifiez le fichier de configuration principal de l’Agent Datadog datadog.yaml en y ajoutant les paramètres suivants :

    # dogstatsd_mapper_cache_size: 1000  # default to 1000
    dogstatsd_mapper_profiles:
      - name: consul
        prefix: "consul."
        mappings:
          - match: 'consul\.http\.([a-zA-Z]+)\.(.*)'
            match_type: "regex"
            name: "consul.http.request"
            tags:
              method: "$1"
              path: "$2"
          - match: 'consul\.raft\.replication\.appendEntries\.logs\.([0-9a-f-]+)'
            match_type: "regex"
            name: "consul.raft.replication.appendEntries.logs"
            tags:
              peer_id: "$1"
          - match: 'consul\.raft\.replication\.appendEntries\.rpc\.([0-9a-f-]+)'
            match_type: "regex"
            name: "consul.raft.replication.appendEntries.rpc"
            tags:
              peer_id: "$1"
          - match: 'consul\.raft\.replication\.heartbeat\.([0-9a-f-]+)'
            match_type: "regex"
            name: "consul.raft.replication.heartbeat"
            tags:
              peer_id: "$1"
    
  3. Redémarrez l’Agent.

Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

  1. La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml avec :

    logs_enabled: true
    
  2. Modifiez ce bloc de configuration dans votre fichier consul.yaml pour recueillir vos logs Consul :

    logs:
      - type: file
        path: /var/log/consul_server.log
        source: consul
        service: myservice
    

    Modifiez les valeurs des paramètres path et service et configurez-les pour votre environnement. Consultez le fichier d’exemple consul.d/conf.yaml pour découvrir toutes les options de configuration disponibles.

  3. Redémarrez l’Agent.

Environnement conteneurisé

Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer les paramètres ci-dessous à un environnement conteneurisé.

Collecte de métriques
ParamètreValeur
<NOM_INTÉGRATION>consul
<CONFIG_INIT>vide ou {}
<CONFIG_INSTANCE>{"url": "https://%%host%%:8500"}
Collecte de logs

Disponible à partir des versions > 6.0 de l’Agent

La collecte des logs est désactivée par défaut dans l’Agent Datadog. Pour l’activer, consultez la section Collecte de logs Kubernetes.

ParamètreValeur
<CONFIG_LOG>{"source": "consul", "service": "<NOM_SERVICE>"}

Validation

Lancez la sous-commande status de l’Agent et cherchez consul dans la section Checks.

Remarque : si la journalisation de debugging est activée sur vos nœuds Consul, les opérations d’interrogation habituelles de l’Agent Datadog s’affichent dans le log Consul :

2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/status/leader (59.344us) from=127.0.0.1:53768
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/status/peers (62.678us) from=127.0.0.1:53770
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/health/state/any (106.725us) from=127.0.0.1:53772
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/catalog/services (79.657us) from=127.0.0.1:53774
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/health/service/consul (153.917us) from=127.0.0.1:53776
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/coordinate/datacenters (71.778us) from=127.0.0.1:53778
2017/03/27 21:38:12 [DEBUG] http: Request GET /v1/coordinate/nodes (84.95us) from=127.0.0.1:53780

De l’Agent Consul à DogStatsD

Utilisez netstat pour vérifier que Consul envoie également ses métriques :

$ sudo netstat -nup | grep "127.0.0.1:8125.*ESTABLISHED"
udp        0      0 127.0.0.1:53874         127.0.0.1:8125          ESTABLISHED 23176/consul

Données collectées

Métriques

Consultez la documentation de Consul relative à la télémétrie pour obtenir la description des métriques envoyées par l’agent Consul à DogStatsD.

Consultez la documentation de Consul relative aux coordonnées réseau pour découvrir comment les métriques de latence réseau sont calculées.

Événements

consul.new_leader :
L’Agent Datadog génère un événement lorsque le cluster Consul élit un nouveau leader, et lui attribue les tags prev_consul_leader, curr_consul_leader et consul_datacenter.

Checks de service

consul.check
Renvoie ok si le service est disponible, renvoie warning en cas de problème et renvoie critical si le service est indisponible.
Statuses: ok, warning, critical

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles :

PREVIEWING: may/embedded-workflows