Ir al contenido
use-cases / heartbeat-for-silent-jobs / hero
CRON · NOTIFICACIONES · ALARMA-DE-SILENCIO

Un latido para los trabajos silenciosos

La mayoría de la monitorización vigila lo que ocurrió. Tú necesitabas algo que vigilara lo que no ocurrió. Dos entradas de cron — una late, otra escucha la ausencia de latido — y la alerta que te encuentra en la playa.

use-cases / heartbeat-for-silent-jobs / mechanism

Dos entradas de cron. Una dice estoy vivo. La otra escucha la nada.

El trabajo que ya tenías sigue haciendo lo suyo. Cuando termina, añade un curl: una fila de latido a un endpoint de notificaciones. Una segunda entrada de cron corre con su propia cadencia y comprueba el silencio — si no hay latido fresco, te avisa al móvil. El éxito del trabajo es silencioso. Su ausencia es ruidosa.

worker.cron · el trabajo
POST · heartbeat
schedule0 2 * * *
# Cuando termina la exportación nocturna,# el trabajo emite su propio latido.0 2 * * * /usr/local/bin/export.sh \ && curl -fsS -X POST \ https://notify.containers.hoody.com/heartbeats/backup-prod-db
la ausencia es la señal
watcher.cron · el escucha
GET · silence-check
schedule*/15 * * * *
# Cada 15 minutos, pregunta: ¿hubo un latido?# Si lleva >1h en silencio, la API avisa por todos los canales.*/15 * * * * curl -fsS \ https://notify.containers.hoody.com/silence-check?\ job=backup-prod-db&max_age=1h

Dos POSTs a /users/root/entries con expresiones de cinco campos. La primera corre tras cada trabajo programado y emite su latido. La segunda corre con su propia cadencia, le pregunta al endpoint de notificaciones si el último latido es lo bastante fresco y dispara el aviso si no. Sin cola, sin agente, sin daemon — solo dos líneas de crontab que ya tenían que existir.

use-cases / heartbeat-for-silent-jobs / powers

Por qué vigilar la ausencia es distinto

La mayoría de las herramientas de monitorización vigilan el camino del éxito: alertan cuando algo ocurre. Esta forma alerta cuando no ocurre nada — y ese es el caso que los trabajos silenciosos siempre pierden.

MODOS DE FALLO

Captura el fallo silencioso

Si el proceso worker nunca arranca — la máquina se reinició, el script se borró, expiró una cuota — no hay nada que loguear ni nada sobre lo que alertar. El cron vigilante corre igual y se da cuenta de que la fila de latido está rancia. Lo que captura el fallo silencioso es justo lo que no depende de la cosa silenciosa.

SUPERFICIE CERO

Ningún servicio nuevo que cuidar

El monitor es una línea extra de crontab, no una cuenta de Healthchecks.io ni una alarma de CloudWatch. Está atado al mismo contenedor que el trabajo, expira con `expires_at` si quieres, y lee de la misma API de notificaciones que el resto de tu stack ya usa.

TE LLEGA

Ruidoso cuando importa

El endpoint de notificaciones reparte el aviso por push, SMS y email — los canales que ya confías. Tú no vigilas el dashboard. El dashboard se vigila solo, y te encuentra en la playa de Bali solo cuando el silencio se ha alargado demasiado.

use-cases / heartbeat-for-silent-jobs / capacity

Cron real, notificaciones reales

El mecanismo es simplemente Hoody Cron y Hoody Notifications. Los números salen de la superficie de API documentada, no de un runtime de demo.

  1. TODA LA SINTAXIS DE CRON@daily

    Expresiones estándar de 5 campos más macros — `@hourly`, `@daily`, `@weekly`, `@monthly`, `@yearly`. El vigilante y el worker pueden tener cadencias completamente distintas.

  2. AUTO-EXPIRACIÓNexpires_at

    Las entradas gestionadas soportan `expires_at`, así que un latido temporal (una ventana de migración de una semana, por ejemplo) se limpia solo. El vigilante desaparece con el trabajo.

  3. AISLAMIENTOpor usuario

    Cada contenedor tiene su propio crontab. El latido de un tenant no puede silenciar al vigilante de otro, y desactivar un trabajo es un único PATCH `enabled: false`.

Límites según la API de Hoody Cron: expresiones de 5 campos más las macros `@hourly`/`@daily`/`@weekly`/`@monthly`/`@yearly`, `expires_at` opcional en entradas gestionadas, aislamiento de crontab por usuario, activar/desactivar mediante PATCH.

use-cases / heartbeat-for-silent-jobs / punchline

El silencio ahora es una alerta.

ANTES · MIRANDO EL LOGabrir dashboard · buscar la última exportación · suspirar · olvidarsolo te das cuenta del trabajo que faltó el lunes
DESPUÉS · VIGILANDO EL SILENCIO*/15 * * * * curl /silence-check?job=backup-prod-dbel aviso te llega cuando el silencio aún es pequeño
use-cases / heartbeat-for-silent-jobs / replaces

Lo que esto reemplaza

Las herramientas estándar a las que recurres cuando quieres un monitor de cron con avisos. Cada una es una cuenta separada, una factura separada, una API separada. Dos líneas de crontab y el endpoint de notificaciones hacen el mismo trabajo.

  • orquestadores propiosServicios enteros de orquestación para lo que son dos líneas de crontab
  • Healthchecks.ioUna cuenta SaaS solo para recibir un latido HTTP
  • CronitorPrecios por monitor para algo que tu contenedor ya hace
  • Dead Man's SnitchEl patrón exacto, vendido como suscripción
  • alarmas de AWS CloudWatch para cronLambda + alarmas + políticas IAM por una fila rancia
  • scripts propios para recolectar latidosUn microservicio para registrar un valor que el cron podría simplemente hacer POST
use-cases / heartbeat-for-silent-jobs / cta

Deja de vigilar el camino del éxito. Vigila la ausencia de éxito — es el único lugar donde viven los fallos silenciosos.

use-cases / heartbeat-for-silent-jobs / related

Lee los otros