
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
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
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.
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"
},
...
}
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
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.
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"
},
...
}
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"
Redémarrez l’Agent.
Collecte de logs
Disponible à partir des versions > 6.0 de l’Agent
La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml
avec :
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.
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ètre | Valeur |
---|
<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ètre | Valeur |
---|
<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 :