Jak przekazać określony plik dziennika poza / var / log z rsyslog na zdalny serwer?

24

Jak mogę przekazać wiadomość z określonego pliku dziennika jak /www/myapp/log/test.logz rsyslogklienta do zdalnego rsyslogserwera? Ten plik dziennika znajduje się poza katalogiem /var/log.

Kevin Campion
źródło

Odpowiedzi:

42

Wystarczy ustawić regułę imfile w swoim /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>

Spowoduje to obejrzenie pliku i zapisanie w obiekcie local3 w syslog. Następnie możesz wysłać wszystkie dane z obiektu local3 na zdalny serwer. Możesz także dodać następujące elementy do swojego rsyslog conf (zwykle /etc/rsyslog.d/50-default.conf na Ubuntu), aby nie zapisywać narzędzia local3 w / 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

Dodatkowo zachęcam do lektury następujących dokumentów rsyslog w celu bardziej zaawansowanego filtrowania:

  1. Zastępca właściwości
  2. Warunki filtrowania
Bryan York
źródło
To bardzo pomocne, dziękuję Bryan. Moje jedyne wyzwanie polega na tym, aby dodatkowe dzienniki nie znajdowały się po stronie klienta / var / log / syslog nie działa dla mnie na Ubuntu 12.04. Prawdopodobnie PEBKAC, ale zastanawiam się, czy jest to znane wyzwanie?
James T Snell,
Domyśliłam się. Mój problem polegał na tym, że plik /etc/rsyslog.d/50-default.conf miał już instrukcję zaczynającą się od . ; auth; authpriv.none .. Ta linia wydaje się mieć pierwszeństwo. Tak więc dodanie ostatniego podanego wiersza nie ma żadnego efektu. Zamiast tego istniejący wcześniej podobny musi zostać zmodyfikowany. Bardzo pomocne. Dzięki!
James T Snell,
1

Na Ubuntu musiałem również skomentować linie upuszczania uprawnień, aby rsyslog rzeczywiście odczytał plik dziennika poza / 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
źródło