Ter alguns dispositivos em um local remoto pode ser bem útil. Você pode monitorar coisas longe de casa, configurar diferentes pontos de VPN, coletar dados, uma quantidade enorme de possibilidades. Mas existe um problema: o que acontece se o dispositivo travar e não houver ninguém por perto para fazer troubleshooting ou reiniciar?

É aí que os watchdog timers entram em cena! O watchdog é um pequeno componente eletrônico que, combinado com software, pode ser usado para monitorar e limitar o tempo de execução de programas. E, quando utilizado corretamente, permite detectar quando algo está com mau funcionamento ou travado, e então se recuperar automaticamente.

Essa técnica já foi amplamente utilizada em diversas aplicações. Por exemplo, watchdog timers foram fundamentais para ajudar a recuperar o rover de Marte há alguns anos.

Então, neste artigo, vamos configurar o watchdog para monitorar um dispositivo Raspberry Pi que está a milhares de quilômetros de distância e forçar um reboot quando uma falha for detectada. Legal, né? Vamos lá!

Índice

Ativando o hardware do Watchdog no Pi

Todos os dispositivos Raspberry Pi vêm com um Watchdog Timer, mas ele geralmente não é utilizado ou configurado por padrão. Para iniciar a ativação, vamos primeiro editar o seguinte arquivo:

sudo nano /boot/firmware/config.txt

e adicionar as linhas abaixo ao final do arquivo

# Watchdog - On/Off
dtparam=watchdog=on

Depois disso, reinicie seu Raspberry Pi e vamos testar se o Watchdog foi detectado.

Instalando o software do Watchdog

Vamos verificar se os dispositivos estão ativos e disponíveis para uso:

ls -al /dev/watchdog*

Você deve ver dois dispositivos:

$ ls -al /dev/watchdog*
crw------- 1 root root  10, 130 Mar 17 11:42 /dev/watchdog
crw------- 1 root root 248,   0 Mar 17 11:42 /dev/watchdog0
$

Você vai perceber que, mesmo o Raspberry Pi tendo apenas 1 watchdog de hardware, aparecem dois dispositivos. Isso acontece por causa de como essa funcionalidade é implementada no Linux:

Watchdog (Hardware): Geralmente é o driver de watchdog de hardware (bcm2835_wdt no RPi), que faz interface direta com o SoC BCM2835 para reiniciar o sistema se ele travar. Watchdog0 (Software/Systemd): Muitas vezes é um watchdog baseado em software, às vezes gerenciado pelo systemd ou pelo daemon watchdog, usado para monitorar carga do sistema ou rede, em vez de travamentos completos.

Beleza, agora vamos instalar o software necessário:

sudo apt install watchdog

Depois que a instalação terminar, alguns serviços serão adicionados ao seu systemd.

$ ls -l /lib/systemd/system/ | grep -e 'watch' -e 'wd'
-rw-r--r-- 1 root root  834 Sep  3  2025 systemd-hwdb-update.service
-rw-r--r-- 1 root root  498 Apr 24  2020 watchdog.service
-rw-r--r-- 1 root root  593 Apr 24  2020 wd_keepalive.service

Vamos configurar!

Para juntar tudo, vamos editar o arquivo de configuração do watchdog:

sudo nano /etc/watchdog.conf

e descomentar as seguintes linhas:

max-load-1 = 24
min-memory = 4096
watchdog-timeout = 15
watchdog-device = /dev/watchdog
log-dir = /var/log/watchdog

Abaixo, uma explicação rápida de cada configuração: max-load-1 = 24 monitora a média de carga de 1 minuto. Se a carga passar de 24, o watchdog entende que o sistema está sobrecarregado ou travado.

min-memory = 4096 monitora a quantidade mínima de RAM livre (em páginas). Se a memória disponível cair abaixo do limite, o watchdog é acionado.

watchdog-timeout = 15 monitora se o sistema operacional ou o daemon watchdog congelar por 15 segundos.

Iniciando e habilitando no boot

Para iniciar o watchdog:

sudo systemctl status watchdog

E para iniciar automaticamente no boot, edite este arquivo:

sudo nano /lib/systemd/system/watchdog.service

Verifique se esse bloco existe:

[Install]
WantedBy=multi-user.target

E depois habilite o watchdog:

sudo systemctl enable watchdog

Pronto!