Skip to content

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 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.

A cada minuto, para cada rádio:

  1. Consulta o “tocando agora” (/api/nowplaying).
  2. 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.
  3. Confirmado, dá um restart na rádio (backend + frontend).
  4. Respeita um intervalo de 10 min entre reinícios da mesma rádio (cooldown).
  5. Se um locutor estiver ao vivo, ele não interrompe.
  6. 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.

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.”
  • 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.

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.