Inventario RAID LSI en GLPI

Inventario RAID LSI en GLPI
En mi trabajo, a menudo experimento obsesiones por la falta de información sobre la infraestructura, y con un aumento en el número de servidores atendidos, esto se convierte en una verdadera tortura. Incluso cuando era administrador en organizaciones pequeñas, siempre quise saber qué era dónde, dónde estaba conectado, qué personas eran responsables de qué pieza de hardware o servicio y, lo más importante, registrar los cambios en todo esto. Cuando llegas a un lugar nuevo y te encuentras con un incidente, dedicas mucho tiempo a buscar esta información. A continuación os contaré a qué me tuve que enfrentar en RuVDS, y cómo resolví el problema indicado en el título.

Prehistoria

Como administrador empresarial, tenía poca experiencia trabajando en un centro de datos, pero vislumbré RackTables. Mostraba claramente el rack con todos los servidores, UPS, conmutadores y todas las conexiones entre ellos. RuVDS no tenía tal sistema, solo archivos Excel/papel con información sobre los servidores, algunos de sus componentes, números de rack, etc. Con este enfoque, es muy difícil rastrear cambios en componentes pequeños. Pero los consumibles de servidores más importantes y frecuentemente reemplazados son los discos. Es muy importante mantener información actualizada sobre el estado de los discos y su reserva estratégica. Si una unidad de una matriz RAID falla y no se reemplaza rápidamente, esto puede tener consecuencias fatales. Por lo tanto, realmente necesitamos un sistema que rastree la ubicación de los discos y su estado para comprender qué nos puede faltar y qué modelos necesitamos comprar.

Al rescate llegó GLPI, un producto de código abierto diseñado para mejorar el desempeño de los departamentos de TI y acercarlos a los ideales de ITIL. Además del inventario de equipos y la gestión de racks, cuenta con una base de conocimientos, mesa de servicio, gestión de documentos y mucho más. GLPI tiene muchos complementos, incluidos FusionInventory y OCS Inventory, que le permiten recopilar automáticamente información sobre computadoras y otros dispositivos mediante la instalación del agente y SNMP. Puede leer más sobre la instalación de GLPI y complementos en otros artículos, lo mejor de todo: documentación oficial. Puede instalarlo en nuestro hosting en una plantilla ya preparada. LAMPARA.

Sin embargo, después de implementar el agente, abriremos los componentes de la computadora en GLPI y veremos esto:

Inventario RAID LSI en GLPI
El problema es que ninguno de los complementos puede ver información sobre los discos físicos en las matrices LSI RAID. Habiendo visto cómo se resuelve este problema para el monitoreo en Zabbix usando un script de PowerShell lsi-raid.ps1 Decidí escribir uno similar para transferir información a GLPI.
Los datos sobre los discos de la matriz se pueden obtener utilizando utilidades del fabricante del controlador; en el caso de LSI, es StorCLI. Desde allí puede obtener datos en formato JSON, analizarlos y pasarlos a la API GLPI. Vincularemos los discos a las computadoras que FusionInventory ya ha creado. Cuando se ejecute nuevamente, el script actualizará los datos de los discos y agregará otros nuevos. El script en sí Send-RAIDtoGLPI.ps1 es aquí en GitHub. A continuación te cuento cómo usarlo.

Lo que se requerirá

  1. GLPI versión 9.5.1 (probada en este)
  2. Complemento Inventario de fusión y agente para Windows
  3. Windows 2012 R2 (y superior) como sistema host, o una máquina virtual de administración con un controlador insertado, PowerShell versión 4 o superior
  4. Controlador MegaRAID instalado
  5. Módulo para PowerShell - PSGLPI
  6. Cuenta en GLPI con perfil Admin para autorización vía API generada por UserToken y AppToken

Punto importante. Por alguna razón, GLPI tiene 2 entidades diferentes para el modelo de disco, pero no existe una propiedad de "tipo de medio". Por lo tanto, para registrar las propiedades de HDD y SSD, decidí usar la lista desplegable "Modelos de disco duro" (front/devicemodel.php?itemtype=DeviceHardDriveModel). El script debe tener estos valores en la base de datos GLPI; de lo contrario, no podrá escribir datos sobre el modelo de disco. Por lo tanto, debe agregar primero HDD, luego SSD a esta lista vacía, de modo que los ID de estos elementos en la base de datos sean 1 y 2. Si hay otros, reemplace en esta línea del script Send-RAIDtoGLPI.ps1 después HDD y SSD en lugar de 1 y 2 sus ID correspondientes:

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

Si no quiere molestarse con esto o usa esta lista desplegable de manera diferente, simplemente puede eliminar esta línea del script.

También debe agregar estados para los discos en "Estados de elementos" (/front/state.php). Agregué los estados "MediaError" (hubo al menos un error de acceso al disco) y "OK", una línea en el script donde se transmiten sus ID, "2" para "OK" y "1" para "MediaError":

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

Estos estados son necesarios por conveniencia; si no necesita estas propiedades, también puede eliminar esta línea por completo.

En el propio script, no olvides señalar las variables a las tuyas. $GlpiCreds debe contener la URL del servidor API GLPI, UserToken y AppToken.

¿Qué hay en el guión?

Debido al engorroso análisis de JSON y los if vacíos, el script es difícil de leer, por lo que describiré su lógica aquí.

Cuando se inicia por primera vez en el host, el script recorre todos los controladores y busca discos en la base de datos GLPI por números de serie; si no lo encuentra, busca el modelo. Si no encuentra el modelo, agrega el modelo del nuevo disco a GLPI e ingresa este disco en la base de datos.

En cada nueva pasada, el script intentará detectar nuevos discos, pero no sabe cómo eliminar los que faltan, por lo que tendrás que hacerlo manualmente.

Ejemplo de implementación

El repositorio de scripts contiene el script Deploy-Send-RAIDtoGLPI.ps1, que descargará un archivo ZIP con los archivos necesarios de nuestro servidor GLPI y los implementará en cada host.

Después de copiar los archivos, el script instalará el agente FusionInventory para ejecutarlo como una tarea diaria y creará la misma tarea para nuestro script. Después de una implementación exitosa, finalmente podremos ver las unidades en la sección Componentes de la computadora en GLPI.

resultado

Ahora, yendo a GLPI en el menú "Configuración" -> "Componentes" -> "Discos duros", podemos hacer clic en los modelos de unidades y ver su cantidad para comprender qué necesitamos comprar.

Inventario RAID LSI en GLPI
Inventario RAID LSI en GLPI

Fuente: habr.com

Añadir un comentario