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!