Inventário automático sem dicionário é uma CMDB em que ninguém confia. Cada agente reporta "Dell Inc.", "DELL" e "Dell Technologies" como fabricantes diferentes, e o gestor abre o relatório de parque com três linhas para a mesma coisa. Os dicionários do GLPI resolvem isto na entrada dos dados, mas só funcionam mesmo quando mapeia a confusão primeiro, percebe que rejeitar é destrutivo e executa o replay sem deitar o servidor abaixo. Este guia é o caminho que usamos na manutenção de parques GLPI de clientes.
Porque é que o inventário chega sujo
Quando o GLPI Agent recolhe dados de centenas de máquinas, o mesmo objeto real aparece com várias grafias porque cada fornecedor grava a cadeia à sua maneira na BIOS, no registo do Windows ou no pacote. Os casos clássicos:
- Fabricantes: "Dell Inc.", "Dell", "DELL", "Dell Technologies" tornam-se quatro registos.
- Modelos: "Latitude 5520", "LATITUDE 5520" e "Dell Latitude 5520" não se agrupam.
- Software: centenas de KB e entradas "Update for Windows" afogam o software que precisa mesmo de gerir.
- Sistema operativo: "Windows 10 Pro", "Microsoft Windows 10 Professional" e "Win10Pro" fragmentam qualquer contagem de licenças.
O efeito prático: painéis com totais inflacionados, um relatório de conformidade de software inútil e decisões de compra baseadas no número errado. Padronizar não é estética: é o que torna a CMDB fiável.
Mapeie a confusão antes de escrever a primeira regra
O erro de quem começa é pôr-se a criar regras às cegas. Meça primeiro. Uma consulta SQL de leitura direta na base de dados mostra a dimensão do problema e prioriza o esforço. Execute numa réplica ou fora do horário de pico:
-- Fabricantes com grafias divergentes do mesmo grupo
SELECT id, name
FROM glpi_manufacturers
WHERE name LIKE 'Dell%' OR name LIKE '%DELL%'
ORDER BY name;
-- Volume de "poluicao" no catalogo de software (KB e updates)
SELECT COUNT(*) AS software_lixo
FROM glpi_softwares
WHERE name LIKE 'KB%'
OR name LIKE 'Update for%'
OR name LIKE 'Security Update for%';
-- Top 20 nomes de software mais repetidos (candidatos a regra)
SELECT name, COUNT(*) AS ocorrencias
FROM glpi_softwares
GROUP BY name
ORDER BY ocorrencias DESC
LIMIT 20;
Com estes números sabe onde a regra tem mais retorno. Na maioria dos parques, fabricante e software concentram a maior parte da confusão.
Os tipos de dicionário e quando usar cada ação
Em Administração > Dicionários encontra dicionários para software, fabricante, modelos (computador, monitor, impressora, telefone, rede), tipos e sistema operativo. O que muda entre eles é a ação que escolhe. Esta matriz resume a decisão:
| Situação no inventário | Dicionário | Ação recomendada | Reversível? | Armadilha |
|---|---|---|---|---|
| Fabricante com várias grafias | Fabricante | Atribuir um nome fixo | Sim | O merge pode deixar uma entrada órfã na lista pendente |
| Modelo que arrasta o prefixo do fabricante | Modelos | Regex + atribuir o grupo capturado | Sim | Exige o critério "expressão regular", não "contém" |
| KB e updates a poluir o catálogo | Software | Ignorar importação | Parcial | O replay APAGA o software já importado |
| Versões de SO fragmentadas | Sistema operativo | Atribuir SO / edição | Sim | Nome do SO e edição são campos separados |
| Vários software que são o mesmo produto | Software | Atribuir nome + fabricante | Sim | Agrupa versões; confirme antes de fundir |
Normalizar fabricantes e modelos (passo a passo)
- No dicionário de Fabricante, crie a regra: critério Nome - contém -
Dell; ação Atribuir Nome =Dell. Isto colapsa todas as grafias num só registo. - Para modelos que arrastam o prefixo do fabricante, "contém" não chega: use regex. Marque o critério como expressão regular e capture apenas a parte útil.
# Dicionario de Modelos de computador
# Criterio -> Nome | a expressao regular corresponde:
/^(?:Dell\s+)?(Latitude\s+\d+)/i
# Acao -> Nome | Atribuir o valor da expressao regular:
#1
# Resultado:
# "Dell Latitude 5520" -> "Latitude 5520"
# "LATITUDE 5520" -> "Latitude 5520"
# "Latitude 5520" -> "Latitude 5520"
O #1 é o primeiro grupo capturado; #0 seria a cadeia inteira. Este detalhe apanha muita gente: a ação "atribuir o valor da expressão regular" só funciona se o critério estiver marcado como expressão regular. Com "contém", o #1 passa a texto literal.
Rejeitar KB sem rebentar o inventário
Para tirar as atualizações do catálogo, crie no dicionário de Software uma regra com a ação Ignorar importação:
- Critério: Nome - começa por -
KB- ação Ignorar importação. - Critério: Nome - contém -
Update for Windows- ação Ignorar importação.
A partir daí, as novas importações ignoram esses itens. O detalhe que quase ninguém antecipa: ao executar o replay dessa regra, o GLPI apaga o software já importado que corresponde ao critério. É a ação certa para limpar, mas é destrutiva, por isso vai sempre primeiro para um ambiente de homologação.
Replay: aplicar as regras aos dados existentes
Uma regra de dicionário só atua na entrada. Para os dados que já estão na base, use o botão Reproduzir as regras do dicionário dentro de cada dicionário. Dois cuidados de operação que aprendemos a doer:
- Fatie por fabricante. No replay do dicionário de software, o GLPI deixa escolher o fabricante. Executar tudo de uma vez num catálogo grande rebenta o
max_execution_timedo PHP e devolve um erro 500. Execute por lotes. - Janela de baixo tráfego. O replay reprocessa milhares de linhas; agende fora do horário de trabalho.
Depois do replay, confirme que a consolidação funcionou com uma contagem simples:
-- Deve sobrar 1 registo "Dell" (e nao 4)
SELECT id, name FROM glpi_manufacturers
WHERE name LIKE '%Dell%';
-- O software KB deve tender para zero apos o replay com "Ignorar importacao"
SELECT COUNT(*) AS kb_restantes
FROM glpi_softwares
WHERE name LIKE 'KB%';
O erro comum na manutenção de clientes
Num parque de cliente com cerca de 3.000 ativos, o dicionário de software a rejeitar KB e updates fez o catálogo cair de dezenas de milhares de "software" para alguns milhares de itens reais: o relatório de conformidade finalmente ficou legível. Mas executámos o replay com "ignorar importação" diretamente em produção e o cliente perdeu o rasto de que máquinas tinham cada KB, porque a rejeição apaga o registo, não o esconde apenas. A decisão que passou a valer para todos os ambientes: o replay de dicionário nasce em homologação, a rejeição é tratada como operação destrutiva e um merge de fabricante é sempre seguido de uma limpeza dos valores órfãos na lista pendente, que o GLPI não remove sozinho. É o tipo de detalhe que só aparece depois de o fazer num parque a sério.
Boas práticas que evitam retrabalho
- Comece por fabricante e software: concentram a maior parte da confusão e dão retorno rápido.
- A ordem das regras importa: coloque as mais específicas antes das genéricas.
- Teste sempre em homologação e valide o replay com um SQL de contagem antes e depois.
- Reveja os dicionários após cada grande onda de inventário (um novo lote de máquinas, uma aquisição, uma troca de fornecedor).
- Documente cada regra: um dicionário sem histórico do "porquê" torna-se uma caixa negra na manutenção seguinte.
Padronizar o inventário é a base para indicadores fiáveis e para o ciclo de vida de ativos. Se o seu parque já cresceu e a CMDB se tornou um emaranhado de duplicados, a NexTool faz este saneamento no âmbito da manutenção: mapeamento da confusão, regras de dicionário testadas em homologação e um replay controlado, sem deitar o seu GLPI abaixo.
Revisto pela equipa NexTool Solutions.