Monit

Материал из Xgu.ru

Перейти к: навигация, поиск

Давайте поставим смотрите пример

igor@sky:~$ ps aux | grep cron
root      3968  0.0  0.0   2204   892 ?        Ss   19:21   0:00 /usr/sbin/cron
igor      3971  0.0  0.0   3756   744 pts/4    R+   19:21   0:00 grep cron
igor@sky:~$ sudo kill 3968
igor@sky:~$ ps aux | grep cron
igor      3974  0.0  0.0   3752   744 pts/4    R+   19:22   0:00 grep cron
igor@sky:~$ ps aux | grep cron
root      3979  0.0  0.0   2208   892 ?        Ss   19:22   0:00 /usr/sbin/cron
igor      3981  0.0  0.0   3756   744 pts/4    R+   19:22   0:00 grep cron

Это я его поставил и натравил на cron Конфиги сейчас покажу


/etc/monit/monitrc

set daemon  10
set logfile syslog facility log_daemon 
check process cron with pidfile /var/run/crond.pid
  start program = "/etc/init.d/cron start"
  stop program  = "/etc/init.d/cron stop"

/etc/default/monit

startup=1
CHECK_INTERVALS=10


Если хотите можно экспериментировать на своей тачке или на экспериментальных доменах apt и vvidd лучше apt


И оно потом в логи пишет

Oct 11 19:20:56 sky monit[3954]: Monit started 
Oct 11 19:21:06 sky monit[3954]: Monit has not changed 
Oct 11 19:21:16 sky monit[3954]: 'cron' process is not running 
Oct 11 19:21:16 sky monit[3954]: 'cron' trying to restart 
Oct 11 19:21:16 sky monit[3954]: 'cron' start: /etc/init.d/cron 
Oct 11 19:21:26 sky monit[3954]: 'cron' process is running with pid 3968 
Oct 11 19:22:07 sky monit[3954]: 'cron' process is not running 
Oct 11 19:22:07 sky monit[3954]: 'cron' trying to restart 
Oct 11 19:22:07 sky monit[3954]: 'cron' start: /etc/init.d/cron 
Oct 11 19:22:17 sky monit[3954]: 'cron' process is running with pid 3979

[править] А если без monit?

Пока что, monit, к сожалению, не умеет выполнять произвольные проверки -- только те, которые в него заложены. Создатели monit обещают, что в будущих выпусках такая возможность появится, но пока её нет.

Для таких проверок может подойти простой cron.

Например, monit умеет обнаруживать зомби-процессы, но не более того -- он сообщает в журнал и успокаивается на этом. Если же нужно убить такой процесс и перезапустить его, придётся писать скрипт.

/usr/local/bin/monit-zombie

#!/bin/sh

DAEMON=apcupsd
SLEEP_INTERVAL=10

check_daemon()
{
ps ax | grep -v grep | grep -q $1.*defunct \
&& { kill -9 $(ps ax | grep -v grep| grep $1.*defunct|awk '{print $1}') ; /etc/init.d/$1 restart ; }
}

i=0
while [ $i -lt $((60/SLEEP_INTERVAL)) ]
do
check_daemon ${DAEMON}
sleep SLEEP_INTERVAL
i=$((i+1))
done

Этот скрипт мы вставляем в cron:

* * * * * root /usr/local/bin/monit-zombie

[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/Monit»