7

Разрабатывая ответ на этот вопрос, я столкнулся с проблемой при тестировании этого набора правил 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 обратил внимание на наборы правил, которые он «не контролировал» из-за соблюдения условий тайм-аута?

2 ответа2

4

После некоторых копаний выясняется, что Monit хранит данные мониторинга системы в файле состояния. И этот файл «состояния» отслеживает, какие службы отслеживаются / не отслеживаются.

Так что, хотя это немного «грубая сила», это определенно работает. Если служба становится «не отслеживаемой» из-за истечения времени ожидания, просто удалите файл состояния Monit из системы следующим образом:

sudo rm /var/lib/monit/state

А потом перезапустите Monit вот так и все должно быть хорошо:

sudo service monit restart

FWIW, в других системах / настройках файл «состояния» Monit может быть сохранен как state или monit.state или даже .monit.state (с точкой / точкой . Предшествующей этому) в другом каталоге. Обязательно определите, где именно этот файл «состояния» сохраняется, когда вы действительно пытаетесь реализовать это исправление.

1

Monit включает команды для включения и отключения мониторинга всех или определенных сервисов.

Если служба перестала отслеживаться, вы можете снова включить мониторинг, например, с помощью monit monitor mysql или monit monitor all .

Обратите внимание, что для работы этих команд необходимо включить HTTP-интерфейс Monit.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .