Назад | Перейти на главную страницу

Мониторинг разовой услуги

У нас нет какого-либо подходящего решения для мониторинга серверов (ситуацию, которую я хотел бы исправить этим летом), но у меня есть одна служба, которую я хотел бы отслеживать. [Наша текущая система мониторинга, ожидающая звонка клиентов с проблемой, хорошо работает для широко используемых систем, но это не влияет на такое количество людей, как, скажем, DHCP.]

Я использую сервер All The Right Type 3 на (вздох) коробке с OS X 10.3 (Panther) [потому что он не запускается автоматически на чем-то более новом, и наш специалист по закупкам программного обеспечения действительно не хочет получать обновленное программное обеспечение.] Клиентское программное обеспечение отлично работает на студенческих машинах под OS X 10.5 (Leopard).

Теперь мне время от времени звонят, что этот сервер не работает [а сама машина все еще работает!], И я действительно предпочитаю знать, прежде чем кто-то поднимет трубку. Процесс называется "atrtserv.osx". Хотя он действительно использует сеть, я был бы удивлен, если бы в документации к нему говорилось о том, как отправить сообщение, чтобы узнать, работает ли служба, что-то грубое, например, проверять каждые пять минут, что процесс существует.

Есть ли простой способ контролировать одну службу, особенно. на Mac?

Что ж, настоящий простой способ, вероятно, выглядит так:

pgrep atrtserv.osx >/dev/null || (
    date |
    mail -s 'atrtserv.osx down on yourmachine.foo' yourSMSphonenumber@yourtelco.com
)

в задании cron, выполняемом с выбранным вами интервалом.

Я не гарантирую, что этот код работает правильно (особенно строка, начинающаяся с «RUNNING =», но замените какой-нибудь собственный тест, который может возвращать строку, если она выполняется, и никакой строки, если это не так.

#!/bin/bash  

while true ; do 
RUNNING=`ps aux | grep atrtserv | grep -v grep`
if [ -n "$RUNNING" ] ; then
    echo "atrtserv.osx is broken" | mail -s "atrtserv down" whoever@whatever.com
    sleep 300
else 
    sleep 300
    fi
done

редактировать Используйте pgrep выше вместо моего хака

Попробуйте monit от darwinports.

Вы можете написать небольшой скрипт, который запускает ps, и cron запускает его каждые 5 минут.

mail затем отправит вам письмо, если обнаружит, что что-то не так.

Полное время реализации, думаю, составит 15 минут.