
GLPI – Instancias MySQL se fusionan / Reglas de “Instancias de base de datos” no exponen Host/Puerto/Ruta (sockets) #68
Código de conducta
Acepto seguir el Código de conducta de este proyecto.
¿Existe algún problema existente con esto?
He buscado los problemas existentes
Versión GLPI
GLPI 10.0.18
Versión del complemento
1.0.3
Descripción del error
Hola,
Intentamos inventariar varias instancias de MySQL en el mismo servidor, pero GLPI termina fusionándolas en una sola instancia de "MySQL".
Además, en Reglas → Instancias de base de datos no vemos campos que nos permitan distinguirlas por host/puerto o ruta de socket.
Ambiente
Servidor GLPI: [versión/edición] (IU en español).
Dispositivo inventariado: MYSQLDBS-E2 (Linux).
Agente GLPI: 1.15-1 (Debian) – Agente de usuario: GLPI-Agent_v1.15-1.
MySQL: 8.0.37, con 6 instancias:
TCP: 127.0.0.1:44001…44006
Sockets: /var/run/mysqld/{webpndb,kohadb,miscdb,atomdb,rbiblodb,omekadb}.sock
Cómo reproducirse
Enviamos el inventario por TCP con el agente (seis credenciales en la misma ejecución):
glpi-agent --tasks=Inventario --full --force --debug --required-category=base de datos
--credentials="uso:mysql,tipo:contraseña_de_inicio_de_sesión,inicio_de_sesión:glpi_database,contraseña:XXXX,host:127.0.0.1,puerto:44001"
--credentials="uso:mysql,tipo:contraseña_de_inicio_de_sesión,inicio_de_sesión:glpi_database,contraseña:XXXX,host:127.0.0.1,puerto:44002"
--credentials="uso:mysql,tipo:contraseña_de_inicio_de_sesión,inicio_de_sesión:glpi_database,contraseña:XXXX,host:127.0.0.1,puerto:44003"
--credentials="uso:mysql,tipo:contraseña_de_inicio_de_sesión,inicio_de_sesión:glpi_database,contraseña:XXXX,host:127.0.0.1,puerto:44004"
--credentials="uso:mysql,tipo:contraseña_de_inicio_de_sesión,inicio_de_sesión:glpi_database,contraseña:XXXX,host:127.0.0.1,puerto:44005"
--credentials="uso:mysql,tipo:contraseña_de_inicio_de_sesión,inicio_de_sesión:glpi_database,contraseña:XXXX,host:127.0.0.1,puerto:44006"
--server "
En "class="redactor-autoparser-object">https://[our-glpi]/front/inventory.php"
En Administración → Base de datos → Instancias (del dispositivo) GLPI no crea 6 instancias; crea/actualiza una sola llamada “MySQL”, y cada nuevo puerto sobrescribe al anterior.
Para los sockets (--credentials=... socket:/var/run/...sock) el comportamiento es el mismo: todo se fusiona en una sola instancia.
En Administración → Reglas → Importar y vincular reglas → pestaña "Instancias de base de datos", al crear una regla, no se ven los campos Host de instancia, Puerto ni Ruta (socket).
Solo se ven opciones como "Puerto de red > IP/MAC/Número de puerto", que corresponden a equipos, no a instancias de base de datos.
Por lo tanto, no se puede vincular mediante (Dispositivo + Puerto/Ruta) para separar las instancias 44001…44006.
Comportamiento esperado
El importador debe crear una instancia por punto final (host:puerto o ruta de socket) del mismo dispositivo.
Poder definir una regla en Instancias de Base de Datos con criterios Dispositivo + (Host + Puerto | Ruta) y acción “Vincular si es posible” para evitar la fusión.
Resultado actual
Todas las instancias se fusionan en un único “MySQL”.
No podemos crear reglas porque los campos de instancia Host/Puerto/Ruta no están expuestos.
La única solución alternativa: importe un puerto a la vez, cambie el nombre de la instancia a MySQL-4400X y bloquee Nombre/Host/Puerto en Bloqueos. Esto es manual y delicado.
Solicitud / preguntas
¿Es esto un error o una limitación conocida de la versión actual?
¿En qué versión de GLPI/plugin deberían estar disponibles los campos Host/Puerto/Ruta dentro de Reglas → Instancias de base de datos?
¿Podrías exponer esos campos en el motor de reglas y/o hacer que la clave de deduplicación incluya (dispositivo, tipo, host, puerto, ruta) para que otras instancias en el mismo dispositivo no se sobrescriban?
¿Existe algún parámetro o parche recomendado para manejar adecuadamente múltiples instancias inventariadas por socket?
Gracias por tu ayuda y por el desarrollo.
Salida de registro relevante
[depuración] Ejecutando GLPI::Agent::Task::Inventory::Generic::Databases::MySQL
[información] Inventario guardado… MYSQLDBS-E2-*.json
URL de la página
Página de reglas: /front/ruleimportasset.php → pestaña “Instancias de la base de datos”
Lista de instancias: /front/databaseinstance.php
Pasos para reproducir
Dispositivo MYSQLDBS-E2 con MySQL 8.0.37 en los puertos 44001–44006 (y sockets en /var/run/mysqld/*.sock).
Enviar inventario a través de TCP:
glpi-agent --tasks=Inventario --completo --force --categoría-obligatoria=base-de-datos
--credenciales="uso:mysql,tipo:contraseña_de_inicio_de_sesión,inicio_de_sesión:glpi_database,contraseña:,host:127.0.0.1,puerto:44001"
… (repetido para 44002…44006)
--servidor "
Abrir "class="redactor-autoparser-object">https:///front/inventory.php"
Abra Administración → Base de datos → Instancias del dispositivo.
Actual: solo 1 “MySQL” y cada nuevo puerto lo sobrescribe.
Se esperaba: 6 instancias independientes (una por host:puerto).
En Reglas → Instancias de base de datos, el editor no expone los campos Host/Puerto/Ruta de la instancia; solo los criterios “Puerto de red” (de Computadora), por lo que no es posible vincular por Dispositivo + Puerto/Ruta.
Su información de configuración de GLPI
GLPI: (UI ES) • PHP • DB <versión de MySQL/MariaDB> • SO del servidor <…>
Complemento/Inventario:
Agente GLPI: 1.15-1 (Debian) – UserAgent GLPI-Agent_v1.15-1
Dispositivo inventariado: Linux • MySQL 8.0.37 con puertos 44001–44006 y sockets /var/run/mysqld/{webpndb,kohadb,miscdb,atomdb,rbiblodb,omekadb}.sock
¿Algo más?
El complemento/importador no se autentica por sí solo; solo se conecta si pasamos credenciales al agente (use:mysql,…,host/port|socket).
Pedido:
Exponer en las reglas de Instancias de Base de Datos los campos Host, Puerto y Ruta (socket).
Evite la fusión mediante el uso de una clave de deduplicación que incluya (dispositivo, tipo, host, puerto, ruta) de modo que se cree una instancia por punto final.
Customer support service by UserEcho