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