web-dev-qa-db-ja.com

Rsyslogを使用してアプリケーションログをsyslogサーバーに送信する

/ opt/appname/logsの下のアプリケーションによって生成されたログをリモートSyslogサーバーに送信するようにrsyslogをセットアップしようとしています。 OSレベルのログを送信するようにrsyslogを構成しましたが、アプリケーションのログも送信できるかどうかを確認したいと思っていました。 IncludeConfigディレクティブが別の* .confファイルを探すときに機能するかどうかはわかりません。

6
Lego

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ドキュメントサイト にあります。

7
Jenny D

常に古い構文を使用できます。

例えば。 /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
2
Pavel K

使用できる起動スクリプトをフックすると、組み合わせることができます

tail -n 0 -F /opt/appname/logs/file | logger ... 

ロガーのパラメーターが優先され、リモートのsyslogサーバーを指定するか、ローカルセットアップを使用して、rsyslogに転送を実行させることができます。

この設定の欠点は、アプリケーションの起動時にログを追跡していること、またはその間のレコードを見逃していることを確認する必要があることです。

より良い解決策は、より多くの作業を提供しますが、logstashのようなものを使用することです。

アプリケーションログに従って入力を構成します。ファイルについては、sincedbを使用して、最後に停止したところから続行し、syslogに出力するモジュールを使用できます。

何をしたいかによっては、これは大変な作業になる場合があります。

0
Manuel Sousa