Dlaczego Discord to świetny kanał powiadomień monitoringu • Czym jest Discord Webhook i jak działa • Tworzenie webhooka Discord — krok po kroku • Konfiguracja powiadomień Discord w Uptime Kuma • Personalizacja wiadomości Discord — embedy, kolory, pola • Integracja przez bota Discord — kiedy i dlaczego • Wiele kanałów dla różnych grup monitorów • Wzmianki @role i @everyone dla alertów krytycznych • Szablony powiadomień z LiquidJS • Strategia wielokanałowa — Discord + e-mail + inne • Rozwiązywanie typowych problemów • Najczęściej zadawane pytania
Discord dawno przestał być platformą wyłącznie dla graczy. W 2026 roku to pełnoprawne narzędzie komunikacyjne, z którego korzystają zespoły DevOps, społeczności open-source, homelabowcy i firmy technologiczne na całym świecie. Ponad 200 milionów aktywnych użytkowników miesięcznie, natywne aplikacje na każdą platformę (desktop, mobile, przeglądarka) i rozbudowane API sprawiają, że Discord jest naturalnym wyborem jako kanał powiadomień monitoringu.
Dlaczego warto kierować alerty z Uptime Kuma właśnie na Discorda? Powodów jest kilka, a każdy z nich jest istotny z perspektywy operacyjnej:
Uptime Kuma obsługuje Discord jako jeden z 91 natywnych kanałów powiadomień — integracja jest wbudowana, nie wymaga żadnych dodatkowych pluginów ani skryptów. Konfiguracja sprowadza się do wklejenia jednego URL-a webhooka. W tym artykule pokażemy dokładnie jak to zrobić, a także jak zaawansować tę integrację o custom embedy, szablony LiquidJS, wzmianki ról i strategię wielokanałową.
Zanim przejdziemy do konfiguracji, warto zrozumieć mechanizm, na którym opiera się integracja Uptime Kuma z Discordem. Webhook to prosty mechanizm HTTP, który pozwala zewnętrznym aplikacjom wysyłać wiadomości na kanał Discord bez potrzeby tworzenia bota, autoryzacji OAuth2 czy zarządzania tokenami.
Jak to działa w praktyce:
1.
Tworzysz webhook na wybranym kanale Discord. Otrzymujesz URL w formacie: https://discord.com/api/webhooks/XXXXXXXXX/YYYYYYYYYYYY. Ten URL jest jednocześnie adresem docelowym i kluczem autoryzacji — każdy, kto go posiada, może wysyłać wiadomości na kanał.
2.
Gdy monitor wykryje zmianę stanu (UP → DOWN lub DOWN → UP), Uptime Kuma wysyła żądanie HTTP POST na URL webhooka z payloadem JSON zawierającym informacje o monitorze, statusie, czasie odpowiedzi i komunikacie błędu.
3.
Discord otrzymuje payload, przetwarza go i wyświetla wiadomość na kanale jako embed — kolorowy blok z informacjami o zdarzeniu monitoringu. Wiadomość pojawia się z nazwą i awatarem webhooka (konfigurowalnym).
1.
Przejdź do serwera Discord, na którym chcesz otrzymywać powiadomienia. Kliknij prawym przyciskiem myszy na kanał tekstowy (np. #monitoring-alerty) i wybierz Edytuj kanał (ikona zębatki). Alternatywnie kliknij ikonę zębatki obok nazwy kanału.
2.
W menu bocznym ustawień kanału kliknij Integracje (Integrations). Zobaczysz sekcję „Webhooks" — kliknij przycisk Utwórz webhook (Create Webhook).
3.
Discord utworzy webhook z domyślną nazwą „Spidey Bot". Zmień ją na coś opisowego — np. Uptime Kuma lub Monitor Alertów. Opcjonalnie możesz zmienić awatar webhooka (np. na logo Uptime Kuma — niedźwiadka). Upewnij się, że webhook jest przypisany do właściwego kanału.
4.
Kliknij przycisk Kopiuj URL webhooka (Copy Webhook URL). Otrzymasz URL w formacie:https://discord.com/api/webhooks/1234567890/AbCdEfGhIjKlMnOpQrStUvWxYz...
Zapisz ten URL — będzie potrzebny w następnym kroku przy konfiguracji Uptime Kuma.
5.
Kliknij Zapisz zmiany (Save Changes) na dole strony. Webhook jest gotowy do użycia.
1.
Zaloguj się do swojej instancji Uptime Kuma. Jeśli korzystasz z hostingu zarządzanego na SmartXHosting.pl, otwórz panel pod swoją domeną (np. twoja-firma.uptimekuma.eu).
2.
Kliknij Ustawienia (Settings) w menu bocznym, a następnie wybierz zakładkę Powiadomienia (Notifications). Kliknij przycisk Skonfiguruj powiadomienie (Setup Notification).
3.
Z listy rozwijanej „Typ powiadomienia" (Notification Type) wybierz Discord. Formularz zmieni się, wyświetlając pola specyficzne dla Discorda.
4.
Wypełnij następujące pola:
<@&ROLE_ID> (więcej o tym w dalszej części artykułu)5.
Kliknij przycisk Test. Na kanale Discord powinien pojawić się testowy embed z komunikatem od Uptime Kuma. Jeśli widzisz wiadomość — konfiguracja jest poprawna.
6.
Kliknij Zapisz (Save). Teraz możesz przypisać to powiadomienie do wybranych monitorów. Przy edycji monitora przejdź do sekcji Powiadomienia i zaznacz checkbox przy „Discord — alerty produkcja". Możesz też zaznaczyć opcję Domyślnie włączone (Default enabled), aby nowe monitory automatycznie korzystały z tego powiadomienia.
1.
Na serwerze Discord utwórz dedykowane kanały tekstowe dla każdej grupy alertów. Zalecamy kategorię (np. „Monitoring") dla porządku. Ustaw uprawnienia kanałów — np. #alerty-krytyczne widoczny dla wszystkich, #monitoring-staging tylko dla zespołu dev.
2.
Dla każdego kanału utwórz osobny webhook (jak opisano wcześniej). Nadaj im opisowe nazwy — np. „Uptime Kuma — PROD", „Uptime Kuma — Staging", „Uptime Kuma — SSL". Zapisz URL-e webhooków.
3.
W Uptime Kuma utwórz osobną konfigurację powiadomienia Discord dla każdego webhooka. Przypisz każdej opisową nazwę — „Discord PROD #alerty-krytyczne", „Discord Staging", „Discord SSL". Przetestuj każdy webhook.
4.
Przy edycji każdego monitora zaznacz odpowiednie checkboxy powiadomień. Monitor API produkcyjnego → „Discord PROD #alerty-krytyczne". Monitor strony staging → „Discord Staging". Monitor certyfikatu SSL → „Discord SSL". Jeden monitor może mieć przypisanych wiele kanałów powiadomień jednocześnie.
1.
Discord → Ustawienia użytkownika → Zaawansowane → włącz Tryb deweloperski (Developer Mode). Dzięki temu zobaczysz opcję „Kopiuj ID" w menu kontekstowych.
2.
Przejdź do Ustawienia serwera → Role. Kliknij prawym przyciskiem na rolę (np. „DevOps") i wybierz Kopiuj ID roli. Otrzymasz numer, np. 987654321098765432.
3.
W konfiguracji powiadomienia Discord, w polu Prefix Message, wpisz: <@&987654321098765432>. Teraz każdy alert wyśle powiadomienie push do wszystkich członków roli DevOps.
Kluczowe cechy webhooka Discord:
Aby skonfigurować powiadomienia Discord w Uptime Kuma, musisz najpierw utworzyć webhook na swoim serwerze Discord. Poniżej dokładna instrukcja — zarówno na desktopie, jak i w aplikacji mobilnej.
Na aplikacji mobilnej proces jest zbliżony: przytrzymaj palec na kanale → Edytuj kanał → Integracje → Webhooks → Nowy webhook. Skonfiguruj nazwę, skopiuj URL i zapisz. Pamiętaj, że musisz mieć uprawnienie Zarządzaj webhookami (Manage Webhooks) na danym kanale.
Masz URL webhooka — czas skonfigurować Uptime Kuma. Cały proces zajmuje dosłownie 2 minuty.
Od tego momentu każda zmiana stanu monitora (UP → DOWN lub DOWN → UP) spowoduje wysłanie wiadomości na kanał Discord. Domyślny embed zawiera:
Domyślne powiadomienia Discord z Uptime Kuma są czytelne i funkcjonalne, ale możesz je dostosować, aby lepiej odpowiadały potrzebom Twojego zespołu. Uptime Kuma wysyła wiadomości jako Discord embedy — bogato sformatowane bloki, które obsługują kolory, pola, linki i znaczniki czasu.
Standardowa wiadomość Discord z Uptime Kuma zawiera następujące elementy:
| Element embeda | Wartość | Opis |
|---|---|---|
| Kolor | Czerwony (#FF0000) / Zielony (#00FF00) | Wskazuje status — DOWN (czerwony) lub UP (zielony) |
| Tytuł | Nazwa monitora + status | Np. „[DOWN] API Backend — api.example.com" |
| Opis | Komunikat z detalami | URL monitora, czas odpowiedzi, kod statusu lub komunikat błędu |
| Znacznik czasu | ISO 8601 | Dokładna data i godzina zdarzenia w lokalnej strefie czasowej |
| Footer | Uptime Kuma | Podpis źródła powiadomienia |
Pole Prefix Message w konfiguracji powiadomienia Discord pozwala dodać dowolny tekst przed embedem. Jest to przydatne do:
<@&123456789> oznacza rolę @devops (więcej w sekcji o wzmianach)W konfiguracji powiadomienia Discord w Uptime Kuma znajdziesz pole Bot Display Name. Możesz je ustawić na dowolną wartość — np. „Monitoring PROD", „Alert Bot" czy nazwę swojej firmy. Nazwa pojawi się jako autor wiadomości na Discordzie. Awatar webhooka konfigurujesz bezpośrednio w ustawieniach webhooka na Discordzie (ikona obok nazwy webhooka w ustawieniach kanału).
Pamiętaj, że w Uptime Kuma możesz mieć wiele konfiguracji powiadomień Discord — np. jedną dla alertów produkcyjnych (z wzmianką @oncall), drugą dla środowiska staging (bez wzmianek), trzecią dla monitorów SSL (na kanał #certyfikaty). Każdy monitor może mieć przypisane dowolne kombinacje kanałów powiadomień.
Webhooki są najprostszą i zalecaną metodą integracji Discord z Uptime Kuma, ale warto wiedzieć, kiedy rozważyć alternatywę — dedykowanego bota Discord.
| Cecha | Webhook | Bot Discord |
|---|---|---|
| Konfiguracja | 1 minuta — skopiuj URL | 30+ minut — rejestracja aplikacji, token, kod |
| Kierunek komunikacji | Jednokierunkowy (do Discorda) | Dwukierunkowy (do i z Discorda) |
| Komendy | Brak | Tak — np. /status, /monitors, /pause |
| Reakcje na wiadomości | Brak | Tak — np. potwierdzenie przejęcia incydentu |
| Edycja wiadomości | Ograniczona | Pełna — aktualizacja statusu w miejscu |
| Rate limity | 30 req/60s per webhook | Zależne od endpointu, bardziej elastyczne |
| Zarządzanie wieloma kanałami | Osobny webhook per kanał | Jeden bot, wiele kanałów |
| Bezpieczeństwo | URL = klucz (prosty, ale ryzykowny przy wycieku) | Token + uprawnienia (bardziej granularne) |
| Wymagana infrastruktura | Żadna dodatkowa | Hosting bota (Node.js/Python) |
Webhook jest idealnym rozwiązaniem, jeśli potrzebujesz:
Bot Discord może być lepszym wyborem, jeśli chcesz:
/status na Discordzie zwraca aktualny stan wszystkich monitorówW środowiskach produkcyjnych rzadko wystarcza jeden kanał Discord na wszystkie alerty. Uptime Kuma doskonale obsługuje scenariusz, w którym różne monitory wysyłają powiadomienia na różne kanały Discord. Oto jak to zaprojektować.
| Kanał Discord | Webhook | Przypisane monitory | Wzmianki |
|---|---|---|---|
| #alerty-krytyczne | Webhook A | Produkcja — API, baza danych, strona główna | @oncall @everyone |
| #monitoring-web | Webhook B | Strony WWW, landing pages, blogi | @webteam |
| #monitoring-infra | Webhook C | Serwery, DNS, porty TCP, certyfikaty SSL | @sysadmin |
| #monitoring-staging | Webhook D | Środowisko staging/dev | Brak (ciche) |
| #ssl-expiry | Webhook E | Monitory certyfikatów SSL (dni do wygaśnięcia) | @devops |
Jedną z najpotężniejszych funkcji Discorda w kontekście monitoringu jest możliwość oznaczania ról i użytkowników w wiadomościach. Dzięki temu krytyczne alerty nie giną w szumie — Discord wyśle powiadomienie push do każdej oznaczonej osoby.
Webhooki Discord mogą używać wzmiankek w polu content (nie w embedzie — to ważne!). W Uptime Kuma wzmianki wpisujesz w pole Prefix Message, które jest wysyłane jako content wiadomości (przed embedem).
Formaty wzmianek Discord:
| Typ wzmianki | Format | Przykład | Efekt |
|---|---|---|---|
| Użytkownik | <@USER_ID> | <@123456789012345678> | Powiadomienie push do konkretnej osoby |
| Rola | <@&ROLE_ID> | <@&987654321098765432> | Powiadomienie push do wszystkich z daną rolą |
| @everyone | @everyone | @everyone | Powiadomienie push do wszystkich na kanale |
| @here | @here | @here | Powiadomienie push do online na kanale |
Aby użyć wzmianki <@&ROLE_ID>, musisz znać numeryczny ID roli Discord. Oto jak go znaleźć:
Nie każdy alert wymaga natychmiastowej uwagi. Zalecamy następującą strategię:
@everyone lub <@&ONCALL_ROLE_ID> — natychmiastowe powiadomienie push<@&DEVOPS_ROLE_ID> — powiadomienie do zespołuAby to zrealizować, utwórz osobne konfiguracje powiadomień w Uptime Kuma — jedną z @everyone w Prefix Message (dla monitorów krytycznych), drugą z <@&DEVOPS_ROLE_ID> (dla ważnych), trzecią bez wzmiankek (dla informacyjnych). Przypisz je odpowiednio do monitorów.
@everyone prowadzi do „zmęczenia alertami" (alert fatigue) — zespół zaczyna ignorować powiadomienia. Rezerwuj @everyone wyłącznie dla alertów, które wymagają natychmiastowej reakcji (np. produkcja DOWN). Dla mniej pilnych alertów używaj wzmiankek ról lub kanałów bez wzmianek.
Od wersji 2.0 Uptime Kuma obsługuje szablony LiquidJS dla powiadomień — to potężne narzędzie, które pozwala w pełni kontrolować treść wiadomości Discord (i innych kanałów powiadomień). Dzięki szablonom możesz tworzyć dynamiczne wiadomości zawierające dokładnie te informacje, które są potrzebne Twojemu zespołowi.
W szablonach LiquidJS masz dostęp do następujących zmiennych:
| Zmienna | Opis | Przykładowa wartość |
|---|---|---|
{{msg}} | Pełna wiadomość powiadomienia | „[API Backend] [DOWN] — Connection refused" |
{{monitorJSON.name}} | Nazwa monitora | „API Backend" |
{{monitorJSON.url}} | URL monitora | „https://api.example.com/health" |
{{monitorJSON.hostname}} | Hostname | „api.example.com" |
{{monitorJSON.type}} | Typ monitora | „http" |
{{heartbeatJSON.status}} | Status (0=DOWN, 1=UP, 2=PENDING) | 0 |
{{heartbeatJSON.msg}} | Komunikat heartbeatu | „Connection refused" |
{{heartbeatJSON.ping}} | Czas odpowiedzi (ms) | 245 |
{{heartbeatJSON.time}} | Znacznik czasu | „2026-03-24 14:30:00" |
Szablony LiquidJS wpisujesz w pole Prefix Message w konfiguracji powiadomienia Discord. Oto kilka przykładów:
Szablon 1: Prosty alert z kontekstem
{% if heartbeatJSON.status == 0 %}AWARIA: {{ monitorJSON.name }} jest niedostępny!{% else %}PRZYWRÓCONO: {{ monitorJSON.name }} działa ponownie.{% endif %}
Czas: {{ heartbeatJSON.time }}
Typ: {{ monitorJSON.type }}
URL: {{ monitorJSON.url }}
Szablon 2: Alert z wzmianką roli warunkową
{% if heartbeatJSON.status == 0 %}<@&ONCALL_ROLE_ID> KRYTYCZNE: {{ monitorJSON.name }} DOWN{% else %}{{ monitorJSON.name }} powrócił do stanu UP ({{ heartbeatJSON.ping }}ms){% endif %}
Szablon 3: Szczegółowy raport
Monitor: {{ monitorJSON.name }}
Status: {% if heartbeatJSON.status == 0 %}DOWN{% elsif heartbeatJSON.status == 1 %}UP{% else %}PENDING{% endif %}
{% if heartbeatJSON.ping %}Ping: {{ heartbeatJSON.ping }}ms{% endif %}
{% if heartbeatJSON.msg %}Komunikat: {{ heartbeatJSON.msg }}{% endif %}
Czas: {{ heartbeatJSON.time }}
Discord jest doskonałym kanałem powiadomień, ale w środowisku produkcyjnym nie powinien być jedynym. Profesjonalny monitoring wymaga strategii wielokanałowej (multi-channel notification strategy), która zapewnia, że krytyczne alerty dotrą do właściwych osób nawet w przypadku awarii jednego z kanałów.
| Warstwa | Kanał | Cel | Konfiguracja w Uptime Kuma |
|---|---|---|---|
| 1 — Natychmiastowy | Discord + Telegram | Szybki alert na telefon i desktop | Discord webhook + Telegram bot, oba przypisane do monitora |
| 2 — Formalny | Dokumentacja incydentu, ślad audytowy | SMTP notification z detalami monitora | |
| 3 — Eskalacja | PagerDuty / OpsGenie | Eskalacja, jeśli nikt nie zareaguje | PagerDuty notification z harmonogramem dyżurów |
| 4 — Statusowa | Strona statusu Uptime Kuma | Informacja dla klientów/użytkowników | Wbudowana status page na custom domenie |
Firma monitoruje 50 usług w Uptime Kuma. Konfiguracja powiadomień:
Ta strategia zapewnia, że krytyczna awaria produkcji nie zostanie przeoczona — nawet jeśli Discord nie działa, Telegram i PagerDuty przejmują pałeczkę. Jednocześnie mniej pilne alerty (staging, SSL) nie zaśmiecają krytycznych kanałów.
Integracja Discord z Uptime Kuma jest prosta, ale czasem pojawiają się problemy. Oto najczęstsze z nich i sposoby ich rozwiązania.
Przyczyny i rozwiązania:
https://discord.com/api/webhooks/ (nie https://discordapp.com/ — stary format może nie działać). Skopiuj URL ponownie z ustawień kanału Discord.Przyczyny:
Rozwiązanie: Upewnij się, że:
<@&ROLE_ID> (z ampersandem dla ról) lub <@USER_ID> (bez ampersanda dla użytkowników)Przyczyny:
Rozwiązanie: Zmiana nazwy kanału, kategorii lub uprawnień nie kasuje webhooka — powinien nadal działać. Natomiast usunięcie kanału lub usunięcie webhooka z ustawień integracji powoduje trwałe dezaktywowanie URL-a. W takim przypadku jedyne rozwiązanie to utworzenie nowego webhooka i aktualizacja URL-a w Uptime Kuma.
Rozwiązanie:
curl -H "Content-Type: application/json" -d '{"content":"Test z terminala"}' WEBHOOK_URLTak. Zarówno Uptime Kuma, jak i Discord Webhooks są całkowicie bezpłatne. Nie ma żadnych opłat za wysyłanie powiadomień, nie ma limitu liczby wiadomości dziennie (poza rate limitami API — 30 żądań na 60 sekund per webhook). Jedynym kosztem jest serwer, na którym działa Uptime Kuma (lub opcjonalnie hosting zarządzany).
Nie ma limitu w Uptime Kuma — możesz skonfigurować dowolną liczbę powiadomień Discord, każde z innym URL-em webhooka i innymi ustawieniami. Discord pozwala na maksymalnie 15 webhooków per kanał i nie narzuca limitu całkowitej liczby webhooków na serwerze. W praktyce 5-10 webhooków (po jednym na kanał monitoringu) pokrywa potrzeby nawet dużych środowisk.
Webhooki Discord działają wyłącznie z kanałami tekstowymi na serwerze — nie można ich użyć do wysyłania wiadomości prywatnych (DM). Jeśli chcesz otrzymywać alerty jako DM, masz dwie opcje: (1) użyj dedykowanego bota Discord, który może wysyłać DM do użytkowników, (2) utwórz prywatny kanał Discord widoczny tylko dla Ciebie i skieruj tam webhook. Druga opcja jest znacznie prostsza i daje podobny efekt.
Jeśli API Discorda jest niedostępne w momencie wysyłania powiadomienia, Uptime Kuma otrzyma błąd HTTP i może ponowić próbę. Jednak jeśli awaria Discorda trwa dłużej, powiadomienie może zostać utracone. Dlatego zalecamy strategię wielokanałową — Discord jako kanał główny + Telegram lub e-mail jako backup. Uptime Kuma wysyła powiadomienia równocześnie do wszystkich skonfigurowanych kanałów.
Tak. Pole Prefix Message w konfiguracji powiadomienia Discord obsługuje składnię Markdown Discorda: **pogrubienie**, *kursywa*, `kod`, ~~przekreślenie~~, > cytat, oraz bloki kodu z potrójnym apostrofem. Możesz też używać szablonów LiquidJS do generowania dynamicznego Markdown. Natomiast sam embed (kolorowy blok) jest generowany automatycznie i jego format jest kontrolowany przez Uptime Kuma.
W Uptime Kuma przejdź do Ustawienia → Powiadomienia → znajdź konfigurację Discord → kliknij Edytuj (zmiana URL lub ustawień) lub Usuń (usunięcie konfiguracji). Usunięcie konfiguracji powiadomienia w Uptime Kuma nie usuwa webhooka na Discordzie — jeśli chcesz go usunąć, zrób to osobno w ustawieniach kanału Discord (Integracje → Webhooks → Usuń).
Webhooki Discord mogą wysyłać wiadomości na standardowe kanały tekstowe. Obsługa Forum Channels wymaga dodania parametru thread_id w URL-u webhooka (np. ?thread_id=XXXXXXXXX). W Uptime Kuma możesz dodać ten parametr do URL-a webhooka. Wątki (threads) w standardowych kanałach również są obsługiwane przez ten sam mechanizm. Warto przetestować tę funkcję przyciskiem Test przed zapisaniem.