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
[править] Дополнительная информация
- Monit manual (англ.)
- monit configuration examples (англ.) примеры настройки monit