Skip to content

GLPI – Instancias MySQL se fusionan / Reglas de “Instancias de base de datos” no exponen Host/Puerto/Ruta (sockets) #68

@adrigap2

Description

@adrigap2

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-*.json

Page 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions