2012-05-18 3 views
5

Как мне запустить диспетчер daemontools?Как контролировать веб-сервер с помощью daemontools?

Я начал использовать daemontools D. J. Bernsteins, чтобы некоторые процессы работали и работают нормально. Но теперь мне нужно отслеживать несколько дополнительных условий для этих процессов, и мне не удалось найти хорошую информацию о том, как это сделать.

Мой сценарий заключается в том, что у меня есть некоторые процессы, выполняемые для веб-приложения (виртуальные машины pharo smalltalk), и они отвечают на http, каждый в своем порту (это для балансировки нагрузки). Я хотел бы как-то проверить их, чтобы убедиться, что они не только работают, но и реагируют на HTTP-запросы. Если они не отвечают определенным образом на запрос более 30 лет, их следует рассматривать как разбитые и просто перезапускать.

Возможно ли это с помощью daemontools? если да, как я должен писать этот скрипт и где его разместить? или где это документация?

ответ

6

Самое простое решение - создать еще одну задачу daemontool со сценарием, который засыпает на 30 секунд, а затем проверяет наличие службы (например, с помощью wget или curl). Если служба не отвечает своевременно, вы можете перезапустить службу (svc -t yourapp) и/или отправить уведомление. Выполнения сценария нового сервиса может выглядеть так просто, как это:

#!/bin/sh 
sleep 30 
if ! wget --quiet --timeout=5 --delete-after "http://yourapp.com/" ; then 
    svc -t /etc/service/yourapp 
fi 

Я также сделал хороший опыт работы с инструментами, как Munin. Снова вам нужно предоставить сценарий, который предоставляет информацию о состоянии вашего изображения. Если вы настроите свои изображения с помощью службы REST, вы можете даже представить действительно интересные показатели, такие как активные сеансы, неактивный сеанс, параметры gc, потребление памяти, статистику базы данных ... Инструмент затем привлекает красивые графики с течением времени и позволяет указать границы для получать уведомления, когда что-то ведет себя плохо.

+0

Thanx. но нет ли способа сделать это в самом супервизоре? – pauel

+0

Да, см. Первый абзац моего ответа. –

+0

Да, я понял. просто я думал, что супервайзер, который запускает демона, может это сделать. В любом случае ваше решение очень помогает мне. Большое спасибо – pauel

3

Чтобы обнаружить, если служба реагирует, вы можете использовать завиток (идеально подходит для HTTP и командной строки/сценарии оболочки)

curl --connect-timeout 10 http://8.8.8.8 
curl: (28) connect() timed out! 

и вы можете написать более сложные вещи, как проверка, что ответ 200 (OK) и т. д.