29 votes

Comment transférer un fichier journal spécifique en dehors de /var/log avec rsyslog vers un serveur distant ?

Comment puis-je transférer le message d'un fichier journal spécifique comme /www/myapp/log/test.log con rsyslog client à distance rsyslog serveur ? Ce fichier journal se trouve en dehors du répertoire /var/log .

46voto

Bryan York Points 566

Il suffit de configurer une règle imfile dans votre /etc/rsyslog.conf

#/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /data/mysql/error.log
$InputFileTag mysql-error
$InputFileStateFile stat-mysql-error
$InputFileSeverity error
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@hostname:<portnumber>

Cela surveille un fichier et l'enregistre dans l'installation local3 de syslog. Vous pouvez ensuite envoyer toutes les données de l'installation local3 à votre serveur distant. Vous pouvez également ajouter ce qui suit à votre conf rsyslog (généralement /etc/rsyslog.d/50-default.conf sur Ubuntu) pour ne pas enregistrer l'installation local3 dans /var/log/syslog :

#/etc/rsyslog.d/50-default.conf
*.*;auth,authpriv.none,local1.none,local2.none,local3.none,local4.none,local5.none,local6.none          -/var/log/syslog

En outre, j'encourage la lecture des documents rsyslog suivants pour un filtrage plus avancé :

  1. Le remplaçant de la propriété
  2. Conditions de filtrage

0 votes

C'est très utile, merci Bryan. Mon seul problème ici est la ligne pour garder les journaux supplémentaires hors du /var/log/syslog côté client qui ne fonctionne pas pour moi sur Ubuntu 12.04. Probablement un PEBKAC, mais je me demande si c'est un problème connu ?

1 votes

J'ai compris. Mon problème était que /etc/rsyslog.d/50-default.conf avait déjà une déclaration commençant par . ;auth;authpriv.none.. Cette ligne semble avoir la priorité. Donc, en ajoutant la dernière ligne que vous avez donnée, elle n'a aucun effet. Au lieu de cela, il faut modifier la ligne similaire préexistante. Très utile. Merci !

0 votes

Qu'en est-il de l'ajout de plusieurs fichiers journaux ? @BryanYork

2voto

jozwikjp Points 131

Sur ubuntu, j'ai dû également commenter les lignes drop privileges pour que rsyslog puisse lire le fichier journal en dehors de /var/logs.

#/etc/rsyslog.conf
$ModLoad imfile
$InputFileName /data/mysql/error.log
$InputFileTag mysql-error
$InputFileStateFile stat-mysql-error
$InputFileSeverity error
$InputFileFacility local3
$InputRunFileMonitor
local3.* @@hostname:<portnumber>

# Set the default permissions for all log files.
#
#$FileOwner syslog
#$FileGroup adm
#$FileCreateMode 0640
#$DirCreateMode 0755
#$Umask 0022
#$PrivDropToUser syslog
#$PrivDropToGroup syslog

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X