NXLog
Deweloperzy | Botond Botyanszki |
---|---|
Pierwsze wydanie | październik 2011 |
Wersja stabilna | v3.1.1930 |
Napisane w | C |
System operacyjny | Linux ( CentOS , RHEL , Ubuntu (system operacyjny) , Debian ), macOS , Windows , Android (system operacyjny) |
Typ | Narzędzie do logowania |
Licencja | Własność na podstawie LICENCJI PUBLICZNEJ NXLOG v1.0 |
Strona internetowa |
NXLog to wieloplatformowe narzędzie do gromadzenia i centralizacji dzienników, które oferuje funkcje przetwarzania dzienników, w tym wzbogacanie dzienników (analizowanie, filtrowanie i konwersja) oraz przekazywanie dzienników. W koncepcji NXLog jest podobny do syslog-ng lub Rsyslog , ale nie ogranicza się tylko do UNIX i syslog . Obsługuje wszystkie główne systemy operacyjne , takie jak Windows, macOS, IBM AIX itp., będąc kompatybilnym z wieloma SIEM , pakiety do analizy logów i wiele innych platform. NXLog może obsługiwać różne źródła i formaty dzienników, dzięki czemu można go wykorzystać do wdrożenia scentralizowanego, skalowalnego systemu rejestrowania. NXLog Community Edition jest własnością firmy i można ją pobrać bezpłatnie, bez kosztów licencji i ograniczeń.
Przegląd
NXLog może być zainstalowany na wielu systemach operacyjnych i może działać w heterogenicznym środowisku, zbierając dzienniki zdarzeń z tysięcy różnych źródeł w wielu formatach. NXLog może akceptować dzienniki zdarzeń z TCP , UDP , plików, baz danych i różnych innych źródeł w różnych formatach, takich jak syslog , dziennik zdarzeń systemu Windows itp.
Może wykonywać przepisywanie dziennika, korelację, alerty, dopasowywanie wzorców, może wykonywać zaplanowane zadania i może wykonywać rotację dzienników. Został zaprojektowany tak, aby móc w pełni wykorzystać nowoczesne wielordzeniowe procesorowe . Jego wielowątkowa architektura umożliwia równoległe wykonywanie zadań wejścia, przetwarzania dziennika i wyjścia. Korzystając z warstwy I/O, jest w stanie obsłużyć tysiące jednoczesnych połączeń klientów i woluminów dzienników procesów powyżej zakresu 100 000 EPS.
NXLog nie upuszcza żadnych komunikatów dziennika, chyba że zostanie o to poinstruowany. Może przetwarzać źródła wejściowe w kolejności priorytetów, co oznacza, że źródło o wyższym priorytecie będzie zawsze przetwarzane przed innymi. Może to dodatkowo pomóc na przykład w uniknięciu utraty komunikatów UDP . W przypadku przeciążenia sieci lub innych problemów z transmisją logów, NXLog może buforować wiadomości na dysku lub w pamięci. Korzystając z ładowalnych modułów, obsługuje różne źródła danych wejściowych i formaty dzienników, nie ograniczając się tylko do syslog , ale także dziennika zdarzeń systemu Windows, dzienników audytu i niestandardowych dzienników aplikacji binarnych.
Dzięki NXLog możliwe jest używanie niestandardowych ładowalnych modułów, podobnie jak w przypadku serwera WWW Apache. Oprócz trybu przetwarzania dziennika online można go używać do przetwarzania dzienników w trybie wsadowym w trybie offline. Język konfiguracji NXLog, ze składnią pliku konfiguracyjnego w stylu Apache, umożliwia przepisywanie dzienników, wysyłanie alertów lub wykonywanie dowolnego zewnętrznego skryptu w oparciu o określone kryteria.
Historia
W 2009 roku twórca NXlog używał zmodyfikowanej wersji msyslog do swoich potrzeb, ale kiedy znalazł zapotrzebowanie na wdrożenie wysoce wydajnego, skalowalnego, scentralizowanego rozwiązania do zarządzania dziennikami, nie było dostępnego takiego nowoczesnego rozwiązania do rejestrowania. Było kilka alternatyw dla msyslog z kilkoma fajnymi funkcjami (np. Rsyslog , syslog-ng , itp.), ale żadna z nich się nie kwalifikowała. Większość z nich była nadal jednowątkowa, na syslog , bez natywnej obsługi MS Windows i miała niejednoznaczną składnię konfiguracji, brzydki kod źródłowy i tak dalej.
Postanowił zaprojektować i napisać NXLog od podstaw, zamiast hakować coś innego. Tak więc NXLog narodził się w 2009 roku i na początku był produktem o zamkniętym kodzie źródłowym, intensywnie używanym w kilku wdrożeniach produkcyjnych. Kod źródłowy NXLOG Community Edition został wydany w listopadzie 2011 roku i od tego czasu jest dostępny bezpłatnie.
Projekt
Większość rozwiązań do przetwarzania dzienników opiera się na tej samej koncepcji. Dane wejściowe są odczytywane ze źródła, a następnie przetwarzane są komunikaty dziennika. Na koniec dane wyjściowe są zapisywane lub wysyłane do ujścia w innej terminologii.
W przypadku wystąpienia zdarzenia w aplikacji lub urządzeniu, w zależności od jego konfiguracji, emitowany jest komunikat dziennika. Jest to zwykle określane jako „dziennik zdarzeń” lub „komunikat dziennika”. Te komunikaty dziennika mogą mieć różne formaty i mogą być przesyłane za pomocą różnych protokołów, w zależności od rzeczywistej implementacji.
We wszystkich komunikatach dziennika zdarzeń jest jedna wspólna cecha. Wszystkie zawierają ważne dane, takie jak nazwy użytkowników, adresy IP, nazwy aplikacji itp. W ten sposób zdarzenie można przedstawić jako listę par klucz-wartość, którą nazywamy „polem”. Nazwa pola to klucz, a dane pola to wartość. W innej terminologii te metadane są czasami określane jako właściwość zdarzenia lub znacznik wiadomości.
Poniższy przykład ilustruje komunikat syslog:
<30>21 listopada 11:40:27 log4ensics sshd[26459]: Zaakceptowano klucz publiczny dla log4ensics z portu 192.168.1.1 41193 ssh2
Pola wyodrębnione z tej wiadomości są następujące:
AuthMethod publickey SourceIPAddress 192.168.1.1 AccountName log4ensics SyslogFacility DAEMON SyslogSeverity INFO Severity INFO EventTime 2009-11-21 11:40:27.0 Nazwa hosta log4ensics ProcessID 26459 SourceName sshd Message Zaakceptowano klucz publiczny dla log4ensics z portu 192.168.1.1 41193 ssh2
NXLog spróbuje użyć standardu Common Event Expression dla nazw pól, gdy standard będzie stabilny.
NXLog ma specjalne pole, $raw_event. To pole jest obsługiwane przez moduły transportowe ( UDP , TCP , File itp.) w celu odczytywania danych wejściowych i zapisywania z nich danych wyjściowych. To pole jest również używane później do analizowania komunikatu dziennika w dalszych polach za pomocą różnych funkcji, procedur i modułów.
Architektura
Wykorzystując ładowalne moduły, architektura wtyczek NXLog umożliwia odczytywanie danych z dowolnego rodzaju wejścia, analizowanie i konwertowanie formatu wiadomości, a następnie wysyłanie ich do dowolnego rodzaju wyjścia. Różne moduły wejściowe, procesorowe i wyjściowe mogą być używane jednocześnie, aby spełnić wszystkie wymagania środowiska logowania. Poniższy rysunek ilustruje przepływ komunikatów dziennika przy użyciu tej architektury.
Rdzeń NXLog jest odpowiedzialny za parsowanie pliku konfiguracyjnego, monitorowanie plików i gniazd oraz zarządzanie zdarzeniami wewnętrznymi. Ma architekturę opartą na zdarzeniach, wszystkie moduły mogą wysyłać zdarzenia do rdzenia. Rdzeń NXLog zajmie się zdarzeniem i opcjonalnie przekaże je do modułu w celu przetworzenia. NXLog to aplikacja wielowątkowa, główny wątek odpowiada za monitorowanie plików i gniazd. Są one dodawane do rdzenia przez różne moduły wejściowe i wyjściowe. Istnieje dedykowany wątek obsługujący zdarzenia wewnętrzne. Śpi do momentu przetworzenia następnego zdarzenia, a następnie budzi się i wysyła zdarzenie do wątku roboczego. NXLog implementuje model puli wątków roboczych. Wątki robocze otrzymują zdarzenie, które musi zostać natychmiast przetworzone. W ten sposób rdzeń NXLog może centralnie kontrolować wszystkie zdarzenia i kolejność ich wykonywania, umożliwiając priorytetowe przetwarzanie. Moduły obsługujące gniazda lub pliki są napisane tak, aby używały nieblokującego wejścia/wyjścia, aby upewnić się, że wątki robocze nigdy się nie blokują. Pliki i gniazda monitorowane przez główny wątek również wysyłają zdarzenia, które są następnie delegowane do procesów roboczych. Każde zdarzenie należące do tego samego modułu jest wykonywane w kolejności sekwencyjnej, a nie jednocześnie. Zapewnia to zachowanie kolejności komunikatów i zapobiega problemom z współbieżnością w modułach. Jednak moduły (wątki robocze) działają współbieżnie, dlatego globalny przepływ przetwarzania dziennika jest w dużym stopniu równoległy.
Kiedy moduł wejściowy odbiera dane, tworzy wewnętrzną reprezentację komunikatu dziennika, który jest zasadniczo strukturą zawierającą nieprzetworzone dane zdarzenia i wszelkie pola opcjonalne. Ten komunikat dziennika jest następnie wypychany do kolejki następnego modułu na trasie i generowane jest zdarzenie wewnętrzne sygnalizujące dostępność danych. Następnym modułem po module wejściowym w trasie może być moduł procesora lub moduł wyjściowy. W rzeczywistości moduł wejścia lub wyjścia może również przetwarzać dane za pomocą wbudowanego kodu lub przy użyciu struktury wykonawczej języka NXLog. Jedyna różnica polega na tym, że moduły procesora są uruchamiane w innym wątku roboczym, co jeszcze bardziej zrównolegla przetwarzanie dziennika. Biorąc pod uwagę, że moduły procesora można również łączyć w łańcuchy, może to wydajnie rozdzielać pracę między wiele Procesory lub rdzenie procesora w systemie.
dystrybucje
-
NXLog Community Edition to zastrzeżone narzędzie do zarządzania dziennikami, dostępne bezpłatnie. Jest dostępny na różne platformy, w tym Windows i Linux. NXLog Community Edition może być używany zarówno jako agent do zbierania logów, jak i jako serwer logów. Podsumowanie funkcji:
- Wieloplatformowość - wsparcie dla systemów Linux , IBM AIX , Solaris , HP-UX , BSD , Android i Microsoft Windows (od XP do 2012)
- Modułowa architektura dzięki dynamicznie ładowanym wtyczkom
- Skalowalne, wysokowydajne wejścia/wyjścia — gromadzenie komunikatów z niesamowitą szybkością (można osiągnąć ponad 500 tys. EPS)
- Buforowanie wiadomości i ustalanie priorytetów — brak zagubionych lub porzuconych wiadomości
- Prosty format konfiguracji z potężnym językiem podobnym do Perla
- Zaplanowane zadania i wbudowana rotacja logów
- Obsługa różnych formatów, takich jak Syslog , CSV , GELF, JSON , XML , Windows EventLog, a nawet niestandardowe formaty
- Tryb przetwarzania offline do przetwarzania końcowego, konwersji lub transferu
- Klasyfikacja zdarzeń i dopasowywanie wzorców
- Przepisywanie wiadomości dziennika, konwersja między różnymi formatami
- Korelacja zdarzeń
- Bezpieczny transport sieciowy przez SSL
- Internacjonalizacja w celu obsługi różnych zestawów znaków i automatycznego wykrywania kodowania w locie
-
NXLog Enterprise Edition : Oprócz funkcji NXLog Community Edition, takich jak elastyczność, niskie zużycie pamięci i wysoka wydajność, NXLog Enterprise Edition zawiera kilka ulepszeń, które mogą być przydatne we wdrożeniach korporacyjnych. Funkcje te to zwiększona niezawodność, obsługa dodatkowych źródeł dzienników, takich jak zdarzenia CheckPoint LEA i SNMP , zarządzanie agentami i monitorowanie, zdalne gromadzenie dziennika zdarzeń systemu Windows, moduły wejścia i wyjścia ODBC do odczytu/zapisu danych w bazach danych (np. Microsoft SQL Server) oraz wiele więcej. Podsumowanie funkcji:
- Wieloplatformowość - wsparcie dla systemów Unix / Linux , MS Windows
- Modułowa architektura dzięki dynamicznie ładowanym wtyczkom
- Skalowalne, wysokowydajne operacje we/wy — gromadzą komunikaty o szybkości przekraczającej 100 000 zdarzeń na sekundę z tysięcy źródeł
- Buforowanie wiadomości i ustalanie priorytetów — brak zagubionych lub porzuconych wiadomości
- Prosty format konfiguracji z potężnym językiem podobnym do Perla
- Zaplanowane zadania i wbudowana rotacja logów
- Obsługa różnych formatów, takich jak syslog , CSV , Windows EventLog, CheckPoint LEA, a nawet niestandardowe formaty
- Zdalna administracja i statystyki za pomocą WebService API dla łatwiejszej integracji z zewnętrznymi narzędziami monitorującymi
- Tryb przetwarzania offline do przetwarzania końcowego, konwersji lub transferu
- Korelacja i klasyfikacja zdarzeń w czasie rzeczywistym
- Przepisywanie wiadomości dziennika, konwersja między różnymi formatami
- Bezpieczny transport SSL , integralność wiadomości i obsługa znaczników czasu
- Internacjonalizacja w celu obsługi różnych zestawów znaków i automatycznego wykrywania kodowania w locie.
- NXLog Manager : Zarządzanie i monitorowanie dużej liczby agentów zbierających dzienniki może być trudne, zwłaszcza jeśli masz wiele serwerów w różnych rolach z wieloma zespołami odpowiedzialnymi. NXLog Manager może zdalnie zarządzać i monitorować instancje NXLog Enterprise Edition za pomocą scentralizowanej internetowej konsoli zarządzania.
Cechy
Funkcja | Wersja społecznościowa NXLog | Wersja NXLog Enterprise |
---|---|---|
Skalowalna, wielowątkowa i wydajna architektura | ||
Wieloplatformowa | ||
architektura modułowa | ||
Obsługa różnych formatów wiadomości | ||
Tryb klient-serwer | ||
Loguj źródła i miejsca docelowe wiadomości | ||
Bezpieczne działanie, zabezpieczone wiadomości | ||
Lekkość | ||
Buforowanie i ustalanie priorytetów | ||
wiadomości Brak utraty wiadomości | ||
Prosta konfiguracja | ||
Wbudowany język konfiguracji | ||
Zaplanowane zadania oraz wbudowana rotacja dzienników | ||
Klasyfikacja zdarzeń i dopasowywanie wzorców | ||
Tryb przetwarzania offline do przetwarzania końcowego, konwersji lub transferu | ||
Obsługa internacjonalizacji | ||
Korelacja i klasyfikacja zdarzeń w czasie rzeczywistym | ||
Zdalna administracja i statystyki |
Wydania
Licencja
NXLog Community Edition jest licencjonowany na podstawie LICENCJI PUBLICZNEJ NXLOG v1.0.