Opublikowano wersję projektu IncidentRelay 2.0, rozwijającego otwarty system do organizacji dyżurów, routingu powiadomień i zarządzania incydentami, wdrażanego na własnym serwerze (self-hosted). Projekt jest skierowany do zespołów SRE, DevOps i infrastrukturalnych, które potrzebują lokalnej alternatywy dla chmurowych platform zarządzania dyżurami. Kod napisano w Pythonie i jest udostępniany na licencji MIT.
IncidentRelay przyjmuje zdarzenia z Prometheus Alertmanager, Grafana Alerting, Zabbix, Sentry, LibreNMS, RMON, AWS SNS/CloudWatch, Datadog, Uptime Kuma i dowolnych webhooków. Po normalizacji zdarzenie jest łączone z usługą, zespołem i rotacją, stosuje się do niego reguły routingu i polityki eskalacji, a następnie powiadomienie jest wysyłane do aktualnie dyżurującego. Obsługiwane są Mattermost, Slack, Telegram, Discord, Microsoft Teams, e-mail, webhooki, powiadomienia przeglądarkowe/PWA oraz dostawcy połączeń głosowych.
Główną nowością wersji 2.0 jest mechanizm Orkiestracji Zdarzeń, który zapewnia oddzielną warstwę przetwarzania zdarzeń pomiędzy przychodzącymi integracjami a cyklem życia alertu. Główne zmiany:
- Dodano wizualny edytor reguł orkiestracji. Reguły mogą być stosowane globalnie lub dla pojedynczej usługi, łączone w zagnieżdżone grupy warunków oraz kolejno zmieniać priorytet, poziom ważności, etykiety, zespół, trasę, sposób grupowania, polityki powiadamiania i eskalacji;
- Zaimplementowano działania do tłumienia, odrzucania i wstrzymywania przetwarzania zdarzeń, ekstrakcji wartości za pomocą wyrażeń regularnych i JSON Path, dzielenia ciągów, tworzenia zmiennych oraz konwersji wartości;
- Konfiguracja orkiestracji została podzielona na edytowalne robocze wersje i niezmienne opublikowane wersje. Obsługiwane są weryfikacja konfiguracji, publikacja, przywracanie wcześniejszej wersji oraz dodawanie komentarzy do zmian;
- Przewidziano tryby disabled, shadow i active. W trybie shadow wyniki wykonania reguł są zachowywane do analizy, ale nie wpływają na rzeczywisty routing. W okresie przejściowym dostępne są tryby zgodności legacy, hybrid i orchestration;
- Dodano narzędzia do symulacji i odtwarzania zdarzeń. Pozwalają one na testowanie reguł na znormalizowanym zdarzeniu lub początkowym ładunku integracyjnym bez generowania realnych alertów. Do analizy wyników dostępne są śledzenie wykonania, dane Explain oraz metryki trybu cienia;
- Wdrażane są ponownie używalne działania webhook, które są wykonywane asynchronicznie po przetworzeniu zdarzenia. Nagłówki są przechowywane w postaci zaszyfrowanej, tajemnice są ukrywane w API i logach, a dostęp do prywatnych sieci jest domyślnie zablokowany. Można konfigurować timeouty, ponowne próby i listę dozwolonych adresów wewnętrznych;
- Dodano integrację z Uptime Kuma, która przyjmuje standardowe komunikaty webhook o stanie monitorów. Wdrożono normalizację stanów UP i DOWN, określanie ważności, przetwarzanie tagów oraz nowy typ przychodzącej trasy uptime_kuma;
- Dla silences i okien planowanej pracy pojawiły się parametry apply_to_existing i reactivate_on_end. Pierwszy pozwala na zastosowanie tłumienia do już otwartych alertów, a drugi określa, czy należy wznowić ich przetwarzanie po zakończeniu okresu tłumienia. Powiadomienia, przypomnienia i łańcuchy eskalacji są wstrzymywane i wznawiane;
- Dla osobistych tokenów API wprowadzono oddzielne uprawnienia do odczytu i modyfikacji grup, zespołów, użytkowników, tras, kanałów, usług, rotacji, polityk, okien serwisowych, heartbeat-checków, SSO i orkiestracji. Stare zgrupowane uprawnienia resources:read, resources:write i * są zachowane dla zapewnienia kompatybilności wstecznej;
- Dodano interfejs dziennika audytu z filtrowaniem i paginacją. W dzienniku rejestrowane są operacje z zakresu orkiestracji, działań webhook, silences i okien planowanej pracy, przy czym poufne wartości są usuwane z wyświetlanych danych;
- W interfejsie webowym pojawił się ciemny motyw oraz możliwość dostosowywania języka i wyglądu. Dodano francuską lokalizację, rozszerzono tłumaczenia sekcji orkiestracji i obsługi, poprawiono edycję reguł mapowania grup SSO;
- Poprawiono działanie heartbeat-checków: wyeliminowano ponowne generowanie zdarzeń o upływie terminu, przywrócenie sygnału prawidłowo zamyka alert i wysyła powiadomienie o rozwiązaniu problemu, znormalizowano wyświetlanie znaczników czasowych;
- Przygotowano dokumentację do wdrażania w Kubernetes za pomocą Helm. Do chartu Helm dodano osobny handler dla Slack Socket Mode, niezbędny do działania interaktywnych przycisków potwierdzających i zamykających incydenty;
- Wzmocniono ochronę wychodzących zapytań HTTP, wyrażeń regularnych oraz danych poufnych, centralizując przetwarzanie UTC i stref czasowych, przemyślano obliczenia harmonogramów rotacji oraz rozszerzono pokrycie automatycznymi testami.
Przed aktualizacją zaleca się utworzenie kopii zapasowej bazy danych. Niezbędne zmiany w schemacie są realizowane standardowym mechanizmem migracji IncidentRelay. Dla stopniowego wdrażania Event Orchestration, deweloperzy zalecają najpierw korzystanie z trybów shadow i hybrid, sprawdzenie śladów wykonania reguł, a dopiero później przełączenie orkiestracji w tryb active.
Źródło: opennet.ru
