Observability vs. monitoring | Linux Polska blog

Elastic Stack Splunk

Observability vs. monitoring

10/10/2022
Podziel się

Obecnie, wykrycie oraz naprawa awarii występujących w złożonych systemach staje się praktycznie niemożliwe bez wykorzystania odpowiednich narzędzi. W tej sytuacji szczególnie warto zwrócić uwagę na observability (obserwowalność), często błędnie utożsamianą z monitoringiem, która umożliwia inspekcję i zrozumienie stosu aplikacji. Czym jest obserwowalność i czym różni się od monitorowania? Jak sprawić, aby system był obserwowalny? Wyjaśniamy w artykule.

Spis treści:

Czym właściwie jest observability i monitoring

Observability jest zdolnością zrozumienia wewnętrznego stanu systemów za pomocą generowanych przez nie danych. Koncept ten jest wykorzystywany do analizy działania środowiska i wykorzystania zdobytych informacji – celem jest wykrycie, zrozumienie i rozwiązanie występujących w nim problemów.

Implementacja tej koncepcji oparta jest na trzech filarach. Są to:

  • logi – tekstowe przedstawienie zdarzeń zachodzących w danym środowisku w postaci tekstu zawierającego najważniejsze informacje o danym incydencie (m.in. czasie wystąpienia czy opisie danego zdarzenia); dostarczają one kontekstu dla zmian zachodzących w obserwowalnym systemie;
  • metryki – opisy zachowań komponentów systemów przedstawionych w formie danych numerycznych; dzięki nim osiągamy kompleksowy przekrój stanu i wydajności systemu;
  • trace’y – ścieżki przebyte przez dane wywołane żądaniem; są one używane do śledzenia przepływu informacji w infrastrukturze obserwowanych komponentów; dane w ten sposób uzyskane są wykorzystywane do kontrolowania poprawnych relacji między usługami wchodzącymi w skład danego środowiska.

Monitoring jest procesem zbierania i analizy danych z systemu w celu pomiaru jego stanu i wydajności. Podejście to opiera się przede wszystkim na metrykach, choć w implementacji tej koncepcji wykorzystywane są również logi jako dodatkowe odizolowane źródło informacji.

Różnice między observability, a monitoringiem

Dla osób niezaznajomionych z omawianymi terminami mogą one wydawać się bardzo zbliżone, jeśli nie identyczne. Stwierdzenie to kryje w sobie trochę prawdy. Obydwa koncepty są ze sobą bardzo silnie powiązane – korzystają z informacji generowanych przez system i służą odkryciu zaistniałych problemów. Jednakże występują pomiędzy nimi istotne różnice pod względem wykorzystywanych mechanizmów, które wykluczają zamienne używanie tych terminów.

Monitoring skupiony jest na zbieraniu danych. Narzędzia observability oprócz gromadzenia niezbędnych informacji, dodatkowo przeprowadzają korelacje na danych, a także odnajdują wzorce i anomalie w nich zawarte.

W przypadku wystąpienia problemu monitoring informuje jedynie, gdzie wystąpił błąd. Dzięki observability możliwe jest również ustalenie przyczyny błędu. Dobrą analogią tej sytuacji jest myślenie o monitoringu jak o tablicy rozdzielczej w samochodzie. Informuje ona o problemach z autem poprzez zapalenie odpowiedniej kontrolki, lecz nie daje nam żadnych informacji o tym, dlaczego awaria wystąpiła. Natomiast observability jest niczym komputer diagnostyczny mechanika – dostarcza informacje o wystąpieniu i prawdopodobnej przyczynie błędu.

Co więcej, monitoring skupia się głównie na ograniczonym zakresie danych. Rozwiązanie to najlepiej sprawdza się w przypadku mniej skomplikowanych systemów, gdzie wpływ błędów na ich działanie jest dobrze rozpoznany.

Wraz z rozwojem środowiska coraz trudniej zlokalizować występujące błędy na podstawie ich efektów. W takiej sytuacji observability sprawdza się lepiej, gdyż zapewnia kompleksowy wgląd w działanie systemu oraz wspomnianą wcześniej interpretację danych.

Podsumowując, monitoring cechuję się reaktywnym podejściem do wykrywania problemów. Za jego pomocą nie jesteśmy w stanie wykryć nadchodzących awarii, bez dokładnej wiedzy o systemie – otrzymujemy jedynie informacje o aktualnych problemach w badanym środowisku.

Natomiast za pomocą observability jesteśmy w stanie wykryć potencjalne zagrożenia (używając analizy pobranych danych) i proaktywnie je wyeliminować, zanim wpłyną na działanie systemu.

Observability vs. monitoring – co wybrać?

Pomimo, iż dyskusje dotyczące pojęć observability i monitoringu często przedstawiane są jako kontrast dwóch procesów, nie należy o nich myśleć jako o dwóch oddzielnych bytach, lecz należy je traktować jako parę dwóch dopełniających się idei. Observability dodaje kontekstu do danych zebranych za pomocą monitoringu, a monitoring zezwala zagadnieniu observability na poprawne działanie dla danego systemu. Wykorzystując oba te zagadnienia otrzymujemy rozległy wgląd w monitorowaną infrastrukturę umożliwiający na szybkie i efektywne znalezienie błędu oraz jego przyczyny.

Wdrożenie observability i monitoringu – od czego zacząć?

Rozpoczynając wdrożenie monitoringu i observability warto przemyśleć następujące kwestie:

  • cele biznesowe i deweloperskie;
  • skalę oraz sposób budowy monitorowanego systemu;
  • integrację narzędzi observability z innym usługami;
  • wykorzystanie uczenia maszynowego (machine learning) do analizy otrzymanych informacji;
  • trendy i możliwe kierunki rozwoju naszego środowiska w przyszłości;
  • kluczowe funkcjonalności.

Powyższe informacje są kluczowe w procesie wyboru narzędzi najlepiej dopasowanych do potrzeb i wymagań naszej implementacji.

Jakie cechy musi posiadać system, aby był obserwowalny?

Przed wyborem odpowiednich narzędzi zadbać o to, aby system spełniał określone kryteria, które pozwolą na jego obserwowalność.

Jednolitość

Jedną z najważniejszych, a zarazem najbardziej podstawowych właściwości systemów, które są obserwowalne, jest ich jednolitość. Polega ona na traktowaniu całego środowiska jako jednego żywego organizmu w przeciwieństwie do podejścia polegającego na skupieniu się na pojedynczych komponentach znajdujących się w danym środowisku.

Dostęp do danych

Kolejnym ważnym elementem observability jest zapewnienie dostępu do danych zawartych w filarach observability: logach, metrykach oraz trace’ach. Dodatkowo, aby zapewnić działanie observability, należy pobierać z systemu metryki o wysokim poziomie mocy zbioru. W celu zmniejszenia ryzyka przeładowania danymi oraz zwiększenia wydajności dobrą praktyką jest limitowanie alertowania do niezbędnych metryk. Podobne ograniczenia powinny dotknąć również zbierane logi. Proces zbierania logów powinien skupiać się na perspektywie żądania i ścieżki, jaką pokonała ona w środowisku.

Automatyczne odkrywanie komponentów

Inną cechą, która umożliwia observability, jest automatyczne odkrywanie komponentów. Służy ono zapewnieniu maksymalnej dostępności danych w systemie przy minimalnym wysiłku.

Otoczenie observability

Wreszcie, żeby zapewnić obserwowalność systemu, oprócz zmian w nim samym, należy również zmienić praktyki, które go otaczają. W celu nadążania za szybko zmieniającymi się systemami niezbędne może być np. wprowadzenie w organizacji filozofii Agile oraz DevOps.

Observability – jakie narzędzia wybrać?

Posiadając już informacje na temat celów, które chcemy uzyskać oraz środowisko przygotowane do wdrożenia możemy zadecydować o wyborze optymalnego narzędzia.

Oprogramowanie związane z zagadnieniem observability można podzielić na dwie kategorie:

  • narzędzia observability,
  • platformy observability.

Narzędzia observability zapewniają wgląd w działanie pojedynczych komponentów systemu. Z powodu braku jednorodnego źródła danych oraz rzadkiej komunikacji między elementami użytkownicy pracujący za pomocą tych narzędzi muszą opierać się na niekompletnych danych.

Rozwiązaniem tych problemów może być zastosowanie platform observability. Platformy stanowią efektywniejsze zaimplementowanie observability w środowisku. Pojedyncza platforma, która pobiera dane w postaci trzech filarów observability jest w stanie objąć cały system organizacji danej korporacji. Centralne umieszczenie danych powoduje zwiększenie efektywności automatyzacji, a także skrócenie czasu odpowiedzi w przypadku błędu. Co więcej, platformy te są często wyposażone w dodatkowe narzędzia do analizy oraz interpretacji danych.

Z powodu ciągłego rozwoju systemów informatycznych i odejściu od idei tworzenia aplikacji monolitycznych na rzecz systemów rozproszonych, znaczna część narzędzi observability została wyparta przez funkcjonalności oferowane przez platformy. Dlatego często można się spotkać z tym, że termin ‘narzędzia observability’ jest używany zamiennie do określenia ‘platformy observability’.

Jak wdrożyć observability do systemu?

Pierwszym krokiem wdrożenia jest wybór odpowiedniej platformy, spełniającej postawione wcześniej cele. Kolejnym etapem jest implementacja platformy observability oraz gromadzenie danych zgodnych z trzema filarami observability. W ten sposób otrzymujemy wgląd w stan całego środowiska, który możemy wykorzystać w dalszych funkcjonalnościach. Ten aspekt jest szczególnie ważny, ponieważ nawet najmniejsza zmiana w mikrousłudze może wywołać efekty w skali całego środowiska. Finalną fazą wdrożenia jest umieszczenie stworzonej przez nas implementacji observability w procesie zarządzania incydentami. 

Jak przygotować zespół do pracy z observability

Wdrożenie observability nie kończy się w momencie gdy system staje się obserwowalny. Następnym krokiem w drodze do efektywnego korzystania z observability jest wyszkolenie personelu dedykowanego do jego obsługi.

Szkolenia

Warto pamiętać o rozwoju kompetencji za pomocą szkoleń dotyczących zagadnień i narzędzi monitoringu oraz observability.

Dostęp do środowiska testowego

Kolejnym ważnym elementem jest zapewnienie dostępu do środowiska testowego, na którym zespół mógłby praktycznie rozwijać swoje umiejętności bez zaburzania pracy systemu.

Kultura observability

Równie ważnym aspektem jest stworzenie kultury opartej na idei observability. Poziom skomplikowania systemów oraz funkcjonalności oferowanych przez platformy observability stale ewoluuje. Dlatego niezbędne jest motywowanie pracowników do ciągłego rozwoju. Rozwój ten może być motywowany zewnętrznie poprzez regularne szkolenia lub wewnętrznie poprzez docenianie indywidualnego postępu każdego z członków zespołu.

Z kulturą observability wiąże się zmiana myślenia zespołu z “co się stało” na “dlaczego to się przydarzyło”. Wynika z tego nowy sposób pracy skoncentrowany nie tylko na rozwiązywaniu problemów, lecz również na wyeliminowaniu przyczyny błędu. Sama koncepcja observability naturalnie ukierunkowuje na nowy sposób myślenia i pracy, warto jednak uświadamiać i promować zmianę perspektywy wewnątrz organizacji.

Jak zmierzyć jakość observability?

Po wdrożeniu observability naturalnym krokiem jest pomiar jego rezultatów.

Porównanie wydajności systemu

Aby tego dokonać, możemy na przykład porównać wydajność systemu przed i po wdrożeniu observability i po wdrożeniu.Aby tego dokonać, możemy na przykład porównać wydajność systemu przed i po wdrożeniu observability i po wdrożeniu.

Porównanie liczby wykrytych błędów

Podobnie, można również zbadać liczbę wykrytych błędów przed i po implementacji. Znaczący wzrost to zdecydowanie pozytywny sygnał. Jednak sytuacja odwrotna wcale nie oznacza, iż wdrożenie observability nie dało efektów lub działanie systemu uległo pogorszeniu. Taki stan rzeczy może wynikać z faktu, że dużo sprawniej eliminowane są przyczyny błędów.

Porównanie czasu wykrycia błędu oraz jego rozwiązania

Inną metryką, która pozwoli nam ocenić wpływ implementacji, jest czas wykrycia błędu oraz jego rozwiązania.

Podsumowanie

Branża IT znacznie różni się od stanu sprzed kilku lat. Dawne proste systemy monolityczne z czasem ewoluowały do postaci ogromnych sieci rozproszonych. Zmiany te jednak nie obyły się bez problemów. Środowiska składające się z dużej liczby komponentów stają się coraz bardziej abstrakcyjne, a relacje zachodzące między elementami. Skutkowało to utrudnionym procesem śledzenia działania oraz powolnym wykrywaniu błędów. Odpowiedzią na te problemy były idee monitoringu oraz observability. Zostały one przystosowane do  potrzeb nowoczesnych przedsiębiorstw. Gwarantują one łatwą skalowalność, zapewnienie bezpieczeństwa oraz szybkie i zrozumiałe odnajdywanie. Dzięki tym i wielu innym cech koncepty stały się niezastąpioną częścią modelu działania firm na całym świecie.

Zobacz również

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *