/ opt/appname/logsの下のアプリケーションによって生成されたログをリモートSyslogサーバーに送信するようにrsyslogをセットアップしようとしています。 OSレベルのログを送信するようにrsyslogを構成しましたが、アプリケーションのログも送信できるかどうかを確認したいと思っていました。 IncludeConfigディレクティブが別の* .confファイルを探すときに機能するかどうかはわかりません。
rsyslogは、ファイルからの読み取りをサポートしています。これはimfile
モジュールで行われます。次の構成が必要です。
module(load="imfile" PollingInterval="10") #needs to be done just once
# needs to be done for each file you want to watch
input(type="imfile" File="/path/to/file1"
Tag="tag1"
StateFile="statefile1"
Severity="error"
Facility="local7")
詳細は rsyslogドキュメントサイト にあります。
常に古い構文を使用できます。
例えば。 /etc/rsyslog.d/11-your-file.conf
$ModLoad imfile
$InputFileName /app/your-file.log
$InputFileTag your-tag
$InputFileStateFile your-tag
$InputFileSeverity info
$InputFileFacility local7
$InputRunFileMonitor
$InputFilePersistStateInterval 1000
local7.* @@remote-rsyslog-server:port
使用できる起動スクリプトをフックすると、組み合わせることができます
tail -n 0 -F /opt/appname/logs/file | logger ...
ロガーのパラメーターが優先され、リモートのsyslogサーバーを指定するか、ローカルセットアップを使用して、rsyslogに転送を実行させることができます。
この設定の欠点は、アプリケーションの起動時にログを追跡していること、またはその間のレコードを見逃していることを確認する必要があることです。
より良い解決策は、より多くの作業を提供しますが、logstashのようなものを使用することです。
アプリケーションログに従って入力を構成します。ファイルについては、sincedb
を使用して、最後に停止したところから続行し、syslogに出力するモジュールを使用できます。
何をしたいかによっては、これは大変な作業になる場合があります。