Nxlog

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Collecteur/forwarder de logs multiplateforme
Plateformes BSD, Unix, Linux, Windows, Android
Remplace (historiquement) SEC (corrélateur de logs)
Famille Evtsys · SyslogAgent · Winlogd · Snare
Voir aussi Syslog

NXLog est un collecteur et redirecteur de logs universel, capable de fonctionner sur de nombreuses plateformes (BSD, Unix, Linux, Windows, Android) et de traiter plusieurs formats et protocoles en entrée (Syslog, Windows Event Log, GELF/Graylog2, XML, JSON, CSV...).

Windows ne fournit pas nativement de client syslog : le journal des événements (Event Log) doit être converti et transmis vers un collecteur syslog central par un agent de forwarding dédié. Cette page fait partie d'une famille d'agents équivalents sur ce point : Evtsys, SyslogAgent, Winlogd, Snare et Nxlog. NXLog se distingue toutefois du reste de cette famille par son caractère multiplateforme et son moteur de règles bien plus riche — sur un système Linux, il peut aussi être utilisé comme collecteur/forwarder de logs applicatifs sans lien avec Windows.

Historiquement, NXLog a souvent remplacé SEC, un corrélateur de logs par expressions régulières, dans les architectures de collecte centralisée.

Il peut aussi servir de tampon en entrée d'un pipeline de traitement de logs plus large, par exemple : nxlog → logstash → redis → logstash → elasticsearch → kibana.

Installation

# yum install dialog libdbi
# rpm -ivh nxlog-ce-<version>.x86_64.rpm

(paquet Community Edition, disponible sur le site de l'éditeur — à vérifier pour la version courante.)

Configuration

Exemple de configuration testé pour une architecture nxlog → logstash → elasticsearch → kibana, avec activation des extensions syslog, JSON, GELF et CSV (utilisée ici pour parser le format propriétaire d'agents tiers comme Snare) :

User nxlog
Group nxlog

LogFile /var/log/nxlog.log
LogLevel INFO

# Réception de messages syslog
<Extension _syslog>
    Module      xm_syslog
</Extension>

# Conversion en JSON pour transmission à Logstash
<Extension json>
    Module      xm_json
</Extension>

# Parsing d'un format CSV tabulé (ex. export d'un agent tiers)
<Extension snare>
    Module      xm_csv
    Fields      $id1, $id2, $id3, $id4, $id5, $id6, $id7, $id8, $id9, $id10
    Delimiter   \t
</Extension>

<Extension charconv>
    Module              xm_charconv
    AutodetectCharsets  utf-8, utf-16, utf-32, iso8859-2, windows-1252
</Extension>

<Extension gelf>
    Module  xm_gelf
</Extension>

# Réception syslog UDP standard
<Input in_udp>
    Module      im_udp
    Host        0.0.0.0
    Port        6161
    Exec        parse_syslog(); to_json();
</Input>

<Output out_gelf>
    Module      om_udp
    Host        localhost
    Port        12201
    OutputType  GELF
</Output>

# Tampon mémoire pour ne pas perdre d'événements si Logstash redémarre
<Processor buffer_udp>
    Module      pm_buffer
    MaxSize     1024
    Type        Mem
    WarnLimit   512
</Processor>

<Output out_tcp>
    Module  om_tcp
    Port    12201
    Host    localhost
</Output>

<Route udp>
    Path  in_udp => buffer_udp => out_tcp
</Route>

Voir aussi