Estou tentando configurar o Zenoss 4.2.0 no CentOS 6.3 para monitorar um servidor remoto MySQL 5.5.25a via IPv6. O firewall está aberto para o servidor de monitoramento e posso conectar-me bem na linha 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)
O Zenoss, no entanto, gera um evento "Nenhum dado de desempenho do plug-in" cujos detalhes reclamam que ele não pode se conectar ao servidor:
MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")
Até onde eu sei, -9 nem é um erro válido. E é claro que é impossível procurar um número negativo no Google .
Eu verifiquei zMySqlUsername e zMySqlPassword - mais de uma vez - e eles têm os valores corretos.
Também tentei digitar o endereço IPv6 entre colchetes, mas o MySQL não gosta disso, nem no Zenoss nem na linha de comando.
Qual é a causa desse problema?
Respostas:
Eu finalmente desisti e fui depurar esse eu mesmo.
Com base na resposta de @ SelivanovPavel
zencommand
, apareci depurando e esperei, e com certeza, o ZenPack estava falhando.Então, procurei no ZenPack e descobri que estava importando (uma versão aparentemente antiga)
pymysql
do/opt/zenoss/lib/python
.Ao testar a partir da linha de comando python, descobri de onde a exceção estava sendo lançada:
E, ao inspecionar
connections.py
aquela vizinhança geral, descobri, horrorizado, que estava tentando abrir umAF_INET
soquete, e não havia código em nenhum lugar para abrir umAF_INET6
soquete. Crescimento, falha instantânea.A versão atual do
pymysql
também parece conter essa deficiência; nenhum suporte IPv6 .Então a "resposta" é que vou ter que consertar
pymysql
. Não é como eu queria passar minha tarde.Esse pequeno truque desagradável faz as coisas funcionarem (embora você precise do Python 2.6). Abra
/opt/zenoss/lib/python/pymysql/connections.py
e procure pelaAF_INET
linha 660. Em seguida, faça a seguinte alteração:Isso foi corrigido no pymysql upstream e deve estar disponível em uma versão futura.
fonte
Verifique, existem tentativas de conexão:
tshark é a versão do console do programa de captura de pacotes Wireshark.
Se o usuário do serviço zenoss não for root - tente conectar-se ao mysql pelo shell:
E os logs do Zenoss (Configurações> Daemons)? Tente aumentar a verbosidade dos logs (defina logseverity = 30) e veja o que acontece.
Este documento pode ser útil: Troubleshooting_Zenoss
fonte
Tente colocá-lo entre colchetes [2001: 470: ...] ou ipv6: []. Muitos analisadores não conseguem diferenciar entre uma entrada de texto e um endereço v6.
fonte