unity wiedza

Czas czytania: 5 minut

Monitorowanie aplikacji WWW w dynamicznie rozwijających się środowiskach

Niezawodne działanie aplikacji, a co za tym idzie – zadowolenie klientów – jest kluczowym elementem sprawnego prowadzenia biznesu. Monitoring, który pozwoli szybko wykryć awarię, znajdzie ukryte zależności, a nawet przewidzi wystąpienie awarii, jest podstawowym narzędziem w dynamicznie rozwijających się środowiskach.

Z poniższego artykułu dowiesz się:

  • Na czym polega monitoring aplikacji
  • Jakimi narzędziami monitorować środowiska

Kilka słów wprowadzenia do monitoringu aplikacji 

Pod zagadnieniem monitoringu możemy zmieścić naprawdę wiele różnych funkcjonalności:  

  • wysyłanie powiadomień w momencie wystąpienia awarii, 
  • wizualizacje danych zbieranych z różnych źródeł 
  • eksplorację danych 
  • wyznaczanie zależności pomiędzy pewnymi faktami, a ich skutkami 
  • predykcję wystąpienia awarii. 

Poniżej omówimy najistotniejsze narzędzia do monitorowania aplikacji, takie jak IcingaGrafanaKibanaPrometheus oraz AWS CloudWatch 

Przegląd narzędzi do monitorowania aplikacji 

Niemal każdy system monitoringu bazuje na metrykach i wartościach progowych, przy których występują alarmy i wysyłane są powiadomienia.  

Icinga

Icinga to narzędzie aktywnie monitorujące podzespoły danego systemu. W klasycznym podejściu, gdzie aplikacje, bazy i inne komponenty aplikacji webowej są umieszczone na serwerach, mogą być one monitorowane przez agenta NRPE. Serwer Icinga przesyła do nich zapytania o konkretne czujki i metryki sprawdzające np. obciążenie procesora, ilość dostępnej pamięci dyskowej, długość kolejek, czas ładowania strony czy ilość zapytań do bazy danych.  

W zależności od ustawień Icingi, możemy zdefiniować zadania jakie mają zostać wykonane w przypadku wystąpienia sytuacji krytycznej: od powiadomienia odpowiednich osób po wykonanie automatycznej akcji. 

Grafana

Znacznie bardziej atrakcyjnym wizualnie narzędziem, choć gorszym pod kątem powiadomień, jest Grafana. 

Narzędzie to pozwala na wizualizacje danych w postaci wykresów, wskaźników, diagramów obrazujących kluczowe metryki działania aplikacji.  

Źródłem danych do Grafany może być baza danych ElasticSearch, InfluxDB, SQL czy AWS CloudWatch. 

Dobrze skonstruowany dashboard pozwala określić obecny oraz historyczny stan całego środowiska.  

Wykresy mogą być uzupełniane odpowiednimi adnotacjami, takimi jak uruchomienie nowszej wersji aplikacji, co pozwala na łatwe odnajdywanie zależności pomiędzy wydajnością środowiska, a wersją aplikacji.  

Grafana nadaje się również do tworzenia wizualizacji metryk sprawdzanych rutynowo, pozwalając sprawnemu administratorowi na przewidzenie awarii – np. kończącej się pamięci czy przestrzeni dyskowej – przed ich wystąpieniem. 

Grafana, umożliwia także definiowanie prostych reguły powiadomień, choć znacznie bardziej ubogich niż Icinga.

Kibana 

Kibana jest narzędziem służącym do eksploracji zbiorów danych, które umożliwia agregację logów z różnych źródeł. 

Poza funkcjami takimi jak przeglądanie i sprawne przeszukiwanie logów, pozwala tworz widoki z wykresami, a także posiada moduł timelion, pozwalający na analizę trendów czy analizę danych w czasie.  

Poza tworzeniem wykresów i składaniem z nich dashboardów, można skonstruować zapytanie timelion, które będzie wyszukiwało anomalie między danymi, na przykład tydzień do tygodnia.  

Bazą danych dla Kibany jest zazwyczaj indeks ElasticSearch, który może być użyty również przez wspomnianą wcześniej Grafanę. Oba te narzędzia dają w połączeniu świetny zestaw do przeglądania i wizualizacji zbieranych metryk.

Prometheus 

Prometeus jest bardzo dobrym narzędziem dedykowanym nowoczesnym środowiskom: automatycznie skalowanych, dynamicznych, konteneryzowanych, o niedeterministycznym czasie życia komponentów. 

W relatywnie prosty sposób, można dokonać integracji z katalogiem usług wystawionych przez service discovery (np. consul, eureka). Za pomocą Prometheusa umożliwione jest także zbieranie danych, używając protokołu http(s) z wykorzystaniem rozmaitych exporterów 

Prometheus integruje się z Grafanąposługując się nią jako silnikiem do wizualizacji danych oraz z alert managerem, jako modułem do agregacji alarmów i wysyłania powiadomień. 

CloudWatch  

Jeśli nasza aplikacja jest uruchomiona w chmurze AWS, to naturalnym rozwiązaniem monitorującym wydaje się użycie usługi CloudWatch dostarczanej przez Amazon. 

CloudWatch automatycznie i bez żadnej konfiguracji zbiera podstawowe metryki od uruchomionych usług, ale oprócz tego mamy możliwość zdefiniowana własnych. 

Panel webowy AWS udostępnia nam zintegrowane funkcje do ich przeglądania, tworzenia wykresów, wskaźników, dashboardów, chociaż – jeśli jest taka potrzeba – do tych samych danych można dostać się za pomocą API. 

Istnieje również możliwość konfiguracji alarmów i integracji z notyfikacjami SNS lub funkcjami Lambda. Bez problemu jesteśmy w stanie oprogramować eventy integrujące się z innymi usługami AWS, np. skalowanie grupy ASG na podstawie alarmu CloudWatch. 

Inną funkcją CloudWatch jest składowanie logów z aplikacji wraz z możliwością ich przeglądania za pomocą zapytań SQL (Athena) lub Insights (interfejs GUI).  

Warto przypomnieć, że CloudWatch może służyć jako baza wizualizacji dla Grafany.

Co monitorować? 

Każdy projekt powinien posiadać monitoring metryk kluczowych ze względu na działanie biznesu, takich jak prędkość ładowania stron www, czy czas obsługi żądań klientów.  

Szybkie wykrycie usterek na środowiskach deweloperskich czy akceptacyjnych, pomaga unikać sytuacji, w których potencjalnie nieefektywny kod zostanie zaaplikowany na środowiska produkcyjne. 

Projektując monitoring, należy pamiętać o tym, żeby jak najlepiej odwzorować normalne zachowania internautów – odpytywać aplikacje po adresacji publicznej, weryfikować rozpoznawanie nazw DNS, a także sprawdzać ważność certyfikatów. 

Aplikacja                             Wykresy Analiza logów                         Powiadomienia 
Icinga Nie Nie Tak 
Grafana Tak Nie Tak (w ograniczonym zakresie) 
Kibana Tak Tak Nie 
Prometheus Tak + Można podpiąć Grafanę Nie Tak (przez moduł alert manager) 
CloudWatch Tak Tak Tak 

Podsumowanie 

Dobrze zorganizowany monitoring pozwala nie tylko reagować na awarie, ale również skutecznie je przewidywać, a także im przeciwdziałać. Jeżeli do awarii już dojdzie, to za pomocą monitoringu powinniśmy móc ustalić jej przyczyny i określić działania zapobiegające wystąpieniu awarii.  

Zdecydowanie warto poświęcić czas na stworzenie kompleksowego monitoringu środowisk nie tylko produkcyjnych, ale dla wszystkich etapów wytwarzania oprogramowania.  

Koniec końców, najważniejsze jest zadowolenie użytkowników aplikacji, a bez mierzenia jej wydajności, ciężko zagwarantować odpowiednią jakość usług. 

Jeżeli chcesz dowiedzieć się więcej o usługach związanych z monitoringiem, zapraszamy do zapoznania się z naszą ofertą.

Wyrażam zgodę na przetwarzanie danych osobowych na zasadach określonych w polityce prywatności. Jeśli nie wyrażasz zgody na wykorzystywanie cookies we wskazanych w niej celach, w tym do profilowania, prosimy o wyłącznie cookies w przeglądarce lub opuszczenie serwisu. więcej

Akceptuj