Magpie Monitor
System raportowania zdarzeń systemowych w języku naturalnym z wykorzystaniem dużych modeli językowych
Opis
Projekt i implementacja zakłada stworzenie zaawansowanego systemu monitorowania i analizy logów emitowanych przez klaster komputerowy. Celem przedsięwzięcia jest poprawa efektywności zarządzania infrastrukturą IT oraz zminimalizowanie ryzyka przestojów aplikacji uruchamianych na klastrze.
Problem, który zostanie rozwiązany:
Obecnie najczęściej monitorowanie aplikacji opiera się na ręcznym przeglądzie logów i metryk, co jest czasochłonne i podatne na błędy. Celem projektu jest automatyzacja tego procesu, zmniejszając ilość danych do przeanalizowania oraz zapewniając inteligentne rekomendacje dotyczące dalszych działań. Dzięki temu, osoby odpowiedzialne za zarządzanie aplikacjami będą mogły skupić się na analizie kluczowych anomalii wykrywanych przez system, zamiast przeglądać ogromne ilości logów.
Główne cele biznesowe:
- Poprawa efektywności operacyjnej – Automatyzacja analizy logów i generowanie raportów znacząco skróci czas potrzebny na diagnozę problemów.
- Zwiększenie niezawodności aplikacji – Dzięki proaktywnej analizie logów i sugerowaniu działań zapobiegawczych, zmniejszone zostanie ryzyko awarii.
- Integracja z zewnętrznymi kanałami komunikacji – Integracja z popularnymi platformami komunikacyjnymi (np. Slack, Discord) pozwala na szybką dystrybucję wyników raportów, co przyspiesza reakcję na ewentualne problemy.
- Wygodny i intuicyjny interfejs – Użytkownicy otrzymają dostęp do zautomatyzowanych raportów poprzez interfejs webowy, co zwiększy przejrzystość i ułatwi zarządzanie aplikacjami.
-
Zmniejszenie kosztów związanych z obsługą incydentów - Proaktywne rozwiązywanie problemów pozwoli na zmniejszenie ilości krytycznych incydentów w monitorowanych systemach i kosztów ich obsługi
Wartość dodana:
Projekt automatyzując monitorowanie i analizę logów, umożliwi bardziej efektywne wykorzystanie zasobów ludzkich oraz skróci czas potrzebny na identyfikację błędów. System ma również na celu wykrywanie potencjalnych problemów, które mogą w przyszłości doprowadzić do awarii monitorowanej aplikacji. Przyjęte podejście przyczynia się do efektywniejszego zarządzania infrastrukturą IT oraz zwiększa ogólną stabilność systemu.
Kubernetes - najbardziej dojrzały i najczęściej wykorzystywany biznesowo orkiestrator rozproszonych systemów działających w kontenerach
Docker - najpopularniejsze narzędzie i ekosystem umożliwiający uruchamianie oraz budowanie kontenerów aplikacji
Golang - język programowania użyty w celu łatwej budowy szybkich, bezpiecznych i wielowątkowych mikroserwisów, która nie wymusza używania dodatkowego frameworka do budowy aplikacji webowej. Dodatkowo Go oferuje dobrą integrację z interfejsem Kubernetesa, co było potrzebne do zbierania logów z klastra komputerowego utworzonego przy jego pomocy.
Java Spring Boot - popularny framework backendowy, użyty do budowy aplikacji webowej o architekturze REST. Wykorzystaliśmy go ze względu na sprawdzone rozwiązania dotyczące security, routingu i ORMa.
React z Typescript - framework frontendowy użyty do stworzenia klienta aplikacji. React jest najszerzej wspieranym frameworkiem do tworzenia aplikacji w architekturze SPA. To pozwala na znacznie łatwiejsze zarządzanie stanem aplikacji. Typescript z kolei pozwala na uniknięcie błędów związanych z brakiem silnego typowania.
Sass - rozszerzenie klasycznego CSS, które ubogaca podstawową składnie o funkcjonalności minimalizujące duplikacje kodu, poprawiając przy tym czytelność pliku.
PostgreSQL - relacyjna baza danych, która została użyta do przechowywania informacji związanych z ustawieniami użytkownika oraz informacji o monitorowanym systemie, które cechują się możliwości ich normalizacji.
MongoDB - dokumentowa baza danych, w której zostaną przechowywane wygenerowane raporty w języku naturalnym. Raporty takie są długimi dokumentami, które nie wymagają spójności w każdym momencie, oraz które ciężko byłoby efektywnie przechowywać i przetwarzać w niedokumentowej bazie danych.
Kafka - jedna z najpopularniejszych platform do streamowania i kolejkowania wydarzeń. Ze względu na dużą objętość zbieranych logów, musieliśmy wykorzystać kolejkę aby nie przeciążyć
ElasticSearch - czyli nierelacyjna, łatwo skalowalna baza danych, która stała się biznesowym standardem do przechowywania logów.