Найти в Дзене

Настраиваем watchdog в debian на перезагрузку по ping

Есть старенький, слабенький сервер. С него практически все перенесено на другие. Но пока он оставлен работать как SMB сервер с дисками и данными, которые не хотелось бы переносить на другие сервера, но и отказаться совсем от них нельзя. Последние пару недель сервер стал периодически зависать. По сети до него не достучаться. Перезагружать приходится через кнопку на самом сервере. Есть предположение, что дело в ОЗУ. Месяца 3-4 назад я заменил одну из плашек, т.к. симптомы были похожие и после 2-3 дней тестов удалось отловить момент сбоя именно по одному конкретному слоту памяти.
Да, на тот момент в запасе была одна плашка ОЗУ. Сейчас же запасной ОЗУ нет. Извлечь только сбойную вариант сомнительный. Общий объем и так небольшой, а сбои происходят редко. Ко всему прочему есть подозрение, что дело не только в ОЗУ, но и в чем-то еще аппаратном. Т.к. периодически даже перезагрузка не помогала возобновить работу ethernet интерфейса. Приходилось обесточивать, ждать пару минут и после пытаться за
Оглавление

Маленькая предыстория

Есть старенький, слабенький сервер. С него практически все перенесено на другие. Но пока он оставлен работать как SMB сервер с дисками и данными, которые не хотелось бы переносить на другие сервера, но и отказаться совсем от них нельзя.

Последние пару недель сервер стал периодически зависать. По сети до него не достучаться. Перезагружать приходится через кнопку на самом сервере.

Есть предположение, что дело в ОЗУ. Месяца 3-4 назад я заменил одну из плашек, т.к. симптомы были похожие и после 2-3 дней тестов удалось отловить момент сбоя именно по одному конкретному слоту памяти.
Да, на тот момент в запасе была одна плашка ОЗУ.

Сейчас же запасной ОЗУ нет. Извлечь только сбойную вариант сомнительный. Общий объем и так небольшой, а сбои происходят редко.

Ко всему прочему есть подозрение, что дело не только в ОЗУ, но и в чем-то еще аппаратном. Т.к. периодически даже перезагрузка не помогала возобновить работу ethernet интерфейса. Приходилось обесточивать, ждать пару минут и после пытаться запустить.

В общем старичку и так скоро на покой, потому решил попытаться решить проблему костылем в виде watchdog с перезагрузкой по ping.

Хотя, конечно, продолжать работать с неисправной ОЗУ плохая идея.
Как появится свободное время все же постараюсь найти сбойную и исключить из сборки.

А пока приступаем к настройке

Проверим есть ли в системе watchdog:

ls -l /dev/watchdog*
crw------- 1 root root 10, 130 ноя 24 15:35 /dev/watchdog
crw------- 1 root root 248, 0 ноя 24 15:35 /dev/watchdog0

Проверим установлен и запущен ли сервис:

sudo systemctl status watchdog

Если "Unit watchdog.service could not be found.", то устанавливаем:

sudo apt install watchdog

Редактируем файл конфигурации /etc/watchdog.conf по своему вкусу

sudo nano /etc/watchdog.conf

Я прописал следующий конфиг:

watchdog-device = /dev/watchdog
ping = 192.168.5.1 # ip моего роутера
interface = enp1s0 # ethernet-интерфейс, через который подключен к роутеру
ping-count = 5 # (по умолчанию 3) попыток получения ответа, увеличил просто для надежности
interval = 20 # (по умолчанию 10) сбрасываем watchdog каждые 20 секунд
# примерно через (ping-count+1)*interval, т.е. две минуты произойдет перезагрузка сервера

Включаем и запускаем

sudo systemctl enable watchdog
sudo systemctl start watchdog

При сбое сети в логе появится:

...watchdog[1853]: network is unreachable (target: 192.168.5.1 # ip моего роутера)

На шестое событие сервер перезагрузится.

Проверить, что сервис запущен можно командой: sudo systemctl status watchdog

● watchdog.service - watchdog daemon
Loaded: loaded (/lib/systemd/system/watchdog.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2024-11-24 16:49:11 +07; 3min 25s ago
Main PID: 2412 (watchdog)
Tasks: 1 (limit: 4674)
Memory: 876.0K
CGroup: /system.slice/watchdog.service
└─2412 /usr/sbin/watchdog
ноя 24 16:49:11 aeserver watchdog[2412]: interface: enp1s0 # ethernet-интерфейс, через который подключен к роутеру
ноя 24 16:49:11 aeserver watchdog[2412]: temperature: no sensors to check
ноя 24 16:49:11 aeserver watchdog[2412]: no test binary files
ноя 24 16:49:11 aeserver watchdog[2412]: no repair binary files
ноя 24 16:49:11 aeserver watchdog[2412]: error retry time-out = 60 seconds
ноя 24 16:49:11 aeserver watchdog[2412]: repair attempts = 1
ноя 24 16:49:11 aeserver watchdog[2412]: alive=/dev/watchdog heartbeat=[none] to=root no_act=no force=no
ноя 24 16:49:11 aeserver watchdog[2412]: watchdog now set to 60 seconds
ноя 24 16:49:11 aeserver watchdog[2412]: hardware watchdog identity: iTCO_wdt
ноя 24 16:49:11 aeserver systemd[1]: Started watchdog daemon.

Если хочется добавит еще какое-то условие или изменить поведение, то man watchdog в помощь)

А у меня на этом все.