Wie kann ich eine bestimmte Protokolldatei außerhalb von / var / log mit rsyslog an einen Remote-Server weiterleiten?

24

Wie kann ich eine Nachricht von einer bestimmten Protokolldatei wie /www/myapp/log/test.logmit einem rsyslogClient an einen Remote- rsyslogServer weiterleiten? Diese Protokolldatei befindet sich außerhalb des Verzeichnisses /var/log.

Kevin Campion
quelle

Antworten:

42

Richten Sie einfach eine imfile-Regel in Ihrer /etc/rsyslog.conf ein

#/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>

Dadurch wird eine Datei überwacht und in der local3-Einrichtung in Syslog gespeichert. Anschließend können Sie alle Daten von der local3-Einrichtung an Ihren Remote-Server senden. Möglicherweise möchten Sie auch Folgendes zu Ihrer rsyslog conf hinzufügen (normalerweise /etc/rsyslog.d/50-default.conf unter Ubuntu), um die local3-Funktion nicht in / var / log / syslog zu speichern:

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

Darüber hinaus empfehle ich das Lesen der folgenden rsyslog-Dokumente für eine erweiterte Filterung:

  1. Der Property Replacer
  2. Filterbedingungen
Bryan York
quelle
Das ist sehr hilfreich, danke Bryan. Meine einzige Herausforderung hierbei ist die Möglichkeit, die zusätzlichen Protokolle vom Client fernzuhalten. / Var / log / syslog funktioniert unter Ubuntu 12.04 nicht. Wahrscheinlich ein PEBKAC, aber ich frage mich, ob dies eine bekannte Herausforderung ist?
James T Snell
Herausgefunden. Mein Problem war, dass /etc/rsyslog.d/50-default.conf bereits eine Anweisung hatte, die mit beginnt . ; auth; authpriv.none .. Diese Zeile scheint Vorrang zu haben. Wenn Sie also die letzte von Ihnen angegebene Zeile hinzufügen, hat dies keine Auswirkung. Stattdessen muss die bereits vorhandene ähnliche geändert werden. Sehr hilfreich. Vielen Dank!
James T Snell
1

Unter Ubuntu musste ich auch die Drop-Privilegien-Zeilen auskommentieren, damit rsyslog die Protokolldatei tatsächlich außerhalb von / var / logs liest.

#/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
quelle