Я пытаюсь настроить Zenoss 4.2.0 на CentOS 6.3 для мониторинга удаленного сервера MySQL 5.5.25a через IPv6. Брандмауэр открыт для сервера мониторинга, и я могу нормально подключиться из командной строки:
[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, однако, генерирует событие «Нет данных о производительности из плагина», детали которого жалуются на то, что он не может подключиться к серверу:
MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")
Насколько я знаю, -9 даже не является действительной ошибкой. И, конечно, невозможно гуглить отрицательное число .
Я проверил zMySqlUsername и zMySqlPassword - более одного раза - и они имеют правильные значения.
Я также попытался ввести адрес IPv6 в квадратных скобках, но MySQL это не нравится ни в Zenoss, ни в командной строке.
В чем причина этой проблемы?
Ответы:
Я наконец сдался и пошел отлаживать это сам.
Основываясь на ответе @ SelivanovPavel, я включил отладку
zencommand
и ждал, и, конечно же, ZenPack терпел неудачу.Поэтому я покопался в ZenPack и обнаружил, что он импортирует (очевидно, старую версию)
pymysql
из/opt/zenoss/lib/python
.При тестировании из командной строки python я обнаружил, откуда выдается исключение:
И, осмотрев
connections.py
эту общую окрестность, я с ужасом обнаружил, что она пытается открытьAF_INET
сокет, и нигде не было кода для открытияAF_INET6
сокета. Бум, мгновенный провал.Текущая версия
pymysql
также, кажется, содержит этот недостаток; нет поддержки IPv6 вообще.Таким образом, «ответ», который я собираюсь исправить
pymysql
. Не так, как я хотел провести свой день.Этот неприятный хакер заставляет все работать (хотя вам нужен Python 2.6). Откройте
/opt/zenoss/lib/python/pymysql/connections.py
и найдитеAF_INET
около строки 660. Затем внесите следующие изменения:С тех пор это было исправлено в исходной версии pymysql и должно быть доступно в будущем выпуске.
источник
Проверьте, есть ли попытки подключения:
tshark - консольная версия программы для сбора пакетов Wireshark.
Если пользователь сервиса zenoss не является пользователем root, попробуйте подключиться к mysql из его оболочки:
А как насчет логов Zenoss (Настройки> Демоны)? Попробуйте увеличить детализацию логов (установите logseverity = 30) и посмотрите, что получится.
Этот документ может быть полезным: Troubleshooting_Zenoss
источник
Попробуйте заключить его в квадратные скобки [2001: 470: ...] или ipv6: []. Многие парсеры не могут различить текстовую запись и адрес v6.
источник