Мониторинг: задержка следующего цикла мониторинга после того, как будет выполнено условие проверки обслуживания.

Когда мой сервер подвергается высокой нагрузке, кажется, что изящный перезапуск Apache возвращает ситуацию под контроль. Итак, я настроил monit со следующей конфигурацией:

set daemon 10
check system localhost
      if loadavg (1min) > 5 then exec "/etc/init.d/apache2 graceful"

Итак, каждые 10 секунд я опрашиваю загрузку сервера, и когда она превышает 5, я корректно перезапускаю Apache. Однако это временно увеличивает нагрузку, поэтому мы попадаем в смертельную спираль. Я хочу, чтобы через 10 секунд он заметил, что нагрузка составляет 5 или более, и корректно перезапустил Apache, а затем подождал примерно 5 минут, прежде чем снова проверить эту конкретную метрику.

Есть ли способ сделать это с помощью monit?


person Ben Dilts    schedule 23.05.2011    source источник


Ответы (2)


Это не совсем в пределах Монита, но это достаточно близко

set daemon 10
check system localhost
  if loadavg (1min) > 5 then unmonitor
  if loadavg (1min) > 5 then exec "/etc/init.d/apache2 graceful"
  if loadavg (1min) > 5 then exec "python /scripts/remonitor.py"

Затем у вас есть скрипт python, например:

import time, os

time.sleep(5*60)
os.system("monit monitor system")

Таким образом, это будет:
1. отключать мониторинг "системы", когда она достигает слишком большой нагрузки, чтобы предотвратить смертельную спираль
2. изящно перезапустить apache
3. запустить скрипт, который будет повторно отслеживать "систему" через 5 минут

person rfadams    schedule 13.06.2012

Что о

set daemon 10

set limits { programtimeout: 300 seconds }

check system localhost
   if loadavg (1min) > 5 then exec "/bin/sh -c '/etc/init.d/apache2 graceful && sleep 5m'"

или даже

set daemon 10

check system localhost
   start program = "/bin/sh -c '/etc/init.d/apache2 graceful && sleep 5m'" with timeout 330 seconds
   if loadavg (1min) > 5 then start

То есть просто добавьте команду оболочки sleep 5m после команды перезапуска Apache и добавьте соответствующий тайм-аут в файл monitrc.

person Alex Che    schedule 21.01.2020