Использование Monit для мониторинга и автоматического перезапуска службы MySQL
Если вам нужно установить Monit на Ubuntu или Debian, то следуйте этой статье. Для других операционных систем установка и настройка может отличаться.
Использование Monit для мониторинга + автоматический перезапуск службы MySQL
Прежде всего, Monit нужна выбрать как мы будем проверять, работает ли MySQL.
В этой статье мы будем использовать сокет MariaDB или MySQL и его pid-файл, но это не единственный способ.
Поиск сокета MySQL Unix или TCP
MySQL может слушать как сокеты unix, так и сокеты TCP. Чтобы узнать это, используйте этой команды
grep "socket" /etc/mysql/my.cnf
Если вы получили в ответ:
listen = /var/run/mysqld/mysqld.sock
то MySQL использует unix-сокеты
Нам также понадобится найти pid MySQL. Его можно найти следующей командой:
sudo find /run -iname mysql*.pid
Вы должны увидеть что-то похожее на такой вывод:
/run/mysqld/mysqld.pid
Таким образом мы собрали всю информацию, необходимую для настройки Monit для мониторинга MySQL.
Настройка Monit для мониторинга MySQL, MariaDB, Percona
Создайте конфигурационный файл Monit MySQL, вы можете использовать папку conf-enabled вместо conf.d для проверки /etc/monit/monitrc.
sudo nano /etc/monit/conf.d/mysql
Эта конфигурация Monit MySQL предназначена для сокетов unix.
Он проверит файл mysqld.pid и если он не существует Monit попытается перезапустить его.
Monit также проверит сокет MySQL: /var/run/mysqld/mysqld.sock
check process mysql with pidfile /run/mysqld/mysqld.pid
start program = "/usr/sbin/service mysql start" with timeout 60 seconds
stop program = "/usr/sbin/service mysql stop"
if failed unixsocket /var/run/mysqld/mysqld.sock then restart
Проверьте, что конфигурация Monit имеет допустимый синтаксис
sudo monit -t
Вы должны увидеть это сообщение, указывающее, что синтаксис Monit в порядке.
Control file syntax OK
Затем перезагрузите Monit, чтобы активировать конфигурацию
sudo service monit reload
Вы можете проверить свой статус MySQL Monit на порте 2812 или какой-либо другом порте, на который вы указали Monit.
Теперь ваш MySQL-сервис будет автоматически перезагружен, если он когда-либо зависнет или упадёт.