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

25

Comment puis-je transférer le message d'un fichier journal spécifique comme /www/myapp/log/test.logavec le rsyslogclient vers le rsyslogserveur distant ? Ce fichier journal se trouve en dehors du répertoire /var/log.

Kevin Campion
la source

Réponses:

43

Configurez simplement une règle de fichier 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 enregistre dans l'installation locale3 dans syslog. Ensuite, vous pouvez envoyer toutes les données de l'installation locale3 à votre serveur distant. Vous pouvez également ajouter les éléments suivants à votre conf rsyslog (généralement /etc/rsyslog.d/50-default.conf sur Ubuntu) pour ne pas enregistrer la fonction 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

De plus, j'encouragerais la lecture des documents rsyslog suivants pour un filtrage plus avancé:

  1. Le remplaçant de propriété
  2. Conditions de filtrage
Bryan York
la source
C'est très utile, merci Bryan. Mon seul défi ici est la ligne pour garder les journaux supplémentaires hors du côté client / var / log / syslog ne fonctionne pas pour moi sur Ubuntu 12.04. Probablement un PEBKAC, mais je me demande si c'est un défi connu?
James T Snell
1
Deviner. Mon problème était que /etc/rsyslog.d/50-default.conf avait déjà une instruction commençant par . ; auth; authpriv.none .. Cette ligne semble avoir la priorité. Donc, en ajoutant la dernière ligne que vous avez donnée, cela n'a aucun effet. Au lieu de cela, le similaire préexistant doit être modifié. Très utile. Merci!
James T Snell du
1

Sur Ubuntu, j'ai également dû commenter les lignes de privilèges de suppression afin que le rsyslog lise réellement 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
jozwikjp
la source