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ą

19.11.2024

PIM + AI = Sukces / Optymalizacja systemów PIM z wykorzystaniem sztucznej inteligencji

AI

W dzisiejszym dynamicznie zmieniającym się świecie biznesu zarządzanie informacjami produktowymi stało się jednym z kluczowych wyzwań, szczególnie dla firm działających na wielu rynkach. Choć o sztucznej inteligencji mówi się coraz więcej, wiele dostępnych materiałów dotyczy głównie teorii lub odległej przyszłości. My idziemy o krok...

Ilustracja przedstawiająca robota reprezentującego sztuczną inteligencję, otoczonego symbolami wyzwań i błędów w sztucznej inteligencji. Obraz zawiera pomarańczowy mózg, zepsutą żarówkę i cyfrowe piksele, symbolizujące dane i zagrożenia etyczne związane z awariami sztucznej inteligencji
30.10.2024

Wpadki AI / Gdy sztuczna inteligencja wymyka się spod kontroli

AI

Sztuczna inteligencja rewolucjonizuje wszystkie branże, oferując naprawdę imponujące możliwości w zakresie wydajności, szybkości i innowacyjności. Jednak w miarę jak systemy AI stają się coraz bardziej zintegrowane z procesami biznesowymi, staje się oczywiste, że narzędzia te nie są również pozbawione wad. Od małych błędów po poważne...

AI w optymalizacji łańcucha dostaw materiałów budowlanych
28.10.2024

Zastosowanie sztucznej inteligencji w optymalizacji łańcucha dostaw materiałów budowlanych 

E-Commerce

Czy sztuczna inteligencja może zrewolucjonizować zarządzanie łańcuchami dostaw materiałów budowlanych? Dowiedz się, jak AI może pomóc w optymalizacji prognozowania zapotrzebowania, zarządzaniu zamówieniami i stanami magazynowymi, a także zminimalizować ryzyko i spersonalizować ofertę dla klientów. Odkryj przyszłość AI w branży...

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>