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
Le mécanisme de « ferroutage » existe depuis les débuts de Checkmk, dans le cadre de la supervision de VMware. Voici une situation dans laquelle des données doivent être interrogées à partir d’un ordinateur hôte particulier, car elles se trouvent uniquement sur cet ordinateur hôte (par exemple, à partir d’un système hôte ESX ou du vCenter), mais dans la supervision, ces données concernent un ordinateur hôte complètement différent (une machine virtuelle, par exemple).
Cela ne peut pas être réalisé avec le mécanisme standard de Checkmk, car celui-ci attribue automatiquement les données et les services qu’il récupère depuis un ordinateur hôte. Il serait également très peu pratique pour la supervision que toutes les informations relatives à toutes les machines virtuelles apparaissent toujours directement sur l’ordinateur hôte ESX ou même sur le vCenter.
Le terme « ferroutage » décrit le processus par lequel les données de supervision de l'ordinateur hôte B sont, pour ainsi dire, « greffées » sur les données interrogées à partir de l'ordinateur hôte A.
De nos jours, le ferroutage est utilisé dans de nombreux autres plugins de supervision, par exemple lors de la supervision
Outre les environnements de virtualisation, le mécanisme de ferroutage peut également être utilisé pour la supervision des appareils mobiles ou la supervision climatique dans le centre de données (MQTT). Les interfaces de requête étant très simples, il est très facile d'utiliser vous-même le mécanisme de ferroutage. Vous pouvez l'utiliser, par exemple, lors de la mise en œuvre de vos propres plugins de supervision pour effectuer l'affectation des données d'une source de données vers n'importe quel autre ordinateur hôte.
2. Le principe du « ferroutage »
Le principe de base du « ferroutage » fonctionne comme illustré dans le schéma suivant : L’hôte A dispose non seulement de ses propres données de supervision, mais également de celles provenant d’autres hôtes — ou, plus généralement, d’autres objets. Par exemple, un hôte ESX enregistre l’état et de nombreuses métriques actuelles pour chacune de ses machines virtuelles (VM). Cet hôte A est appelé « hôte ferrouté ».
Si Checkmk récupère désormais les données de supervision de A à ses intervalles réguliers d’une minute — que ce soit via l’agent Checkmk standard ou via un agent spécial utilisant l’API d’un fabricant —, il reçoit également, dans la réponse, des données de reporting spécialement marquées provenant des autres ordinateurs hôtes/objets B, C, etc. Ces données ferroutées sont ensuite placées dans des fichiers sur le serveur Checkmk en vue d’un traitement ultérieur. Les ordinateurs hôtes B, C, etc. sont appelés « hôtes ferroutés ».
Si Checkmk a besoin ultérieurement des données de supervision de B ou C, celles-ci se trouvent déjà dans les fichiers locaux et peuvent être traitées directement sans avoir à interroger un agent Checkmk :

Il est également possible et utile de combiner la supervision normale et le ferroutage. Reprenons l'exemple de VMware : Vous avez peut-être installé un agent Checkmk dans votre machine virtuelle B qui évalue des informations locales de la machine virtuelle qui ne sont pas connues de l'hôte ESX (par exemple, les processus s'exécutant dans la machine virtuelle). Dans ce cas, non seulement l'agent sera interrogé, mais ses données seront également combinées avec les données ferroutées reçues de l'hôte A :

3. Le ferroutage en pratique
3.1. Mise en place du ferroutage
Tout d'abord, la bonne nouvelle : le mécanisme de ferroutage fonctionne souvent de manière entièrement automatique :
Si des données ferroutées provenant d'autres ordinateurs hôtes sont détectées lors d'une requête adressée à A, elles sont automatiquement enregistrées en vue d'une évaluation ultérieure.
Si des données ferroutées provenant d’un autre ordinateur hôte sont trouvées lors de l’interrogation de B, elles seront utilisées automatiquement.
Cependant — comme d’habitude dans Checkmk — tout est configurable. Plus précisément, dans les propriétés d’un ordinateur hôte (tel que l’ordinateur hôte B), dans la case « Monitoring agents », vous pouvez définir comment il doit réagir face à des données ferroutées existantes ou manquantes :

La valeur par défaut est « Use piggyback data from other hosts if present ». Si elles sont disponibles, les données ferroutées sont utilisées ; s’il n’y en a pas, l’ordinateur hôte utilise simplement ses « propres » données de supervision.
Avec le paramètre « Always use and expect piggyback data », vous forcez le traitement des données ferroutées. Si les données sont manquantes ou obsolètes, le service d’Check_MK émettra un avertissement.
Et avec l’option « Never use piggyback data », toutes les données ferroutées trouvées sont simplement ignorées — un paramètre dont vous n’aurez besoin que dans des cas exceptionnels.
3.2. Les ordinateurs hôtes doivent être présents
Bien entendu, pour qu’un ordinateur hôte puisse traiter des données ferroutées, l’ordinateur hôte lui-même doit être présent dans la supervision. Dans l’exemple d’ESX, cela signifie que vous devez également avoir vos machines virtuelles en tant qu’hôtes dans Checkmk afin qu’elles soient effectivement surveillées.
Dans les éditions commerciales,
vous pouvez automatiser cette opération à l’aide de la gestion dynamique des hôtes et créer automatiquement des hôtes pour lesquels des données ferroutées sont disponibles.
3.3. Noms de domaine et leurs affectations
Dans les schémas ci-dessus, il était en quelque sorte logique que les données concernant l'objet B soient attribuées à l'ordinateur hôte B dans la supervision. Mais comment cela fonctionne-t-il exactement ?
Avec le mécanisme de ferroutage, l’affectation utilise toujours un nom. L’agent spécial écrit un nom d’objet pour chaque ensemble de données ferroutées. Dans le cas d’ESX, par exemple, le nom de la machine virtuelle. Certains plugins — tels que Docker — proposent également plusieurs options quant à ce qui doit être utilisé comme nom.
Les données ferroutées provenant d’hôtes dont le nom commence par un point ne sont pas traitées dans Checkmk.
Cela s’applique, par exemple, à des noms tels que |
Pour que l'affectation fonctionne correctement, le nom de l'ordinateur hôte correspondant dans Checkmk doit bien sûr être identique, y compris les majuscules et les minuscules.
Mais que se passe-t-il si les noms des objets dans les données ferroutées sont inappropriés ou indésirables pour la supervision ?
Sont par exemple inappropriés les noms d’hôtes ferroutés qui se composent uniquement d’un point ou qui commencent par un point, tels que .myhostname, car ceux-ci ne sont pas traités dans Checkmk.
Il existe un jeu de règles spécial Host name translation for piggybacked hosts, que vous trouverez dans le menu de configuration sous Setup > Agents > Agent access rules.
Pour configurer un changement de nom, vous devez effectuer deux opérations :
Créer une règle et définir la condition d'accès à l'hôte ferrouté – c'est-à-dire l'hôte A.
Créer une valeur d'attribution de nom appropriée dans la règle.
Voici un exemple de valeur dans une règle.
Tout d’abord, la partie « domaine » des noms de domaine est supprimée avec Convert FQHN.
Ensuite, tous les noms de domaine issus des données ferroutées sont convertis en minuscules.
Enfin, les deux hôtes vm0815 et vm081 sont convertis en hôtes Checkmk mylnxserver07 et mylnxserver08 :

La méthode utilisant des expressions régulières, disponible sous Multiple regular expressions, offre davantage de flexibilité. Elle est utile si le renommage de nombreux ordinateurs hôtes est nécessaire et s’effectue selon un schéma spécifique. Procédez comme suit :
Activez l'option « Multiple regular expressions ».
Ajoutez une entrée de traduction à l'aide du bouton « Add expression » — deux champs apparaîtront.
Dans le premier champ — Regular expression —, saisissez une expression régulière qui correspond au nom d’objet d’origine et qui contient au moins un sous-groupe, c’est-à-dire une sous-expression placée entre parenthèses. Pour une explication détaillée de ces groupes, consultez l’article sur les expressions régulières.
Dans « Replacement », spécifiez un schéma pour le nom de domaine souhaité, dans lequel les valeurs « capturées » avec les sous-groupes seront remplacées par
\1,\2, etc.
Un exemple d’expression régulière serait, par exemple, vm(.*)-local.
La valeur de substitution myvm\1 traduirait alors le nom vmharri-local en myvmharri.
3.4. Données ferroutées obsolètes
Si votre réseau change, les données ferroutées peuvent également changer. Cela soulève de nouvelles questions. Comment la supervision réagit-elle si un ordinateur hôte n'est pas accessible ? Que se passe-t-il si les données ferroutées deviennent obsolètes, par exemple parce que l'objet n'est plus disponible, temporairement ou même définitivement ? Toutes les données ferroutées sont-elles traitées de la même manière ou existe-t-il des différences ? Comme pour de nombreux autres thèmes dans Checkmk, le comportement ici dépend également des paramètres et donc des règles. Avec la règle Processing of piggybacked host data, que vous trouverez sous Setup > Agents > Agent access rules, vous pouvez définir diverses options.
Dans la section « Processing of piggybacked host data », vous saisissez les détails pertinents pour le traitement des données ferroutées.

Checkmk vous facilite la tâche lors de la gestion des données ferroutées. Entre autres, il supprime automatiquement tous les hôtes/objets pour lesquels aucune donnée ferroutée n’est (ou n’est plus) fournie par un hôte ferrouté. Avec l’option « Keep hosts while piggyback source sends piggyback data only for other hosts », vous spécifiez le délai après lequel les fichiers concernés contenant des données ferroutées sont supprimés. Assurez-vous que cette période soit au moins aussi longue que la période de check pour les hôtes ferroutés.
Utilisez les deux options de « Set period how long outdated piggyback data is treated as valid » pour définir pendant combien de temps les données ferroutées existantes doivent encore être considérées comme valides si l’ordinateur hôte ne fournit plus de nouvelles données. Une fois la période définie écoulée, les services basés sur les données ferroutées sont affichés comme obsolètes. Vous définissez également le statut du service « Check_MK » pendant cette période. Vous pouvez utiliser cette option pour éviter des avertissements inutiles, en particulier en cas d’interruptions de connexion répétées et de courte durée.
Une fois que vous avez défini le traitement des données ferroutées de manière générale, vous pouvez définir un traitement distinct (selon le même schéma) pour des ordinateurs hôtes sous Exceptions for piggybacked hosts à l'aide des options décrites.
Enfin, vous devez toujours spécifier le nom de l'hôte ferrouté dans l'option « Explicit hosts » de l'Conditions.
4. La technologie à la base de ce processus
4.1. Transport des données ferroutées
Comme décrit ci-dessus, les données ferroutées sont également transmises à d'autres ordinateurs hôtes via la sortie de l'agent du serveur ferrouté. La sortie de l'agent Checkmk est au format texte simple.
La nouveauté réside dans le fait qu’une ligne commençant par <<<< et se terminant par >>>> est autorisée dans la sortie.
Entre ces deux éléments se trouve un nom de domaine.
Toutes les données de supervision suivantes à partir de cette ligne sont alors attribuées à cet ordinateur hôte.
Voici un exemple d’extrait qui attribue la section <<<esx_vsphere_vm>>> à l’ordinateur hôte 316-VM-MGM :
<<<<316-VM-MGM>>>>
<<<esx_vsphere_vm>>>
config.datastoreUrl url /vmfs/volumes/55b643e1-3f344a10-68eb-90b11c00ff94|uncommitted 12472944334|name EQLSAS-DS-04|type VMFS|accessible true|capacity 1099243192320|freeSpace 620699320320
config.hardware.memoryMB 4096
config.hardware.numCPU 2
config.hardware.numCoresPerSocket 2
guest.toolsVersion 9537
guest.toolsVersionStatus guestToolsCurrent
guestHeartbeatStatus green
name 316-VM-MGM
...
<<<<>>>>Une ligne contenant <<<<>>>> doit être utilisée pour mettre fin à cette attribution.
Toute sortie ultérieure appartient alors à nouveau à l'hôte ferrouté.
Lors du traitement de la sortie de l’agent Checkmk, Checkmk extrait les parties destinées à d’autres hôtes et les place dans des fichiers sous ~/tmp/check_mk/piggyback.
En dessous se trouve un sous-répertoire pour chaque hôte ferrouté (par exemple, pour chaque VM) — c’est-à-dire si nous nous en tenons à notre exemple avec le nom B.
Dans ce sous-répertoire, il y aura alors un fichier distinct contenant les données réelles de chaque hôte ferrouté.
Leurs noms seraient A dans notre exemple.
Pourquoi est-ce si compliqué ?
Eh bien, un ordinateur hôte peut en effet recevoir des données ferroutées provenant de plusieurs ordinateurs hôtes, de sorte qu’un seul fichier ne suffirait pas.
Si vous souhaitez savoir à quoi ressemblent les données ferroutées, consultez la sortie de l'agent provenant des ordinateurs hôtes de votre site de supervision dans le répertoire |
L’instruction `cmk-piggyback list sources` renvoie une liste de tous les hôtes ferroutés ayant fourni des données pour d’autres hôtes.
Son équivalent est l’instruction `cmk-piggyback list piggybacked`, qui affiche une liste de tous les hôtes ferroutés (qu’ils soient déjà inclus ou non dans la supervision).
L'instruction cmk-piggyback offre également des options supplémentaires permettant d'observer le traitement des données ferroutées dans la supervision.
Par exemple, avec cmk-piggyback track, vous pouvez consulter toutes les données ferroutées entrantes.
Vous pouvez utiliser cmk-piggyback create-sections pour créer des exemples de données ferroutées.
4.2. Données ferroutées orphelines
Si vous travaillez dans un environnement où les hôtes changent automatiquement en hôtes ferroutés, nous vous recommandons d’utiliser la gestion dynamique des hôtes. Si vous ne pouvez pas ou ne souhaitez pas utiliser la gestion dynamique des hôtes, par exemple parce que les machines virtuelles sont déplacées manuellement, vous pouvez recevoir des données ferroutées provenant d’un hôte que vous n’avez même pas créé dans Checkmk. Cela peut être intentionnel, mais il peut également s’agir d’une erreur — par exemple parce qu’un nom ne présente pas une correspondance exacte.
L'instruction cmk-piggyback list orphans vous montre tous les objets pour lesquels des données ferroutées sont disponibles, mais pour lesquels aucun ordinateur hôte n'existe dans la supervision.
Elle affiche une liste comportant une ligne pour chaque hôte ferrouté non surveillé trouvé :
Cette sortie est « propre » et peut, par exemple, être traitée dans un script.
4.3. Ferroutage dans la supervision distribuée
Dans la supervision distribuée, vous pouvez organiser vos données ferroutées en fonction de vos structures opérationnelles. Cela signifie que les données ferroutées qui parviennent à la supervision via un ordinateur hôte peuvent être attribuées à un autre ordinateur hôte pour évaluation, même entre différents sites. Les données ferroutées sont transmises via l’instance centrale.
Par défaut, les données ferroutées sont toujours traitées sur l’instance où elles sont détectées, et les données sont automatiquement attribuées à l’ordinateur hôte sur lequel elles arrivent. Vous pouvez modifier ce comportement via les propriétés de l’ordinateur hôte.

Sélectionnez ici le site alternatif souhaité — qu’il s’agisse de l’instance centrale ou d’une instance distante sur laquelle vous souhaitez effectuer la supervision des données ferroutées. Ce qui suit s’applique également aux ordinateurs hôtes du « nouveau » site : les ordinateurs hôtes doivent être présents.
Pour réduire la charge sur votre instance centrale, vous pouvez également transférer les données ferroutées d’une instance distante à une autre directement — c’est-à-dire sans passer par l’instance centrale. Vous trouverez de plus amples informations sur cette connexion peer-to-peer dans l’article Supervision distribuée.
5. Fichiers et répertoires
5.1. Chemins d'accès aux fichiers sur le serveur Checkmk
| Chemin d'accès | Description |
|---|---|
|
Emplacement de stockage des données ferroutées |
|
Répertoire contenant les données ferroutées pour l'ordinateur hôte B |
|
Fichier contenant les données ferroutées de l'hôte A pour l'hôte B |
|
Métadonnées relatives aux ordinateurs hôtes créant des données ferroutées |
|
Sortie de l'agent de l'ordinateur hôte A — y compris toutes les données ferroutées existantes au format brut |
|
Script auxiliaire avec des outils d'analyse pour les fonctionnalités de données de ferroutage. Affichez les informations relatives à sa charge de travail à l'aide de la commande « |
