Matryca eskalacji - powiadomienia kolejnych osób
Cel: Skonfigurować macierz eskalacji, która po określonym czasie nierozwiązanego incydentu (awarii) wyśle powiadomienie do kolejnych osób odpowiedzialnych lub na inny kanał.
Kiedy stosować eskalację
Typowy scenariusz: twoja usługa pada w nocy, główny dyżurny nie reaguje w ciągu 15 minut - system ma automatycznie powiadomić kierownika zmiany, a po kolejnej godzinie także menedżera. Eskalacja zapobiega temu, by awaria pozostała niezauważona.
Krok 1: Utwórz politykę eskalacji
- Przejdź do Dashboard → Eskalacja (lub pod adres
/dashboard/escalation). - Wpisz nazwę (na przykład "Dyżur nocny") i kliknij + Nowa polityka.
Krok 2: Dodaj kroki
Polityka to sekwencja kroków. Każdy krok zawiera:
- Opóźnienie (min) - po ilu minutach od początku incydentu krok ma się uruchomić.
0oznacza natychmiast. - Kanał -
E-maillubWebhook(Slack, Discord, własny docelowy endpoint). - Odbiorcy - adresy e-mail oddzielone przecinkiem lub adres webhooka.
- Uwaga - opcjonalnie, co odbiorca ma zrobić.
Przykład 3-stopniowej polityki:
- Krok 1: 0 min, e-mail do głównego dyżurnego.
- Krok 2: 15 min, e-mail do kierownika zmiany.
- Krok 3: 60 min, webhook Slack na kanał #ops-emergency.
Krok 3: Przypisz politykę monitorom
Politykę możesz przypisać:
- Globalnie - przyciskiem "Ustaw jako domyślną" zostanie użyta dla wszystkich twoich monitorów, które nie mają własnej.
- Dla konkretnego monitora - podczas tworzenia lub edycji monitora wybierz konkretną politykę.
Potwierdzenie incydentu (ACK)
Każde powiadomienie eskalacyjne zawiera link ACK (acknowledge, czyli "widziałem i zajmuję się tym"). Wystarczy go kliknąć i:
- Kolejne kroki eskalacji zostają zatrzymane.
- W systemie zapisuje się, kto i kiedy potwierdził incydent.
- Pozostali w tym samym kroku nie otrzymają już kolejnych wiadomości eskalacyjnych dla tego incydentu.
Link ACK nie wymaga logowania - jest podpisany unikalnym tokenem (jednorazowym ciągiem znaków), więc nikt inny nie może go nadużyć. Po rozwiązaniu incydentu (monitor wraca do stanu UP) eskalacja również kończy się automatycznie.
Format webhooka
Do Slacka, Discorda, Microsoft Teams oraz własnego endpointu wysyłamy żądanie metodą POST. W przypadku Slacka, Discorda i Teams formatujemy payload natywnie (Block Kit / Embed / Adaptive Card). W przypadku pozostałych adresów (własny endpoint) wysyłamy generyczny JSON:
{
"event": "incident_escalation",
"monitor": {
"name": "Strona produkcyjna",
"target": "https://example.com",
"url": "https://epulz.io/dashboard/monitor/42"
},
"message": "ESCALATION step 2 (delay 15 min): e-mail do kierownika zmiany",
"timestamp": "2026-05-31T14:33:45+00:00",
"source": "epulzio"
}
Pole event ma przy eskalacji wartość incident_escalation. W polu message znajduje się tekstowy opis kroku (kolejność kroku, opóźnienie i opis akcji). Inne pola (incident_id, step_order, ack_url) nie istnieją na najwyższym poziomie - link ACK jest częścią sformatowanej wiadomości w Slacku/Discordzie/Teams. Dla Slacka wystarczy adres Incoming webhooka. Przy adresie Discord parametr ?wait=true nie jest potrzebny.
Często zadawane pytania
Co się stanie, jeśli incydent trwa dłużej niż ostatni krok?
Kolejne eskalacje nie są już wysyłane. Aby uzyskać powtarzające się przypomnienia, dodaj kolejny krok z większym opóźnieniem (na przykład 240 min).
Czy eskalacja działa również podczas trybu cichego (Quiet hours)?
Tak. Eskalacja idzie przez swój własny kanał (e-mail, webhook), a tryb cichy jej nie dotyczy - jest on przeznaczony tylko dla powiadomień podstawowych.
Czy mogę przetestować politykę bez czekania na realną awarię?
Najprościej: utwórz testowy monitor z adresem https://test-bad-domain.invalid, przypisz mu politykę z krótkim opóźnieniem (1 min) i obserwuj e-maile.