Diccionarios de GLPI: cómo estandarizar el inventario automático

Guía técnica de los diccionarios de GLPI 10/11: SQL para mapear el desorden del inventario, reglas de fabricante y regex para modelos, rechazo de KB de Windows, un replay controlado que no tumba el servidor y una matriz de decisión sobre qué acción usar. Como lo hacemos manteniendo parques GLPI de clientes.

En este artículo8 secciones

Un inventario automático sin diccionarios es una CMDB en la que nadie confía. Cada agente reporta "Dell Inc.", "DELL" y "Dell Technologies" como fabricantes distintos, y el responsable abre el informe de parque con tres líneas para la misma cosa. Los diccionarios de GLPI lo resuelven en la entrada de los datos, pero solo funcionan de verdad cuando mapeas el desorden antes, entiendes que rechazar es destructivo y ejecutas el replay sin tumbar el servidor. Esta guía es el camino que usamos manteniendo parques GLPI de clientes.

Por qué el inventario llega sucio

Cuando el GLPI Agent recoge datos de cientos de máquinas, el mismo objeto real aparece con varias grafías porque cada fabricante escribe la cadena a su manera en la BIOS, en el registro de Windows o en el paquete. Los casos clásicos:

  • Fabricantes: "Dell Inc.", "Dell", "DELL", "Dell Technologies" se vuelven cuatro registros.
  • Modelos: "Latitude 5520", "LATITUDE 5520" y "Dell Latitude 5520" no se agrupan.
  • Software: cientos de KB y entradas "Update for Windows" ahogan el software que de verdad necesitas gestionar.
  • Sistema operativo: "Windows 10 Pro", "Microsoft Windows 10 Professional" y "Win10Pro" fragmentan cualquier conteo de licencias.

El efecto práctico: cuadros de mando con totales inflados, un informe de cumplimiento de software inútil y decisiones de compra basadas en el número equivocado. Estandarizar no es estética: es lo que hace que la CMDB sea confiable.

Mapea el desorden antes de escribir la primera regla

El error del que empieza es ponerse a crear reglas a ciegas. Mide primero. Una consulta SQL de solo lectura directa contra la base de datos muestra el tamaño del problema y prioriza el esfuerzo. Ejecútala en una réplica o fuera del horario pico:

-- Fabricantes con grafias divergentes del mismo grupo
SELECT id, name
FROM glpi_manufacturers
WHERE name LIKE 'Dell%' OR name LIKE '%DELL%'
ORDER BY name;

-- Volumen de "contaminacion" en el catalogo de software (KB y updates)
SELECT COUNT(*) AS software_basura
FROM glpi_softwares
WHERE name LIKE 'KB%'
   OR name LIKE 'Update for%'
   OR name LIKE 'Security Update for%';

-- Top 20 nombres de software mas repetidos (candidatos a regla)
SELECT name, COUNT(*) AS ocurrencias
FROM glpi_softwares
GROUP BY name
ORDER BY ocurrencias DESC
LIMIT 20;

Con esos números sabes dónde la regla rinde más. En la mayoría de los parques, fabricante y software concentran la mayor parte del desorden.

Los tipos de diccionario y cuándo usar cada acción

En Administración > Diccionarios encuentras diccionarios para software, fabricante, modelos (ordenador, monitor, impresora, teléfono, red), tipos y sistema operativo. Lo que cambia entre ellos es la acción que eliges. Esta matriz resume la decisión:

Situación en el inventarioDiccionarioAcción recomendada¿Reversible?Trampa
Fabricante con varias grafíasFabricanteAsignar un nombre fijoSíEl merge puede dejar una entrada huérfana en el desplegable
Modelo que arrastra el prefijo del fabricanteModelosRegex + asignar el grupo capturadoSíExige el criterio "expresión regular", no "contiene"
KB y updates contaminando el catálogoSoftwareIgnorar la importaciónParcialEl replay BORRA el software ya importado
Versiones de SO fragmentadasSistema operativoAsignar SO / ediciónSíNombre del SO y edición son campos separados
Varios software que son el mismo productoSoftwareAsignar nombre + fabricanteSíAgrupa versiones; revisa antes de fusionar

Normalizar fabricantes y modelos (paso a paso)

  1. En el diccionario de Fabricante, crea la regla: criterio Nombre - contiene - Dell; acción Asignar Nombre = Dell. Eso colapsa todas las grafías en un registro.
  2. Para modelos que arrastran el prefijo del fabricante, "contiene" no basta: usa regex. Marca el criterio como expresión regular y captura solo la parte útil.
# Diccionario de Modelos de ordenador
# Criterio -> Nombre | la expresion regular coincide:
/^(?:Dell\s+)?(Latitude\s+\d+)/i

# Accion -> Nombre | Asignar el valor de la expresion regular:
#1

# Resultado:
#   "Dell Latitude 5520" -> "Latitude 5520"
#   "LATITUDE 5520"       -> "Latitude 5520"
#   "Latitude 5520"       -> "Latitude 5520"

#1 es el primer grupo capturado; #0 sería la cadena entera. Este detalle tumba a mucha gente: la acción "asignar el valor de la expresión regular" solo funciona si el criterio está marcado como expresión regular. Con "contiene", #1 se vuelve texto literal.

Rechazar KB sin reventar el inventario

Para sacar las actualizaciones del catálogo, crea en el diccionario de Software una regla con la acción Ignorar la importación:

  • Criterio: Nombre - empieza por - KB - acción Ignorar la importación.
  • Criterio: Nombre - contiene - Update for Windows - acción Ignorar la importación.

A partir de ahí, las nuevas importaciones omiten esos ítems. El detalle que casi nadie anticipa: al ejecutar el replay de esa regla, GLPI borra el software ya importado que coincide con el criterio. Es la acción correcta para limpiar, pero es destructiva, por eso siempre va primero a un entorno de homologación.

Replay: aplicar las reglas a los datos existentes

Una regla de diccionario solo actúa en la entrada. Para los datos que ya están en la base, usa el botón Reproducir las reglas del diccionario dentro de cada diccionario. Dos precauciones de operación que aprendimos a la fuerza:

  • Trocéalo por fabricante. En el replay del diccionario de software, GLPI deja elegir el fabricante. Ejecutarlo todo de una vez en un catálogo grande revienta el max_execution_time de PHP y devuelve un error 500. Ejecútalo por lotes.
  • Ventana de bajo tráfico. El replay reprocesa miles de filas; prográmalo fuera del horario laboral.

Tras el replay, confirma que la consolidación funcionó con un conteo simple:

-- Debe quedar 1 registro "Dell" (y no 4)
SELECT id, name FROM glpi_manufacturers
WHERE name LIKE '%Dell%';

-- El software KB debe tender a cero tras el replay con "Ignorar la importacion"
SELECT COUNT(*) AS kb_restantes
FROM glpi_softwares
WHERE name LIKE 'KB%';

El error común en el mantenimiento de clientes

En un parque de cliente de unos 3.000 activos, el diccionario de software rechazando KB y updates bajó el catálogo de decenas de miles de "software" a unos pocos miles de ítems reales: el informe de cumplimiento por fin se volvió legible. Pero ejecutamos el replay con "ignorar la importación" directo en producción y el cliente perdió el rastro de qué máquinas tenían cada KB, porque el rechazo borra el registro, no solo lo oculta. La decisión que pasó a valer para todos los entornos: el replay de diccionario nace en homologación, el rechazo se trata como operación destructiva y el merge de fabricante siempre va seguido de una limpieza de los valores huérfanos en el desplegable, que GLPI no elimina solo. Es el tipo de detalle que solo aparece tras ejecutarlo en un parque de verdad.

Buenas prácticas que evitan retrabajo

  • Empieza por fabricante y software: concentran la mayor parte del desorden y rinden rápido.
  • El orden de las reglas importa: pon las más específicas antes que las genéricas.
  • Prueba siempre en homologación y valida el replay con un SQL de conteo antes y después.
  • Revisa los diccionarios tras cada gran oleada de inventario (un lote nuevo de máquinas, una adquisición, un cambio de proveedor).
  • Documenta cada regla: un diccionario sin historial del "porqué" se vuelve una caja negra en el siguiente mantenimiento.

Estandarizar el inventario es la base para indicadores confiables y para el ciclo de vida de los activos. Si tu parque ya creció y la CMDB se convirtió en una maraña de duplicados, NexTool hace ese saneamiento como parte del mantenimiento: mapeo del desorden, reglas de diccionario probadas en homologación y un replay controlado, sin tumbar tu GLPI.


Revisado por el equipo de NexTool Solutions.

Preguntas Frecuentes

En Administración > Diccionarios. Desde ahí llegas a los diccionarios de software, fabricante, modelos (ordenador, monitor, impresora, teléfono, red), tipos y sistema operativo. Cada diccionario es un conjunto de reglas con un criterio y una acción evaluadas durante la importación del inventario.

No automáticamente. La regla actúa en la entrada de nuevos datos. Para aplicarla a los registros existentes, usa el botón 'Reproducir las reglas del diccionario' dentro del diccionario. Ejecútalo troceado por fabricante y fuera del horario pico, porque el replay reprocesa miles de filas y puede superar el tiempo de ejecución de PHP (error 500).

Crea la regla que asigna el nombre fijo (p. ej. contiene 'Dell' entonces asignar 'Dell') y ejecuta el replay para reasignar los activos. Después revisa en Configuración > Listas desplegables si quedaron fabricantes con cero ítems y púrgalos. GLPI reasigna los activos, pero no siempre elimina el valor antiguo del desplegable.

Sí, al ejecutar el replay. La acción 'Ignorar la importación' no solo bloquea futuras importaciones: en el replay borra el software ya importado que coincide con el criterio, y pierdes el rastro de qué máquinas tenían ese KB. Por eso prueba en homologación y trata el rechazo como una operación destructiva.

Sí. Marca el criterio como 'expresión regular' y usa grupos de captura. En la acción, 'asignar el valor de la expresión regular' acepta #0 (cadena entera) y #1 a #9 (grupos capturados). El error común es dejar el criterio como 'contiene' y esperar que #1 funcione: solo se resuelve cuando el criterio es una regex.

Sí. Las reglas se evalúan de arriba hacia abajo. Pon las más específicas antes que las genéricas para que una regla amplia no capture un caso que debería tener su propio tratamiento. Revisa el orden cada vez que agregues reglas nuevas.

?Necesitas ayuda?