rsyslog
クライアントを使用して/www/myapp/log/test.log
などの特定のログファイルからリモートrsyslog
サーバーにメッセージを転送するにはどうすればよいですか?このログファイルは/var/log
ディレクトリの外にあります。
/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ドキュメントを読むことをお勧めします。
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