Мониторинг и рестарт процессов
Иногда случается, что какая-то софтина ведет себя непредсказуемо и периодически падает. А т.к. часто это бывает достаточно далеко и не всегда под рукой есть Интернет (да и не всегда можно на нужную машину достучаться снаружи), приходится изобретать велосипед. Можно городить какие-либо системы мониторинга а-ля 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.
7 thoughts on “Мониторинг и рестарт процессов”
Вместо скрипта будет более удобно на мой взгляд использовать утилиту monit. Которая имеет достаточно широкий функционал
А вобще хотелось выразить благодарность за представленную тут информацию
Честно говоря, на момент написания скрипта о подобных утилитах не знал, а искать особо не было времени, потому и собрал на коленке. Спасибо за подсказку :-))
У этой утилиты вменяемый свой собственный веб интерфейс
который в реальном времени покажет вам состояние машины и тех параметров с которых вы снимаете статистику
Тут немного разный уровень утилит. Для серьезного мониторинга используется zabbix, он умеет много чего делать, в том числе и рестартовать демоны, однако он достаточно громоздкий в плане ресурсов и ставить его нецелесообразно. В моем же случае был маленький офисный роутер без особых мощностей и потребностей, потому и утилита должна быть сама по себе небольшой.
monitord
«А т.к. часто это бывает «, «не всегда под рукой есть Интернет»
С чего это вы взяли?
=