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
Outre la surveillance classique — c'est-à-dire la surveillance des données d'état, des journaux et des mesures —, Checkmk inclut une autre fonctionnalité totalement différente, pratiquement gratuite : l'inventaire matériel/logiciel (ou inventaire HW/SW en abrégé). Celui-ci permet d'identifier automatiquement les éléments présents sur vos hôtes, tels que, par exemple :
Quels progiciels — et quelles versions de ceux-ci — sont installés sur un serveur ?
De quel type de composants RAM un serveur est-il équipé ?
Quelle version du BIOS est installée sur la carte mère ?
Les numéros de série des disques durs installés.
Si certains ports d’un commutateur n’ont pas été utilisés depuis un certain temps (et sont donc probablement libres) ?
… et bien plus encore
Les données ainsi obtenues sont affichées par hôte dans une arborescence structurée, ainsi que dans diverses autres vues, et sont également disponibles via une API. Voici un petit exemple avec des données CPU :

hardware.cpu
Grâce à l'inventaire matériel/logiciel, vous pouvez effectuer diverses tâches, telles que :
Fournir des données sur les logiciels installés pour un système de gestion des licences
Déterminer les références des pièces de rechange à commander (mémoire vive, disques durs, ventilateurs)
Fournir des données générales sur le matériel et les logiciels pour une importation régulière dans les CMDB, afin que celles-ci soient basées sur des données à jour
Suivre les modifications apportées au matériel ou aux logiciels, par exemple pour déterminer quand une mise à jour spécifique du BIOS a été effectuée
Être informé si un changement est intervenu au niveau du matériel ou des logiciels
Identifier les serveurs sur lesquels un service pack spécifique n’a pas encore été installé
L’avantage le plus important par rapport à d’autres systèmes comparables est évident : vous pouvez simplement utiliser l’infrastructure existante de Checkmk et vous épargner l’effort de mise en place et d’administration d’un autre environnement logiciel. Il vous suffit de déployer un seul plug-in d’agent supplémentaire. Cela n’est même pas nécessaire avec les périphériques SNMP, car le scanner d’inventaire prend également en charge le protocole SNMP et récupère simplement les données par ce biais.
De plus, Checkmk n’a pas besoin de se cacher derrière d’autres scanners d’inventaire. Comme pour nos plug-ins de vérification, nous travaillons en permanence à l’extension de l’analyse des données. Chaque version de Checkmk apporte de nouveaux plug-ins pour le scanner d’inventaire, et les informations pouvant être collectées deviennent de plus en plus détaillées et complètes.
Au-delà des plug-ins disponibles, vous pouvez également développer vos propres plug-ins d'inventaire à l'aide d'une API d'inventaire dédiée. Vous trouverez des informations sur le développement des plug-ins d'inventaire dans un article séparé.
2. Installation
L'installation de l'inventaire matériel/logiciel s'effectue en deux étapes. La condition préalable est que l'agent Checkmk soit déjà installé sur les hôtes (si ceux-ci ne sont pas surveillés via SNMP) :
Activez l'inventaire pour les hôtes souhaités
Déployez le plug-in de l'agent d'inventaire sur ces hôtes
2.1. Activation de l'inventaire pour les hôtes souhaités
Création de la règle
Comme toujours, si vous souhaitez configurer quelque chose pour des hôtes spécifiques, cela est également possible à l’aide d’une règle.
Cet ensemble de règles se trouve sous « Setup > Hosts > HW/SW Inventory rules > Do HW/SW Inventory ».
Bien sûr, il est encore plus simple d’utiliser la recherche de règles avec le mot-clé « inventory ».
Ne confondez pas cet ensemble de règles avec celui intitulé « HW/SW Inventory (Linux, Windows, Solaris, AIX) », qui concerne le plug-in de l’agent, comme nous le verrons plus tard.
Dans l'ensemble de règles « Do HW/SW Inventory », certaines règles faisant référence aux étiquettes d'hôte sont déjà actives par défaut. Si les hôtes que vous souhaitez ont une telle étiquette, le service d'inventaire matériel/logiciel est déjà configuré. Si ce n'est pas le cas, vous devez créer une nouvelle règle.
Utilisez
Add rule pour créer une nouvelle règle pour les hôtes pour lesquels vous souhaitez activer l'inventaire.
Vous y trouverez plusieurs paramètres :

Pour l'instant, laissez simplement tout tel quel. Les différentes options que vous verrez ici sont décrites ci-dessous.
Lors de la prochaine activation des modifications, la règle que vous venez de créer générera, pour chaque hôte, une vérification active qui collectera toutes les données d'inventaire de cet hôte, qu'il s'agisse des données reçues d'un agent Checkmk normal ou de requêtes SNMP supplémentaires. Le nouveau service Check_MK HW/SW Inventory est disponible sur les hôtes dans la liste des services et se présente comme suit :

Ne vous inquiétez pas si le contrôle n'a trouvé que quelques éléments — cela s'explique par le fait que nous n'avons pas encore déployé le plug-in.
Définition de l'intervalle
Les données d'inventaire changent rarement, et la détection d'un changement n'est généralement pas urgente de toute façon. C'est pourquoi il est judicieux d'utiliser un intervalle ajusté pendant lequel la vérification de l'inventaire est effectuée, plutôt que de simplement utiliser l'intervalle habituel d'une minute — principalement parce que le traitement des données d'inventaire dans la vérification active nécessite un temps de calcul nettement plus important que celui requis pour un service normal.
Les sites Checkmk disposent par défaut d’une règle dans le jeu de règles « Setup > Service monitoring rules > Service Checks > Normal check interval for service checks » qui définit l’intervalle à un jour pour tous les services portant le nom « Check_MK HW/SW Inventory » :

Bien sûr, si vous estimez qu’une fois par jour est insuffisant, vous pouvez également personnaliser cette règle — par exemple, pour quatre ou huit heures. Il est bien sûr toujours possible de définir des paramètres différents en utilisant plusieurs règles pour différents hôtes.
2.2. Déploiement du plug-in de l'agent d'inventaire sur ces hôtes
L'étape la plus importante consiste à installer le plug-in de l'agent d'inventaire sur les hôtes concernés. Vous pouvez le faire manuellement ou à l'aide de l'Agent Bakery (éditions commerciales uniquement).
Installation manuelle
Pour une installation manuelle, vous devez d’abord disposer du plug-in. Vous le trouverez dans les éditions commerciales via la page Setup > Agents > Windows, Linux, Solaris, AIX > Related, et dans Checkmk Community directement sous Setup > Agents. Dans toutes les éditions, vous y trouverez des entrées de menu pour les différents systèmes d’exploitation.
En fonction du système d'exploitation, utilisez le plug-in suivant dans la boîte de dialogue « Plug-ins » :
| Système d'exploitation | Plug-in |
|---|---|
Windows |
|
Linux |
|
AIX |
|
Solaris |
|
Vous pouvez également trouver ces fichiers sur la ligne de commande du site Checkmk, dans le sous-répertoire
~/share/check_mk/agents/plugins(Linux/Unix) ou dans ~/share/check_mk/agents/windows/plugins (Windows).
Copiez le plug-in sur les hôtes cibles dans le répertoire approprié pour les plug-ins.
Pour l'agent Windows, il s'agit de C:\ProgramData\checkmk\agent\plugins.
Pour plus de détails, consultez l'article sur l'agent Windows.
Pour Linux et Unix, le répertoire est /usr/lib/check_mk_agent/plugins.
Veuillez vous assurer que le fichier est exécutable (chmod +x).
Pour plus de détails, consultez les articles sur l'agent Linux.
L'important est que l'agent soit appelé par Checkmk, généralement une fois par minute. Le plug-in de l'agent d'inventaire nécessite toutefois plus de temps de traitement que les plug-ins normaux car, par exemple, il doit rechercher les logiciels installés dans de nombreux répertoires. Il génère également des volumes de données nettement plus importants. C'est pourquoi il a été conçu pour ne générer et ne fournir de nouvelles données que toutes les quatre heures (14 400 secondes).
Ainsi, si pour une raison importante, vous avez spécifié un intervalle inférieur à quatre heures pour votre vérification d'inventaire, vous n'obtiendrez en réalité de nouvelles données que toutes les quatre heures. Si vous souhaitez vraiment collecter davantage de données, vous devrez dans ce cas modifier l'intervalle de calcul par défaut.
Sous Windows, remplacez le nombre directement dans le fichier du plug-in.
Recherchez le nombre « 14400 » et remplacez-le par un autre nombre de secondes.
L'emplacement où se trouve ce nombre ressemble à ceci (détail) :
Sous Linux et Unix, cela fonctionne un peu différemment.
À cette fin, créez un fichier de configuration /etc/check_mk/mk_inventory.cfg contenant la ligne suivante (ici, dans l'exemple, avec 7200 secondes) :
Une remarque supplémentaire : Le plug-in de l'agent d'inventaire est configuré pour ne s'exécuter que toutes les quatre heures. Par conséquent, n'utilisez pas le mécanisme de l'agent pour exécuter des plug-ins de manière asynchrone à des intervalles plus longs. Installez le plug-in de la manière simple et habituelle pour une exécution directe.
Configuration à l'aide de l'Agent Bakery
Bien sûr, si vous utilisez Agent Bakery dans les éditions commerciales pour configurer vos agents, les choses sont beaucoup plus simples.
Il n'existe qu'un seul ensemble de règles nommé «HW/SW Inventory (Linux, Windows, Solaris, AIX)», indépendant du système d'exploitation.
Cet ensemble de règles contrôle le déploiement du plug-in nécessaire ainsi que sa configuration.
Vous le trouverez à l'adresse Setup > Agents > Windows, Linux, Solaris, AIX > Agents > Agent rules :

Sous Windows, en plus de l'intervalle, vous pouvez également spécifier des chemins dans lesquels rechercher des fichiers exécutables .EXE lorsqu'il s'agit de trouver les logiciels installés sur le système.
Vous pouvez également configurer les chemins dans le registre Windows, qui doit être pris en compte comme indicateur des logiciels installés.
2.3. Test
Si vous avez correctement déployé le plug-in, vous devriez trouver nettement plus d'enregistrements lors de la prochaine vérification de l'inventaire de l'hôte. Le résultat ressemblera alors à ceci :

3. Utilisation des données d'inventaire
Les données d'inventaire sont bien sûr disponibles pour chaque hôte individuel, sous forme d'arborescence d'une part et de tableau d'autre part. Le fonctionnement précis de ces éléments et la manière dont vous pouvez y accéder sont présentés ci-dessous. Il existe toutefois également des vues, notamment des recherches, qui concernent l'ensemble de votre parc d'hôtes. Vous pouvez y accéder via l'entrée « HW/SW Inventory » dans le menu « Monitor » :

3.1. Affichage arborescent
Les données d'inventaire des hôtes sont affichées d'une part sous forme d'arborescence par hôte, et d'autre part sous forme de tableau. Vous pouvez ouvrir l'arborescence, par exemple, dans une vue d'hôte via l'élément de menu « Host > HW/SW Inventory > Inventory of host ».
Sinon, dans les vues répertoriant les hôtes, vous pouvez ouvrir le menu «
» d’un hôte, puis y sélectionner «
» :

Dans les deux cas, vous obtenez la vue arborescente des données d’inventaire de l’hôte.
À partir des trois catégories de base Hardware
, Networking
et Software
, vous pouvez développer et réduire les sous-branches de l’arborescence :

Dans l'image ci-dessus, vous pouvez voir, derrière chaque entrée, les chemins d'accès de l'inventaire entre parenthèses, que vous pouvez afficher à l'aide de l'option Display > Modify display options et de l'option Show internal tree paths :

Vous verrez alors les désignations internes dans l'inventaire ; ainsi, par exemple, le chemin d'accès interne pour la section « Processor » s'appelle « hardware.cpu ».
Les désignations pour le modèle et l'architecture du processeur — « model » et « arch » — se trouvent ci-dessous dans les données du processeur.
Vous pouvez utiliser ces désignations internes pour n'activer que des chemins individuels pour les groupes de contacts.
Les utilisateurs d'un groupe de contacts auquel seules les entrées hardware.cpu, model et arch indiquées ci-dessus ont été attribuées ne verront alors qu'un inventaire réduit :

3.2. Affichages tabulaires
Bon nombre des données d'inventaire sont des valeurs individuelles situées sous des chemins très spécifiques dans l'arborescence, par exemple l'entrée « Hardware > System > Manufacturer > Apple Inc. ». Mais l'arborescence comporte également des emplacements contenant des tableaux d'objets similaires. L'un des plus importants est, par exemple, le tableau « Software > Packages » :

La particularité de cette partie des données d'inventaire est que vous pouvez afficher les paquets dans une vue distincte via Host > HW/SW Inventory > Software packages.
Vous y trouverez alors des filtres
spécialement conçus pour la recherche dans les paquets (fortement raccourcis sur l'image) :

Vous pouvez également effectuer des recherches dans les paquets logiciels sur plusieurs hôtes. La vue correspondante se trouve dans le menu Monitor, sous « Monitor > HW/SW Inventory > Search software packages ». Toutes les autres vues de tableau pour l'inventaire sont également répertoriées dans le menu « Monitor », y compris des recherches supplémentaires, par exemple pour des données Oracle spécifiques.
Veuillez noter que de nombreux filtres généraux pour les hôtes ne sont pas disponibles par défaut dans les vues. Vous pouvez les obtenir en modifiant la vue et en ajoutant des filtres d'hôte supplémentaires.
Autres possibilités offertes par les vues :
Les inclure dans des rapports
Les exporter au format PDF ou CSV
Les intégrer à des tableaux de bord
Par ailleurs, vous pouvez également inclure ces données d'inventaire dans des vues qui ne se présentent pas sous forme de tableau. Il existe un type de colonne pour chaque chemin d'accès courant dans l'arborescence d'inventaire, que vous pouvez ajouter aux vues des hôtes. La vue prédéfinie « CPU inventory of all hosts » en est un exemple. Il s'agit d'un tableau d'hôtes qui affiche des données supplémentaires issues de l'inventaire pour chaque hôte. Voici un exemple de l'une des définitions de colonne qui ajoute au tableau une colonne indiquant le nombre de processeurs physiques dans l'hôte :

4. Historique des données d'inventaire
Une fois que vous avez configuré l'inventaire matériel/logiciel d'un hôte, Checkmk enregistre chaque modification apportée aux données d'inventaire et en conserve l'historique. Vous pouvez les consulter dans les vues contenant des données d'inventaire via Host > HW/SW Inventory > Inventory history of host.
Voici un extrait d'un historique. Dans le tableau, vous pouvez voir certaines données IP qui ont changé depuis la dernière vérification :

Si vous le souhaitez, vous pouvez être informé chaque fois qu’un changement survient au niveau du logiciel ou du matériel. Cela se fait via l’état du service Check_MK HW/SW Inventory. Pour ce faire, modifiez la règle que vous avez créée au tout début de cet article (dans le jeu de règles « Do HW/SW Inventory »). Vous y trouverez, pour la valeur de la règle, un certain nombre de paramètres qui affectent l’historique. L’exemple suivant configure le service WARN si des changements surviennent au niveau du logiciel ou du matériel :

La prochaine fois que la vérification de l'inventaire détectera des modifications, elle se rendra sur WARN. Cela se présentera alors comme suit :

Lors de la prochaine exécution de la vérification, et si rien n'a changé entre-temps, cela se réinitialise automatiquement sur « OK ». En déclenchant manuellement l'exécution, vous avez également la possibilité de réinitialiser manuellement le service sur « OK » si vous ne souhaitez pas attendre la prochaine exécution périodique normale.
5. Données d'état
L'arborescence des données d'inventaire peut être mise à jour automatiquement avec les dernières données d'état pertinentes. Cela s'avère très utile dans certains cas. Les tablespaces Oracle en sont un exemple. Les données d'inventaire proprement dites ne contiennent que des informations relativement statiques telles que le SID, le nom et le type. Les données d'état actuelles peuvent compléter ces informations avec des détails sur la taille actuelle, l'espace libre, etc.
Si vous souhaitez afficher les données d'état dans votre arborescence (et il n'y a rien de mal à cela), il vous suffit d'activer l'option correspondante dans la règle que vous avez créée au début sous «Do HW/SW Inventory» :

À noter qu’une modification des données d’état n’entraînera pas de changements dans l’historique ! Cela conduirait presque toujours à des modifications constantes et rendrait cette fonction inutile. Les données d’état ne sont pas stockées dans des fichiers, mais, à l’instar des résultats des vérifications, elles sont conservées directement dans la mémoire principale du noyau de surveillance.
6. Accès externe aux données
6.1. Accès via l'API Web propre
Vous pouvez exporter les données d'inventaire matériel/logiciel d'un hôte via l'API Web propre à l'inventaire.
Remarque : l'API Web propre à l'inventaire mentionnée ici n'est pas l'API Web qui a été supprimée de Checkmk dans la version 2.2.0.
Son URL est la suivante :
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost
Le format de sortie dans ce cas est le code source Python.
Si vous préférez le format JSON, ajoutez « &output_format=json » à l'URL :
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&output_format=json
Le résultat se présente sous une forme abrégée comme suit :
De la même manière, vous pouvez également demander la sortie au format XML :
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&output_format=xml.
Si vous saisissez l'URL correspondante dans la barre d'adresse de votre navigateur, vous verrez immédiatement le résultat puisque vous êtes déjà connecté à Checkmk. Les données d'inventaire matériel/logiciel se trouvent dans le fichier de sortie, dans la section suivant la clé « result ». À partir d'un script, il est préférable de s'authentifier en tant qu'utilisateur d'automatisation.
En cas d'erreur, par exemple si l'hôte spécifié n'a pas été trouvé, l'result_codee est défini sur 1 et un message d'erreur approprié s'affiche :
{"result": "Found no inventory data for this host.", "result_code": 1}
Interrogation de plusieurs hôtes
Vous pouvez également interroger les données d'inventaire matériel/logiciel de plusieurs hôtes dans une seule sortie. Pour ce faire, étendez la requête à tous les hôtes requis :
http://myserver/mysite/check_mk/host_inv_api.py?request={"hosts":["myhost","myhost2"]}&output_format=json
Le résultat de cette requête ressemblera presque exactement à la sortie ci-dessus. Cependant, au niveau supérieur, les noms des hôtes sont utilisés comme clés. Les informations relatives aux hôtes suivent ensuite dans les arborescences de répertoires :
Si aucune donnée d'inventaire n'est trouvée pour un hôte, celui-ci aura une entrée d'inventaire vide au lieu du message d'erreur.
Limiter la requête à des données spécifiques
Vous ne souhaitez peut-être pas interroger toutes les données d'inventaire, mais uniquement rechercher des informations spécifiques. Si tel est le cas, spécifiez ce que l'on appelle des chemins d'inventaire pour cibler les informations souhaitées. Vous ne recevrez alors que les informations provenant des hôtes qui disposent de ces chemins / informations.
Par exemple, pour afficher uniquement les informations relatives à l'espace de stockage total et à l'espace d'échange de l'hôte myhost, utilisez cette URL :
http://myserver/mysite/check_mk/host_inv_api.py?host=myhost&request={"paths":[".hardware.memory.total_ram_usable",".hardware.memory.total_swap"]}&output_format=json
Vous recevrez les informations demandées :
6.2. Accès via un fichier
Vous pouvez également vous contenter de lire les fichiers générés par Checkmk.
Ceux-ci sont au format Python et se trouvent dans le répertoire ~/var/check_mk/inventory.
Pour chaque hôte, il existe un fichier non compressé (par exemple myhost) et un fichier compressé (par exemple myhost.gz).
7. Inventaire dans le cadre de la surveillance distribuée
Dans les éditions commerciales, l'inventaire matériel/logiciel fonctionne également en surveillance distribuée.
Ici, les données d'inventaire sont d'abord déterminées par les sites locaux et stockées localement sous
~/var/check_mk/inventory/.
Le démon proxy Livestatus transfère périodiquement toutes les données d'inventaire mises à jour du site distant vers le site central, et les stocke également sous ~/var/check_mk/inventory/.
Ceci est important car ces données sont trop volumineuses pour être récupérées en temps réel lors d'une requête à ce moment-là.
Dès que le site central interroge les données d'inventaire, ces fichiers sont lus puis fusionnés avec les données d'état actuelles, qui sont ensuite récupérées depuis les sites distants via Livestatus.
En résumé, vous n’avez à vous soucier de rien.
Il n’y a pas de proxy Livestatus dans Checkmk Community — par conséquent, l’inventaire matériel/logiciel est incomplet dans l’interface graphique du site central et n’affiche que les données d’état.
Vous pouvez vous aider en transférant régulièrement les fichiers du répertoire
~/var/check_mk/inventory/ vers le site central à l’aide d’un script ou d’un outil similaire.
Il suffit de copier les fichiers sans l’extension .gz.
Pour une transmission efficace des données, rsync, par exemple, est tout à fait adapté.
8. Fichiers et répertoires
8.1. Répertoires sur le serveur Checkmk
| Chemin | Description |
|---|---|
|
Emplacement de stockage des plug-ins d'agent pour Linux et Unix |
|
Emplacement de stockage des plug-ins d'agent pour Windows |
|
Données d'inventaire provenant des hôtes individuels sous forme de fichiers Python (compressés et non compressés) |
8.2. Répertoires sur les hôtes surveillés
| Chemin | Description |
|---|---|
|
Emplacement de stockage du plug-in d'inventaire de l'agent Windows |
|
Emplacement de stockage du plug-in d'inventaire pour l'agent Linux/Unix |
|
Configuration du plug-in d'inventaire pour l'agent Linux/Unix |
