Próbuję skonfigurować Zenoss 4.2.0 na CentOS 6.3, aby monitorować zdalny serwer MySQL 5.5.25a za pośrednictwem IPv6. Zapora jest otwarta dla serwera monitorowania i mogę połączyć się dobrze z linii poleceń:
[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 generuje jednak zdarzenie „Brak danych o wydajności z wtyczki”, którego szczegóły narzekają, że nie może połączyć się z serwerem:
MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")
O ile mi wiadomo, -9 nie jest nawet prawidłowym błędem. I oczywiście Google nie ma liczby ujemnej .
Sprawdziłem zMySqlUsername i zMySqlPassword - więcej niż raz - i mają poprawne wartości.
Próbowałem również wpisać adres IPv6 w nawiasach, ale MySQL wcale tego nie lubi, ani w Zenossie, ani w wierszu poleceń.
Co jest przyczyną tego problemu?
Odpowiedzi:
W końcu poddałem się i sam poszedłem debugować.
Na podstawie @ SelivanovPavel za odpowiedź Odwróciłem się na debugowanie
zencommand
i czekał, i na pewno wystarczy, ZenPack była wadliwa.Więc przekopałem się do ZenPacka i dowiedziałem się, że to import (pozornie stara wersja)
pymysql
z/opt/zenoss/lib/python
.Podczas testowania z wiersza poleceń Pythona odkryłem, skąd został zgłoszony wyjątek:
Podczas inspekcji
connections.py
w tym ogólnym otoczeniu z przerażeniem odkryłem, że próbuje otworzyćAF_INET
gniazdo, a nigdzie nie ma kodu, aby otworzyćAF_INET6
gniazdo. Bum, natychmiastowa porażka.Obecna wersja
pymysql
wydaje się również zawierać ten brak; brak obsługi IPv6 .Więc „odpowiedź” będę musiała naprawić
pymysql
. Nie tak chciałem spędzić popołudnie.Ta odrobina paskudnego włamania działa, ale potrzebujesz Pythona 2.6. Otwórz
/opt/zenoss/lib/python/pymysql/connections.py
i wyszukajAF_INET
około linii 660. Następnie wprowadź następującą zmianę:Zostało to już naprawione w poprzedniej wersji pymysql i powinno być dostępne w przyszłej wersji.
źródło
Sprawdź, czy są jakieś próby połączenia:
tshark to konsolowa wersja programu do przechwytywania pakietów Wireshark.
Jeśli użytkownik usługi zenoss nie jest rootem - spróbuj połączyć się z mysql z jego powłoki:
Co z dziennikami Zenoss (Ustawienia> Demony)? Spróbuj zwiększyć szczegółowość dzienników (set logseverity = 30) i zobacz, co się stanie.
Ten dokument może być przydatny: Rozwiązywanie problemów_Zenoss
źródło
Spróbuj umieścić go w nawiasach [2001: 470: ...] lub ipv6: []. Ogromna liczba parserów nie może odróżnić wpisu tekstowego od adresu v6.
źródło