Настройка watchdog для перезапуска сервисов на VPS

ГлавнаяНастройка watchdog для перезапуска сервисов на VPS

Содержание

Однажды у меня завис nginx на VPS в момент, когда я уехала на два дня. Почту с алертом я не прочитала, а сайт лежал. С тех пор у меня на сервере всегда включён watchdog — тот самый “сторожевой таймер”, который не даст сервису молча упасть. В этой статье расскажу, как я настроила watchdog на своём VPS, чтобы автоматически перезапускать важные сервисы вроде nginx, MySQL, или любого другого демона.


Что такое watchdog?

Watchdog — это системный инструмент, который следит за состоянием системы или процессов. Если они не отвечают, он может перезапустить конкретный сервис или даже перезагрузить всю машину. На уровне ядра работает watchdog timer, который отсчитывает время: если за определённый период не пришёл «сигнал жизни», он сработает.

Используется для:

  • мониторинга состояния сервисов,
  • автоматического перезапуска зависших процессов,
  • предотвращения полной заморозки сервера,
  • поддержки критически важных приложений.

Установка watchdog в Linux

На большинстве VPS (будь то Ubuntu, Debian или CentOS) установка происходит через пакетный менеджер.

Для Ubuntu/Debian:

sudo apt update sudo apt install watchdog

Для CentOS/AlmaLinux/Rocky:

sudo yum install watchdog

После установки не забудьте включить и добавить в автозагрузку:

sudo systemctl enable watchdog sudo systemctl start watchdog

Конфигурация watchdog

Файл конфигурации обычно лежит здесь:

/etc/watchdog.conf

Типичный пример минимальной конфигурации:

watchdog-device = /dev/watchdog max-load-1 = 24 interval = 10 realtime = yes priority = 1 file = /tmp/testfile change = 1407

Что тут важно:

  • watchdog-device
    — устройство, которое используется для мониторинга.
  • max-load-1
    — максимальная загрузка системы (load average), при превышении которой будет инициирован рестарт.
  • file
    и
    change
    — проверка на изменение файла (например, лог-файла), если не изменяется — считаем, что сервис завис.

Перезапуск конкретного сервиса

Вместо перезагрузки всей системы можно настроить watchdog так, чтобы он перезапускал конкретный сервис. Для этого лучше использовать скрипты или встроенный systemd + cron.

Пример проверки и перезапуска nginx:
Добавьте в crontab:

*/2 * * * * systemctl is-active nginx || systemctl restart nginx

Но можно и через watchdog использовать пользовательский скрипт. Для этого добавьте в

/etc/watchdog.conf
:

test-binary = /usr/local/bin/check-nginx.sh

А в

check-nginx.sh
:

#!/bin/bash if ! systemctl is-active --quiet nginx; then systemctl restart nginx fi

Не забудьте:

chmod +x /usr/local/bin/check-nginx.sh

Продвинутая проверка: ping, tcp, memory

В конфиге можно использовать и другие параметры:

ping = 8.8.8.8 ping-count = 2 tcp = 127.0.0.1:80 memory = 2048
  • ping
    — если сервер не может достучаться до внешнего IP, считается, что есть проблемы с сетью.
  • tcp
    — проверка доступности порта (например, HTTP).
  • memory
    — если свободной памяти меньше указанной, сервер будет перезагружен.

Что важно помнить

  • Watchdog — мощный инструмент. Если его неправильно настроить, можно случайно устроить перезагрузки по кругу.
  • Всегда тестируйте конфигурацию в изолированной среде.
  • Следите за логами:
    journalctl -u watchdog
    и
    /var/log/syslog

Получается, что…

После настройки watchdog я наконец-то перестала бояться, что сервис упадёт в самый неподходящий момент. Особенно если уехать куда-нибудь без интернета. Этот инструмент — отличный помощник для любого администратора VPS, который хочет автоматизировать восстановление и уменьшить простои. Обязательно попробуйте — он лёгкий, надёжный и незаменимый.