This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introduction
Les métriques sont des valeurs mesurables et calculables relatives aux hôtes et aux services ; elles sont stockées en interne par Checkmk dans ce que l'on appelle les bases de données Round-Robin (RRD).
Ces métriques sont traitées par le système de graphiques intégré et visualisées à de nombreux endroits dans l'interface Web de Checkmk, par exemple sous forme de Perf-O-Mètres dans la liste des services ou sous forme de graphiques que vous pouvez afficher à partir de la liste des services à l'aide de l'icône de graphique «
».
L'interface de visualisation des métriques est basée sur HTML5 et est identique dans les éditions commerciales et dans Checkmk Community.
Consultez l'article sur la création de graphiques pour plus de détails à ce sujet.
Parallèlement à la fonctionnalité de création de graphiques intégrée à Checkmk, vous pouvez également vous connecter à des bases de données de métriques externes et envoyer les métriques vers InfluxDB ou Graphite.
Comme le transfert est effectué par le Checkmk Micro Core (CMC), cette fonctionnalité n’est disponible que dans les éditions commerciales.
Dans cet article, vous apprendrez comment configurer le transfert des métriques vers InfluxDB et Graphite dans Checkmk.
2. Envoi de métriques vers InfluxDB

InfluxDB est un système de gestion de base de données (SGBD) open source dédié aux séries chronologiques — et constitue actuellement la solution la plus populaire dans ce domaine. InfluxDB propose une API unifiée avec l’API InfluxDB v2, qui peut notamment être utilisée pour écrire des données de métriques dans la base de données. Checkmk utilise l’API InfluxDB v2 et vous permet non seulement d’envoyer les métriques de Checkmk vers InfluxDB, mais aussi de les stocker de manière appropriée dans la structure existante d’InfluxDB. L’utilisation de l’API simplifie d’une part la configuration de l’envoi des données de métriques et prépare d’autre part Checkmk à de futures extensions.
La configuration décrite dans ce chapitre s'applique uniquement à la connexion d'un InfluxDB via l'API InfluxDB v2. Checkmk ne prend actuellement pas en charge l'API InfluxDB v3. Si vous utilisez un InfluxDB <= V1.8, configurez-le plutôt comme décrit dans le chapitre sur la connexion à Graphite, car InfluxDB prend en charge le protocole Carbon de Graphite jusqu'à la version V1.8. |
2.1. Collecte d'informations
Avant de commencer la configuration dans Checkmk, vous devez obtenir les informations suivantes concernant le système cible InfluxDB que vous souhaitez connecter à Checkmk :
| Paramètre | Description |
|---|---|
Nom d'hôte |
Nom (ou adresse IP) du serveur InfluxDB. Il est particulièrement important de saisir le nom DNS si la connexion est chiffrée via HTTPS, car les certificats ne sont pratiquement jamais émis pour des adresses IP. |
Numéro de port |
Numéro du port TCP par lequel le serveur InfluxDB est accessible.
Le port par défaut est |
Protocole |
|
Organisation |
Dans InfluxDB, l'organisation est l'espace de travail destiné à plusieurs utilisateurs. L'organisation initiale est demandée lors de la configuration d'InfluxDB. Des organisations supplémentaires peuvent être créées manuellement via l'interface graphique d'InfluxDB. |
Compartiments |
InfluxDB stocke les données de séries chronologiques dans des conteneurs, appelés buckets
.
Une période de conservation est notamment définie pour chaque bucket.
InfluxDB supprime automatiquement tous les points de données plus anciens que cette période. |
Jeton |
La communication entre Checkmk et InfluxDB s'effectue via l'API InfluxDB v2. InfluxDB utilise des jetons API pour autoriser les requêtes via l'API. Un jeton API appartient à un utilisateur spécifique et identifie les autorisations InfluxDB au sein de l'organisation de cet utilisateur. Les jetons sont créés via l’interface graphique d’InfluxDB, soit avec un accès complet en lecture et en écriture à toutes les ressources au sein d’une organisation (jeton « All Access »), soit avec des droits d’accès sélectionnés à des buckets spécifiques au sein d’une organisation (jeton « Read/Write »). Un jeton peut être copié dans le presse-papiers, ce qui facilite son collage ultérieur lors de la configuration de Checkmk. Le jeton utilisé pour se connecter au serveur Checkmk doit bien sûr disposer des autorisations de lecture et d’écriture pour le bucket en cours de configuration dans Checkmk. |
Pour plus de détails, consultez la documentation d'InfluxDB.
Une fois ces informations en main, la configuration dans Checkmk s'effectue en seulement deux opérations simples.
2.2. Connexion de Checkmk à InfluxDB
Ouvrez le menu Configuration et activez le mode Afficher plus — car ce n’est qu’alors que l’option de menu Setup > Exporter > InfluxDB connections sera affichée. Sélectionnez-la pour afficher la liste des connexions InfluxDB existantes. Comme vous n’avez probablement encore rien configuré ici, cette liste sera vide.
Une connexion est indispensable pour envoyer les données. Toutefois, sans règle permettant de sélectionner les informations de métriques, aucune donnée ne sera envoyée.
Commencez donc par créer une nouvelle connexion avec
Add connection :

Dans l'General properties, vous spécifiez l'ID interne et le titre de la connexion, comme d'habitude.
Si d'autres sites sont connectés au site actuel, comme c'est le cas avec une surveillance distribuée, vous pouvez limiter la connexion à des sites spécifiques sous « Site restriction ». Pour ce faire, déplacez d'abord l'entrée « All sites » vers la colonne de gauche, puis déplacez les sites qui doivent recevoir des métriques de la colonne de gauche vers la colonne de droite « Selected ». Les sites qui ne recevront pas de métriques restent alors dans la colonne de gauche.
Nous poursuivons ensuite dans la case suivante avec l'InfluxDB Connection properties :

Saisissez ici le premier ensemble de valeurs de paramètres que vous avez compilées dans la section précédente.
Enregistrez la connexion en cliquant sur « Save » et vous reviendrez à la liste des connexions :

Dans la liste des connexions, la colonne « Enabled » affiche des informations importantes sur l'état de la connexion.
Ne soyez pas surpris de voir trois entrées dans la liste de la capture d'écran ci-dessus :
Afin de pouvoir voir tous les symboles en action, nous avons ajouté deux connexions supplémentaires à la liste.
Dans la première colonne de « Enabled », vous pouvez voir si la connexion est activée (
) ou désactivée (
).
Dans la deuxième colonne, vous pouvez voir s'il existe déjà une règle pour la connexion (
) ou non (
).
Aucune donnée ne sera transmise via une connexion tant qu’elle n’aura pas été associée à une règle sélectionnant les informations de métriques.
Cette règle s’appelle « Send metrics to InfluxDB ».
Les icônes de règle sont des boutons et constituent un raccourci vers la création de règles.
Pour une connexion associée à une règle, cliquez sur «
» afin d’ouvrir la page de présentation de l’ensemble des règles, qui met en évidence la règle qui s’applique ou s’appliquerait à la connexion.
Pour une connexion sans règle, cliquer sur «
» vous amène directement à la page de création de règles.
Dans le chapitre suivant, nous décrirons en détail ce qui peut être spécifié dans cette règle.
2.3. Sélection des informations de métriques
Une règle vous permet de déterminer dans Checkmk quelles données sont envoyées au serveur InfluxDB et où elles sont stockées.
L'ensemble de règles « Send metrics to InfluxDB » se trouve dans « Setup > Services > Service monitoring rules » ; vous pouvez y accéder plus rapidement via la recherche dans le menu « Setup », et encore plus rapidement en cliquant dans la liste des connexions :

Dans la boîte de dialogue « Send metrics to InfluxDB », sélectionnez d’abord la connexion créée dans la section précédente, puis spécifiez où les données seront stockées sur le serveur InfluxDB. Saisissez ici le deuxième ensemble d’informations collectées pour le serveur InfluxDB. Utilisez « Organization » pour déterminer quels utilisateurs reçoivent les données, et « Bucket » pour définir la durée de conservation des métriques. La sélection multiple n’est pas possible ; vous ne pouvez donc pas, par exemple, envoyer les métriques vers plusieurs buckets destinés à différentes organisations.
Ci-dessous, vous sélectionnez les données de métriques qui seront envoyées depuis Checkmk vers le serveur InfluxDB. L'option « Metrics of service» est déjà sélectionnée par défaut et permet l'envoi des métriques. Cochez la case « Service state » pour envoyer l'état du service en tant que métrique distincte.
Après avoir activé « Additional values per metric », vous pouvez ajouter un certain nombre de métadonnées aux métriques à des fins d’affichage, par exemple l’état du service (State of service) et l’adresse IP de l’hôte (Thresholds). Notez ici que l’option « Unit » ne fonctionne actuellement que pour les métriques issues de contrôles actifs, si ceux-ci la prennent en charge. La raison en est que seuls les contrôles actifs disposent d’une option permettant de fournir l’unité de mesure et que le CMC n’a pas accès aux autres.
Dans le dernier menu de sélection, « Tags to use », des métadonnées telles que des balises d’hôte ou des étiquettes sont ajoutées aux métriques ; celles-ci sont principalement utilisées pour le filtrage et ont été optimisées à cette fin. Les options « Host name » et « Service name » sélectionnées par défaut sont des entrées obligatoires qui ne peuvent pas être désélectionnées.
Dans InfluxDB, les Additional values per metric sont stockées sous forme de champs et les Tags to use sous forme de balises.
Enfin, validez les modifications pour créer la connexion et créer la ou les règles. En cas de problèmes avec la transmission des métriques, consultez les informations sur le diagnostic des erreurs ci-dessous.
2.4. Affichage des métriques dans InfluxDB
Une fois que les métriques provenant de Checkmk sont arrivées sur le serveur InfluxDB, elles peuvent être affichées dans l'interface graphique d'InfluxDB.
À titre d'exemple, l'image suivante montre le graphique de la métrique « total_used », qui indique la quantité de mémoire utilisée :

Remarque : cette métrique se trouve dans Checkmk, au niveau du service « Memory », sous la métrique intitulée « Total used memory ».
3. Envoi de métriques vers Graphite

Graphite est également un SGBD de séries chronologiques open source bien connu, destiné au stockage, à la récupération, au partage et à la visualisation des métriques.
Graphite se compose du démon Carbon, qui attend les données et les stocke dans une base de données, d’où elles sont traitées et affichées sous forme de graphiques à l’aide de l’application web Graphite.
Vous pouvez utiliser Checkmk pour transférer les métriques via le protocole en texte clair vers le démon Carbon de Graphite, qui attend les données de ce protocole sur le port 2003.
Dans le protocole en texte clair, un enregistrement est structuré de manière très simple au format <metricpath> <value> <timestamp>, où <metricpath> est un identifiant unique séparé par des points.
Contrairement à la connexion InfluxDB, par défaut, toutes les données de métriques sont envoyées dès qu’une connexion Graphite a été activée. Si vous ne le souhaitez pas, vous devez sélectionner les métriques par règle avant d’activer la connexion, puis activer à la fois les règles et la connexion.
3.1. Sélection des informations de métriques
Dans Checkmk, sous « Setup > Services > Service monitoring rules », vous trouverez les deux ensembles de règles « Send host metrics to Graphite » et « Send service metrics to Graphite ». La configuration s’effectue de la même manière pour les métriques d’hôte et de service. Nous vous présentons ici la configuration pour les métriques de service. Vous configurez ensuite les métriques d’hôte de la même manière.
Vous pouvez utiliser la règle « Send service metrics to Graphite » pour sélectionner les valeurs à envoyer avec les métriques :

Deuxièmement, vous pouvez limiter l'envoi à certains hôtes et services dans la boîte de dialogue « Conditions ». Étant donné que sans règle restrictive, toutes les données seront envoyées, il est recommandé de créer d'abord une règle qui désactive l'envoi de manière globale en décochant toutes les cases indiquées dans la capture d'écran ci-dessus. Ensuite, créez une règle spécifique avec les informations de métrique souhaitées pour les hôtes et les services dont les métriques doivent être envoyées au serveur Graphite. Placez la règle spécifique avant la règle globale :

myhost de l'hôte seront envoyées3.2. Connexion de Checkmk à Graphite
Vous configurez la connexion au serveur Graphite sous Setup > General > Global Settings > Monitoring Core > Send metrics to Graphite. Cliquez là-bas sur « Add new Graphite connection » :

Outre les informations évidentes relatives au serveur Graphite (le nom et le numéro de port pour le protocole Carbon en texte clair), vous pouvez également utiliser Optional variable prefix pour configurer un préfixe à ajouter à chaque nom d'hôte, par exemple pour imposer des noms uniques.
Checkmk définit le chemin de métrique pour le protocole en texte clair sur <host>.<service>.<metric>.
Une activation des modifications apportées aux règles et à la connexion finalise la configuration de Graphite.
3.3. Affichage des métriques dans Graphite
Dans l'interface graphique de Graphite, vous pouvez également consulter les métriques reçues de Checkmk.
L'image suivante montre le graphique de la métrique total_used que nous avons déjà présentée ci-dessus à titre d'exemple dans l'interface graphique d'InfluxDB :

4. Diagnostic des erreurs
Si les métriques n'arrivent pas là où vous vous y attendiez, vous pouvez trouver les informations de diagnostic de votre site dans le fichier ~/var/log/cmc.log — le fichier journal de Checkmk Micro Core.
L'exemple suivant montre les messages qui s'affichent si le compartiment configuré dans Checkmk n'existe pas sur le serveur InfluxDB :
2022-01-10 11:41:35 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully initiated connection
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Successfully connected
2022-01-10 11:41:36 [3] [influxdb https://myinfluxdb.example.com:8086] POST [404] {"code": "not found", "message": "bucket \"my_bucket\" not found"}
2022-01-10 11:41:36 [5] [influxdb https://myinfluxdb.example.com:8086] Closing connectionL'exemple suivant montre les messages reçus en cas d'échec de la connexion au serveur Graphite :
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Successfully initiated connection
2021-12-15 17:33:33 [4] [carbon 10.0.0.5:2003] Connection failed: Connection refused
2021-12-15 17:33:33 [5] [carbon 10.0.0.5:2003] Closing connectionDans de telles situations, le Checkmk Micro Core continue d'essayer de se connecter de manière autonome.
Important : pour des raisons de performances, les métriques générées pendant une période où il n'y a pas de connexion au système cible ne sont pas mises en cache, mais sont perdues (ou ne sont alors disponibles que dans les RRD de Checkmk).
Remarque : si les messages du journal ne sont pas suffisamment explicites pour vous, vous pouvez modifier les valeurs par défaut du niveau de journalisation sous Setup > General > Global Settings > Monitoring Core > Logging of the core. Vous y trouverez des entrées pour la journalisation d'InfluxDB (InfluxDB processing) et de Graphite (Carbon connections).
