Inventaire des ensembles RAID LSI dans GLPI

Inventaire des ensembles RAID LSI dans GLPI
Dans mon travail, je ressens souvent une obsession concernant le manque d'informations sur l'infrastructure, et à mesure que le nombre de serveurs gérés augmente, cela devient un véritable calvaire. Même lorsque j'étais administrateur dans de petites organisations, j'avais toujours envie de savoir ce qui se trouvait où, où tout était connecté, quelles personnes étaient responsables de quel matériel ou service, et surtout — de consigner les modifications apportées à tout cela. Lorsque l'on arrive dans un nouvel endroit et que l'on est confronté à un incident quelconque, énormément de temps est consacré à la recherche de cette information. Je vais maintenant vous parler des défis que j'ai rencontrés chez RuVDS et de la manière dont j'ai résolu le problème énoncé dans le titre.

Contexte

En tant qu'administrateur d'entreprise, j'avais peu d'expérience dans un centre de données, mais j'avais entrevu RackTables. Il présentait visuellement le rack avec tous les serveurs, UPS, commutateurs et toutes les connexions entre eux. Chez RuVDS, il n'y avait pas un tel système, seulement des fichiers Excel/papiers avec des informations sur les serveurs, certains de leurs composants, les numéros de racks, etc. Avec cette approche, il est très difficile de suivre les changements et de gérer les petits composants. Le matériel consommable le plus crucial et le plus souvent remplacé dans les serveurs - ce sont les disques. Il est très important de maintenir des informations à jour sur l'état des disques et leur réserve stratégique. Si un disque tombe en panne dans un ensemble RAID et qu'il n'y a pas de remplacement rapide, cela peut finalement avoir des conséquences fatales. Par conséquent, nous avons vraiment besoin d'un système qui suit l'emplacement et l'état des disques, afin de comprendre ce qui pourrait nous manquer et quels modèles précis doivent être achetés.

GLPI est venu à notre secours, un produit open source conçu pour améliorer le fonctionnement des départements informatiques et les rapprocher des idéaux de l'ITIL. En plus de l'inventaire du matériel et de la gestion des racks, il inclut une base de connaissances, un service desk, la gestion des documents et bien plus encore. GLPI dispose de nombreux plugins, y compris FusionInventory et OCS Inventory, qui permettent de collecter automatiquement des informations sur les ordinateurs et autres appareils via l'installation d'agents et par SNMP. Vous pouvez lire plus sur l'installation de GLPI et des plugins dans d'autres articles, de préférence — la documentation officielle. Il est possible de l'installer chez nous sur un modèle déjà préparé LAMP.

Cependant, après le déploiement de l'agent, nous ouvrirons les composants de l'ordinateur dans GLPI et nous verrons cela :

Inventaire des ensembles RAID LSI dans GLPI
Le problème est qu'aucun des plugins ne peut voir les informations sur les disques physiques dans les ensembles RAID LSI. J'ai vu comment cette question est résolue pour la surveillance dans Zabbix à l'aide d'un script PowerShell. lsi-raid.ps1 J'ai donc décidé d'écrire un script similaire pour transmettre les informations à GLPI.
Les données sur les disques dans l'ensemble peuvent être obtenues à l'aide des utilitaires du fabricant du contrôleur, dans le cas des LSI, c'est StorCLI. On peut en obtenir des données au format JSON, les analyser et les transmettre à l'API GLPI. Les disques seront liés aux ordinateurs déjà créés par FusionInventory. Lors de l'exécution du script, les données sur les disques seront mises à jour et de nouveaux disques ajoutés. Le script lui-même Send-RAIDtoGLPI.ps1 se trouve ici sur GitHub. Ensuite, je vais expliquer comment l'utiliser.

Ce qui est requis

  1. GLPI version 9.5.1 (testée sur cette version)
  2. Plugin FusionInventory et un agent sous Windows
  3. Windows 2012 R2 (ou supérieur) comme système hôte, ou une VM de gestion avec le contrôleur connecté, PowerShell version 4 ou supérieure
  4. Pilote MegaRAID installé
  5. Module pour PowerShell — PSGLPI
  6. Un compte GLPI avec un profil Admin pour l'authentification via l'API, avec UserToken et AppToken générés

Un point important. Dans GLPI, il y a deux entités différentes pour le modèle de disque, mais il n'y a pas de propriété «type de support». Par conséquent, pour enregistrer les propriétés HDD et SSD, j'ai décidé d'utiliser la liste déroulante «Modèles de disques durs» (front/devicemodel.php?itemtype=DeviceHardDriveModel). Pour que le script fonctionne, ces valeurs doivent être présentes dans la base de données GLPI, sinon il ne pourra pas enregistrer les données du modèle de disque. Il faut donc d'abord ajouter HDD, puis SSD dans cette liste vide, afin que les ID de ces éléments dans la base soient respectivement 1 et 2. S'il y a d'autres, remplacez dans cette ligne du script Send-RAIDtoGLPI.ps1 après HDD et SSD par leurs ID correspondants au lieu de 1 et 2 :

deviceharddrivemodels_id = switch ($MediaType) { "HDD" { "1" }; "SSD" { "2" }; default { "" } }

Si vous ne voulez pas vous en occuper ou si vous utilisez cette liste déroulante différemment, vous pouvez simplement supprimer cette ligne du script.

Il faut également ajouter des statuts pour les disques dans «Statuts des éléments» (front/state.php). J'ai ajouté les statuts «MediaError» (s'il y a eu au moins une erreur d'accès au disque) et «OK», la ligne dans le script où leurs ID sont transmis, «2» pour «OK» et «1» pour «MediaError» :

states_id = switch ($MediaError) { 0 { "2" }; { $_ -gt 0 } { "1" } }

Ces statuts sont nécessaires pour la commodité, si vous n'avez pas besoin de ces propriétés, vous pouvez également supprimer entièrement cette ligne.

Dans le script, n'oubliez pas de spécifier vos variables. $GlpiCreds doit contenir l'URL du serveur API GLPI, UserToken et AppToken.

Que contient le script

En raison du JSON encombrant et des nombreuses instructions if, le script est difficile à lire, c'est pourquoi je vais décrire sa logique ici.

Lors de la première exécution sur l'hôte, le script parcourt tous les contrôleurs et recherche des disques dans la base GLPI par numéros de série. S'il ne trouve pas, il recherche le modèle. S'il ne trouve toujours pas de modèle, il ajoute le modèle du nouveau disque dans GLPI et l'enregistre dans la base de données.

À chaque nouvelle exécution, le script essaiera de détecter de nouveaux disques, mais il ne supprime pas ceux qui sont absents, donc il faudra le faire manuellement.

Exemple de déploiement

Dans le dépôt du script, il y a un script Deploy-Send-RAIDtoGLPI.ps1 qui téléchargera une archive ZIP contenant les fichiers nécessaires depuis notre serveur GLPI et les déploiera sur chaque hôte.

Après la copie des fichiers, le script installera l'agent FusionInventory avec un démarrage en tant que tâche quotidienne et créera une tâche similaire pour notre script. Après une mise en œuvre réussie, nous pourrons enfin voir les disques dans la section « Composants » de l'ordinateur dans GLPI.

Résultat

Maintenant, en accédant à GLPI dans le menu « Paramètres » -> « Composants » -> « Disques durs », nous pouvons cliquer sur les modèles de disques et voir leur quantité pour comprendre ce que nous avons besoin d'acheter.

Inventaire des ensembles RAID LSI dans GLPI
Inventaire des ensembles RAID LSI dans GLPI

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster