Inventário automático sem dicionário é um CMDB 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 isso na entrada dos dados - mas só funcionam de verdade quando você mapeia a sujeira antes, entende que rejeitar é destrutivo e roda o replay sem derrubar o servidor. Este guia é o caminho que usamos na sustentação de parques GLPI de clientes.
Por que o inventário chega sujo
Quando o GLPI Agent coleta dados de centenas de máquinas, o mesmo objeto real aparece com várias grafias porque cada fornecedor grava a string do seu jeito na BIOS, no registro do Windows ou no pacote. Os casos clássicos:
- Fabricantes: "Dell Inc.", "Dell", "DELL", "Dell Technologies" viram quatro registros.
- Modelos: "Latitude 5520", "LATITUDE 5520" e "Dell Latitude 5520" não se agrupam.
- Softwares: centenas de KBs e "Update for Windows" afogam os softwares que você realmente precisa gerenciar.
- Sistema operacional: "Windows 10 Pro", "Microsoft Windows 10 Professional" e "Win10Pro" fragmentam qualquer contagem de licença.
O efeito prático: dashboards com totais inflados, relatório de conformidade de software inútil e decisão de compra baseada em número errado. Padronizar não é estética - é o que torna o CMDB confiável.
Mapeie a sujeira antes de escrever a primeira regra
O erro de quem começa é sair criando regras no escuro. Primeiro meça. Uma consulta SQL de leitura direto no banco mostra o tamanho do problema e prioriza o esforço. Rode em 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 (KBs e updates)
SELECT COUNT(*) AS softwares_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 esses números você sabe onde a regra dá mais retorno. Na maioria dos parques, fabricante e software concentram a maior parte da sujeira.
Os tipos de dicionário e quando usar cada ação
Em Administração > Dicionários você encontra dicionários para software, fabricante, modelos (computador, monitor, impressora, telefone, rede), tipos e sistema operacional. O que muda entre eles é a ação que você 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 nome fixo | Sim | Merge pode deixar entrada órfã no dropdown |
| Modelo com prefixo do fabricante | Modelos | Regex + atribuir grupo capturado | Sim | Exige critério "expressão regular", não "contém" |
| KBs e updates poluindo o catálogo | Software | Ignorar importação | Parcial | Replay APAGA o software já importado |
| Versões de SO fragmentadas | Sistema operacional | Atribuir SO / edição | Sim | Nome do SO e edição são campos separados |
| Vários softwares que são o mesmo produto | Software | Atribuir nome + fabricante | Sim | Agrupa versões; confira antes de mesclar |
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. Isso colapsa todas as grafias em um registro. - Para modelos que carregam o prefixo do fabricante, "contém" não basta - use regex. Marque o critério como expressão regular e capture só a parte útil.
# Dicionario de Modelos de computador
# Criterio -> Nome | expressao regular corresponde:
/^(?:Dell\s+)?(Latitude\s+\d+)/i
# Acao -> Nome | Atribuir 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 string inteira. Esse detalhe derruba muita gente: a ação "atribuir valor da expressão regular" só funciona se o critério estiver marcado como expressão regular. Com "contém", o #1 vira texto literal.
Rejeitar KBs sem estourar o inventário
Para tirar as atualizações do catálogo, crie no dicionário de Software uma regra com ação Ignorar importação:
- Critério: Nome - começa com -
KB- ação Ignorar importação. - Critério: Nome - contém -
Update for Windows- ação Ignorar importação.
A partir daí, novas importações ignoram esses itens. O detalhe que quase ninguém antecipa: ao rodar o replay dessa regra, o GLPI apaga os softwares já importados que casam com o critério. É a ação certa para limpar, mas é destrutiva - por isso ela sempre vai para homologação primeiro.
Replay: aplicar as regras nos dados existentes
Regra de dicionário só age na entrada. Para os dados que já estão no banco, use o botão Reproduzir as regras do dicionário, dentro de cada dicionário. Dois cuidados de operação que aprendemos na marra:
- Fatie por fabricante. No replay do dicionário de software, o GLPI deixa escolher o fabricante. Rodar tudo de uma vez em um catálogo grande estoura o
max_execution_timedo PHP e retorna erro 500. Rode por lote. - Janela de baixo tráfego. O replay reprocessa milhares de linhas; agende fora do horário comercial.
Depois do replay, confirme que a consolidação funcionou com uma contagem simples:
-- Deve sobrar 1 registro "Dell" (e nao 4)
SELECT id, name FROM glpi_manufacturers
WHERE name LIKE '%Dell%';
-- Softwares KB devem tender a zero apos o replay com "Ignorar importacao"
SELECT COUNT(*) AS kb_restantes
FROM glpi_softwares
WHERE name LIKE 'KB%';
O erro comum na sustentação de clientes
Em um parque de cliente com cerca de 3 mil ativos, o dicionário de software rejeitando KBs e updates derrubou o catálogo de dezenas de milhares de "softwares" para alguns milhares de itens reais - o relatório de conformidade finalmente ficou legível. Mas rodamos o replay com "ignorar importação" direto em produção e o cliente perdeu o rastro de quais máquinas tinham cada KB, porque a rejeição apaga o registro, não só oculta. A decisão que passou a valer para todos os ambientes: replay de dicionário nasce em homologação, rejeição é tratada como operação destrutiva e o merge de fabricante é sempre seguido de uma limpeza dos valores órfãos no dropdown, que o GLPI não remove sozinho. É o tipo de detalhe que só aparece depois de rodar isso em parque de verdade.
Boas práticas que evitam retrabalho
- Comece por fabricante e software - concentram a maior parte da sujeira 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 SQL de contagem antes e depois.
- Revise os dicionários após cada grande onda de inventário (novo lote de máquinas, aquisição, troca de fornecedor).
- Documente cada regra: um dicionário sem histórico do "por quê" vira caixa-preta na próxima sustentação.
Padronizar o inventário é a base para indicadores confiáveis e para o ciclo de vida de ativos. Se o seu parque já cresceu e o CMDB virou um emaranhado de duplicatas, a NexTool faz esse saneamento na sustentação: mapeamento da sujeira, regras de dicionário testadas em homologação e replay controlado, sem derrubar o seu GLPI.
Revisado pela equipe NexTool Solutions.