Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> monitord

monitord - программа мониторинга работы сервисов

Автор: lissyara.


    Понадобилось обеспечить надёжность работы сервисов - автоматически рестартовать, если упадут. Порывшись в портах, нашёл программу - monitord. Вроде оно. Ставим:
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='monitord'
Port:   monitord-0.4.1_2
Path:   /usr/ports/sysutils/monitord
Info:   Service that restarts other standalone services
Maint:  ports@FreeBSD.org
B-deps:
R-deps:
WWW:

/usr/ports/>cd /usr/ports/sysutils/monitord
/usr/ports/sysutils/monitord/>make && make install && make clean

После установки создаём конфиг, такого содержания:
/usr/local/etc/monitord.conf
# Конфигурационный файл Monitord

# Вы должны задать ваш адрес электронной почты и имя почтового сервера для
# испoльзования при отсылке почты. Это буде использоваться там, где вы
# используете опцию "alert".

# Мыло, на которое будут слаться уведомления
email = admin@lissyara.su
# Адрес почтового сервера (localhost, если на нём есть MTA, либо иной)
smtp-server = localhost

# Когда задаёте опции, убедитесь, что они разделены запятыми, и НЕ имеют
# каких=бы то ни было пробелов.
#
# юзер  опции           задержка сервис         скрпит запуска  параметры
# user  options         delay   service         start script    parameters

root  auto,alert  10    inetd           /usr/sbin/inetd                 -wW
root  auto,alert  10    syslogd         /usr/sbin/syslogd               -s
root  auto,alert  10    cron            /usr/sbin/cron
root  auto,alert  20    httpd           /usr/local/etc/rc.d/apache.sh   start
#root auto,alert  20    mysqld          /usr/local/etc/rc.d/mysql-server.sh start
root  auto,alert  10    sshd            /usr/sbin/sshd
root  auto,alert  30    snmpd           /usr/local/etc/rc.d/snmpd.sh    start

# Возможные опции:
# auto - указывает, что сервис будет автоматически перезапущен, если обранужено
#       что он не работает. Также, это дефолтовая опция, когда не указано ничего
#       (ни auto, ни noauto)
# noauto  - указывает, что сервис не будет автоматически перезапущен, если
#       не работает
# alert - указывает, что если сервис падает, администратор автоматически
#       уведомляется по электронной почте, как задано в первой части
#       конфигурационного файла. Также, когда сервис перезапущен, эта
#       опция вызывает уведомление администратора о успешном перезапуске.

   Вместе с программой не идёт скрипт запуска, поэтому пишем свой, такого содержания:
/usr/local/etc/rc.d/monitor.sh
#!/bin/sh
#

case "$1" in
start)
        /usr/local/sbin/monitord > /dev/null 2>&1
        echo ' monitord started...'
        ;;
stop)
        if [ `ps axc | grep monitord | awk '{print $1}' \
        | tail -1` -ge 0 ] > /dev/null 2>&1
        then
        kill `ps axc | grep monitord | awk '{print $1}'`
        echo ' monitord stopped...'
        else
        echo ' monitord not running!'
        fi
        ;;
restart)
        if [ `ps axc | grep monitord | awk '{print $1}' \
        |  tail -1` -ge 0 ] > /dev/null 2>&1
        then
        kill `ps axc | grep monitord | awk '{print $1}'`
        echo ' monitord stopped...'
        sleep 1
        /usr/local/sbin/monitord > /dev/null 2>&1
        echo ' monitord started...'
        else
        echo ' monitord not running!'
        fi
        ;;
*)
        echo "Usage: `basename $0` {start|stop|restart}" >&2
        exit 64
        ;;
esac

exit 0

   После чего выставляем на него права:
/usr/home/lissyara/>chmod 700 /usr/local/etc/rc.d/monitor.sh
/usr/home/lissyara/>chown root:wheel /usr/local/etc/rc.d/monitor.sh
/usr/home/lissyara/>

   Ну и можно запускать:
/usr/home/lissyara/>/usr/local/etc/rc.d/monitor.sh start
 monitord started...
/usr/home/lissyara/>

   Пробуем убить перечисленные сервисы:
/usr/home/lissyara/>killall inetd; killall cron; killall httpd; \
? killall snmpd

/usr/home/lissyara/>tail -f /var/log/messages
Oct 17 10:09:24 ns2 monitord: restarted "inetd" using "/usr/sbin/inetd -wW"
Oct 17 10:09:24 ns2 monitord: restarted "cron" using "/usr/sbin/cron "
Oct 17 10:09:25 ns2 monitord: restarted "snmpd" using "/usr/local/etc/rc.d/snmpd.sh start"
Oct 17 10:09:26 ns2 monitord: restarted "httpd" using "/usr/local/etc/rc.d/apache.sh start"

   Всё успешно рестартовалось. Ну, думаю, вполне понятно, почему я не убивал sshd и syslogd - по первому я сидел, а вот без второго не было бы логов в журнале. Также поясню, почему закомментирована строка про mysqld, в конфиге - mysql-server, нынче, идёт со своим скриптом, который присматривает за работой сервера, и в случае необходимости его перезапускает. Поэтому следить за ним не надо. Впрочем, никто не мешает раскомментить и эту строку - но таймаут побольше поставьте, чтоб родному скрипту не мешать.
   P.S. Прога не работает под 6.1 - я её тестил, под 4.11 - на шохе она пытается перезапустить все указанные в конфиге процессы, видимо, изменились функции отвечающие за получение списка работающих процессов... Жаль, но - больше половины серваков у меня на 4.11 - поэтому не так страшно. На шестёрку чё-нить другое найдётся.
   P.S.2 Комменты рулят - и правду надо добавить procfs и пашет даже под 6.2. Написал патч для порта, с цвильным стартовым скриптом, с примечанием, что надо procfs добавлять, послал знакомому комиттеру. Может включат. Если кому надо - http://lissyara.su/patch/sysutils.monitord.diff
   UPD. 2009-07-22: стартовый скрипт включили в порты. Так что - можно просто заинсталлить и юзать =)



размещено: 2006-10-17,
последнее обновление: 2007-06-07,
автор: lissyara


KaMa-CyTpA, 2006-11-11 в 12:53:43

пересобрал МИР и ядро.
> uname -a
FreeBSD squid.tcs.ru 7.0-CURRENT FreeBSD 7.0-CURRENT #5: Sat Nov 11 10:35:27 MSK 2006     root@localhost:/usr/src/sys/i386/compile/GENERIC  i386

Но вот это монитор работает.
Спасибо ещё раз огромное!

Bidjo, 2007-03-17 в 4:46:04

Странно, вроде не глупый ты человек, но утверждать что мониторд не работает под шестой фрей?... Просто смонтируй proc в fstab - типа того:
procfs  /proc   procfs rw 0 0
После этого и на второй половине серваков будет тебе счастье :)
P.S. Отличный сайт.

JOSTER Team, 2007-12-31 в 3:41:14

Спасибки за статью !)) То что я искал !))

Scrat, 2008-02-13 в 14:44:08

Спасибо за статью - очень помогла.
Сейчас на 6.2 и 7.0 из портов встало без проблем и патчей

Lexa, 2008-02-13 в 17:00:54

Вопросик- при загрузке монитор загружается первым, а потом, пытается загрузится скрипт сендмеила, но не может, полскольку он уже запуститля монитором. Как сделать чтоб монитор запускался в последнюю очередь?

skeletor, 2008-05-29 в 12:38:13

Lexa Прописать его последним в /etc/rc.conf

Dog, 2008-05-29 в 12:45:10

2skeletor: простите, вы глупость пишете.
2Lexa: man rc, man rcorder.

ProFTP, 2008-06-14 в 4:20:12

сомби идет! :)

ProFTP, 2008-06-14 в 4:20:27

после запуска

PokerFlat, 2009-12-12 в 14:29:50

На 6.4 поставил с портов, начинает все рестартовать (((

Dog, 2009-12-12 в 18:55:00

2 PokerFlat: Чтобы monitord нормально работал, надо монтировать procfs. Или кроме статьи почитать man и readme религия не позволяет?

Winston Smith, 2010-03-31 в 10:51:24

Время от времени падал havp - решил заюзать monitord. Не получилось. Как я понял если есть главный демон следящий и запускающий дополнительные экземпляры, то monitord на каждый экземпляр ругается и пытается перезапустить сервис. То есть он для "одноголовых сервисов" Либо я чё не понял - либо так и есть. Заюзал в итоге monit - он в отличие от данного проекта смотри на pid-файл и прекрасно при этом работает.

yaroha, 2011-05-31 в 19:18:00

Спасибо!Тоже намучался с Racoon!Щас все ОК!



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1523 секунд
Из них PHP: 53%; SQL: 47%; Число SQL-запросов: 77 шт.
Исходный размер: 24581; Сжатая: 7001