Le check ZooKeeper vérifie les connexions client et les latences, surveille le nombre de requêtes non traitées et bien plus encore.
Configuration
Installation
Le check ZooKeeper est inclus avec le paquet de l’Agent Datadog : vous n’avez donc rien d’autre à installer sur vos serveurs ZooKeeper.
Configuration
Liste d’inclusion
Depuis la version 3.5, ZooKeeper comprend le paramètre 4lw.commands.whitelist. Consultez la section sur les options de cluster ZooKeeper) pour découvrir un exemple permettant d’ajouter des commandes à 4 lettres. Par défaut, seule la commande srvr est ajoutée à la liste blanche. Ajoutez stat et mntr à la liste blanche, car le processus d’intégration repose sur ces commandes.
Activation de l’authentification SSL
La version 3.5 de ZooKeeper prend en charge l’authentification SSL. Pour découvrir comment configurer l’authentification SSL avec ZooKeeper, consultez le guide ZooKeeper à ce sujet (en anglais).
Après avoir configuré l’authentification SSL pour ZooKeeper, vous pouvez égalemet configuré l’Agent Datadog afin de le connecter à ZooKeeper via SSL. Si vous avez déjà configuré l’authentification à l’aide de fichiers JKS, suivez les étapes ci-dessous pour les convertir en fichiers PEM afin de procéder à la configuration TLS/SSL.
Les exemples de commandes suivants supposent que vos fichiers truststore et keystore JKS portent les noms suivants :
server_truststore.jks
server_keystore.jks
client_truststore.jks
client_keystore.jks
Nous partons également du principe que les fichiers keystore et truststore côté client et serveur disposent chacun des certificats réciproques, avec les alias server_cert et client_cert. Ainsi, le client ZooKeeper Java peut d’ores et déjà se connecter à un serveur ZooKeeper.
Si votre clé privée est protégée par un mot de passe, assurez-vous d’indiquer le mot de passe pour l’option de configuration tls_private_key_password du fichier config.yaml.
Pour convertir des fichiers JKS en fichiers PEM :
Récupérez le fichier ca_cert.pem à partir du fichier client_truststore.jks, puisque le truststore du client contient le certificat du serveur fiable :
Récupérez le fichier cert.pem à partir du fichier client_keystore.jks, puisque le keystore du client contient le certificat du client pour l’alias client_cert :
Exécutez la commande openssl pkcs12, afin d’exporter le certificat client et la clé privée du certificat. L’option tls_cert peut lire et parser le fichier PEM, qui contient à la fois le certificat et la clé privée. Si vous souhaitez obtenir un fichier qui n’est pas protégé par un mot de passe, ajoutez -nodes à la commande :
openssl pkcs12 -in cert.p12 -out cert.pem
Host
Pour configurer ce check lorsque l’Agent est exécuté sur un host :
ZooKeeper utilise le logger log4j par défaut. Pour activer la journalisation dans un fichier et personnaliser le format, modifiez le fichier log4j.properties :
# Set root logger level to INFO and its only appender to R
log4j.rootLogger=INFO, R
log4j.appender.R.File=/var/log/zookeeper.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{1}:%L - %m%n
Par défaut, le pipeline d’intégration de Datadog prend en charge les expressions de conversion suivantes :
Vérifiez d’avoir bien dupliqué et modifié le pipeline d’intégration si vous utilisez un autre format.
La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml :
logs_enabled:true
Supprimez la mise en commentaire du bloc de configuration suivant en bas de votre fichier zk.d/conf.yaml, puis modifiez-le :
logs:- type:filepath:/var/log/zookeeper.logsource:zookeeperservice:myapp#To handle multi line that starts with yyyy-mm-dd use the following pattern#log_processing_rules:# - type: multi_line# name: log_start_with_date# pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
Modifiez les valeurs des paramètres path et service et configurez-les pour votre environnement. Consultez le fichier d’exemple zk.d/conf.yaml pour découvrir toutes les options de configuration disponibles.
Bien qu’elles soient toujours envoyées, les métriques suivantes seront prochainement supprimées :
zookeeper.bytes_received
zookeeper.bytes_sent
Événements
Le check ZooKeeper n’inclut aucun événement.
Checks de service
zookeeper.ruok Envoie ruok au nœud surveillé. Renvoie OK pour une réponse imok, renvoie WARN pour toute autre réponse ou renvoie CRITICAL si aucune réponse n’est reçue. Statuses: ok, warning, critical
zookeeper.mode Compare le mode actuel donné par la commande stat au mode attendu configuré dans zk.yaml. Renvoie OK lorsque les modes correspondent. Si ce n’est pas le cas, renvoie CRITICAL. Renvoie uniquement un statut lorsqu’une valeur pour expected_mode est définie dans zk.yaml. Statuses: ok, critical