Komu dzwoni PagerDuty?

Chyba każdy z nas, szarych użytkowników Internetu czy wszelkiego typu aplikacji kojarzy niepozorne okienko informujące o błędzie. Tak… komunikaty o błędach, czyli to co dopada nas w najmniej oczekiwanych momentach.

  • „Usługa jest chwilowo niedostępna. Prosimy spróbować później.”
  • „Wystąpił problem podczas (…)”
  • „Program nie może się uruchomić ponieważ (…)”
  • „Something went wrong :)”

Nie wiem jak u Was, ale mi w takich przypadkach nasuwają się na usta przeróżne zwroty:

  • „Kto to pisał?!”
  • „Jak można coś takiego dać użytkownikom?!”
  • „Czy ktoś w ogóle pracuje nad rozwiązaniem tego problemu?!”

Jak wygląda reagowanie na błędy, które dotykają użytkowników? To oczywiście zależy od różnych czynników, kilka z nich to:

  • rodzaj błędu, który wystąpił;
  • złożoność aplikacji;
  • liczba użytkowników dotkniętych awarią;
  • straty finansowe i wizerunkowe spowodowane niedziałającą funkcjonalnością;

Wyobraźmy sobie, że w pewnym sklepie internetowym jest wyjątkowa, nocna wyprzedaż. Dodatkowo jest to jedyny sklep, w którym udało nam się znaleźć bluzę w odpowiednim rozmiarze. 

Zamówienie jest gotowe, wszystkie pola zostały poprawnie uzupełnione. Jeszcze tylko jeden, ostatni krok którym jest płatność i… naszym oczom ukazuje się napis „Przepraszamy. Wybrana usługa jest chwilowo niedostępna. Prosimy spróbować później.” No nic. Zostaje jedynie zaparzyć sobie melisy i wrócić za chwilę. Może za jakiś czas to zostanie naprawione, przecież tu chodzi o nieudaną płatność w jednym z największych sklepów odzieżowych w naszym kraju… 

Bardzo możliwe, że w czasie gdy Tobie zaczyna się zagotowywać woda na melisę ktoś inny został wybudzony z rewelacyjnego snu przez dźwięk, który mógłby zbudzić umarłego. 

Zaspany Zenon, nasz cichy bohater, sięga po telefon, który przed chwilą dał znać że coś złego dzieje się ze sklepem internetowym. Jako jedna z osób, która tego wieczora dba aby użytkownicy aplikacji mieli ciągły dostęp do wszystkich usług, Zaspany Zenon wyciąga laptopa i zaczyna procesować zaistniały incydent. Ma nadzieję, że tej nocy PagerDuty dało o sobie znać tylko ten jeden raz. 

Czym jest PagerDuty?

Jest to platforma umożliwiająca zarządzanie incydentami, czyli nieprzewidzianymi problemami produkcyjnymi, poprzez wprowadzenie m. in. takich funkcjonalności jak:

  • wysyłanie automatycznych powiadomień zawierających zdefiniowany opis problemu;
  • wprowadzenie grafiku osób, które mają otrzymywać alarmy;
  • zdefiniowanie ścieżki eskalacji bazującej dla danego typy błędu.

To dzięki temu narzędziu, jesteśmy w stanie dowiedzieć się praktycznie od razu, że coś złego dzieje się z naszą aplikacją. Z biznesowego punktu widzenia, im szybsza reakcja, tym mniejsze straty finansowe. 

Wszystko w PagerDuty, kręci się wokół serwisów (ang. services), które reprezentują wycinek aplikacji, który jest zarządzany przez dany zespół. Może to być część wspólnej infrastruktury, cały mikroserwis czy też mały, tyci komponent, odpowiadający za daną usługę (np. realizowanie płatności). 

Zastanawiacie się pewnie, jak to jest, że dla danego serwisu generowane są alarmy?

Incydenty nie mogą być ręcznie tworzone w PagerDuty, dlatego też każdy serwis, posiada integrację ze źródłem zdarzeń, które następnie uruchamiają alarmy. Każdy alarm jest łączony z danym incydentem – dzięki temu można mieć kilka alarmów, które składają się na jeden incydent. Istnieje wiele źródeł, z których mogą być pozyskiwane dane do generowania alarmów. Mogą być to np. Kibana, Grafana, Prometheus, czy też… najzwyklejsze przesłanie maila. 

Zachęcam do zapoznania się z oficjalną stroną wsparcia PagerDuty, która w bardzo przystępny sposób opisuje interfejs użytkownika, a co za tym idzie miejsca związane z wszelką konfiguracją. Dodatkowo polecam w celach testowych utworzyć darmowe konto na omawianej w tym artykule platformie i po niej poklikać. Będziecie mogli sami utworzyć serwis, połączyć go z integracją, danym zespołem a co za tym idzie – konkretnym użytkownikiem, który będzie otrzymywał powiadomienia o zaistniałych incydentach. 

W celu założenia konta testowego, należy wejść na stronę logowania i wybrać Try for free i kierować się kolejnymi krokami. Konto testowe, jest ważne przez 14 dni, dlatego warto wycisnąć z niego ile się da 🙂 

Panel logowania PagerDuty

PagerDuty REST API 

Platforma poza możliwością wyklikania wszystkich ustawień na stronie udostępnia również API RESTowe! Tak, można wprowadzać zmiany bezpośrednio z kodu – wszelkie szczegóły i przykłady użycia możecie znaleźć tutaj: https://developer.pagerduty.com/api-reference/ .

REST API daje dostęp do konta PD i zmian w konfiguracji bez konieczności wykonywania wielu zmian na stronie, co czasami może być uciążliwe. Przykładem może być np. wprowadzenie grafiku na cały miesiąc dla danego zespołu, w którym jest wiele osób. Przypisywanie każdej osoby do danego dnia może trochę potrwać, więc jeśli można coś zautomatyzować to dlaczego z tego nie skorzystać?

Kilkoma ciekawszymi funkcjami dostępnymi przez REST API jest:

  • Zarządzanie politykami eskalacji – tworzenie, edytowanie, listowanie, usuwanie;
  • Zarządzanie „Maintenance Window” – tworzenie, edytowanie, listowanie, usuwanie; Maintenance Window jest czasem, w którym dla danego serwisu nie są tworzone incydenty;
  • Zarządzanie grafikiem;
  • Zarządzanie serwisami…

Możliwości wykorzystania API jest sporo, jednak należy pamiętać, że nie służy ono do przesyłania zdarzeń generujących alarmy – do tego służy Events API.

PagerDuty & Terraform, czyli Infrastructure as Code

Ha! W końcu tu dotarliśmy. Część z Was pewnie czekała na to po przeczytaniu ostatniego postu o Terraformie, gdzie PagerDuty jest wymienione jako jeden z providerów, który może zostać użyty przy generowaniu infrastruktury za pomocą kodu. 

Dzięki temu możemy zapomnieć (no prawie) o wyklikiwaniu jakiejkolwiek konfiguracji przez stronę internetową. 

Całą przystępną, pełną przykładów i krótką (!) dokumentację możecie znaleźć tutaj: https://registry.terraform.io/providers/PagerDuty/pagerduty/latest/docs 

Szczerze, bazując na swoim kilkuletnim doświadczeniu, mogę powiedzieć, że na palcach jednej ręki mogę policzyć tak dobrze przygotowane dokumentacje jak te dla PagerDuty.

Nie odrzucają, a wręcz zachęcają, żeby samemu coś stworzyć. 

Pewnie część z Was myśli „Co to za blog techniczny, na którym nie ma linijki kodu?” 

W następnym poście będzie sporo kodu, dlatego też ostatnimi postami chciałam wprowadzić Was w to, co będziemy tworzyć w przyszłości. Wiecie już czym jest Terraform i dlaczego warto z niego korzystać. Tak samo jest z PagerDuty – macie już ogólne pojęcie, czym ono jest, po co się je wykorzystuje. Jeszcze jak przejrzycie linki, które zamieściłam w obu artykułach to będzie naprawdę super. Niestety w naszej branży umiejętność czytania dokumentacji jest równie istotna jak pisanie dobrego kodu. 

Co zrobimy następnym razem? Dla utworzonego konta PagerDuty za pomocą Terraform wygenerujemy i prześlemy całą konfigurację. Następnie, wywołamy incydent, o którym poinformuje nas nasz własny telefon. 

Nie każdy bohater nosi pelerynę

Jak widzicie, o każdej porze dnia i nocy, w każdym miejscu na świecie może dochodzić do incydentów produkcyjnych, które wywołują powiadomienia. Dla nas często to jest jeden komunikat o błędzie na stronie, dodatkowe okienko do kliknięcia w aplikacji. Dla innych może być to nieprzespana noc, wypełniona pracą i stresem. Awarii mogą ulegać wszelkiego typu systemy: rozrywkowe, bankowe, medyczne. Dlatego pomyślmy czasem o Zaspanym Zenonie i o tym, że pracując w IT, możemy znaleźć się pewnego dnia na jego miejscu. 

Parafrazując klasyka: 

Przeto nigdy nie pytaj, komu dzwoni PagerDuty: dzwoni ono tobie.