Назад | Перейти на главную страницу

сервер monit mysql заблокирован из-за слишком большого количества плохих соединений

Есть ли какая-нибудь настройка для 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

редактировать (всего новый ответ)

Я немного погуглил об этой проблеме и нашел подсказку:

Кажется, что 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 сервер, я не могу сказать, действительно ли это решает проблему.

Попробуйте и скажите, каков результат.


Мои ссылки: