Разрабатывая ответ на этот вопрос, я столкнулся с проблемой при тестировании этого набора правил MySQL Monit на установке Ubuntu 12.04.5:
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group mysql
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306
with timeout 15 seconds
then restart
if 5 restarts within 5 cycles
then timeout
alert email_address@example.com only on { timeout, nonexist }
Проблема в том, что я пытался вызвать элементы start/stop через /etc/init.d/
который является скорее системной конструкцией CentOS/RedHat, вместо того, чтобы использовать /usr/sbin/service
которая больше подходит для Ubuntu/ Система Debian.
Хорошо, мой плохой ... Но проблема в том, что вы видите, что if 5 restarts within 5 cycles then timeout
часть времени ожидания ? Кажется, это сильно меня задело. Поскольку команда /etc/init.d/mysql start
не работала, система предприняла 5 попыток перезапуска, 5 раз потерпела неудачу и в результате тайм-аут. И условие тайм-аута, кажется, приводит к тому, что набор правил службы MySQL игнорируется моим Monit.
Я несколько раз перезапускал службу Monit и даже перенастроил набор правил, чтобы посмотреть, помогает ли он, но, похоже, ничего из этого не влияет.
Что я могу сделать, чтобы Monit обратил внимание на наборы правил, которые он «не контролировал» из-за соблюдения условий тайм-аута?