Centralisation des logs Nginx avec Rsyslog

Configuration de rsyslog coté nginx

Créer le fichier de configuration /etc/rsyslog.d/nginx.conf pour y placer

$ModLoad imfile

$InputFileName          /var/log/nginx/access.log
$InputFileTag           nginx_access_log:
$InputFileStateFile     nginx_access_log
$InputFileSeverity      info
$InputFileFacility      user
$InputRunFileMonitor

$InputFileName          /var/log/nginx/error.log
$InputFileTag           nginx_error_log:
$InputFileStateFile     nginx_error_log
$InputFileSeverity      info
$InputFileFacility      user
$InputRunFileMonitor

# lit le fichier de log toutes les deux secondes
$InputFilePollingInterval 2

#envoie les logs en tcp a 192.1.2.3 port 514
if $syslogtag == 'nginx_access_log:' then @@(z9)192.1.2.3:514
if $syslogtag == 'nginx_error_log:' then @@(z9)192.1.2.3:514

#ne log pas ce qui est tagué nginx (pour ne pas logger en double)
:syslogtag, contains, "nginx" ~

Configuration de rsyslog coté serveur de log

Créer de la même manière le fichier /etc/rsyslog.d/nginx.conf pour y insérer :

Définition du template

$template nginx_access_log,"/var/log/distant/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/nginx.access.log"
$template nginx_error_log,"/var/log/distant/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/nginx.error.log"

Mise en place du log en fonction du tag défini sur le client rsyslog

if $syslogtag == 'nginx_access_log:'         then ?nginx_access_log
if $syslogtag == 'nginx_access_log:'         then ~

if $syslogtag == 'nginx_error_log:'                   then ?nginx_error_log
if $syslogtag == 'nginx_error_log:'                   then ~

Assurez vous que dans /etc/rsyslog.conf vous avez bien ces paramétrés :

Configuration réseau et ACL réseau

$ModLoad imtcp
$InputTCPServerRun 514
$AllowedSender TCP, 127.0.0.1, 192.1.2.0/24

# Droits par défaut pour la création des dossiers/fichiers
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$CreateDirs on

Suggestions de lecture :

comments powered by Disqus