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 ElasticSearchInfluxDB, 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 tworzyć 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.

Funkcjonalności dostępne w ramach konkretnych aplikacji:

  • Icinga – powiadomienia, niestety bez wykresów i analizy logów.
  • Grafana – wykresy i powiadomienia (ograniczony zakres).
  • Kibana – wykresy i analiza logów, ale bez powiadomień.
  • Prometheus – wykresy (dodatkowo można podpiąć Grafanę) i powiadomienia (przez moduł alert manager).
  • CloudWatch – komplet od wykresów przez analizę logów po powiadomienia.

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ą usług z kategorii managed services.

Nasi eksperci
/ Dzielą się wiedzą

23.04.2024

AI w marketingu / Przegląd możliwości

AI

„W dynamicznie rozwijającym się świecie biznesu, optymalizacja marketingu odgrywa coraz ważniejszą rolę”. Tak zapewne zaczynałby się kolejny artykuł wygenerowany przez sztuczną inteligencję. Bez obaw! Choć jesteśmy fanami AI, to poniższy tekst został napisany przez człowieka. Przygotowaliśmy dla Ciebie przegląd najważniejszych...

PIM in Marketplace Platform
16.04.2024

Rola systemów PIM na platformach marketplace

E-Commerce

Dobrej jakości, kompletne informacje produktowe pozwalają sprzedawcom w odpowiedni sposób zaprezentować asortyment, a klientom znaleźć dokładnie to, czego szukają. Najpopularniejsze platformy marketplace działają niemalże jak wyszukiwarki, pozwalając konsumentom na zaawansowane filtrowanie ofert za pomocą wielu słów kluczowych i różnych...

11.04.2024

Nowy model cenowy MuleSoft / Niższy próg wejścia 

Integracja systemów

MuleSoft to lider integracji aplikacji i systemów, ułatwiający firmom tworzenie złożonych rozwiązań informatycznych, czerpiącym ze wszystkich dostępnych zasobów informatycznych. Producent oferuje także reużywalne API i konfiguracje umożliwiające proste łączenie zróżnicowanych systemów. Ostatnio MuleSoft wprowadził znaczące zmiany w...

Ekspercka wiedza
dla Twojego biznesu

Jak widać, przez lata zdobyliśmy ogromną wiedzę - i uwielbiamy się nią dzielić! Porozmawiajmy o tym, jak możemy Ci pomóc.

Napisz do nas

<dialogue.opened>