Saya mencoba mengatur Zenoss 4.2.0 pada CentOS 6.3 untuk memonitor server MySQL 5.5.25a jarak jauh melalui IPv6. Firewall terbuka untuk server pemantauan dan saya dapat terhubung dengan baik dari baris perintah:
[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, bagaimanapun, menghasilkan acara "Tidak ada data kinerja dari plugin" yang detailnya mengeluh bahwa itu tidak dapat terhubung ke server:
MySQL Error: (2003, "Can't connect to MySQL server on '2001:db8:81:2c::2' (-9)")
Sejauh yang saya tahu, -9 bahkan bukan errno yang valid. Dan tentu saja tidak mungkin bagi Google angka negatif .
Saya telah memeriksa zMySqlUsername dan zMySqlPassword - lebih dari sekali - dan mereka memiliki nilai yang benar.
Saya juga mencoba memasukkan alamat IPv6 dengan tanda kurung, tetapi MySQL tidak suka sama sekali, baik di dalam Zenoss atau di baris perintah.
Apa penyebab masalah ini?
Jawaban:
Saya akhirnya menyerah dan pergi untuk men-debug yang ini sendiri.
Berdasarkan jawaban @ SelivanovPavel, saya mengaktifkan debug
zencommand
dan menunggu, dan tentu saja, ZenPack gagal.Jadi saya menggali ZenPack dan menemukan itu mengimpor (versi yang tampaknya lama)
pymysql
dari/opt/zenoss/lib/python
.Pada pengujian dari baris perintah python saya menemukan di mana pengecualian dilemparkan dari:
Dan saat menginspeksi
connections.py
di sekitar tempat umum itu, saya merasa ngeri ketika mencoba membukaAF_INET
soket, dan tidak ada kode di mana pun untuk membukaAF_INET6
soket. Boom, gagal instan.Versi saat ini
pymysql
juga tampaknya mengandung kekurangan ini; tidak ada dukungan IPv6 apa pun.Jadi "jawabannya" adalah saya harus memperbaikinya
pymysql
. Tidak bagaimana saya ingin menghabiskan sore saya.Sedikit peretasan jahat ini berfungsi dengan baik (meskipun Anda membutuhkan Python 2.6). Buka
/opt/zenoss/lib/python/pymysql/connections.py
dan cari diAF_INET
sekitar baris 660. Kemudian buat perubahan berikut:Sejak saat ini telah diperbaiki di pymysql hulu dan harus tersedia dalam rilis mendatang.
sumber
Periksa, apakah ada upaya koneksi:
tshark adalah versi konsol dari program penangkapan paket Wireshark.
Jika pengguna layanan zenoss bukan root - coba sambungkan ke mysql dari shell-nya:
Bagaimana dengan log Zenoss (Pengaturan> Daemon)? Cobalah untuk meningkatkan verbositas log (atur logseverity = 30) dan lihat apa yang terjadi.
Doc ini mungkin berguna: Troubleshooting_Zenoss
sumber
Coba letakkan di kurung [2001: 470: ...] atau ipv6: []. Banyak parser yang tidak dapat membedakan antara entri teks dan alamat v6.
sumber