Простой скрипт Watchdog

Приведу пример простого скрипта для перезапуска сервисов если они не запущены и отправки уведомления на email:

#!/bin/bash
SERVICES="ssh apache2 zabbix-server zabbix-agent mysql smbd nmbd asterisk"
DATE=$(date '+%d-%m-%Y %H:%M:%S')

for SERVICE in ${SERVICES}
 do
   service $SERVICE status 2>&1>/dev/null
    if [ $? -ne 0 ];
      then
        service $SERVICE stop
        sleep 3
        service $SERVICE start
        echo -e "Starting $SERVICE"
        (echo "Subject:Restarting $SERVICE"; echo "$DATE $SERVICE is not running on $HOSTNAME! Restarting!";) | sendmail test@ixnfo.com
      else
        echo -e "$SERVICE OK"
    fi
done

В скрипте укажем email на который хотите получать уведомления, а в «SERVICES» список сервисов через пробел, которые необходимо проверять.
Я сделал сначала остановку сервиса, чтоб наверняка остановить все возможные процессы, паузу 3 секунды и потом запуск, потому как при команде restart некоторые высоконагруженные сервисы могли не корректно запускаться и висеть со статусом «active (exited)».

Чтобы скрипт автоматически выполнялся например каждые 10 минут, добавим строку в /etc/crontab:

*/10 * * * * root /dir/watchdog.sh > /dev/null 2>&1

Смотрите также мои статьи:
Установка и настройка Postfix
Использование и настройка CRON
Установка и настройка Monit

Оставьте комментарий

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