
Sesenta contenedores en un servidor
Un servidor bare-metal ejecuta decenas a cientos de contenedores Hoody. KSM y dedup BTRFS hacen que el costo marginal sea casi cero.
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.
dos entradas de cron · cero servicios nuevos · la alerta te encuentra cuando no pasa 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.
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.
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.
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.
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.
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.
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.
Expresiones estándar de 5 campos más macros — `@hourly`, `@daily`, `@weekly`, `@monthly`, `@yearly`. El vigilante y el worker pueden tener cadencias completamente distintas.
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.
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.
El silencio ahora es una alerta.
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.
Deja de vigilar el camino del éxito. Vigila la ausencia de éxito — es el único lugar donde viven los fallos silenciosos.