Inventário LSI RAID em GLPI



No meu trabalho, muitas vezes tenho obsessões pela falta de informações sobre a infraestrutura e, com o aumento do número de servidores atendidos, isso se torna uma verdadeira tortura. Mesmo quando estava administrando em pequenas organizações, sempre quis saber o que estava onde, onde estava travado, qual das pessoas era responsável por qual peça de hardware ou serviço e, o mais importante, consertar mudanças nisso para todos. Quando você chega a um novo lugar e se depara com algum tipo de incidente, leva muito tempo para encontrar essa informação. A seguir, contarei o que enfrentei no RuVDS e como resolvi o problema indicado no título.



fundo



Como administrador corporativo, eu tinha pouca experiência no data center, mas vi RackTables com o canto do olho. Ele mostrou claramente um rack com todos os servidores, UPSs, switches e todas as conexões entre eles. O RuVDS não tinha tal sistema, mas apenas arquivos Excel / papel com informações sobre servidores, alguns de seus componentes, números de rack, etc. Com essa abordagem, é muito difícil rastrear alterações em componentes pequenos. Mas o consumível mais importante e frequentemente substituído para servidores são os discos. É muito importante manter informações atualizadas sobre a saúde dos drives e sua reserva estratégica. Se uma unidade falhar fora da matriz RAID e não for substituída rapidamente, isso pode levar a consequências fatais. Portanto, realmente precisamos de um sistema que rastreie a localização dos discos e suas condições para entendero que pode não ser suficiente e quais modelos precisam ser comprados.



Para o resgate veio o GLPI, um produto de código aberto projetado para melhorar o desempenho dos departamentos de TI e trazê-los aos ideais do ITIL. Além de inventário de equipamentos e gerenciamento de rack, possui base de conhecimento, service desk, gerenciamento de documentos e muito mais. O GLPI tem muitos plug-ins, incluindo FusionInventory e OCS Inventory, que permitem que você colete automaticamente informações sobre computadores e outros dispositivos por meio da instalação de agentes e SNMP. Você pode ler mais sobre como instalar o GLPI e plug-ins em outros artigos, o melhor de tudo - a documentação oficial . Você pode instalá-lo em nossa hospedagem em um modelo LAMP pronto para uso .



No entanto, após implantar o agente, abriremos os componentes do computador no GLPI e veremos o seguinte:





O problema é que nenhum dos plug-ins pode ver as informações do disco físico em matrizes LSI RAID. Depois de ver como esse problema foi resolvido para monitoramento no Zabbix usando o script PowerShell lsi-raid.ps1, decidi escrever um semelhante para transferir informações para o GLPI.

Os dados sobre os discos do array podem ser obtidos usando utilitários do fabricante do controlador, no caso do LSI, é o StorCLI. A partir dele, você pode obter dados no formato JSON, analisá-los e passá-los para a API GLPI. Iremos vincular os discos aos computadores que FusionInventory já criou. Na execução repetida, o script atualizará os dados nos discos e adicionará novos. O próprio script Send-RAIDtoGLPI.ps1 está localizado aqui no GitHub . A seguir, mostrarei como usá-lo.



O que é necessario



  1. GLPI 9.5.1 ( )
  2. FusionInventory Windows
  3. Windows 2012 R2 ( ) , management-VM , PowerShell 4
  4. MegaRAID
  5. PowerShell — PSGLPI
  6. GLPI Admin API, UserToken AppToken


Um ponto importante. Por alguma razão, o GLPI tem 2 entidades diferentes para o modelo de disco, mas não há nenhuma propriedade "tipo de mídia". Portanto, para registrar as propriedades do HDD e do SSD, decidi usar a lista suspensa "Modelos de disco rígido" (front / devicemodel.php? Itemtype = DeviceHardDriveModel). O script precisa desses valores no banco de dados GLPI, caso contrário, não será capaz de gravar dados sobre o modelo de disco. Portanto, você deve primeiro inserir o HDD, depois o SSD nesta lista vazia, de modo que os IDs desses elementos no banco de dados sejam 1 e 2. Se houver outros, substitua os IDs correspondentes nesta linha do script Send-RAIDtoGLPI.ps1 após HDD e SSD em vez de 1 e 2 :



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


Se você não quiser se preocupar com isso ou se usar esta lista suspensa de maneira diferente, basta remover esta linha do script.



Você também precisa adicionar status para discos aos "Status do item" (/front/state.php). Eu adicionei os status "MediaError" (houve pelo menos um erro de acesso ao disco) e "OK", uma linha no script onde seus IDs são passados, "2" para "OK" e "1" para "MediaError":



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


Esses status são necessários por conveniência; se você não precisar dessas propriedades, também pode excluir esta linha completamente.



No próprio script, não se esqueça de especificar as variáveis ​​para o seu. $ GlpiCreds deve conter a URL para o GLPI API Server, UserToken e AppToken.



O que está no script



Por causa da análise complicada de JSON e da folha de ifs, o script é difícil de ler, então descreverei sua lógica aqui.



Na primeira inicialização no host, o script passa por todos os controladores e procura discos no banco de dados GLPI por números de série, se não o encontrar, procura um modelo. Se também não encontrar um modelo, adiciona o modelo do novo disco ao GLPI e insere esse disco no banco de dados.



A cada nova passagem o script tentará encontrar novos discos, mas não pode deletar os que faltam, portanto, você terá que fazer isso manualmente.



Exemplo de implantação



O repositório de script contém o script Deploy-Send-RAIDtoGLPI.ps1 que fará o download do arquivo ZIP com os arquivos necessários de nosso servidor GLPI e os distribuirá em cada host.



Depois de copiar os arquivos, o script irá instalar o agente FusionInventory rodando como uma tarefa diária e criará a mesma tarefa para o nosso script. Após uma implementação bem-sucedida, finalmente poderemos ver os discos na seção Componentes do computador no GLPI.



Resultado



Agora, indo ao GLPI no menu "Configurações" -> "Componentes" -> "Discos rígidos", podemos clicar nos modelos dos drives e ver seus números para entender o que precisamos comprar.








All Articles