-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Code of Conduct
- I agree to follow this project's Code of Conduct
Is there an existing issue for this?
- I have searched the existing issues
GLPI Version
GLPI 10.0.18
Plugin version
1.0.3
Bug description
Hola,
estamos intentando inventariar varias instancias MySQL en el mismo servidor y GLPI termina fusionándolas en una sola “MySQL”. Además, en Reglas → Instancias de base de datos no vemos campos para poder diferenciarlas por host/puerto o ruta de socket.
Entorno
Servidor GLPI: [versión / edición] (UI en español).
Equipo inventariado: MYSQLDBS-E2 (Linux).
GLPI Agent: 1.15-1 (Debian) – UserAgent: 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 reproducimos
Enviamos el inventario por TCP con el agente (seis credenciales en la misma ejecución):
glpi-agent --tasks=Inventory --full --force --debug --required-category=database
--credentials="use:mysql,type:login_password,login:glpi_database,password:XXXX,host:127.0.0.1,port:44001"
--credentials="use:mysql,type:login_password,login:glpi_database,password:XXXX,host:127.0.0.1,port:44002"
--credentials="use:mysql,type:login_password,login:glpi_database,password:XXXX,host:127.0.0.1,port:44003"
--credentials="use:mysql,type:login_password,login:glpi_database,password:XXXX,host:127.0.0.1,port:44004"
--credentials="use:mysql,type:login_password,login:glpi_database,password:XXXX,host:127.0.0.1,port:44005"
--credentials="use:mysql,type:login_password,login:glpi_database,password:XXXX,host:127.0.0.1,port:44006"
--server "https://[nuestro-glpi]/front/inventory.php"
En Gestión → Base de datos → Instancias (del equipo) GLPI no crea 6 instancias; crea/actualiza una sola llamada “MySQL” y cada nuevo puerto sobrescribe la anterior.
Para sockets (--credentials=... socket:/var/run/...sock) el comportamiento es igual: se mezcla todo en una única instancia.
En Administración → Reglas → Reglas de importación y enlace → pestaña “Instancias de base de datos”, al crear una regla no aparecen los campos de la instancia Host, Puerto ni Ruta (socket).
Sólo vemos opciones de “Puerto de red > IP/MAC/Número de puerto”, que pertenecen a Ordenadores, no a Instancias de BBDD. Por tanto, no podemos enlazar por (Elemento + Puerto/Ruta) para separar 44001…44006.
Lo esperado
Que el importador cree una instancia por endpoint (host:puerto o ruta de socket) del mismo equipo.
Poder definir una regla en Instancias de base de datos con criterios Elemento + (Host + Puerto | Ruta) y acción “Enlazar si es posible” para evitar la fusión.
Resultado actual
Se fusionan todas las instancias en una sola “MySQL”.
No podemos construir reglas porque no se exponen los campos Host/Puerto/Ruta de la instancia.
Único “workaround”: importar un puerto cada vez, renombrar la instancia a MySQL-4400X y bloquear Nombre/Host/Puerto en Locks. Es manual y frágil.
Solicitud / dudas
¿Es un bug o una limitación conocida de la versión actual?
¿En qué versión de GLPI/plug-in deberían estar disponibles los campos Host/Puerto/Ruta dentro de Reglas → Instancias de base de datos?
¿Podríais exponer esos campos en el motor de reglas y/o hacer que la clave de deduplicación incluya (elemento, tipo, host, puerto, ruta) para no sobrescribir otras instancias del mismo equipo?
¿Hay algún parámetro o patch recomendado para tratar correctamente múltiples instancias inventariadas por socket?
Gracias por la ayuda y por el desarrollo.
Relevant log output
[debug] Running GLPI::Agent::Task::Inventory::Generic::Databases::MySQL
[info] Inventory saved … MYSQLDBS-E2-*.jsonPage URL
URL de la página Reglas: /front/ruleimportasset.php → pestaña Instancias de base de datos Lista de instancias: /front/databaseinstance.php
Steps To reproduce
Equipo MYSQLDBS-E2 con MySQL 8.0.37 en puertos 44001–44006 (y sockets en /var/run/mysqld/*.sock).
Enviar inventario por TCP:
glpi-agent --tasks=Inventory --full --force --required-category=database
--credentials="use:mysql,type:login_password,login:glpi_database,password:,host:127.0.0.1,port:44001"
… (repetido para 44002…44006)
--server "https:///front/inventory.php"
Abrir Gestión → Base de datos → Instancias del equipo.
Actual: sólo hay 1 “MySQL” y cada puerto nuevo la sobreescribe.
Esperado: 6 instancias separadas (una por host:puerto).
En Reglas → Instancias de base de datos, el editor no expone campos de instancia Host/Puerto/Ruta; sólo aparecen criterios de Puerto de red (del ordenador), por lo que no se puede enlazar por Elemento + Puerto/Ruta.
Your GLPI setup information
GLPI: <versión> (UI ES) • PHP <versión> • DB <MySQL/MariaDB versión> • SO servidor <…>
Plugin/Inventario: <versión>
GLPI-Agent: 1.15-1 (Debian) – UserAgent GLPI-Agent_v1.15-1
Equipo inventariado: Linux • MySQL 8.0.37 con puertos 44001–44006 y sockets /var/run/mysqld/{webpndb,kohadb,miscdb,atomdb,rbiblodb,omekadb}.sock
Anything else?
El plugin/importe no se autentica por sí solo; sólo conecta si pasamos credenciales al agente (use:mysql,…,host/port|socket).
Solicitud:
Exponer en reglas de Instancias de base de datos los campos Host, Puerto y Ruta (socket).
Evitar la fusión usando una clave de deduplicación que incluya (elemento, tipo, host, puerto, ruta) para crear una instancia por endpoint.