En mi trabajo, a menudo tengo 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 estaba administrando en organizaciones pequeñas, siempre quise saber qué es dónde, dónde está atascado, cuál de las personas es responsable de qué pieza de hardware o servicio y, lo más importante, arreglar los cambios en esto para todos. Cuando llega a un lugar nuevo y se enfrenta a algún tipo de incidente, lleva mucho tiempo encontrar esta información. A continuación, te contaré a qué tuve que enfrentarme en RuVDS, y cómo resolví el problema indicado en el título.
Antecedentes
Como administrador empresarial, tenía poca experiencia en el centro de datos, pero vi RackTables por el rabillo del ojo. Mostró claramente un rack con todos los servidores, UPS, conmutadores y todas las conexiones entre ellos. RuVDS no tenía un sistema de este tipo, sino solo archivos Excel / papel con información sobre servidores, algunos de sus componentes, números de rack, etc. Con este enfoque, es muy difícil realizar un seguimiento de los cambios para componentes pequeños. Pero el consumible más importante y frecuentemente reemplazado para los servidores son los discos. Es muy importante mantener actualizada la información sobre el estado de las unidades y su reserva estratégica. Si una unidad falla fuera de la matriz RAID 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 comprenderqué es posible que no tengamos suficiente y qué modelos debemos comprar.
Al rescate llegó GLPI, un producto de código abierto diseñado para mejorar el desempeño de los departamentos de TI y llevarlos a los ideales de ITIL. Además del inventario de equipos y la administración de racks, tiene una base de conocimientos, mesa de servicio, administració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 a través de la instalación de agentes y SNMP. Puede leer más sobre la instalación de GLPI y complementos en otros artículos, lo mejor de todo: la documentación oficial . Puede instalarlo en nuestro alojamiento en una plantilla LAMP ya preparada .
Sin embargo, después de implementar el agente, abriremos los componentes de la computadora en GLPI y veremos esto:
El problema es que ninguno de los complementos puede ver la información del disco físico en las matrices LSI RAID. Después de ver cómo se resolvió este problema para el monitoreo en Zabbix usando el 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 las utilidades del fabricante del controlador, en el caso de LSI, esto 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. En la ejecución repetida, el script actualizará los datos en todos los discos y agregará otros nuevos. El propio script Send-RAIDtoGLPI.ps1 se encuentra aquí en GitHub . A continuación, te mostraré cómo usarlo.
Qué se necesita
- GLPI 9.5.1 ( )
- FusionInventory Windows
- Windows 2012 R2 ( ) , management-VM , PowerShell 4
- MegaRAID
- PowerShell — PSGLPI
- GLPI Admin API, UserToken AppToken
Un 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 necesita estos valores en la base de datos GLPI; de lo contrario, no podrá escribir datos sobre el modelo de disco. Por lo tanto, primero debe ingresar el HDD, luego el SSD en 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 los ID correspondientes en esta línea del script Send-RAIDtoGLPI.ps1 después del HDD y SSD en lugar de 1 y 2 :
deviceharddrivemodels_id = switch ($MediaType) { "HDD" { "1" }; "SSD" { "2" }; default { "" } }
Si no quiere molestarse con esto, o si usa esta lista desplegable de manera diferente, simplemente puede eliminar esta línea del script.
También necesita agregar estados para los discos a los "Estados del artículo" (/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 pasan 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 olvide especificar las variables para las suyas. $ GlpiCreds debe contener la URL del servidor API GLPI, UserToken y AppToken.
Que hay en el guion
Debido al engorroso análisis JSON y la hoja de ifs, el script es difícil de leer, así que describiré su lógica aquí.
En el primer inicio en el host, el script pasa por todos los controladores y busca discos en la base de datos GLPI por números de serie, si no lo encuentra, busca un modelo. Si tampoco encuentra un modelo, agrega el modelo del nuevo disco a GLPI e ingresa este disco en la base de datos.
Cada nueva pasada el script intentará buscar nuevos discos, pero no podrá borrar los que faltan, por lo tanto, deberá hacerlo manualmente.
Ejemplo de implementación
El repositorio de scripts contiene el script Deploy-Send-RAIDtoGLPI.ps1, que descargará el 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 ejecutándose como una tarea diaria y creará la misma tarea para nuestro script. Después de una implementación exitosa, finalmente podremos ver los discos en la sección de 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 discos y ver su número para entender qué necesitamos comprar.