Un canale webhook invia in POST un JSON a un URL a tua scelta quando un monitor va down o torna operativo, e per altri avvisi come risposte lente, certificati in scadenza e record DNS modificati. Ogni richiesta è firmata, così il tuo endpoint può verificare che arrivi davvero da Uptimecheck.
Aggiungi il webhook
Apri Alert channels nella barra laterale e scegli Add channel.Seleziona Webhook e inserisci l’Endpoint URL.Scegli Add channel e copia il signing secret che compare. Viene mostrato una sola volta.Scegli Send test per inviare una chiamata di prova.
Verifica la firma
Ogni richiesta contiene due header:
x-uptimecheck-timestamp: l’ora Unix, in secondi, in cui la richiesta è stata firmata.x-uptimecheck-signature: sha256= seguito dall’HMAC-SHA256 in esadecimale di timestamp, un punto e il body grezzo, calcolato con il signing secret del canale.
Calcola lo stesso valore dal body grezzo prima di farne il parsing, confrontalo in tempo costante e rifiuta i timestamp vecchi. In 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));
}
Una versione in Python e tutti i campi del payload sono nella documentazione API.
Buono a sapersi
Rispondi con un qualsiasi stato 2xx entro 10 secondi. In tutti gli altri casi la chiamata viene ripetuta altre quattro volte, dopo 30 s, 2 min, 10 min e 30 min.Il campo event indica cosa è successo, ad esempio monitor.down, monitor.up, monitor.slow, certificate.expiring o dns.changed. Il riferimento API elenca tutti gli eventi e mostra come verificare la firma.Usa HTTPS e svolgi le operazioni lente dopo aver risposto.
Scopri tutti i canali di avviso o automatizza la configurazione con la REST API.