Kanał webhook wysyła metodą POST dane JSON na wybrany przez Ciebie adres URL, gdy monitor przestaje działać lub wraca do działania, a także przy innych alertach, np. o wolnych odpowiedziach, wygasających certyfikatach i zmienionych rekordach DNS. Każde żądanie jest podpisane, więc Twój endpoint może sprawdzić, czy naprawdę pochodzi od Uptimecheck.
Dodaj webhook
Otwórz Alert channels na pasku bocznym i wybierz Add channel.Wskaż Webhook i wpisz Endpoint URL.Wybierz Add channel i skopiuj wyświetlony sekret do podpisywania. Jest pokazywany tylko raz.Wybierz Send test, aby wysłać testowe wywołanie.
Zweryfikuj podpis
Każde żądanie zawiera dwa nagłówki:
x-uptimecheck-timestamp: czas uniksowy w sekundach, w którym żądanie zostało podpisane.x-uptimecheck-signature: sha256=, a po nim szesnastkowy HMAC-SHA256 z timestampu, kropki i surowej treści żądania, z kluczem w postaci sekretu do podpisywania danego kanału.
Oblicz tę samą wartość z surowej treści, zanim ją sparsujesz, porównuj w stałym czasie i odrzucaj stare timestampy. W 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));
}
Wersję w Pythonie i wszystkie pola payloadu znajdziesz w dokumentacji API.
Warto wiedzieć
Odpowiedz dowolnym kodem 2xx w ciągu 10 sekund. W każdym innym przypadku ponowimy próbę jeszcze cztery razy: po 30 s, 2 min, 10 min i 30 min.Pole event mówi, co się stało, np. monitor.down, monitor.up, monitor.slow, certificate.expiring lub dns.changed. Dokumentacja API wymienia wszystkie zdarzenia i pokazuje, jak zweryfikować podpis.Używaj HTTPS, a czasochłonne operacje wykonuj dopiero po wysłaniu odpowiedzi.
Zobacz wszystkie kanały alertów albo zautomatyzuj konfigurację za pomocą REST API.