Heartbeats

Verifica que tus cronjobs, backups y scripts se ejecutan correctamente. Alertas automáticas si algo falla.

¿Qué es un heartbeat?

Un heartbeat es una señal HTTP que tu script envía a SecuryBlack cuando termina. Si esa señal no llega en el intervalo configurado, recibes una alerta inmediata.

Es ideal para monitorizar:

  • Backups programados
  • Cronjobs críticos
  • Scripts de mantenimiento
  • Trabajos batch
  • Tareas asincrónicas

¿Cómo funciona?

  1. 1.

    Creas un heartbeat en SecuryBlack

    Define el nombre, intervalo (cron expression) y acciones en caso de fallo

  2. 2.

    Recibes una URL única

    Algo como: https://ping.securyblack.com/hb/abc123xyz

  3. 3.

    Tu script la llama al terminar

    Añade una línea de curl al final de tu script: curl https://ping.securyblack.com/hb/abc123xyz

  4. 4.

    SecuryBlack verifica que el ping llega a tiempo

    Si no llega dentro del intervalo configurado, envía una alerta

Crear un heartbeat

  1. 1.

    Ve a la sección de Heartbeats

    En tu dashboard, busca "Heartbeats"

  2. 2.

    Haz clic en "Nuevo Heartbeat"

    Introduce un nombre descriptivo

  3. 3.

    Configura el intervalo

    Usando cron expressions o presets (cada hora, cada día, etc.)

  4. 4.

    Configura alertas

    Email, Discord, Telegram, Slack, etc.

  5. 5.

    Copia la URL

    Úsala en tu script

Cron Expressions

Configura cuándo esperas que tu script se ejecute usando expresiones cron estándar (UTC):

0 2 * * *

Cada día a las 2:00 AM UTC

0 */6 * * *

Cada 6 horas

0 0 * * 0

Cada domingo a las 00:00 UTC

Usa crontab.guru para generar tus expresiones cron.

Ejemplos de uso

Backup diario

Script bash que ejecuta un backup y notifica a SecuryBlack:

#!/bin/bash
# Backup script

# Tu lógica de backup aquí
mysqldump -u root -p mydb > /backups/mydb.sql

# Notificar a SecuryBlack que el backup completó
curl -s https://ping.securyblack.com/hb/abc123xyz

echo "Backup completado"

Script Python con manejo de errores

import subprocess
import requests

try:
    # Tu lógica aquí
    result = subprocess.run(['python', 'sync_data.py'], check=True)

    # Solo notificar si todo fue bien
    requests.get('https://ping.securyblack.com/hb/abc123xyz')

except Exception as e:
    print(f"Error: {e}")
    # No enviar ping si hay error
    # SecuryBlack detectará que no llegó el heartbeat

Opciones avanzadas

Grace period

Tiempo adicional después del intervalo esperado antes de enviar una alerta. Útil para scripts que ocasionalmente se retrasan.

Alertas solo después de N fallos

No envía alerta hasta que falte el heartbeat 2-3 veces consecutivas para evitar falsos positivos.

Historial de 90 días

Visualiza todos los heartbeats recibidos en los últimos 90 días para detectar patrones de fallos.

Rotar ping_key

Regenera la URL del heartbeat si crees que ha sido comprometida.

Mejores prácticas

  • Usa heartbeats para cronjobs críticos (backups, sincronizaciones, etc.)
  • Coloca el curl al FINAL del script, solo si todo salió bien
  • Usa cron expressions precisas que reflejen cuándo realmente esperas que se ejecute
  • Revisa el historial regularmente para detectar anomalías
  • No uses heartbeats para servicios 24/7 — usa uptime monitoring para eso