LINUX.ORG.RU
решено ФорумAdmin

Универсальный watchdog для nginx ($service_name) своими силами

 , , ,


0

1

Недавно решал тестовое задание в одну небольшую компьютерную фирму, которая занимается админством сайтов среди прочих там было такое задание: Установить и настроить решение, которое запустит службу nginx в случае ее остановки, а также сообщит о случившемся инциденте на почту alice@example.com.

Поскольку в качестве основного рабочего дистрибутива использовалась CentOS 7, я просто загуглил и докостылял готовое решение из Сети — http://northernlightlabs.se/systemd.status.mail.on.unit.failure . Но теперь, по завершению тестовых задач (уже совесть позволит спросить хорошее решение), у меня возник вопрос, а существует ли универсальное решение хотя бы для энжикса без привязки дистрибутиву и системе инициализации? А в идеале хотелось бы получить таковое для любого системного демона.

★★★★★

Последнее исправление: Twissel (всего исправлений: 3)

А перезапуск как реализовал? Ты же понимаешь что Restart=always не подходит по условию, так как не перезапустит при остановке через systemctl?

disarmer ★★★
()
Ответ на: комментарий от deadNightTiger

Я посмотрю, что кроме него вроде как и нет больше легковесных систем мониторинга?

Twissel ★★★★★
() автор топика
Ответ на: комментарий от disarmer

что Restart=always не подходит по условию

Честно признаться, первый раз сделал через него с 5-ти секундным таймаутом.

А потом прочитал про WatchdogSec

Twissel ★★★★★
() автор топика

Самое простое это запускать не nginx, а «примерно» вот такой скрипт :)

start: nginx sendmail test@test.ru go to start:

lbim
()
Ответ на: комментарий от lbim

Вариант с monit мне нравится больше.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от disarmer

Плохо, что решения для себя не сохранил, т.к. посчитал его частным.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Я к тому, что в задании сформулировано неточно:

запустит службу nginx в случае ее остановки

подразумевает ли это штатную остановку? Ни WatchdogSec, ни Restart не перезапустит, в случае, если сделали systemctl stop nginx

disarmer ★★★
()

Нет. Самое универсальное это писать юниты для нескольких систем инициализации.

Deleted
()
Ответ на: комментарий от Twissel

The service must call sd_notify(3) regularly with «WATCHDOG=1» (i.e. the «keep-alive ping»).

Слушай, а ты уверен что в nginx есть поддержка ватчдога? В моём дистрибутиве nginx собран без поддержки systemd как минимум. Я не уверен что она есть где-то еще, судя по гуглу

disarmer ★★★
()
Ответ на: комментарий от disarmer

подразумевает ли это штатную остановку?

Маловероятно, т.к. задачу давала девочка-HR, навряд ли она копала так глубоко :-)

Twissel ★★★★★
() автор топика
Ответ на: комментарий от disarmer

Ну тогда только monit или что-то более глобальное. Не уверен. Но задача из жизни и хотелось ее красиво решить.

Twissel ★★★★★
() автор топика
Ответ на: Cron от zolden

А полностью?

Да и дергать через крон, к примеру каждые 30 секунд как-то некошерно.

Twissel ★★★★★
() автор топика
Ответ на: комментарий от Twissel

Кошерно или некошерно это вкусовщина, никакой нагрузки это не создаёт, при этом решение простое как гвоздь.
Полностью реализуется примерно так
* * * * pidof ngnix || (ngnix;mail blablabla)

zolden ★★★★★
()
Ответ на: комментарий от zolden

Если рассматривать формулировку тестового задания, то да, самое годное решение. Однако ТС задал вопрос уже после решения тестового задания и не только про nginx. Минус вашего решения, мне понадобилось опустить какой-то демон на какое-то время, что я сделал вручную, однако по крону он будет подниматься, не кошерно однако.
ЗЫ ngnix 2>&1 | mail blablabla имхо лучше

anc ★★★★★
()
Ответ на: комментарий от anc

Нуу да, на время переконфигураций/отладки придётся потратить 20 секунд на комментирование этой строчки в кроне.
Это просто очевидный, в общем-то, ньюанс решения.
Вообще, теоретически тут есть ещё один небольшой ньюанс - если демон по какой-то причине стартовал между проверкой pidof и запуском, то получим задвоение, поэтому, если проверки единственности инстанса нет в стартовом скрипте, то по-хорошему надо как-то подстраховаться

zolden ★★★★★
()
Ответ на: комментарий от zolden

Нуу да, на время переконфигураций/отладки придётся потратить 20 секунд на комментирование этой строчки в кроне.

Опять же условности, но, а если сервер будете админить не вы, а «личинка»?

«Личинка» будет 15-30 минут вкуривать, а что же на самом деле тут творится :-)

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от deadNightTiger

Топик не читай сразу отвечай?

anc ★★★★★
()
Ответ на: комментарий от zolden

Вообще, теоретически тут есть ещё один небольшой ньюанс - если демон по какой-то причине стартовал между проверкой pidof и запуском, то получим задвоение, поэтому, если проверки единственности инстанса нет в стартовом скрипте, то по-хорошему надо как-то подстраховаться

Очень верное дополнение. Шансы вполне не нулевые.

anc ★★★★★
()
Ответ на: комментарий от deadNightTiger

Установил, настроил monit, то, что доктор прописал. Видимо, что именно его имели ввиду собеседующие. Спасибо!

Штука классная.

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.