Ich versuche Zenoss 4.2.0 unter CentOS 6.3 einzurichten, um einen entfernten MySQL 5.5.25a-Server über IPv6 zu überwachen. Die Firewall ist für den Überwachungsserver geöffnet und ich kann über die Befehlszeile eine Verbindung herstellen:
[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 generiert jedoch ein Ereignis "Keine Leistungsdaten vom Plugin", dessen Details darüber klagen, dass keine Verbindung zum Server hergestellt werden kann:
MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")
Soweit ich weiß, ist -9 nicht einmal eine gültige Fehlernummer. Und natürlich ist es unmöglich, eine negative Zahl zu googeln .
Ich habe zMySqlUsername und zMySqlPassword mehrmals überprüft und sie haben die richtigen Werte.
Ich habe auch versucht, die IPv6-Adresse in Klammern einzugeben, aber das gefällt MySQL überhaupt nicht, weder in Zenoss noch in der Befehlszeile.
Was ist die Ursache für dieses Problem?
Antworten:
Ich gab es schließlich auf und ging selbst zum Debuggen.
Aufgrund der Antwort von @ SelivanovPavel
zencommand
tauchte ich beim Debuggen auf und wartete, und das ZenPack schlug mit Sicherheit fehl.Also habe ich mich in das ZenPack vertieft und herausgefunden, dass es sich um einen Import (eine anscheinend alte Version)
pymysql
von handelt/opt/zenoss/lib/python
.Beim Testen über die Python-Befehlszeile habe ich festgestellt, woher die Ausnahme stammt:
Und als
connections.py
ich in dieser allgemeinen Umgebung nachschaute, stellte ich zu meinem Entsetzen fest, dass versucht wurde, eineAF_INET
Steckdose zu öffnen , und dass es nirgendwo einen Code gab, um eineAF_INET6
Steckdose zu öffnen . Boom, sofort scheitern.Die aktuelle Version von
pymysql
scheint diesen Mangel ebenfalls zu enthalten; Keine IPv6-Unterstützung .Die "Antwort" ist also, dass ich sie reparieren muss
pymysql
. Nicht, wie ich meinen Nachmittag verbringen wollte.Dieses böse Hackery bringt Dinge zum Laufen (obwohl Sie Python 2.6 brauchen). Öffnen
/opt/zenoss/lib/python/pymysql/connections.py
und suchen Sie nachAF_INET
Zeile 660. Nehmen Sie dann die folgende Änderung vor:Dies wurde seitdem in pymysql behoben und sollte in einer zukünftigen Version verfügbar sein.
quelle
Überprüfen Sie, ob Verbindungsversuche vorliegen:
tshark ist die Konsolenversion des Paketerfassungsprogramms Wireshark.
Wenn der Benutzer des Zenoss-Dienstes kein Root-Benutzer ist, versuchen Sie, über seine Shell eine Verbindung zu MySQL herzustellen:
Was ist mit Zenoss-Protokollen (Einstellungen> Daemons)? Versuchen Sie, die Ausführlichkeit der Protokolle zu erhöhen (setzen Sie logseverity = 30) und sehen Sie, was passiert.
Dieses Dokument kann nützlich sein: Troubleshooting_Zenoss
quelle
Setzen Sie es in Klammern [2001: 470: ...] oder ipv6: []. Sehr viele Parser können nicht zwischen einer Texteingabe und einer v6-Adresse unterscheiden.
quelle