Alertas por llamada en Uptime Kuma: haz que suene tu móvil

Uptime Kuma tiene más de 90 notificaciones, pero ninguna hace sonar tu teléfono. Así se añaden llamadas ante caídas con un solo webhook.

Índice

Uptime Kuma admite más de 90 proveedores de notificaciones, pero ninguno hace sonar tu teléfono. Para recibir una llamada cuando un monitor se cae, envía la notificación Webhook de Uptime Kuma a un canal de Echobell con el tipo de notificación Llamada. Esta guía incluye el cuerpo personalizado exacto, cómo separar las alertas de caída de las de recuperación y los dos errores que rompen la configuración en silencio.

Uptime Kuma es la herramienta autoalojada de monitorización de disponibilidad más extendida: unas 90.000 estrellas en GitHub, con la versión 2.5.0 publicada en agosto de 2026. Comprueba endpoints HTTP, puertos TCP, registros DNS, contenedores Docker y más, y detecta caídas realmente bien.

Donde te deja expuesto es en el último tramo: hacer llegar la alerta a una persona que está durmiendo.

Por qué Uptime Kuma no puede llamarte por sí solo

La lista de notificaciones de Uptime Kuma es larga —Telegram, Discord, Slack, correo, Gotify, ntfy y decenas más—, pero todas entregan un mensaje. Los mensajes están sujetos al interruptor de silencio del teléfono, al modo No molestar y a los modos de concentración de iOS. A las 3 de la madrugada eso significa que la alerta llega y no pasa nada.

No existe un proveedor propio del tipo «llámame». Las opciones a las que se suele llegar son:

  • Twilio: puedes montar llamadas de voz sobre él, pero el proveedor de Twilio en Uptime Kuma envía SMS. Pasar a voz implica escribir un servicio puente, comprar un número y pagar por llamada.
  • PagerDuty, Zenduty, Spike.sh, Splunk On-Call: estos sí llaman, y también son plataformas completas de gestión de incidentes con precios por usuario acordes. La respuesta correcta si necesitas rotaciones y políticas de escalado; excesiva si solo quieres que suene un teléfono.
  • Pasarelas SMS: un SMS sigue siendo un mensaje y, en iOS, un texto no atraviesa el modo de concentración salvo que el remitente esté en tu lista de excepciones.

En el repositorio de Uptime Kuma lleva tiempo abierta una petición de notificaciones por llamada VoIP. Mientras tanto, el proveedor genérico Webhook es la vía de escape: puede enviar cualquier cosa a cualquier URL, que es todo lo que hace falta.

Lo que necesitas

  • Una instancia de Uptime Kuma en funcionamiento (esta guía está escrita para la 2.x; el cuerpo personalizado también funciona en 1.23+)
  • Echobell instalado (App Store / Google Play)
  • Cinco minutos

Tu instancia de Uptime Kuma necesita salida HTTPS hacia hook.echobell.one. No necesita ser accesible desde Internet: se trata de un webhook saliente, así que un monitor que corre en un servidor doméstico o dentro de una red privada funciona sin problema.

Paso 1 — Crear un canal que te llame

En Echobell, crea un canal llamado por ejemplo Production Down. Ajusta el tipo de notificación de la suscripción a Llamada. Ese es el ajuste que importa: las alertas de tipo Llamada llegan como una llamada entrante y suenan a través de los modos de concentración de iOS y del modo No molestar, cosa que una notificación push no hace.

Configura las plantillas así:

Título: 🔴 {{monitor}} está caído
Cuerpo: {{message}}
Destino: {{target}}

Después copia la URL del webhook del canal. Tiene este aspecto:

https://hook.echobell.one/t/<channel-token>

Trata esa URL como un secreto: cualquiera que la tenga puede hacer sonar tu teléfono.

Paso 2 — Añadir Echobell como notificación webhook

En Uptime Kuma, ve a Settings → Notifications → Setup Notification y rellena:

CampoValor
Notification TypeWebhook
Friendly NameEchobell — Down
Post URLtu URL de webhook de Echobell
Request BodyCustom Body

Deja Additional Headers vacío.

Paso 3 — Enviar una carga útil que puedas filtrar

Este es el paso que la mayoría de las guías se salta, y el que marca la diferencia entre un sistema de alertas y una máquina de ruido.

Pega esto en Custom Body:

{
  "monitor": "{{name}}",
  "target": "{{hostnameOrURL}}",
  "message": "{{ msg | strip_newlines }}",
  "up": "{{ heartbeatJSON['status'] }}"
}

Uptime Kuma renderiza los cuerpos personalizados con Liquid y expone estas variables:

VariableQué contiene
{{name}}El nombre descriptivo del monitor
{{hostnameOrURL}}El host o la URL que se comprueba
{{status}}🔴 Down, ✅ Up o ⚠️ Test
{{msg}}El motivo legible, p. ej. connect ECONNREFUSED 10.0.0.4:443
{{ monitorJSON['...'] }}El objeto monitor completo
{{ heartbeatJSON['...'] }}El objeto heartbeat completo

Dos detalles de esa carga útil son deliberados:

strip_newlines sobre msg. El mensaje de Uptime Kuma suele contener saltos de línea, y un salto de línea sin escapar dentro de una cadena JSON es JSON inválido. Sin el filtro, tu webhook falla de forma intermitente, solo con los errores cuyo texto casualmente se parte en varias líneas. Si tu Uptime Kuma es lo bastante reciente como para tener el filtro json de Liquid, "message": {{ msg | json }} (ojo: sin comillas alrededor) es aún más seguro, porque también escapa las comillas.

heartbeatJSON['status'] en lugar de {{status}}. La variable status se renderiza como texto con emoji, incómodo de comparar. El estado del heartbeat, en cambio, es un número simple:

  • 0 — caído
  • 1 — operativo
  • 2 — pendiente
  • 3 — mantenimiento

Entrecomillarlo ("up": "{{ ... }}") también importa, y el paso 5 explica por qué.

Paso 4 — Evitar que las recuperaciones te llamen

Una sola notificación de Uptime Kuma se dispara tanto en la caída como en la recuperación. Si lo dejas así, esta configuración te llama cuando el servicio se rompe y vuelve a llamarte cuando se arregla solo. Es esa segunda llamada la que enseña a la gente a ignorar la primera.

Sepáralas con las condiciones de Echobell, que se evalúan antes de entregar nada:

En el canal Production Down (tipo de notificación Llamada), pon la condición:

up == "0"

Crea un segundo canal llamado Production Recovered, ajusta su tipo de notificación a Normal y dale la condición:

up == "1"

Con estas plantillas:

Título: ✅ {{monitor}} vuelve a estar operativo
Cuerpo: {{message}}

Después añade una segunda notificación webhook en Uptime Kuma: mismo cuerpo personalizado, mismos monitores, pero apuntando a la URL del canal de recuperación. Ambas notificaciones reciben todos los eventos; cada canal descarta la mitad que no le interesa.

El resultado: las caídas suenan y las recuperaciones llegan como un push tranquilo que lees por la mañana.

Paso 5 — Ajustar el monitor para que no grite «que viene el lobo»

Una llamada que acaba siendo un parpadeo de red de dos segundos es peor que ninguna llamada, porque la siguiente también se descartará. Tres ajustes de Uptime Kuma, todos en el propio monitor, hacen casi todo el trabajo:

  • Retries: ponlo en 2 o 3. Uptime Kuma solo marca el monitor como caído tras ese número de fallos consecutivos, lo que filtra paquetes perdidos aislados.
  • Heartbeat Retry Interval: con qué rapidez vuelve a comprobar mientras falla. De 20 a 30 segundos es un equilibrio razonable; combinado con 3 reintentos, detectas una caída real en torno a un minuto.
  • Resend Notification if Down X times consecutively: puesto en algo como 10, Uptime Kuma volverá a llamar si el servicio sigue caído tras diez comprobaciones más. Es una política de escalado rudimentaria, y funciona.

Si prefieres que una llamada sin responder se reintente de inmediato en lugar de esperar al reenvío, activa Reintentar llamadas fallidas en los ajustes de la app de Echobell.

Sonar solo fuera del horario laboral

Durante la jornada probablemente ya estés mirando un panel, y un teléfono sonando es una interrupción que no necesitabas. Las variables de tiempo del sistema de Echobell (todas en UTC) permiten que un mismo canal se comporte distinto según la hora:

up == "0" && (hour >= 17 || hour < 9)

Esa condición solo te llama fuera de 09:00–17:00 UTC. Apunta un segundo canal, de tipo Normal, a la condición inversa para los push diurnos:

up == "0" && hour >= 9 && hour < 17

Recuerda ajustar a tu zona horaria: estas variables se calculan siempre en UTC. Hay un tratamiento más completo en notificaciones por ventana horaria con condiciones UTC.

Compartir la alerta con tu equipo

Un canal de Echobell se puede compartir con compañeros mediante un enlace de suscripción, y cada suscriptor elige su propio tipo de notificación. Así, el mismo monitor puede hacer sonar el teléfono de quien está de guardia y llegar como push normal para el resto: sin precios por asiento ni reglas de enrutado adicionales en Uptime Kuma.

Esto encaja además con la postura de privacidad que te llevó a autoalojar: tus monitores permanecen en tu infraestructura y Echobell mantiene el contenido y el historial de notificaciones en el dispositivo, no en sus servidores.

Lo que esta configuración no te da

Ser honesto con el límite te ahorra una mala migración más adelante. Echobell es una capa de entrega, no una plataforma de gestión de incidentes. No tiene:

  • calendarios de guardia ni relevos follow-the-sun
  • árboles de escalado que avisen automáticamente a una segunda persona
  • cronologías de incidentes, seguimiento de confirmaciones ni herramientas de post-mortem

Si tu equipo necesita eso, necesitas PagerDuty, Grafana Cloud IRM o similar. Lo que esta configuración cubre es el hueco concreto que deja Uptime Kuma: convertir una caída detectada en un teléfono que suena de verdad. Para operadores en solitario, equipos pequeños y homelabs, eso suele ser todo el requisito.

Resolución de problemas

El botón Test no hace nada. Es lo esperado con la carga útil anterior, y confunde a todo el mundo la primera vez. Al pulsar Test, Uptime Kuma no tiene ningún heartbeat que renderizar, así que {{ heartbeatJSON['status'] }} queda como cadena vacía y ninguna condición coincide. Para probarlo de verdad, crea un monitor TCP desechable apuntando a un puerto donde no escuche nada (127.0.0.1:9) y deja que falle.

El webhook falla de forma intermitente. Casi siempre es el problema de los saltos de línea: comprueba que msg pase por strip_newlines. Solo se rompe con los mensajes de error que contienen un salto, y por eso parece aleatorio.

Echobell devuelve success: false con HTTP 200. El token del canal es incorrecto o el canal se eliminó. Echobell responde 200 ante un token desconocido pero de longitud válida, así que revisa el cuerpo JSON, no el código de estado.

HTTP 405. El canal tiene activado POST Only y algo envió un GET. Uptime Kuma usa POST, así que normalmente significa que probaste la URL en un navegador.

No suena, pero la notificación llega. El tipo de notificación de la suscripción es Normal o Sensible al tiempo, no Llamada. El tipo se elige por suscriptor, así que compruébalo en el dispositivo que no suena.

Preguntas frecuentes

¿Puede Uptime Kuma llamar por teléfono de forma nativa?

No. Uptime Kuma tiene más de 90 proveedores de notificaciones, pero todos entregan mensajes. Las llamadas requieren enrutar un webhook hacia un servicio capaz de realizarlas, como Echobell, o usar una plataforma de pago de gestión de incidentes.

¿Funciona con un Uptime Kuma autoalojado detrás de un cortafuegos?

Sí. El webhook es una petición HTTPS saliente desde tu instancia de Uptime Kuma, así que solo necesita alcanzar hook.echobell.one. Tu instancia no necesita dirección pública.

¿La llamada salta el modo No molestar?

Sí. El tipo de notificación Llamada de Echobell se presenta como una llamada entrante, que suena a través de los modos de concentración de iOS y del modo No molestar. Consulta saltarse el modo Concentración de iOS para alertas críticas para los detalles y los ajustes implicados.

¿Cómo evito que me llamen cuando el servicio se recupera?

Usa dos canales con condiciones —up == "0" para el canal de llamada y up == "1" para un canal de recuperación con prioridad normal— y apunta una notificación webhook a cada uno. El paso 4 de arriba lo detalla.

¿Puede llamarse a varias personas por el mismo monitor?

Sí. Comparte el canal con tu equipo y cada suscriptor elige su propio tipo de notificación. Todas las personas suscritas al canal de llamada reciben el aviso.

Cierre

La configuración es un webhook, un cuerpo personalizado y dos condiciones. Deja tus monitores de Uptime Kuma, la lógica de reintentos y las páginas de estado exactamente como están, y cierra el hueco entre «el monitor se dio cuenta» y «alguien se dio cuenta».

Descarga Echobell para iPhone o consíguelo en Google Play, y conecta primero un monitor poco crítico dejándolo fallar a propósito. Confía en el camino antes de depender de él.


Relacionados

Artículos relacionados