Inventário de arrays RAID LSI no GLPI

Inventário de arrays RAID LSI no GLPI
Em meu trabalho, frequentemente sou acometido por uma obsessão em relação à falta de informações sobre a infraestrutura, e conforme o número de servidores gerenciados aumenta, isso se torna uma verdadeira tortura. Mesmo quando administrei em pequenas organizações, sempre quis saber onde cada coisa estava, onde estava conectado, quem era responsável por cada equipamento ou serviço e, o mais importante, registrar as mudanças em tudo isso. Quando se chega a um novo lugar e se enfrenta algum incidente, muito tempo é desperdiçado na busca por essas informações. A seguir, contarei sobre os desafios que enfrentei na RuVDS e como resolvi o problema mencionado no título.

Antecedentes

Como administrador de enterprise, tive pouca experiência em data centers, mas vi RackTables de relance. Nele, a estrutura era apresentada de forma clara, com todos os servidores, UPS, switches e todas as conexões entre eles. Na RuVDS, não havia um sistema parecido, apenas arquivos em Excel/papel com informações sobre os servidores, alguns de seus componentes, números de racks, etc. Com essa abordagem, é muito difícil acompanhar mudanças e detalhes sobre componentes menores. E o que mais frequentemente muda nos servidores são os discos. É crucial manter informações atualizadas sobre o estado dos discos e seu estoque estratégico. Se um disco falhar no array RAID e não houver uma troca rápida, isso pode resultar em consequências fatais. Portanto, precisamos urgentemente de um sistema que monitore a localização dos discos e seu estado, para entender nossas necessidades e quais modelos devem ser adquiridos.

Veio em nosso auxílio o GLPI, um produto de código aberto, criado para melhorar o trabalho dos departamentos de TI e levá-los ao ideal do ITIL. Ele possui, além do inventário de equipamentos e gerenciamento de racks, uma base de conhecimento, help desk, gerenciamento de documentos e muito mais. O GLPI conta com diversos plugins, incluindo o FusionInventory e o OCS Inventory, que permitem coletar automaticamente informações sobre computadores e outros dispositivos por meio da instalação de agentes e SNMP. Para mais detalhes sobre a instalação do GLPI e dos plugins, você pode ler em outros artigos, o ideal é que documentação oficial. Você pode instalá-lo em nosso serviço de hospedagem usando um template já pronto LAMP.

No entanto, após a implantação do agente, abriremos os componentes do computador no GLPI e veremos isto:

Inventário de arrays RAID LSI no GLPI
O problema é que nenhum dos plugins consegue ver as informações sobre os discos físicos em arrays RAID LSI. Vendo como essa questão foi resolvida para monitoramento no Zabbix usando um script em PowerShell. lsi-raid.ps1 Decidi escrever um semelhante para transmitir informações ao GLPI.
Os dados dos discos no array podem ser obtidos com utilitários do fabricante do controlador, no caso da LSI, é o StorCLI. Com ele, é possível obter dados em formato JSON, analisá-los e enviá-los para a API do GLPI. Vamos vincular os discos aos computadores que já foram criados pelo FusionInventory. Ao executar o script novamente, ele atualizará os dados dos discos e adicionará novos. O próprio script Send-RAIDtoGLPI.ps1 está aqui no GitHub. A seguir, irei explicar como utilizá-lo.

O que será necessário

  1. GLPI versão 9.5.1 (esta foi a testada)
  2. Plugin FusionInventory e agente para Windows
  3. Windows 2012 R2 (ou superior) como o sistema host, ou uma VM de gerenciamento com o controlador conectado a ela, PowerShell versão 4 ou superior
  4. Driver MegaRAID instalado
  5. Módulo para PowerShell — PSGLPI
  6. Conta no GLPI com perfil de Admin para autorização via API, com UserToken e AppToken gerados

Um ponto importante. No GLPI, há duas entidades diferentes para o modelo de disco, mas não existe a propriedade "tipo de mídia". Portanto, para gravar a propriedade HDD e SSD, decidi usar a lista suspensa "Modelos de Discos Rígidos" (front/devicemodel.php?itemtype=DeviceHardDriveModel). Para o script, é necessário que esses valores estejam no banco de dados GLPI, caso contrário, ele não conseguirá gravar os dados do modelo do disco. Portanto, é preciso adicionar a lista vazia inicialmente com HDD, depois SSD, para que os IDs desses elementos no banco sejam 1 e 2. Se houver outros, substitua nesta linha do script Send-RAIDtoGLPI.ps1 após HDD e SSD, os IDs correspondentes a 1 e 2:

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

Se você não quiser se preocupar com isso ou se estiver usando essa lista suspensa de forma diferente, pode simplesmente remover esta linha do script.

Além disso, é necessário adicionar status para os discos em "Status dos Itens" (front/state.php). Eu adicionei os status "MediaError" (houve pelo menos um erro de acesso ao disco) e "OK", a linha no script onde seus IDs são transmitidos, "2" para "OK" e "1" para "MediaError":

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

Esses status são necessários para conveniência, se você não precisar dessas propriedades, pode também remover esta linha inteira.

No script, não se esqueça de especificar as variáveis necessárias. $GlpiCreds deve conter a URL do servidor API GLPI, UserToken e AppToken.

O que está no script

Devido à complexidade da análise JSON e à quantidade de instruções if, o script é difícil de ler, portanto, descreverei sua lógica aqui.

Na primeira execução no host, o script verifica todos os controladores e procura discos na base GLPI pelos números de série; se não encontrar, procura pelo modelo. Se não encontrar nem o modelo, adiciona o modelo do novo disco no GLPI e registra esse disco na base.

A cada nova execução, o script tentará detectar novos discos, mas não conseguirá remover os ausentes, portanto, será necessário fazê-lo manualmente.

Exemplo de implantação

No repositório do script, há um script Deploy-Send-RAIDtoGLPI.ps1, que baixará um arquivo ZIP com os arquivos necessários do nosso servidor GLPI e os implantará em cada host.

Após a cópia dos arquivos, o script instalará o agente FusionInventory, agendando sua execução como uma tarefa diária, e criará uma tarefa similar para o nosso script. Após a implementação bem-sucedida, finalmente poderemos ver os discos na seção 'Componentes' do computador no GLPI.

Resultado

Agora, ao acessar o GLPI no menu 'Configurações' -> 'Componentes' -> 'Discos rígidos', podemos clicar nos modelos de discos e ver suas quantidades para entender o que precisamos comprar.

Inventário de arrays RAID LSI no GLPI
Inventário de arrays RAID LSI no GLPI

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster