Un canal de webhook envía un POST con JSON a la URL que elijas cuando un monitor cae o se recupera, y también con otras alertas, como respuestas lentas, certificados a punto de caducar y registros DNS modificados. Cada petición va firmada, así que tu endpoint puede comprobar que de verdad viene de Uptimecheck.
Añade el webhook
Abre Alert channels en la barra lateral y elige Add channel.Selecciona Webhook e introduce la Endpoint URL.Elige Add channel y copia el secreto de firma que aparece. Solo se muestra una vez.Elige Send test para enviar una llamada de prueba.
Verifica la firma
Cada petición lleva dos cabeceras:
x-uptimecheck-timestamp: el tiempo Unix en segundos en que se firmó la petición.x-uptimecheck-signature: sha256= seguido del HMAC-SHA256 en hexadecimal del timestamp, un punto y el cuerpo sin procesar, con el secreto de firma del canal como clave.
Calcula el mismo valor a partir del cuerpo sin procesar antes de parsearlo, compáralo en tiempo constante y rechaza los timestamps antiguos. En Node.js:
import { createHmac, timingSafeEqual } from «node:crypto»;
export function isFromUptimecheck(rawBody, headers, secret) {
const timestamp = headers[«x-uptimecheck-timestamp»] ?? «»;
const signature = headers[«x-uptimecheck-signature»] ?? «»;
const expected = «sha256=» + createHmac(«sha256», secret).update(`${timestamp}.${rawBody}`).digest(«hex»);
const fresh = Math.abs(Date.now() / 1000 – Number(timestamp)) < 300;
return fresh && signature.length === expected.length && timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}
En la documentación de la API tienes una versión en Python y todos los campos del payload.
Conviene saber
Responde con cualquier código 2xx en menos de 10 segundos. Cualquier otra cosa se reintenta cuatro veces más, a los 30 s, 2 min, 10 min y 30 min.El campo event indica qué ha pasado, por ejemplo monitor.down, monitor.up, monitor.slow, certificate.expiring o dns.changed. La referencia de la API recoge todos los eventos y explica cómo verificar la firma.Usa HTTPS y deja el trabajo lento para después de responder.
Consulta todos los canales de alerta o automatiza la configuración con la API REST.