NXLog

NXLog
Utvecklare Botond Botyanszki
Initial release oktober 2011
; 11 år sedan
( 2011-10 )
Stabil frisättning
v3.1.1930
Skrivet i C
Operativ system Linux ( CentOS , RHEL , Ubuntu (operativsystem) , Debian ), macOS , Windows , Android (operativsystem)
Typ Loggningsverktyg
Licens Proprietär under NXLOG PUBLIC LICENSE v1.0
Hemsida nxlog .co

NXLog är ett logginsamlings- och centraliseringsverktyg för flera plattformar som erbjuder loggbearbetningsfunktioner, inklusive loggberikning (parsning, filtrering och konvertering) och loggvidarebefordran. I konceptet liknar NXLog syslog-ng eller Rsyslog men det är inte begränsat till endast UNIX och syslog . Den stöder alla större operativsystem som Windows, macOS, IBM AIX, etc, och är kompatibel med många SIEM , log analytics-sviter och många andra plattformar. NXLog kan hantera olika loggkällor och format, så den kan användas för att implementera ett centraliserat, skalbart loggsystem. NXLog Community Edition är proprietär och kan laddas ner gratis utan licenskostnader eller begränsningar.

Översikt

NXLog kan installeras på många operativsystem och det är möjligt att arbeta i en heterogen miljö och samla in händelseloggar från tusentals olika källor i många format. NXLog kan acceptera händelseloggar från TCP , UDP , fil, databas och olika andra källor i olika format som syslog , Windows-händelselogg, etc.

Den kan utföra loggomskrivning, korrelation, varning, mönstermatchning, den kan utföra schemalagda jobb och kan utföra loggrotation. Den designades för att fullt ut kunna utnyttja moderna multi-core CPU- system. Dess flertrådiga arkitektur gör att inmatnings-, loggbearbetnings- och utdatauppgifter kan utföras parallellt. Genom att använda ett I/O-lager kan den hantera tusentals samtidiga klientanslutningar och processloggvolymer över 100 000 EPS-intervallet.

NXLog släpper inga loggmeddelanden om de inte uppmanas att göra det. Den kan behandla indatakällor i en prioriterad ordning, vilket innebär att en högre prioriterad källa alltid kommer att bearbetas före andra. Detta kan ytterligare hjälpa till att undvika UDP- meddelanden till exempel. I händelse av överbelastning i nätverket eller andra problem med loggöverföring kan NXLog buffra meddelanden på disken eller i minnet. Genom att använda laddningsbara moduler stöder den olika ingångskällor och loggformat, inte bara begränsat till syslog utan Windows-händelseloggar, granskningsloggar och anpassade binära applikationsloggar.

Med NXLog är det möjligt att använda anpassade laddningsbara moduler på samma sätt som Apache-webbservern. Förutom onlineloggbearbetningsläget kan det användas för att bearbeta loggar i batchläge offline. NXLogs konfigurationsspråk, med en konfigurationsfilsyntax i Apache-stil, gör att den kan skriva om loggar, skicka varningar eller exekvera externa skript baserat på de angivna kriterierna.

Historia

Redan 2009 använde utvecklaren av NXlog en modifierad version av msyslog för att passa hans behov, men när han hittade ett krav på att implementera en högpresterande, skalbar, centraliserad logghanteringslösning fanns det ingen sådan modern loggningslösning tillgänglig. Det fanns några alternativ till msyslog med några trevliga funktioner (t.ex. Rsyslog , syslog-ng , etc), men ingen av dem kvalificerade sig. De flesta av dessa var fortfarande entrådade, syslog- orienterade, utan inbyggt stöd för MS Windows, och kom med en tvetydig konfigurationssyntax, ful källkod och så vidare.

Han bestämde sig för att designa och skriva NXLog från grunden, istället för att hacka något annat. Således föddes NXLog 2009 och var en sluten källkodsprodukt i början, flitigt använd i flera produktionsinstallationer. Källkoden för NXLOG Community Edition släpptes i november 2011 och har varit fritt tillgänglig sedan dess.

Design

De flesta logbehandlingslösningar är byggda kring samma koncept. Indata läses från en källa, sedan bearbetas loggmeddelandena. Slutligen skrivs eller skickas utdata till ett handfat i annan terminologi.

När en händelse inträffar i en applikation eller enhet, beroende på dess konfiguration, sänds ett loggmeddelande. Detta brukar kallas en "händelselogg" eller "loggmeddelande". Dessa loggmeddelanden kan ha olika format och kan sändas över olika protokoll beroende på den faktiska implementeringen.

Det finns en sak gemensam i alla händelseloggmeddelanden. Alla innehåller viktiga data som användarnamn, IP-adresser, applikationsnamn etc. På så sätt kan en händelse representeras som en lista med nyckel-värdepar som vi kallar ett "fält". Namnet på fältet är nyckeln och fältdata är värdet. I en annan terminologi kallas denna metadata ibland för händelseegenskap eller meddelandetagg.

Följande exempel illustrerar ett syslog-meddelande:

<30>21 nov 11:40:27 log4ensics sshd[26459]: Godkänd publiknyckel för log4ensics från 192.168.1.1 port 41193 ssh2

Fälten som extraheras från detta meddelande är följande:

AuthMethod publickey SourceIPAddress 192.168.1.1 AccountName log4ensics SyslogFacility DAEMON SyslogSeverity INFO AllvarlighetsINFO EventTime 2009-11-21 11:40:27.0 Värdnamn log4ensics ProcessID 26459 Meddelande log4ensics Source 26459 Accepted 26459 Accepted 26459 Source 26459 Source 26459 port 41193 ssh2

NXLog kommer att försöka använda Common Event Expression-standarden för fältnamnen när standarden är stabil.

NXLog har ett specialfält, $raw_event. Detta fält hanteras av transportmodulerna ( UDP , TCP , Fil, etc) för att läsa indata till och skriva utdata från det. Detta fält används också senare för att analysera loggmeddelandet till ytterligare fält med olika funktioner, procedurer och moduler.

Arkitektur

Genom att använda laddningsbara moduler tillåter NXLogs plugin-arkitektur att den kan läsa data från vilken typ av ingång som helst, analysera och konvertera formatet på meddelandena och sedan skicka den till vilken typ av utdata som helst. Olika ingångs-, processor- och utgångsmoduler kan användas samtidigt för att täcka alla krav i loggningsmiljön. Följande figur illustrerar flödet av loggmeddelanden som använder denna arkitektur.

NXLog architecture
NXLog-arkitektur

Kärnan i NXLog är ansvarig för att analysera konfigurationsfilen, övervaka filer och sockets och hantera interna händelser. Den har en händelsebaserad arkitektur, alla moduler kan skicka händelser till kärnan. NXLog-kärnan tar hand om händelsen och skickar den eventuellt till en modul för bearbetning. NXLog är en flertrådad applikation, huvudtråden är ansvarig för övervakning av filer och sockets. Dessa läggs till kärnan av de olika in- och utgångsmodulerna. Det finns en dedikerad tråd som hanterar interna händelser. Den sover tills nästa händelse ska bearbetas och vaknar sedan och skickar händelsen till en arbetstråd. NXLog implementerar en worker thread-pool modell. Arbetstrådar får en händelse som måste behandlas omedelbart. På så sätt kan NXLog-kärnan centralt kontrollera alla händelser och ordningen för deras exekvering, vilket gör prioriterad bearbetning möjlig. Moduler som hanterar sockets eller filer skrivs för att använda icke-blockerande I/O för att säkerställa att arbetartrådarna aldrig blockeras. Filerna och uttagen som övervakas av huvudtråden skickar även händelser som sedan delegeras till arbetarna. Varje händelse som tillhör samma modul exekveras i sekventiell ordning, inte samtidigt. Detta säkerställer att meddelandeordningen hålls och förhindrar samtidighetsproblem i moduler. Ändå körs modulerna (arbetstrådarna) samtidigt, så det globala loggbearbetningsflödet är kraftigt parallelliserat.

När en indatamodul tar emot data skapar den en intern representation av loggmeddelandet som i grunden är en struktur som innehåller råhändelsedata och eventuella valfria fält. Detta loggmeddelande skjuts sedan till kön för nästa modul i rutten och en intern händelse genereras för att signalera tillgängligheten för data. Nästa modul efter ingångsmodulen i en rutt kan antingen vara en processormodul eller en utgångsmodul. Egentligen kan en ingångs- eller utmatningsmodul också bearbeta data genom inbyggd kod eller genom att använda NXLog-språkets exekveringsramverk. Den enda skillnaden är att processormoduler körs i en annan arbetstråd, vilket gör att loggbearbetningen parallelliseras ännu mer. Med tanke på att processormoduler också kan kedjas, kan detta effektivt fördela arbetet mellan flera CPU:er eller CPU -kärnor i systemet.

Distributioner

  • NXLog Community Edition är ett egenutvecklat logghanteringsverktyg tillgängligt utan kostnad. Den är tillgänglig för olika plattformar inklusive Windows och Linux. NXLog Community Edition kan användas både som en logginsamlaragent och som en loggserver. Sammanfattning av funktioner:
    • Flerplattformsstöd för Linux , IBM AIX , Solaris , HP-UX , BSD , Android och Microsoft Windows (från XP till 2012)
    • Modulär arkitektur genom dynamiskt laddningsbara plugins
    • Skalbar, högpresterande I/O - samla in meddelanden i blixtsnabb hastighet (kan uppnå över 500 000 EPS)
    • Meddelandebuffring och prioritering - inga förlorade eller tappade meddelanden
    • Enkelt konfigurationsformat med ett kraftfullt språk som liknar Perl
    • Schemalagda uppgifter och inbyggd loggrotation
    • Stöd för olika format som Syslog , CSV , GELF, JSON , XML , Windows EventLog och även anpassade format
    • Offline bearbetningsläge för efterbearbetning, konvertering eller överföring
    • Händelseklassificering och mönstermatchning
    • Loggmeddelande omskrivning, konvertering mellan olika format
    • Händelsekorrelation
    • Säker nätverkstransport över SSL
    • Internationalisering för att stödja olika teckenuppsättningar och automatisk upptäckt av kodning
  • NXLog Enterprise Edition : Förutom funktionerna i NXLog Community Edition som flexibilitet, lågt minnesutrymme och hög prestanda, innehåller NXLog Enterprise Edition flera förbättringar som kan vara användbara i företagsinstallationer. Dessa funktioner är förbättrad tillförlitlighet, stöd för ytterligare loggkällor som CheckPoint LEA- och SNMP -händelser, agenthanterings- och övervakningsmöjligheter, fjärrinsamling av Windows EventLog, ODBC- inmatnings- och utdatamoduler för att läsa/skriva data till databaser (t.ex. Microsoft SQL Server) och många Mer. Sammanfattning av funktioner:
    • Multi-plattform - stöd för Unix / Linux , MS Windows
    • Modulär arkitektur genom dynamiskt laddningsbara plugins
    • Skalbar, högpresterande I/O - samla in meddelanden över 100 000 händelser per sekund från tusentals källor
    • Meddelandebuffring och prioritering - inga förlorade eller tappade meddelanden
    • Enkelt konfigurationsformat med ett kraftfullt språk som liknar Perl
    • Schemalagda uppgifter och inbyggd loggrotation
    • Stöd för olika format som syslog , CSV , Windows EventLog, CheckPoint LEA eller till och med anpassade format
    • Fjärradministration och statistik med ett WebService API för enklare integration med externa övervakningsverktyg
    • Offline bearbetningsläge för efterbearbetning, konvertering eller överföring
    • Händelsekorrelation och klassificering i realtid
    • Loggmeddelande omskrivning, konvertering mellan olika format
    • Säker SSL- transport, meddelandeintegritet och stöd för tidsstämpling
    • Internationalisering för att stödja olika teckenuppsättningar och automatisk upptäckt av kodning.
  • NXLog Manager : Hantera och övervaka ett stort antal logginsamlaragenter kan vara tufft, speciellt om du har många servrar i olika roller med flera team som ansvarar. NXLog Manager kan fjärrstyra och övervaka NXLog Enterprise Edition-instanser med hjälp av en centraliserad webbaserad hanteringskonsol.

Funktioner

Funktion NXLog Community Edition NXLog Enterprise Edition
Skalbar, flertrådig och högpresterande arkitektur Yes Yes
Multiplattform Yes Yes
Modulär arkitektur Yes Yes
Stöd för olika meddelandeformat Yes Yes
Klient-serverläge Yes Yes
Logga meddelandekällor och destinationer Yes Yes
Säker drift, säkra meddelanden Yes Yes
Lätt Yes Yes
meddelandebuffring och prioritering Yes Yes
Ingen meddelandeförlust Yes Yes
Enkel Yes Yes
konfiguration Inbyggt konfigurationsspråk Yes Yes
Schemalagda uppgifter och inbyggd loggrotation Yes Yes
Händelseklassificering och mönstermatchning Yes Yes
Offlinebearbetningsläge för efterbearbetning, konvertering eller överföring Yes Yes
Internationaliseringsstöd Yes Yes
Händelsekorrelation och klassificering i realtid No Yes
Fjärradministration och statistik No Yes

Släpps

Licens

NXLog Community Edition är licensierad under NXLOG PUBLIC LICENSE v1.0.

externa länkar