Dicionários no GLPI: Como Padronizar o Inventário Automático

Guia técnico de dicionários no GLPI 10/11: SQL para mapear a sujeira do inventário, regras de fabricante e regex para modelos, rejeição de KBs, replay controlado sem derrubar o servidor e a matriz de decisão de qual ação usar. Do jeito que fazemos na sustentação de parques GLPI.

Neste artigo8 seções

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árioDicionárioAção recomendadaReversível?Armadilha
Fabricante com várias grafiasFabricanteAtribuir nome fixoSimMerge pode deixar entrada órfã no dropdown
Modelo com prefixo do fabricanteModelosRegex + atribuir grupo capturadoSimExige critério "expressão regular", não "contém"
KBs e updates poluindo o catálogoSoftwareIgnorar importaçãoParcialReplay APAGA o software já importado
Versões de SO fragmentadasSistema operacionalAtribuir SO / ediçãoSimNome do SO e edição são campos separados
Vários softwares que são o mesmo produtoSoftwareAtribuir nome + fabricanteSimAgrupa versões; confira antes de mesclar

Normalizar fabricantes e modelos (passo a passo)

  1. 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.
  2. 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_time do 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.

Perguntas Frequentes

Em Administração > Dicionários. De lá você acessa os dicionários de software, fabricante, modelos (computador, monitor, impressora, telefone, rede), tipos e sistema operacional. Cada dicionário é um conjunto de regras com critério e ação avaliadas na importação do inventário.

Não automaticamente. A regra age na entrada de novos dados. Para aplicar nos registros existentes, use o botão 'Reproduzir as regras do dicionário' dentro do dicionário. Rode fatiando por fabricante e fora do horário de pico, porque o replay reprocessa milhares de linhas e pode estourar o tempo de execução do PHP (erro 500).

Crie a regra que atribui o nome fixo (ex.: contém 'Dell' então atribuir 'Dell') e rode o replay para reassociar os ativos. Depois, verifique em Configurar > Listas suspensas (dropdowns) se sobraram fabricantes com zero itens e purgue-os. O GLPI reassocia os ativos, mas nem sempre remove o valor antigo do dropdown.

Sim, ao rodar o replay. A ação 'Ignorar importação' não só bloqueia futuras importações: no replay ela apaga os softwares já importados que casam com o critério, e você perde o rastro de quais máquinas tinham aquele KB. Por isso teste em homologação e trate a rejeição como operação destrutiva.

Sim. Marque o critério como 'expressão regular' e use grupos de captura. Na ação, 'atribuir valor da expressão regular' aceita #0 (string inteira) e #1 a #9 (grupos capturados). O erro comum é deixar o critério como 'contém' e esperar que o #1 funcione: ele só resolve quando o critério é regex.

Sim. As regras são avaliadas de cima para baixo. Coloque as mais específicas antes das genéricas para evitar que uma regra ampla capture um caso que deveria ter tratamento próprio. Revise a ordem sempre que adicionar regras novas.

Precisa de ajuda?