Linux
Monit 無法檢測到 MySQL,但我可以
Monit 配置為在 localhost 的 3306 埠上監視 MySQL。
check process mysqld with pidfile /var/lib/mysql/li175-241.pid start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed port 3306 protocol mysql then restart if 5 restarts within 5 cycles then timeout
我的應用程序配置為通過 localhost:3306 連接到 MySQL,執行良好並且可以訪問數據庫。我什至可以使用 MySQL Query Browser 通過埠 3306 遠端連接到數據庫。該埠是完全開放的,可以連接。因此,我非常確定它正在執行。
但是,執行
monit -v
顯示 Monit 無法在該埠上檢測到 MySQL。'mysqld' failed, cannot open a connection to INET[localhost:3306] via TCP
這種情況一直發生,直到 Monit 決定不再按照配置跟踪 MySQL。
如何開始解決此問題?
sudo netstat -lnp | grep mysql
返回以下內容:tcp 0 0 173.230.135.241:3306 0.0.0.0:* LISTEN 14357/mysqld unix 2 [ ACC ] STREAM LISTENING 265228 14357/mysqld /var/run/mysqld/mysqld.sock
“mysqld”失敗,無法打開到 INET 的連接
$$ localhost:3306 $$通過 TCP
此錯誤表明 monit 正在嘗試連接到 localhost 上的埠 3306,即 IP 地址 127.0.0.1
tcp 0 0 173.230.135.241:3306 0.0.0.0:* 聽 14357/mysqld
此 netstat 輸出顯示 mysqld 正在偵聽提到的 IP 地址。它沒有在本地主機上監聽。
您要麼需要讓 mysqld 也監聽 localhost,要麼需要告訴 monit 檢查特定的 IP 地址,而不是預設為 localhost。