Comment transférer un message à partir d'un fichier journal spécifique comme /www/myapp/log/test.log
avec rsyslog
client au serveur rsyslog
distant? Ce fichier journal est en dehors du répertoire /var/log
.
Il suffit de configurer une règle d'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 la fonction local3 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é:
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