URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 55395
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Автоматический перезапуск служб во ..."

Отправлено auto_tips , 04-Июн-09 18:35 
В процессе установки ПО для FreeBSD "правильные" службы автоматически прописывают скрипт запуска
в /usr/local/etc/rc.d и управление его поведением определяется в /etc/rc.conf

Однако случается так что успешно запустившись при включении сервера, служба по ряду причин падает позже
в процессе работы (такое случается например c dovecot или squid). В результате чего как минимум
требуется перезапуск с последующим анализом причин поведения. Про анализ причин поведения отдельная песня,
а вот перезапускать в таких редких случаях ручками может получиться с изрядными задержками,
пока не выяснится, что что-то перестало работать.

На этот счет я практикую запуск через cron команды которая проверяет все сконфигурированные к запуску
скрипты /usr/local/etc/rc.d на предмет поддержки команды status и если эта команда возвращает
отрицательный результат (т.е. сервис не активен) то заново запускает его.

Итого в файле /var/cron/tabs/root значится строка

   */5 * * * * /usr/bin/find /usr/local/etc/rc.d/ -type file | xargs -I$ sh -c "($  2>&1 | grep -q -v status) \
      && exit ; ($ status > /dev/null) && exit ; $ start"

В итоге, если служба остановилась, она будет перезапущена в течении 5 минут, и на root придет сообщение
с логом запуска (если конечно почтовая подсистема настроена)


URL:
Обсуждается: http://www.opennet.me/tips/info/2086.shtml


Содержание

Сообщения в этом обсуждении
"Автоматический перезапуск служб во FreeBSD"
Отправлено metallic , 04-Июн-09 18:35 
Хорошая заметка, у меня пару раз postfix падал

"Автоматический перезапуск служб во FreeBSD"
Отправлено goshanecr , 04-Июн-09 19:27 
По-моему такой вариант не всегда подходит.. например squid бывает (редко) вылетает а стартовать потом отказывается потому что кэш надо починить squid -z, у меня просто в кроне каждую минуту скрипт вызывается который проверяет нужные службы и в случае если служба не работает, то перезапускает её с необходимыми доп. действиями. Так же например у clamav иногда какие-то косяки с базами случаются что их надо удалять и заново закачивать..

"Автоматический перезапуск служб во FreeBSD"
Отправлено ffsdmad , 09-Июн-09 07:22 
>По-моему такой вариант не всегда подходит.. например squid бывает (редко) вылетает а
>стартовать потом отказывается потому что кэш надо починить squid -z, у
>

странно у вас, люди спецом под кеш разделы выделают, накапливают его и лелеют, а вы всё время его сбрасываете, какой смысл тогда от прокси? тока ACL чтоли?


"Автоматический перезапуск служб во FreeBSD"
Отправлено Timka , 04-Июн-09 22:32 
это что же вы такое с ним делаете, что он падает? у меня он не падал с нагрузкой в 60М сообщений в сутки. На FreeBSD 6.3.

"Автоматический перезапуск служб во FreeBSD"
Отправлено ffsdmad , 09-Июн-09 07:18 
звучит как, он у меня не падал без нагрузки

"Автоматический перезапуск служб во FreeBSD"
Отправлено IceMan , 04-Июн-09 19:49 
monit спасет отцов русской демократии )

"Автоматический перезапуск служб во FreeBSD"
Отправлено iZEN , 04-Июн-09 20:05 
http://www.lissyara.su/?id=1268

"Автоматический перезапуск служб во FreeBSD"
Отправлено andrew222222222 , 04-Июн-09 22:37 
daemontools еще есть

"Автоматический перезапуск служб во FreeBSD"
Отправлено shixaro , 04-Июн-09 22:58 
а monit использовать не разумнее?

"Автоматический перезапуск служб во FreeBSD"
Отправлено Алексей Волков , 05-Июн-09 09:02 
Не имею ничего против monit или daemontools. Но хочу особо подчеркнуть, что по сути одна строчка в единственном файле призывает на службу достаточно неплохие штатные возможности для уменьшения рисков от простоя служб.

P.S. Всегда можно сочинииь ситуацию в которой не мпоможет ни мой скрипт, ни monit ни кто другой.


"Автоматический перезапуск служб во FreeBSD"
Отправлено hostmaster , 05-Июн-09 12:01 
Ваш скрипт в отличие от monit не учитывет вариант когда сервис по каким то причинам не стартует в принципе и будет флудить бессмысленными собщениями на почту.

"Автоматический перезапуск служб во FreeBSD"
Отправлено monitord , 05-Июн-09 12:57 
http://www.freshports.org/sysutils/monitord/

"This port allows one to monitor other standalone services and
automatically restart them if they are accidentally and unwittingly
terminated, or crash either because of instability or a DoS attack.
It simplifies a task capable of being performed by cron(8) by not
requiring custom scripts to be written for each service being
monitored. The configuration file is simple and easily setup."


"Автоматический перезапуск служб во FreeBSD"
Отправлено GR , 05-Июн-09 22:41 
Для FreeBSD'шников - не няшно - оно просит procfs ...

"Автоматический перезапуск служб во FreeBSD"
Отправлено ander , 06-Июн-09 15:21 
А что нельзя примаунтить ее?

"Автоматический перезапуск служб во FreeBSD"
Отправлено Аноним , 05-Июн-09 21:24 
ммм... вроде как в юниксах всегда демоны были, не службы? службы это из другой оперы

"Автоматический перезапуск служб во FreeBSD"
Отправлено Warhead Wardick , 05-Июн-09 22:37 
Алексей, а мне Ваш скрипт нравится. Я "малую механизацию" вообще уважаю :)

(Спокойно! Там где нужна "тяжелая", она и стоит.)

Для тех кому нужно "кэш в сквиде почистить перед стартом" рекомендую творчески подойти к самой последней части скрипта "$ start" ...

Тем кто боится что оно "закидет" бессмысленными email-ами ... Если уж вы чего то ради поставили бох на мониториг - в таком письме очень много смысла! И наводит на мысли о премии которая была так близка и еще есть пол часа чтобы ssh'нуться и еЯ спасти ... :)
Ну и _12_ писем в час для реального админа - это скорее ТИШИНА :)


"Автоматический перезапуск служб во FreeBSD"
Отправлено GR , 05-Июн-09 22:44 
>Алексей, а мне Ваш скрипт нравится. Я "малую механизацию" вообще уважаю :)

Хорошо показывает возможности "голой" системы, и они таки есть :)

BTW - в Solaris 10 очень неплохо SMF сделан, если ему отрезать его XML-ность, то пожалуй это будет то чего я хочу в следующей фряхе! :)


"Автоматический перезапуск служб во FreeBSD"
Отправлено User294 , 06-Июн-09 07:34 
> Ну и _12_ писем в час для реального админа - это скорее ТИШИНА :)

Как по мне - тупо флудить по поводу облома старта процесса 12 раз в час, но при этом зато класть болт на взвисы, потребление CPU и памяти - о каких, нафиг, премиях идет спич при таком подходе к мониторингу?Благородные доны никогда не встречали ситуации когда процесс как живой но по факту давно уже не отвечает или пошел вразнос загрузив проц или выжирая память?Нет, для мелкого скрипта это конечно забавно, но не более того.ИМХО.


"Автоматический перезапуск служб во FreeBSD"
Отправлено Pain , 08-Июн-09 07:16 
Для альтернативно одарённых было написано - что де там где "малой" механизацией не обойдешься - стоит и трудится "большая". Специально для усера294 - могу перевести на Русский упрощённый. Дважды. Да только не поможет  :)

"Автоматический перезапуск служб во FreeBSD"
Отправлено Дмитрий Ю. Карпов , 06-Июн-09 15:12 
Интереснее было бы сделать иначе:
* Собрать информацию о PID-файлах (они характеризуют запущенность демона).
* Повесить wait() на все демоны, которые оставили PID-файлы.
* При окончании одного из демонов в зависимости от кода его завершения принимать решение о перезапуске.

А ещё круче - опрашивать демонов на предмет отклика, и если не откликается - то убить и запустить заново. Опрос демона можно делать отдельной программой, специфичной для каждого протокола; а перезапускать как описано в первом абзаце.


"Автоматический перезапуск служб во FreeBSD"
Отправлено shixaro , 06-Июн-09 18:33 
кажется, Вам nagios нужен :)

"Автоматический перезапуск служб во FreeBSD"
Отправлено User294 , 06-Июн-09 23:34 
>А ещё круче - опрашивать демонов на предмет отклика, и если не
>откликается - то убить и запустить заново.

А вы пробовали по ссылкам народа из коментов походить?А то они дело говорят.Тот же monit и подобные насоветованные в коментах как раз примерно такое и делают... будучи небольшими такими утилитками с кучкой возможностей.

До кучи насчет скриптов есть вот какая мысль: если в системе уже задница, совсем не факт что новый процесс (как то периодический чекер по крону) вообще осилит запуститься.Например, прикиньте - память кончается?А вот возьмет и не хватит ее на старт нового процесса.И чего?В этом плане у мелкого демона-монитора имхо 5 очков форы вперед (он может память себе заранее выделить и будет продолжать работать даже в ситуации "наступила жопа").


"Автоматический перезапуск служб во FreeBSD"
Отправлено paranormal , 08-Июн-09 10:31 
Спасибо большое за идею. Вижу не только у меня на новых фрях с новыми сквидами такая проблема возникла... В 6-рках 2-х годичной давности такой проблемы нету... Хотя хз, если обновить то может и будет :(.

"Автоматический перезапуск служб во FreeBSD"
Отправлено Аноним , 08-Июн-09 11:08 
она будет перезапущена в течениЕ 5 минут

В течениИ реки, но в течениЕ времени.


"Автоматический перезапуск служб во FreeBSD"
Отправлено TomB , 08-Июн-09 13:48 
Наверное кто-нибудь использует в подобных случаях отправку смс-ок от сервера, как это вообще делается?
Мой оператор мегафон не хочет рассказывать, звонил им в саппорт.

"Автоматический перезапуск служб во FreeBSD"
Отправлено shixaro , 09-Июн-09 13:07 
sms via email. Подключается услуга, и достаточно просто отправить письмо на number@sms.ugsm.пумпурум

"Автоматический перезапуск служб во FreeBSD"
Отправлено AdVv , 09-Июн-09 18:33 
Либо смастерить smsgate из старенького мобильника. На эту тему была статейка кажется на лисяре. Нашел не поленился http://www.lissyara.su/?id=1787

"Автоматический перезапуск служб во FreeBSD"
Отправлено hhg , 09-Июн-09 21:11 
можно посмотреть алгоритмы в Coyote SMS. По крайней алгоритм работы билайновской проги отправки sms - именно из Койота вычитал.

http://www.cwer.ru/

http://forum.altlinux.org/index.php/topic,299.0.html


"Автоматический перезапуск служб во FreeBSD"
Отправлено Дмитрий , 02-Июл-15 13:23 
Syntax error: word unexpected

"Автоматический перезапуск служб во FreeBSD"
Отправлено Дмитрий , 02-Июл-15 13:24 
Собственно скрип не отрабатывает и бросает ошибку