Pular para o conteúdo

Monitor heartbeat

Avisa quando uma tarefa agendada deixa de rodar, a partir do sinal que a própria tarefa envia.

Atualizado em

Neste artigo

Os outros monitores vão até o seu serviço. O heartbeat faz o contrário: a sua tarefa (um backup, uma rotina do cron, um processo em lote) chama um endereço exclusivo do Notifex ao terminar. Se o sinal não chega no prazo, a tarefa parou, travou ou falhou.

Criar o monitor#

  1. Em Monitores, clique em Novo monitor e escolha Heartbeat.
  2. Preencha Nome.
  3. Na seção Sinal, preencha Período (segundos) e Carência (segundos).
  4. Em Alertas, escolha para onde vão os avisos.
  5. Clique em Criar monitor. O app abre o detalhe do monitor, com o endereço que a tarefa deve chamar.
CampoO que é
Período (segundos)O intervalo esperado entre os sinais, de 30 segundos a 30 dias. Padrão: 300 (5 minutos).
Carência (segundos)Um tempo extra antes de considerar o sinal perdido, de 0 a 86400 (1 dia). Padrão: 60.

Abaixo de cada campo, o formulário mostra o valor por extenso ("Equivale a 1 dia."). Para uma tarefa diária, use 86400 no período e uma carência que cubra a variação de duração da tarefa. No detalhe do monitor, a carência aparece como Tolerância.

O heartbeat não tem Intervalo, Tempo limite nem Confirmações.

O prazo#

Cada sinal recebido marca um novo prazo: o momento do sinal mais o período mais a carência. Com período de 1 dia e carência de 1 hora, um sinal recebido às 3h de hoje vale até as 4h de amanhã.

  • Se o próximo sinal chega antes do prazo, o monitor continua no ar e o prazo recomeça.
  • Se o prazo passa sem sinal, a checagem falha com Heartbeat não recebido e o incidente abre na hora.
  • Enquanto o sinal não volta, o Notifex registra uma nova falha a cada período.
  • O próximo sinal que chegar resolve o incidente e o monitor volta a no ar.

Atenção

O heartbeat não usa confirmação: o primeiro prazo perdido já abre o incidente e dispara o alerta. Escolha a carência pensando nisso.

O estado pendente#

O monitor fica pendente até o primeiro sinal chegar. Enquanto isso não há prazo correndo e nenhum incidente é aberto, por mais tempo que passe. O detalhe mostra O monitor fica pendente até o primeiro ping chegar.

Nota

Um heartbeat que nunca recebeu sinal não avisa nada. Depois de configurar a tarefa, confira no detalhe se o Último ping deixou de mostrar "nenhum ping recebido ainda" e passou a mostrar há quanto tempo o sinal chegou (por exemplo, "agora" ou "há 4 min").

O endereço de ping#

Cada monitor heartbeat tem o seu próprio endereço, no formato https://api-public.notifex.com.br/heartbeat/<seu-token>. Ele aparece no detalhe do monitor, na seção Sinal (heartbeat).

  1. Abra o detalhe do monitor.
  2. Em Endereço de ping, clique em Copiar.
  3. Configure a tarefa para chamar esse endereço ao fim de cada execução.

O endereço aceita GET, POST e HEAD. O corpo de um POST é ignorado. Um endereço que não existe (de um monitor excluído, por exemplo) responde com o status 404.

Atenção

Quem tem o endereço consegue enviar o sinal: trate-o como uma senha. Só quem pode editar monitores vê o endereço no app; para as demais pessoas da equipe ele aparece como "oculto".

Exemplos com curl#

O próprio detalhe traz o Exemplo com curl, pronto para copiar:

Terminal
curl -fsS -m 10 --retry 3 https://api-public.notifex.com.br/heartbeat/<seu-token>

-fsS faz o curl ficar quieto, mas falhar e mostrar o erro se a resposta não for de sucesso; -m 10 limita a chamada a 10 segundos; --retry 3 tenta de novo até 3 vezes.

Numa linha do cron, depois do comando da tarefa:

Terminal
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 -o /dev/null https://api-public.notifex.com.br/heartbeat/<seu-token>

O -o /dev/null descarta o corpo da resposta: sem ele, o cron pode mandar esse corpo por e-mail a cada execução, se a máquina tiver um servidor de e-mail local. O && faz o sinal sair só quando a tarefa termina sem erro: se o backup falhar, o sinal não chega e o Notifex avisa.

Num script, como último passo:

Terminal
#!/usr/bin/env bash
set -euo pipefail

/usr/local/bin/gerar-relatorio.sh
/usr/local/bin/enviar-relatorio.sh

curl -fsS -m 10 --retry 3 https://api-public.notifex.com.br/heartbeat/<seu-token>

Com set -e, o script para no primeiro comando que falhar e a chamada final não acontece.

Pausar e editar#

  • Com o monitor pausado, os sinais continuam sendo aceitos, mas não são registrados.
  • Ao retomar um monitor que já recebeu sinal, o prazo conta a partir da retomada. Se ele nunca recebeu sinal, continua pendente.
  • Num monitor que já recebeu sinal, mudar o período ou a carência recomeça o prazo a partir da alteração. O endereço de ping não muda ao editar.

O mesmo endereço aceita até 60 chamadas por minuto vindas do mesmo IP.

Não encontrou o que procurava?

Escreva para a gente pelo formulário de contato do site.

Falar com o Notifex