Скопированный файлы прямо с папки установки WAIK для менеджера по Изображению (C:\Program Files\Windows AIK\Tools\Image Manager по умолчанию) в папку установки SCVMM R2 (C:\Program Files\Microsoft System Center Virtual Machine Manager 2008 R2\bin по умолчанию).
Это получило er', работающий снова.
Как мне отложить повторную проверку 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
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.
Вы можете проверить конкретную услугу с интервалом, отличным от интервала по умолчанию ...
См. ВРЕМЯ ОПРОСА ОБСЛУЖИВАНИЯ в документации 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
Вы также можете проверить, если что-то не удалось для 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'
(отсюда)
.Член моей команды придумал довольно умное решение, которое позволяет 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"
Текущая версия 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».