Watchdog (rádio no ar sempre)
O watchdog é o robô que garante que nenhuma rádio fique fora do ar sem ninguém perceber. Ele roda a cada minuto e cobre o ponto cego que o próprio AzuraCast não resolve sozinho.
O ponto cego que ele cobre
Section titled “O ponto cego que ele cobre”O AzuraCast já é resiliente: se um processo morre, o supervisor dele reinicia. Mas existe um caso que escapa — o processo continua vivo, porém a rádio parou de tocar ou saiu do ar (Liquidsoap travado, Icecast sem fonte, faixa corrompida emperrando a fila). Nesse caso o processo não “morreu”, então nada reinicia. O watchdog fecha exatamente esse buraco: ele olha o resultado (a rádio está tocando?), não o processo.
Como ele decide
Section titled “Como ele decide”A cada minuto, para cada rádio:
- Consulta o “tocando agora” (
/api/nowplaying). - Se a rádio está offline, ele confirma em 2 ciclos (~2 min de espera) antes de agir — evita reagir a um soluço momentâneo.
- Confirmado, dá um restart na rádio (backend + frontend).
- Respeita um intervalo de 10 min entre reinícios da mesma rádio (cooldown).
- Se um locutor estiver ao vivo, ele não interrompe.
- Se, após 3 tentativas em 1 hora, a rádio não voltar, ele para de reiniciar e passa a só alertar — sinal de que precisa de olho humano.
Os avisos no WhatsApp
Section titled “Os avisos no WhatsApp”Ele fala com o grupo (via Ari), em tom de cliente, sem jargão técnico:
- ⚠️ “A [rádio] teve uma instabilidade e já foi reiniciada automaticamente — deve voltar ao ar em alguns segundos.”
- ✅ “A [rádio] voltou ao ar e está tocando normalmente.”
- 🔴 “A [rádio] está com uma instabilidade persistente e não voltou sozinha após várias tentativas. Já estamos verificando.”
O que isso significa na prática
Section titled “O que isso significa na prática”- Rádio que cai e volta em 1–2 min = o watchdog trabalhando. Não é problema.
- Só o alerta 🔴 vermelho (não voltou após várias tentativas) pede ação humana.
- O diagnóstico de base mostrou as rádios estáveis — o watchdog é a rede de segurança pra quando algo foge do normal.
Onde ele mora
Section titled “Onde ele mora”Roda como um cron a cada minuto no servidor, guarda um pequeno estado (pra contar os ciclos e cooldowns) e escreve um log. Os textos, limites (2 ciclos, 10 min, 3 tentativas) e o destino do alerta são configuráveis. Manutenção: PSYCO.