The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Автоматический перезапуск служб во FreeBSD
В процессе установки ПО для 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 придет сообщение
с логом запуска (если конечно почтовая подсистема настроена)
 
04.06.2009 , Автор: Алексей Волков
Ключи: freebsd, cron, monitoring, service / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / FreeBSD специфика / Установка и апгрейд FreeBSD и приложений.

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, metallic (?), 18:35, 04/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошая заметка, у меня пару раз postfix падал
     
     
  • 2.2, goshanecr (??), 19:27, 04/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    По-моему такой вариант не всегда подходит.. например squid бывает (редко) вылетает а стартовать потом отказывается потому что кэш надо починить squid -z, у меня просто в кроне каждую минуту скрипт вызывается который проверяет нужные службы и в случае если служба не работает, то перезапускает её с необходимыми доп. действиями. Так же например у clamav иногда какие-то косяки с базами случаются что их надо удалять и заново закачивать..
     
     
  • 3.26, ffsdmad (?), 07:22, 09/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >По-моему такой вариант не всегда подходит.. например squid бывает (редко) вылетает а
    >стартовать потом отказывается потому что кэш надо починить squid -z, у
    >

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

     
  • 2.5, Timka (??), 22:32, 04/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    это что же вы такое с ним делаете, что он падает? у меня он не падал с нагрузкой в 60М сообщений в сутки. На FreeBSD 6.3.
     
     
  • 3.25, ffsdmad (?), 07:18, 09/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    звучит как, он у меня не падал без нагрузки
     

  • 1.3, IceMan (?), 19:49, 04/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    monit спасет отцов русской демократии )
     
  • 1.4, iZEN (ok), 20:05, 04/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    http://www.lissyara.su/?id=1268
     
  • 1.6, andrew222222222 (?), 22:37, 04/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    daemontools еще есть
     
  • 1.7, shixaro (?), 22:58, 04/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а monit использовать не разумнее?
     
  • 1.8, Алексей Волков (?), 09:02, 05/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не имею ничего против monit или daemontools. Но хочу особо подчеркнуть, что по сути одна строчка в единственном файле призывает на службу достаточно неплохие штатные возможности для уменьшения рисков от простоя служб.

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

     
     
  • 2.9, hostmaster (??), 12:01, 05/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Ваш скрипт в отличие от monit не учитывет вариант когда сервис по каким то причинам не стартует в принципе и будет флудить бессмысленными собщениями на почту.
     

  • 1.10, monitord (?), 12:57, 05/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    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."

     
     
  • 2.13, GR (??), 22:41, 05/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для FreeBSD'шников - не няшно - оно просит procfs ...
     
     
  • 3.18, ander (??), 15:21, 06/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    А что нельзя примаунтить ее?
     

  • 1.11, Аноним (-), 21:24, 05/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ммм... вроде как в юниксах всегда демоны были, не службы? службы это из другой оперы
     
  • 1.12, Warhead Wardick (?), 22:37, 05/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Алексей, а мне Ваш скрипт нравится. Я "малую механизацию" вообще уважаю :)

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

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

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

     
     
  • 2.14, GR (??), 22:44, 05/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Алексей, а мне Ваш скрипт нравится. Я "малую механизацию" вообще уважаю :)

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

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

     
  • 2.15, User294 (ok), 07:34, 06/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну и _12_ писем в час для реального админа - это скорее ТИШИНА :)

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

     
     
  • 3.21, Pain (??), 07:16, 08/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Для альтернативно одарённых было написано - что де там где "малой" механизацией не обойдешься - стоит и трудится "большая". Специально для усера294 - могу перевести на Русский упрощённый. Дважды. Да только не поможет  :)
     

  • 1.17, Дмитрий Ю. Карпов (?), 15:12, 06/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интереснее было бы сделать иначе:
    * Собрать информацию о PID-файлах (они характеризуют запущенность демона).
    * Повесить wait() на все демоны, которые оставили PID-файлы.
    * При окончании одного из демонов в зависимости от кода его завершения принимать решение о перезапуске.

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

     
     
  • 2.19, shixaro (?), 18:33, 06/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    кажется, Вам nagios нужен :)
     
  • 2.20, User294 (ok), 23:34, 06/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >А ещё круче - опрашивать демонов на предмет отклика, и если не
    >откликается - то убить и запустить заново.

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

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

     

  • 1.22, paranormal (?), 10:31, 08/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо большое за идею. Вижу не только у меня на новых фрях с новыми сквидами такая проблема возникла... В 6-рках 2-х годичной давности такой проблемы нету... Хотя хз, если обновить то может и будет :(.
     
  • 1.23, Аноним (-), 11:08, 08/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    она будет перезапущена в течениЕ 5 минут

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

     
  • 1.24, TomB (?), 13:48, 08/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наверное кто-нибудь использует в подобных случаях отправку смс-ок от сервера, как это вообще делается?
    Мой оператор мегафон не хочет рассказывать, звонил им в саппорт.
     
     
  • 2.27, shixaro (?), 13:07, 09/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    sms via email. Подключается услуга, и достаточно просто отправить письмо на number@sms.ugsm.пумпурум
     
     
  • 3.28, AdVv (ok), 18:33, 09/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Либо смастерить smsgate из старенького мобильника. На эту тему была статейка кажется на лисяре. Нашел не поленился http://www.lissyara.su/?id=1787
     
  • 2.29, hhg (ok), 21:11, 09/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    можно посмотреть алгоритмы в Coyote SMS. По крайней алгоритм работы билайновской проги отправки sms - именно из Койота вычитал.

    http://www.cwer.ru/

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

     

  • 1.32, Дмитрий (??), 13:23, 02/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Syntax error: word unexpected
     
  • 1.33, Дмитрий (??), 13:24, 02/07/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Собственно скрип не отрабатывает и бросает ошибку
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру