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 inventario | Diccionario | Acción recomendada | ¿Reversible? | Trampa |
|---|---|---|---|---|
| Fabricante con varias grafías | Fabricante | Asignar un nombre fijo | Sí | El merge puede dejar una entrada huérfana en el desplegable |
| Modelo que arrastra el prefijo del fabricante | Modelos | Regex + asignar el grupo capturado | Sí | Exige el criterio "expresión regular", no "contiene" |
| KB y updates contaminando el catálogo | Software | Ignorar la importación | Parcial | El replay BORRA el software ya importado |
| Versiones de SO fragmentadas | Sistema operativo | Asignar SO / edición | Sí | Nombre del SO y edición son campos separados |
| Varios software que son el mismo producto | Software | Asignar nombre + fabricante | Sí | Agrupa versiones; revisa antes de fusionar |
Normalizar fabricantes y modelos (paso a paso)
- 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. - 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_timede 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.