[CASE STUDY]
Centralny system przetwarzania logów – Elasticsearch, Logstash, Kibana wdrożony w sektorze bankowym
Klient z sektora bankowego zgłosił potrzebę indeksowania danych typu log na poziomie kilkuset GB/dzień z możliwością obsłużenia (przyjęcia) do 50 tyś. zdarzeń na sekundę. Oprócz sprawnego składowania danych, równie istotna była możliwość ich szybkiego przeszukiwania. System miał także spełniać podstawowe wymogi bezpieczeństwa w zakresie odporności na awarie sprzętowe. Szczególny nacisk położony został na kontrolę dostępu do porcji danych z perspektywy użytkownika. Składowane dane powinny być opatrzone polityką retencji.Spośród dostępnych na rynku technologii, które są w stanie sprostać takim wymaganiom, zaproponowaliśmy produkt EnergyLogserver pracujących na bazie rozwiązania Elasticsearch.
EnergyLogserver to autorski produkt EMCA będący rozwinięciem open-source-owego rozwiązania ELK Stack. Wykorzystanie sprawdzonego w ogromnych społecznościach środowiska ElasticSearch pozwoliło na budowę rozproszonego klastra, którego wydajność możemy skalować liniowo. Przechowywane dane posiadają swoją aktywną kopię, co poza bezpieczeństwem pozytywnie wpływa na prędkość wyszukiwania.
Wstępne testy u Klienta potwierdziły słuszność wyboru Elasticsearch co zaowocowało rozpoczęciem prac wdrożeniowych. W ich pierwszym etapie przygotowaliśmy i udokumentowaliśmy architekturę kompletnego Systemu. Najistotniejsza część dotyczyła doboru odpowiedniej ilości i konfiguracji maszyn fizycznych oraz rozlokowania i ustawień poszczególnych modułów Systemu. W jego skład, oprócz Elasticseach weszły:
- Kafka (message broker) – do buforowania zdarzeń przed przesłaniem ich do Elasticsearch – open source.
- Logstash (agent) – do odczytu logów, filtrowania i przesyłania dalej do węzłów Elasticsearch – open source.
- Energy Logserver (interfejs graficzny) – autorski system EMCA służący do graficznej prezentacji danych z funkcją autentykacji (logowania), autoryzacji (zarządzaniem dostępem do logów), eksportu danych do csv itp.
- Security Plugin – moduł współpracujący z ElasticSearch odpowiadający za kontrolę dostępu do zaindeksowanych danych
Komponenty Systemu instalowaliśmy na systemach operacyjnych z rodziny Linux.
Zaprojektowana przez pracowników EMCA architektura była intensywnie testowana i monitorowana w środowisku testowym, a następnie na maszynach przedprodukcyjnych Klienta. Testy pozwoliły wypracować konfigurację Systemu, dot. m.in. ilości węzłów poszczególnych modułów, ustawienia klastra, liczby replik, a także rozwiązać problemy poboczne związane z doborem odpowiednich parametrów systemu operacyjnego, prawidłową rotacją logów itd.
W kolejnym etapie nastąpiło uruchomienie Systemu w środowisku produkcyjnym, na które składa się kilkadziesiąt serwerów fizycznych. Każdy z elementów Systemu został uruchomiony na dedykowanej maszynie, otworzono również strumienie danych mające docelowo zasilać klaster Elasticsearch po czym rozpoczęliśmy ekstrakcje pól.
Warto zauważyć, że gromadzone logi pochodzą z różnych platform takich jak Linux, Windows, AIX i inne. Logi przesyłane są również przez TCP i UDP, mają formaty syslog, CEF, ale i niestandardowe, odpowiadające serwerom aplikacyjnym Klienta. Nie stanowi to jednak dla przygotowanej przez EMCA platformy żadnego problemu.
Uruchomienie środowiska produkcyjnego uwidoczniło kilka nowych problemów, z których najpoważniejszym, ale też najciekawszym było optymalne działanie klastra w przypadku awarii i związana z tym relokacja TB danych między węzłami Elasticsearch. W odpowiedzi opracowano procedurę zarządzania klastrem w takiej sytuacji, przez co dane relokują się w zamierzony sposób nie obniżając wydajności Systemu z zachowaniem funkcjonalności backupu (replikacji) danych.
Udostępnienie Systemu do użytku produkcyjnego poprzedzone zostało przeprowadzeniem, przy aktywnym udziale Klienta, szeregu testów sprawdzających jego działanie podczas wystąpienia danych scenariuszy. W szczególności potwierdzona została wydajność indeksowania na poziomie 60k EPS przy symulowanej awarii sprzętowej jednego węzła. Wszystkie analizowane przypadki zakończyły się pomyślnie i System został dopuszczony do pracy produkcyjnej.
Wybrane cechy wdrożonego Systemu:
- System jest w stanie zaindeksować do 100 tyś. zdarzeń/s w trybie skokowym i 60 tyś. zdarzeń/s w trybie ciągłym.
- Architektura zapobiegająca utracie danych oraz awarii systemu nawet w przypadku wyłączenia dwóch maszyn fizycznych.
- Zgromadzone dane mogą być szybko przeszukiwane po wybranych polach oraz występujących frazach, dostępne są również wizualizacje.
- System ma zaimplementowaną autentykację i autoryzację, a dostęp do danych jest chroniony.
Projekt realizowali pracownicy EMCA na co dzień zajmujący się problematyką bezpieczeństwa i monitoringu systemów informatycznych. W obszarze realizowanego projektu EMCA jest partnerem firmy Elastic co. a nasi inżynierowie przeszli ścieżkę certyfikacyjną z tego rozwiązania. Firma realizuje projekty w obszarze SIEM i Big Data , przy pomocy narzędzi: Elasticsearch, Splunk, Flowmon, Nagios, op5 Monitor, Logrhythm, Hadoop.