Bagaimana cara meneruskan file log tertentu di luar / var / log dengan rsyslog ke server jauh?

25

Bagaimana saya bisa meneruskan pesan dari file log tertentu seperti /www/myapp/log/test.logdengan rsyslogklien ke rsyslogserver jauh ? File log ini berada di luar direktori /var/log.

Kevin Campion
sumber

Jawaban:

43

Cukup atur aturan imfile di /etc/rsyslog.conf Anda

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

Ini menonton file dan menyimpan ke fasilitas local3 di syslog. Kemudian Anda dapat mengirim semua data dari fasilitas local3 ke server jauh Anda. Anda mungkin juga ingin menambahkan yang berikut ini ke conf rsyslog Anda (biasanya /etc/rsyslog.d/50-default.conf di Ubuntu) untuk tidak menyimpan fasilitas local3 ke / 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

Selain itu, saya akan mendorong beberapa bacaan dari rsyslog docs berikut untuk pemfilteran lebih lanjut:

  1. Pengganti Properti
  2. Kondisi Filter
Bryan York
sumber
Ini sangat membantu, terima kasih Bryan. Satu-satunya tantangan saya di sini adalah baris untuk menjaga log ekstra dari sisi klien / var / log / syslog tidak berfungsi untuk saya di Ubuntu 12.04. Mungkin PEBKAC, tapi saya ingin tahu apakah ini adalah tantangan yang diketahui?
James T Snell
1
Menemukannya. Masalah saya adalah bahwa /etc/rsyslog.d/50-default.conf sudah memiliki pernyataan yang dimulai dengan . ; auth; authpriv.none .. Baris itu tampaknya diutamakan. Jadi dengan menambahkan baris terakhir yang Anda berikan, itu tidak berpengaruh. Sebaliknya, yang serupa yang sudah ada sebelumnya harus diubah. Sangat membantu. Terima kasih!
James T Snell
1

Di ubuntu, saya juga harus mengomentari drop drop privilege untuk mendapatkan rsyslog agar benar-benar membaca file log di luar / var / log.

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