Monit 检测不到 MySQL,但我可以

Mat*_*chu 6 mysql linux monitoring monit

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
Run Code Online (Sandbox Code Playgroud)

我的应用程序配置为通过 localhost:3306 连接到 MySQL,运行良好并且可以访问数据库。我什至可以使用 MySQL Query Browser 通过端口 3306 远程连接到数据库。该端口是完全开放的,可以连接。因此,我非常确定它正在运行。

但是,运行monit -v显示 Monit 无法在该端口上检测到 MySQL。

'mysqld' failed, cannot open a connection to INET[localhost:3306] via TCP
Run Code Online (Sandbox Code Playgroud)

这种情况一直发生,直到 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
Run Code Online (Sandbox Code Playgroud)

Dan*_*son 4

“mysqld”失败,无法通过 TCP 打开与 INET[localhost:3306] 的连接

此错误表明 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。