J'essaie de configurer Zenoss 4.2.0 sur CentOS 6.3 pour surveiller un serveur MySQL 5.5.25a distant via IPv6. Le pare-feu est ouvert pour le serveur de surveillance et je peux me connecter correctement à partir de la ligne de commande:
[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)
Zenoss, cependant, génère un événement "Pas de données de performance du plugin" dont les détails se plaignent qu'il ne peut pas se connecter au serveur:
MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")
Pour autant que je sache, -9 n'est même pas un errno valide. Et bien sûr, il est impossible de Google un nombre négatif .
J'ai vérifié zMySqlUsername et zMySqlPassword - plus d'une fois - et ils ont les bonnes valeurs.
J'ai également essayé d'entrer l'adresse IPv6 avec des crochets, mais MySQL n'aime pas du tout cela, que ce soit dans Zenoss ou sur la ligne de commande.
Quelle est la cause de ce problème?
Réponses:
J'ai finalement abandonné et suis allé déboguer celui-ci moi-même.
Sur la base de la réponse de @ SelivanovPavel, j'ai activé le débogage
zencommand
et j'ai attendu, et bien sûr, le ZenPack échouait.J'ai donc creusé dans le ZenPack et découvert qu'il importait (une ancienne version apparemment de)
pymysql
de/opt/zenoss/lib/python
.Lors des tests à partir de la ligne de commande python, j'ai découvert d'où l'exception provenait:
Et en inspectant
connections.py
dans ce voisinage général, j'ai découvert avec horreur qu'il tentait d'ouvrir unAF_INET
socket, et il n'y avait aucun code pour ouvrir unAF_INET6
socket. Boom, échec instantané.La version actuelle de
pymysql
semble également contenir cette lacune; aucun support IPv6 que ce soit.Donc la "réponse" est que je vais devoir corriger
pymysql
. Pas comme je voulais passer mon après-midi.Ce petit hackery méchant fait fonctionner les choses (bien que vous ayez besoin de Python 2.6). Ouvrez
/opt/zenoss/lib/python/pymysql/connections.py
et recherchezAF_INET
autour de la ligne 660. Effectuez ensuite la modification suivante:Cela a depuis été corrigé dans pymysql en amont et devrait être disponible dans une prochaine version.
la source
Vérifiez s'il y a des tentatives de connexion:
tshark est une version console du programme de capture de paquets Wireshark.
Si l'utilisateur du service zenoss n'est pas root - essayez de vous connecter à mysql depuis son shell:
Qu'en est-il des journaux Zenoss (Paramètres> Démons)? Essayez d'augmenter la verbosité des journaux (définissez logseverity = 30) et voyez ce qui se passe.
Ce document peut être utile: Dépannage_Zenoss
la source
Essayez de le mettre entre crochets [2001: 470: ...] ou ipv6: []. Un grand nombre d'analyseurs ne peuvent pas faire la différence entre une entrée de texte et une adresse v6.
la source