Heartbeat (Push)
O monitor Heartbeat inverte a lógica de monitoramento: em vez do TheAlert verificar seu serviço periodicamente, é o seu serviço que envia um ping para o TheAlert. Se o ping não chegar dentro do intervalo esperado, o monitor vai para DOWN.
Quando usar Heartbeat
Use o Heartbeat quando você precisa monitorar processos que não têm uma interface HTTP acessível externamente, como:
- Cron jobs e tarefas agendadas
- Workers de processamento de filas (Sidekiq, BullMQ, Celery, etc.)
- Scripts de backup automático
- Processos de sincronização de dados
- Tarefas de manutenção noturna
- Qualquer processo que deve rodar periodicamente
O Heartbeat é ideal para detectar quando um cron job parou de rodar — uma das falhas mais silenciosas e difíceis de detectar em sistemas de produção.
Como funciona
Seu serviço → POST /push/SEU-TOKEN → TheAlert registra ping
Se nenhum ping chegar em (intervalo × 1.5): monitor vai para DOWN- Você cria um monitor do tipo PUSH no TheAlert
- Recebe uma URL de token única para este monitor
- Seu serviço faz um
POSTpara essa URL ao final de cada execução - O TheAlert aguarda o próximo ping dentro do período
intervalo × 1.5 - Se o ping não chegar → DOWN e alerta disparado
Exemplo de tempo limite
| Intervalo configurado | Tempo máximo para próximo ping |
|---|---|
| 1 minuto | 1,5 minutos |
| 5 minutos | 7,5 minutos |
| 1 hora | 1,5 horas |
| 24 horas | 36 horas |
Configuração
Crie o monitor
No TheAlert: Novo Monitor → Tipo: Heartbeat (Push) → configure o nome e o intervalo esperado entre os pings.
Copie o token URL
Após salvar, o TheAlert exibe a URL de push única:
https://api.thealert.io/push/SEU-TOKEN-AQUIAdicione ao seu serviço
Integre o envio do ping ao final da execução do seu processo.
Exemplos de integração
Linux Cron (bash)
# Verificar disponibilidade a cada minuto
* * * * * /usr/bin/curl -s -X POST https://api.thealert.io/push/SEU-TOKEN
# Backup diário às 3h — faz backup e avisa o TheAlert
0 3 * * * /scripts/backup.sh && curl -s -X POST https://api.thealert.io/push/SEU-TOKENNo segundo exemplo, o ping só é enviado se o backup suceder (&&). Se o backup falhar, o ping não é enviado e o TheAlert detecta a ausência. Este é o comportamento correto — você quer ser alertado quando o backup falhar.
Node.js
// Worker que roda a cada minuto
const HEARTBEAT_URL = 'https://api.thealert.io/push/SEU-TOKEN'
async function runJob() {
try {
// ... lógica do seu worker
await processQueue()
// Envia ping de sucesso
await fetch(HEARTBEAT_URL, { method: 'POST' })
} catch (err) {
console.error('Job falhou:', err)
// NÃO envia ping — TheAlert vai detectar a ausência
}
}
setInterval(runJob, 60_000)Python
import requests
import time
HEARTBEAT_URL = 'https://api.thealert.io/push/SEU-TOKEN'
while True:
try:
# ... lógica do seu worker
process_queue()
# Envia ping de sucesso
requests.post(HEARTBEAT_URL, timeout=5)
except Exception as e:
print(f'Job falhou: {e}')
# NÃO envia ping — TheAlert vai detectar a ausência
time.sleep(60)PHP
<?php
// Executa tarefa
$success = runMyTask();
if ($success) {
// Envia ping apenas em caso de sucesso
file_get_contents(
'https://api.thealert.io/push/SEU-TOKEN',
false,
stream_context_create([
'http' => ['method' => 'POST', 'ignore_errors' => true]
])
);
}Systemd Timer (Linux)
Se você usa systemd timers em vez de cron:
# /etc/systemd/system/meu-job.service
[Unit]
Description=Meu Job Periódico
[Service]
Type=oneshot
ExecStart=/scripts/meu-job.sh
ExecStartPost=/usr/bin/curl -s -X POST https://api.thealert.io/push/SEU-TOKENGitHub Actions
jobs:
backup:
runs-on: ubuntu-latest
steps:
- name: Executar backup
run: ./scripts/backup.sh
- name: Notificar TheAlert
if: success()
run: curl -s -X POST https://api.thealert.io/push/SEU-TOKENResposta da API
A URL de push retorna sempre:
{ "ok": true }Você pode ignorar a resposta ou verificar o status HTTP (200 = recebido).
Rate limit
O endpoint de push aceita no máximo 10 requisições por minuto por token. Para crons que rodam com frequência maior, considere aumentar o intervalo configurado no monitor.
Casos de uso avançados
Monitorar que backup não falhou silenciosamente
#!/bin/bash
# backup.sh
pg_dump producao > /backups/db-$(date +%Y%m%d).sql
if [ $? -eq 0 ]; then
curl -s -X POST https://api.thealert.io/push/SEU-TOKEN
echo "Backup concluído com sucesso"
else
echo "ERRO: Backup falhou!"
exit 1
fiMonitorar worker de fila
Se seu worker de fila parar de processar (sem falhar explicitamente), o ping para de chegar e o TheAlert alerta após intervalo × 1.5.
Monitorar sincronização de dados
Processos de ETL ou sincronização com APIs externas que devem rodar periodicamente.