Estoy tratando de configurar Zenoss 4.2.0 en CentOS 6.3 para monitorear un servidor remoto MySQL 5.5.25a a través de IPv6. El firewall está abierto para el servidor de monitoreo y puedo conectarme bien desde la línea de comando:
[root@zenoss ~]# mysql -u zenoss -p -h 2001:db8:81:2c::2
...
mysql> SELECT USER(),CURRENT_USER();
+-----------------------------------------+-----------------------------------------+
| USER() | CURRENT_USER() |
+-----------------------------------------+-----------------------------------------+
| zenoss@2001:db8:16:bf:5054:ff:fec0:f7a5 | zenoss@2001:db8:16:bf:5054:ff:fec0:f7a5 |
+-----------------------------------------+-----------------------------------------+
1 row in set (0.09 sec)
Sin embargo, Zenoss genera un evento "No hay datos de rendimiento del complemento" cuyos detalles se quejan de que no se puede conectar al servidor:
MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")
Hasta donde yo sé, -9 ni siquiera es un error válido. Y, por supuesto, es imposible buscar en Google un número negativo .
He comprobado zMySqlUsername y zMySqlPassword, más de una vez, y tienen los valores correctos.
También intenté ingresar la dirección IPv6 con corchetes, pero a MySQL no le gusta para nada, ya sea dentro de Zenoss o en la línea de comandos.
¿Cuál es la causa de este problema?
Respuestas:
Finalmente me di por vencido y fui a depurar esto yo mismo.
Basado en la respuesta de @ SelivanovPavel, encendí la depuración
zencommand
y esperé, y efectivamente, el ZenPack estaba fallando.Y cavé en el ZenPack y descubrí que estaba importando (aparentemente una versión antigua de)
pymysql
a partir/opt/zenoss/lib/python
.Al probar desde la línea de comando de python descubrí de dónde se lanzaba la excepción:
Y al inspeccionar
connections.py
en esa vecindad general descubrí con horror que estaba intentando abrir unAF_INET
zócalo, y que no había ningún código en ningún lugar para abrir unAF_INET6
zócalo. Boom, falla instantánea.La versión actual de
pymysql
también parece contener esta deficiencia; no hay soporte de IPv6 en absoluto.Entonces la "respuesta" es que voy a tener que arreglarlo
pymysql
. No cómo quería pasar la tarde.Este pequeño truco desagradable hace que las cosas funcionen (aunque necesitas Python 2.6). Abre
/opt/zenoss/lib/python/pymysql/connections.py
y buscaAF_INET
alrededor de la línea 660. Luego haz el siguiente cambio:Desde entonces, esto se ha corregido en pymysql ascendente y debería estar disponible en una versión futura.
fuente
Verifique, ¿hay algún intento de conexión?
tshark es la versión de consola del programa de captura de paquetes Wireshark.
Si el usuario del servicio zenoss no es root, intente conectarse a mysql desde su shell:
¿Qué pasa con los registros de Zenoss (Configuración> Demonios)? Intente aumentar la verbosidad de los registros (establezca logseverity = 30) y vea qué sucede.
Este documento puede ser útil: Solución de problemas_Zenoss
fuente
Intente ponerlo entre paréntesis [2001: 470: ...] o ipv6: []. Muchos analizadores no pueden diferenciar entre una entrada de texto y una dirección v6.
fuente