web-dev-qa-db-fra.com

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

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.

25
Kevin Campion

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é:

  1. Le remplaçant de propriété
  2. Conditions de filtrage
43
Bryan York

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
1
jozwikjp