Мониторинг и рестарт процессов

Иногда случается, что какая-то софтина ведет себя непредсказуемо и периодически падает. А т.к. часто это бывает достаточно далеко и не всегда под рукой есть Интернет (да и не всегда можно на нужную машину достучаться снаружи), приходится изобретать велосипед. Можно городить какие-либо системы мониторинга а-ля Zabbix, например, но он достаточно громоздкий и смысл в нем не всегда есть, особенно на маленьких халтурках типа офисного гейтвея у небольшой конторы. Есть у меня несколько таких гейтвеев, на одном из них периодически падает squid по непонятной причине. Для того, чтоб не дергать его ручками, был написан следующий скрипт /root/scripts/check_squid.sh:

#!/bin/sh

# Переменные

# Строка, которая должна присутствовать в имени процесса
process="usr/local/sbin/squid"

# Строка, которая должна оттствовать в имени процесса
process_exclude="grep"

# Количество процессов, при котором надо делать рестарт
process_number="0"

# Команда для перезапуска
restart_string="/usr/local/etc/rc.d/squid restart"

# Путь к ps
ps="/bin/ps"

# Путь к grep
grep="/usr/bin/grep"

if [ `$ps -ax | $grep $process | $grep -v $process_exclude | wc -l` -le "$process_number" ]
then
 echo $process is down, restarted!
 $restart_string
fi

Как видно, все достаточно просто, если количество процессов меньше или равно $process_number, выполняется $restart_string и выводится сообщение, которое позже придет к нам с ежедневным письмом-отчетом. Если с количеством процессов все хорошо, скрипт просто завершает свою работу. Для выполнения скрипта раз в 5 минут добавим в /etc/crontab строчку:

*/5     *       *       *       *       root    /root/scripts/check_squid.sh

Вот и все, от себя добавлю, что этим способом можно мониторить и передергивать любые процессы, не только squid.

Вам также может понравиться

Об авторе jared

6 комментариев

  1. Вместо скрипта будет более удобно на мой взгляд использовать утилиту monit. Которая имеет достаточно широкий функционал
    А вобще хотелось выразить благодарность за представленную тут информацию

  2. Честно говоря, на момент написания скрипта о подобных утилитах не знал, а искать особо не было времени, потому и собрал на коленке. Спасибо за подсказку :-))

  3. У этой утилиты вменяемый свой собственный веб интерфейс
    который в реальном времени покажет вам состояние машины и тех параметров с которых вы снимаете статистику

  4. Тут немного разный уровень утилит. Для серьезного мониторинга используется zabbix, он умеет много чего делать, в том числе и рестартовать демоны, однако он достаточно громоздкий в плане ресурсов и ставить его нецелесообразно. В моем же случае был маленький офисный роутер без особых мощностей и потребностей, потому и утилита должна быть сама по себе небольшой.

  5. «А т.к. часто это бывает «, «не всегда под рукой есть Интернет»
    С чего это вы взяли?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *