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


24

どのように私は次のように特定のログファイルからメッセージを転送することができます/www/myapp/log/test.logrsyslog、リモートのクライアントrsyslogサーバー?このログファイルは、ディレクトリの外部にあります/var/log

回答:


42

/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. フィルター条件

ブライアン、ありがとうございます。ここでの唯一の課題は、Ubuntu 12.04でクライアント側の/ var / log / syslogが機能しないという余分なログを保持する行です。おそらくPEBKACですが、これは既知の課題なのでしょうか?
ジェームズTスネル14

理解した。私の問題は、/ etc / rsyslog.d / 50-default.confにで始まるステートメントが既にあることでした; auth; authpriv.none ..その行が優先されるようです。したがって、指定した最後の行を追加しても、効果はありません。代わりに、既存の同様のものを変更する必要があります。非常に役立ちます。ありがとう!
ジェームズTスネル14

1

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.