web-dev-qa-db-ja.com

rsyslogを使用して/ var / log外の特定のログファイルをリモートサーバーに転送する方法

rsyslogクライアントを使用して/www/myapp/log/test.logなどの特定のログファイルからリモートrsyslogサーバーにメッセージを転送するにはどうすればよいですか?このログファイルは/var/logディレクトリの外にあります。

25
Kevin Campion

/etc/rsyslog.confにimfileルールを設定するだけです

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

これはファイルを監視し、syslogのlocal3機能に保存します。その後、local3ファシリティからリモートサーバーにすべてのデータを送信できます。 local3ファシリティを/ var/log/syslogに保存しないように、rsyslog conf(通常はUbuntuの/etc/rsyslog.d/50-default.conf)に以下を追加することもできます。

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

さらに、より高度なフィルタリングのために、次のrsyslogドキュメントを読むことをお勧めします。

  1. プロパティの置き換え
  2. フィルター条件
43
Bryan York

Ubuntuでは、rsyslogに実際に/ 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