Заставьте monit ожидать дольше прежде, чем думать, что что-то мертво

Скопированный файлы прямо с папки установки WAIK для менеджера по Изображению (C:\Program Files\Windows AIK\Tools\Image Manager по умолчанию) в папку установки SCVMM R2 (C:\Program Files\Microsoft System Center Virtual Machine Manager 2008 R2\bin по умолчанию).

Это получило er', работающий снова.

20
задан 27 May 2012 в 05:56
5 ответов

Как мне отложить повторную проверку Monit только для этого процесса?


То, что вы пытаетесь достичь, можно сделать через функцию « ВРЕМЯ ОПРОСА СЕРВИСА » в monit

В документации Monit сказано, что

Службы проверяются через регулярные промежутки времени, указанные в операторе

set daemon n

. Проверки выполняются в том же порядке, в котором они написаны in the .monitrc file, except if dependencies are setup between services, in which case the services hierarchy may alternate the order of the checks.

One of the method to customize service poll is

  1. custom interval based on poll cycle length multiple

EVERY [number] CYCLES

Example:

check process resque with pidfile /your/app/root/tmp/pid/resque.pid
   every 2 cycles

Or should I solve this in another way?


I also did initial attempt to monitor resque jobs with monit because monit is a very lightweight daemon but eventually settled with GOD. I know , I know GOD is more resource hungry in comparison to monit but in case of resque we found it to be a good match.

10
ответ дан 2 December 2019 в 20:09

Вы можете проверить конкретную услугу с интервалом, отличным от интервала по умолчанию ...

См. ВРЕМЯ ОПРОСА ОБСЛУЖИВАНИЯ в документации Monit.

Пример для ваша программа Resque должна проверять другое количество циклов:

check process resque with pidfile /var/run/resque.pid
   every 5 cycles

или из раздела примеров:

Some servers are slow starters, like for example Java based Application Servers. 
So if we want to keep the poll-cycle low (i.e. < 60 seconds) but allow some services to take its time to start, 
the every statement is handy:

 check process dynamo with pidfile /etc/dynamo.pid every 2 cycles
       start program = "/etc/init.d/dynamo start"
       stop program  = "/etc/init.d/dynamo stop"
       if failed port 8840 then alert

, либо вы можете использовать проверки в стиле cron.

check process resque with pidfile /var/run/resque.pid
   every 10 * * * *

или если у вас медленный запуск, вы можно продлить время ожидания в команде запуска службы:

check process apache with pidfile /var/run/httpd.pid
       start program = "/etc/init.d/httpd start" with timeout 90 seconds
19
ответ дан 2 December 2019 в 20:09

Вы также можете проверить, если что-то не удалось для X раз подряд:

 if failed 
    port 80 
    for 10 cycles 
 then alert

или для X раз в Y опросах:

 if failed 
    port 80
    for 3 times within 5 cycles 
 then alert

или оба:

 check filesystem rootfs with path /dev/hda1
  if space usage > 80% for 5 times within 15 cycles then alert
  if space usage > 90% for 5 cycles then exec '/try/to/free/the/space'

(отсюда)

.
9
ответ дан 2 December 2019 в 20:09

Член моей команды придумал довольно умное решение, которое позволяет monit проверять часто (каждую минуту) , но после попытки перезапустить службу (что занимает ~ 10 минут) будет ждать указанный период отсрочки перед повторной попыткой запуска.

Это предотвращает слишком долгое ожидание между проверками, которое в сочетании с медленным запуском оказывает гораздо большее влияние на клиентов. Он работает с использованием промежуточного сценария, который действует как флаг, указывающий, что monit уже предпринимает действия после последнего сбоя.

check host bamboo with address bamboo.mysite.com
   if failed
           port 443 type tcpSSL protocol http
           and status = 200
           and request /about.action
            for 3 cycles
   then exec "/bin/bash -c 'ps -ef | grep -v "$$" | grep -v "grep" | grep restartBamboo.sh >/dev/null 2>&1; if [ $? -ne 0 ]; then /opt/monit/scripts/restartBamboo.sh; fi'"

Если bamboo (медленное запускаемое веб-приложение) не работает в течение 3 минут подряд, перезапустите, НО только если перезапуск скрипт еще не запущен.

Вызываемый скрипт имеет указанный спящий режим, который ждет ДЛИННЕ, чем самое медленное время запуска службы (в нашем случае мы ожидаем завершения через ~ 10, поэтому мы спим 15)

#!/bin/bash
echo "Retarting bambo by calling init.d"
/etc/init.d/bamboo stop
echo "Stopped completed, calling start"
/etc/init.d/bamboo start
echo "Done restarting bamboo, but it will run in background for sometime before available so, we are sleeping for 15 minutes"
sleep 900
echo "done sleeping"
2
ответ дан 2 December 2019 в 20:09

Текущая версия Monit (5.16) поддерживает тайм-аут для сценариев запуска с синтаксисом:

 <START | STOP | RESTART> [PROGRAM] = "program"
    [[AS] UID <number | string>]
    [[AS] GID <number | string>]
    [[WITH] TIMEOUT <number> SECOND(S)]

Документы состояние:

В случае проверки процесса Monit будет ждать до 30 секунд завершения действия запуска / остановки, прежде чем сдаться и сообщить об ошибке. Вы можете изменить этот тайм-аут с помощью опции TIMEOUT.

Это то, что будет делать значение «timeout».

2
ответ дан 2 December 2019 в 20:09

Теги

Похожие вопросы