Projektowanie nowoczesnych systemów alertingowych dla zespołów zajmujących się obserwowalnością

System alarmowy to system reakcji, a nie system hałasu.

Page content

Alerting jest zbyt często opisywane jako funkcja monitoringu. Takie ujęcie jest wygodne, ale ukrywa prawdziwy problem.

Metryka nie budzi nikogo. Wykres nie tworzy poczucia pilności. Pulpit nie przypisuje odpowiedzialności. Powiadomienie (alert) robi wszystkie trzy rzeczy, jeśli system za nim stojący jest dobrze zaprojektowany, lub żadną z nich, jeśli projekt jest słaby.

Alerting Systems Design

Naszym celem jest zdefiniowanie alertingu jako systemu składającego się z reguł, trasowania, kontekstu, kanałów, ludzi i pętli zwrotnych.

To ujęcie ma znaczenie, ponieważ nowoczesny alerting to już nie pojedynczy próg związany z pingerem. Prometheus oddziela reguły alertingowe od Alertmanagera, gdzie obsługiwane są trasowanie, grupowanie, hamowanie (inhibition), cisze i odbiorcy. To rozdzielenie jest przydatne, ponieważ wykrywanie i dostarczanie to różne zagadnienia. Reguły alertingowe decydują, że coś jest nie w porządku. Zarządzanie alertami decyduje, kto powinien się tym zająć, jak często i przez jaki kanał.

Powiązane lektury:

Czym właściwie jest alert

Alert to nie każdy sygnał, który wydaje się interesujący.

Alert to sygnał, który wymaga działania.

Ta definicja wyklucza zaskakująco dużą część telemetrii. Logi to zapisy. Metryki to pomiary. Ścieżki (traces) to ślady wykonania. Systemy obserwowalności zbierają te sygnały, aby ludzie i narzędzia mogły zrozumieć zachowanie systemu. Alerting zaczyna się później, gdy pewien stan jest na tyle ważny, że powinien wywołać reakcję.

To jest granica, która utrzymuje zdrową obserwowalność.

  • Metryki odpowiadają na pytanie, co się zmieniło.
  • Logi odpowiadają na pytanie, co się stało.
  • Ścieżki odpowiadają na pytanie, gdzie nagromadziły się czas i błędy.
  • Alerty odpowiadają na pytanie, kto musi działać teraz.

Jeśli wszystko staje się alertem, to nic nie jest alertem. Wynikiem nie jest pełne pokrycie, lecz zamieszanie.

Alerting jako system

Praktyczny cykl życia alertu wygląda następująco:

sygnał -> reguła -> alert -> trasowanie -> kanał -> człowiek lub automatyzacja -> działanie -> zwrot

Ten cykl jest bardziej użyteczny niż prosty diagram progowy, ponieważ odzwierciedla to, co robią prawdziwe systemy.

Sygnał

Punktem wyjścia jest telemetria. W większości stosów oznacza to metryki, logi, ścieżki (traces) lub pochodzące z nich sprawdzenia stanu zdrowia. OpenTelemetry formalizuje metryki, logi i ścieżki jako oddzielne sygnały, co jest pomocne, ponieważ alerty powinny być wyprowadzane z właściwego sygnału dla danego zadania.

Reguła

Reguła przekształca surową telemetrię w stan, który ma znaczenie. Może to być oparte o próg, tempo, anomalie lub SLO.

Alert

Reguła tworzy zdarzenie alertu z etykietami, adnotacjami i kontekstem. Tutaj powinną stać się jawne: powaga, usługa, zespół i środowisko.

Trasowanie

Trasowanie decyduje, gdzie alert trafi. W Alertmanagerze obejmuje to grupowanie, hamowanie, cisze i odbiorców powiadomień. To jest moment, w którym alerting staje się operacyjny, a nie tylko techniczny.

Kanał

Ten sam alert może należeć do różnych kanałów w zależności od pilności i odbiorcy.

  • Pinger dla natychmiastowej reakcji
  • Czat do koordynacji
  • E-mail dla podsumowań o niskim priorytecie
  • System biletowy lub przepływów pracy do zaplanowanego podążania

Człowiek lub automatyzacja

Niektóre alerty wymagają ludzkiego osądu. Inne powinny wywołać automatyczną naprawę. Wiele potrzebuje obu.

Działanie

Celem alertingu nie jest widoczność. Jest to działanie. Działanie może być restartem, cofnięciem zmian (rollback), przejęciem (failover), badaniem lub po prostu potwierdzeniem.

Zwrot (Feedback)

Ostatni krok jest najbardziej zaniedbywany. Dobre zespoły przeglądają, które alerty były użyteczne, hałaśliwe, spóźnione, źle skierowane lub brakujące. Bez tej pętli alerting ulega degradacji.

Różnica między obserwowalnością a alertingiem

Alerting należy do obszaru obserwowalności, ale nie powinien go pochłaniać. Dla szerszego fundamentu zobacz Obserwowalność: Monitorowanie, Metryki, Prometheus i Grafana – Przewodnik.

Obserwowalność pomaga ludziom badać systemy. Alerting przerywa pracę ludzi. To rozróżnienie jest niewygodne, ale konieczne.

Użyteczny sposób myślenia o tej granicy:

  • Obserwowalność to szerokość.
  • Alerting to selektywność.

Chcesz bogatej telemetrii i selektywnych przerwań. Typowym błędem jest odwrotność: uboga telemetria i agresywne alerty.

Dlatego alerting powinien opierać się na starannie dobranych objawach i wpływie na biznes, a nie na każdej metryce, która wygląda nietypowo. Przeładowany węzeł, wolna zależność lub podwyższona stopa błędów mogą mieć znaczenie, ale tylko wtedy, gdy implikują wpływ lub wymagają interwencji.

Główne zasady dobrego projektowania alertów

Możliwość działania (Actionability)

Każdy alert powinien jasno odpowiadać na jedno pytanie:

Co powinno się stać dalej?

Jeśli nie ma jasnego następnego kroku, alert prawdopodobnie powinien trafić do pulpitu, raportu lub kolejki zgłoszeń, a nie do kanału przerywającego.

Możliwość działania zazwyczaj oznacza, że alert zawiera:

  • co jest nie tak
  • jak poważny jest problem
  • gdzie się dzieje
  • co sprawdzić dalej
  • instrukcję (runbook) lub link do kontekstu badania

Odpowiedzialność (Ownership)

Alert bez właściciela to skarga, a nie mechanizm kontroli.

Każdy alert powinien mieć jasnego właściciela w momencie projektowania, a nie podczas incydentu. Właścicielem może być zespół, rotacja lub grupa usług, ale musi to być jawne.

Kontekst

Alert powinien skracać czas zrozumienia, a nie tylko czas powiadomienia.

Użyteczny kontekst często obejmuje:

  • nazwę usługi
  • środowisko
  • region lub klastr
  • aktualną wartość i próg
  • niedawny trend
  • prawdopodobny promień rażenia
  • powiązane pulpity lub ścieżki
  • link do instrukcji (runbook)

Selektywność

Najlepszy alert to zazwyczaj nie ten możliwie najwcześniejszy. Jest to ten najwcześniejszy, któremu można ufać.

Dlatego długoterminowe alerty o wysokim sygnale często wypadają lepiej niż żądne, ale hałaśliwe progi.

Odporność na hałas

Hałas to nie tylko objętość. To także powtarzalność i niejednoznaczność.

Dobrze zaprojektowany system alertingu tłumi zduplikowane objawy, gdy większa przyczyna źródłowa jest już znana, grupuje powiązane alerty i kieruje je przez najmniejszą rozsądną liczbę kanałów.

Taksonomia alertów, która naprawdę pomaga

Prosta taksonomia jest zazwyczaj lepsza niż bystra.

Krytyczne

Wymagana jest natychmiastowa reakcja człowieka. To teren pingerów. Alerty krytyczne powinny być rzadkie, silnie przypisane i ściśle powiązane z wpływem na użytkownika lub biznes.

Wysokie

Pilne, ale niekoniecznie wymagające budzenia kogoś teraz. Te często należą do czatu zespołowego i kanałów incydentów w godzinach pracy lub do przepływu pracy na-call, który zaczyna się od triażu.

Informacyjne

Użyteczne do świadomości, monitorowania trendów lub zaplanowanego podążania. Te nie należą do tej samej ścieżki co pilne incydenty.

Powszechnym błędem jest wprowadzanie zbyt wielu poziomów powagi. W praktyce zespoły często działają lepiej z małym modelem, który czysto mapuje oczekiwania co do reakcji i kanały.

Zmęczenie alertami to problem projektowy

Zmęczenie alertami jest często opisywane jako problem ludzi. Nie jest. To głównie problem systemów.

Ludzie ulegają desensytyzacji, gdy otrzymują zbyt wiele powiadomień, które nie mają znaczenia, powtarzają się lub nie mają jasnego działania. Złe systemy alertingowe tworzą złe ludzkie zachowania.

Typowe przyczyny:

  • każdy objaw staje się alertem
  • brak grupowania podczas dużych awarii
  • brak reguł hamowania
  • słaba odpowiedzialność
  • kanały mieszane według pilności
  • progi alertów oderwane od wpływu na użytkownika
  • brak pętli przeglądu po incydentach

Nie naprawisz tego lepszym dźwiękiem dzwonka. Naprawisz to projektowaniem.

Strategie reguł, które mają znaczenie

Alerty oparte na progach

Są to najprostsze i nadal użyteczne.

Przykłady:

  • CPU powyżej utrzymującego się progu
  • głębokość kolejki powyżej limitu
  • stopa błędów powyżej progu

Działają najlepiej, gdy:

  • sygnał jest stabilny
  • próg ma znaczenie
  • zespół rozumie normalny zakres

Działają źle, gdy:

  • baza jest wysoce zmienna
  • metryka jest tylko słabo powiązana z wpływem

Alerty oparte na tempie (Rate based)

Skupiają się na zmianie w czasie, a nie na wartości bezwzględnej.

Przykłady:

  • stopa błędów gwałtownie wzrosła w ciągu 10 minut
  • wzrost zaległości przekroczył normalny trend

Są często lepsze niż statyczne progi dla dynamicznych systemów.

Alerty oparte na objawach

Skupiają się na tym, co doświadcza użytkownik.

Przykłady:

  • podwyższone opóźnienia żądań na krawędzi (edge)
  • wzrost nieudanych finalizacji zakupów
  • spadek wskaźnika udanych logowań

Ten styl bywa bardziej odporny, ponieważ koresponduje z rzeczywistym zdrowiem usługi.

Alerty oparte na SLO

Alerting napędzany przez SLO to jeden z najbardziej praktycznych sposobów na zmniejszenie hałasu. Zamiast alertować na każdą złą minutę, skupia się na spaleniu budżetu błędów i utrzymującym się wpływie na użytkowników. Jest trudniejszy do zaprojektowania niż próg, ale zazwyczaj bardziej zgodny z rzeczywistością.

Opiniowany pogląd: wiele zespołów próbuje od razu wskoczyć w alerting oparty na SLO, zanim mają stabilną odpowiedzialność za usługę lub podstawową dyscyplinę trasowania. Ta sekwencja zazwyczaj rozczarowuje. Silne podstawy wygrywają z modną matematyką.

Trasowanie to miejsce, gdzie alerting staje się prawdziwy

Trasowanie nie jest detalami implementacji. To centrum operacyjnego alertingu.

Prometheus Alertmanager czyni to jawnym. Obsługuje grupowanie, usunięcie duplikatów, trasowanie, cisze i hamowanie przed dostarczeniem powiadomień do odbiorców, takich jak e-mail, PagerDuty, OpsGenie i platformy czatu. To jest dokładnie właściwe rozdzielenie. Wykrywanie bez trasowania to surowy sygnał. Trasowanie zamienia sygnał w reakcję.

Praktyczny model trasowania może opierać się na:

  • powadze
  • odpowiedzialności za usługę
  • środowisku
  • porze dnia
  • oknach konserwacyjnych
  • stanie incydentu
  • promieniu rażenia

Grupowanie

Grupowanie łączy podobne alerty w mniejszą liczbę powiadomień. To ma znaczenie podczas kaskadowych awarii, gdzie jedna przyczyna źródłowa tworzy setki objawów.

Grupowanie nie chodzi o ukrywanie szczegółów. Chodzi o ochronę uwagi ludzi.

Hamowanie (Inhibition)

Hamowanie tłumi drugorzędowe alerty, gdy wyższego poziomu przyczyna źródłowa jest już aktywna.

Jeśli cały klastr jest niedostępny, osoba reagująca nie potrzebuje powodzi powiadomień specyficznych dla usług, które wszystkie pośrednio mówią to samo.

Cisze (Silences)

Cisze to tymczasowe wyciszenie z jasnym zakresem i granicami czasowymi. Są użyteczne podczas konserwacji, migracji i znanych incydentów.

Cisza to nie naprawa. To tymczasowa kontrola operacyjna.

Wybór właściwego kanału alertu

Kanał powinien pasować do kształtu reakcji.

Systemy pagerów

Paging służy do pilnej reakcji. Jeśli alert musi kogoś obudzić, nie powinien zaczynać się w pokoju czatu.

Platformy czatu

Czat jest silny w współpracy, triażu i przepływach pracy z udziałem człowieka. To tutaj wzorce integracji Slacka dla alertów i przepływów pracy oraz wzorce integracji Discorda dla alertów i pętli sterowania stają się użytecznymi interfejsami systemowymi, a nie prostymi zlewniami wiadomości.

Używaj czatu, gdy:

  • zespół potrzebuje wspólnego kontekstu
  • reakcja jest wspólna
  • przycisk, polecenie lub reakcja mogą wywołać kontrolowane działanie
  • pilność jest wysoka, ale niekoniecznie warta pagera

E-mail

E-mail z natury ma niską pilność. Jest w porządku dla podsumowań, trendów i podążania. Jest słaby w reakcji na incydenty.

Pulpity (Dashboards)

Pulpity służą do eksploracji, nie do przerywania. Uzupełniają alerty. Nie zastępują ich.

Alerting z ludzkiem w pętli

Dobry alert nie zawsze kończy się potwierdzeniem. Czasem rozpoczyna przepływ pracy.

To jest miejsce, gdzie platformy czatu stają się interesujące. Alert może wejść do Slacka lub Discorda z kontekstem i powierzchnią interakcji. Człowiek może potwierdzić, zatwierdzić, stłumić, eskalować lub wywołać bezpieczne działanie. To zamienia alerting z nadawania w kontrolowaną interakcję.

Ten wzorzec należy do przecięcia obserwowalności i wzorców integracji:

  • obserwowalność decyduje, co jest warte uwidocznienia
  • wzorce integracji decydują, jak ludzie reagują przez narzędzia

Ta strona powinna zatem linkować do artykułów o platformach czatu, a nie absorbować je.

Co powinno znaleźć się w wiadomości alertu

Zaskakująco duża liczba problemów z alertingiem to problemy projektowania wiadomości.

Użyteczna wiadomość alertu zazwyczaj zawiera:

  • krótkie stwierdzenie problemu
  • usługę i środowisko
  • powagę
  • objaw i wartość
  • wpływ na użytkownika lub system
  • pierwszy krok badania
  • link do instrukcji (runbook) lub pulpitu

Słaby alert mówi:

wykryto wysokie opóźnienie

Silniejszy alert mówi:

opóźnienie finalizacji zakupów p95 powyżej 1.8s przez 15m w prod-eu
wpływ: finalizacja zakupów przez użytkownika jest pogorszona
następny krok: zbadaj zależność od płatności upstream i panel budżetu błędów
runbook: [[siteurl]]/runbooks/checkout-latency

Ta różnica nie jest kosmetyczna. Jest operacyjna.

Antywzorce, które się powtarzają

Alertowanie na wszystko, co mierzalne

To najszybsza droga do hałasu. Obserwowalność kwitnie dzięki szerokości. Alerting nie.

Mieszanie poziomów pilności w jednym kanale

Jeśli strony krytyczne, alerty informacyjne i luźne dyskusje dzielą tę samą ścieżkę, osoby reagujące uczą się złych nawyków.

Brak odpowiedzialności w etykietach lub trasowaniu

Alert dociera do człowieka, ale nie do właściwego człowieka.

Brak usuwania duplikatów lub grupowania

Ten sam incydent produkuje dziesiątki powiadomień. Ludzie przestają ufać systemowi.

Alerty bez przeglądu zwrotu (feedback)

System nadal wysyła te same złe alerty, ponieważ nikt nie zamyka pętli projektowej.

Alerty, które wymagają czytania kodu, aby je zrozumieć

Osoba na-call potrzebuje następnego kroku, nie zagadki.

Praktyczny widok architektury

Minimalny, ale realistyczny model:

metryki logi ścieżki
        |
        v
   reguły wykrywania
        |
        v
   menadżer alertów
   - grupowanie
   - usuwanie duplikatów
   - hamowanie
   - cisze
   - trasowanie
        |
        v
odbiorcy i kanały
- pager
- czat
- e-mail
- przepływ pracy
        |
        v
człowiek lub automatyzacja
        |
        v
naprawa i przegląd

Ten model skaluje się, ponieważ rozdziela zagadnienia. Zgoduje się też z tym, w jaki sposób nowoczesne stosy alertingowe są w rzeczywistości budowane.

Podsumowanie

Alerting nie jest skutkiem ubocznym monitoringu. To jest system reakcji zbudowany na podstawie obserwowalności.

Silna wersja alertingu jest selektywna, trasowana, kontekstowa i poddająca się przeglądowi. Skraca czas do działania bez powodzi uwagi ludzkiej. Używa grupowania, hamowania, ciszy i właściwego wyboru kanału, aby zachować zaufanie. I traktuje platformy czatu jako interfejsy reakcji, a nie jako zamienniki strategii.