是否有任何针对 monit 的调整或其他方法来监视一台服务器是否可以访问另一台服务器上的 mysql?
我尝试使用 monit,但您可能知道,尝试 10 次后,mysql 会阻止服务器。
check host db1.server with address db1.server
if failed port 3306 protocol mysql then alert
。
mysqli: host <host> is blocked because of many connection errors; unblock with mysqladmin flush-hosts
答案1
编辑(全新答案)
我对这个问题进行了一些 Google 搜索,并找到了一些线索:
似乎MySql
不太喜欢的时候:
- 未经身份验证在端口 3306 上建立连接
- 打开套接字后,在未进行任何 SQL 握手的情况下将其断开
因此,解决方法可能是执行真正的MySql
连接并运行查询。
这是一种方法。您需要mysql-client
在监控服务器上安装并在 MySql 服务器上授予正确的访问权限。
Monit
检查设置:
check program mysql with path "/root/mysql_check.sh"
if status != 0 then alert
脚本mysql_check.sh
:
#!/bin/sh
mysql -u<user> -p<password> --host=xx.xx.xx.xx <<END
SHOW VARIABLES LIKE "%version%";
END
脚本mysql_check.sh
对于自定义检查也应该有效Nagios
。
我已经成功测试了这一点(意味着可以远程运行查询),但是就我无法blocked host
在我的服务器上重现该问题而言MySql 5.5
,我无法判断这是否真的解决了该问题。
尝试一下并告诉我结果如何。
我的参考文献: