Centos でサードパーティのログをログ サーバーにリダイレクトする方法

Centos でサードパーティのログをログ サーバーにリダイレクトする方法

すべてのクライアントからのログを受け入れるためのシンプルなログ サーバーをセットアップしたいと考えています。/var/log/mail、message、boot などの標準のシステム ログのことではありません。アプリケーション ログをリダイレクトまたは送信したいのですが、メッセージをログに記録するために syslog デーモンをまったく使用していない可能性があります。

/appdir/log/error.log など。

インターネットで多くの投稿を見つけましたが、そのほとんどは rsyslog または syslog-ng の使用を推奨しています。今のところ、アプリケーション ログではなく標準のシステム ログをリダイレクトできています。私は Centos 5/6 環境を使用しています。

答え1

これに関して私が目にした主なアプローチは 2 つあります。

まず、多くのアプリケーションには、syslog ホストにネイティブに書き込む機能があります。これが最善の方法です。その他の場合は、基本的なスクリプトを使用します。以下に示すようなスクリプトが機能します。

sudo tail /my/app/log | nc -w0 -u 192.168.1.1 514

編集 - ログを生成するシステムで syslog-ng を実行している場合、実際に syslog-ng 内でこれを処理する方法があります。必要に応じて命名規則と宛先を置き換えてください。rsyslog でも同様のものが利用可能ですが、これは扱いにくいです (私見)。

source s_trbdk3 {
   file("/var/log/trbdk3.log" flags(no-parse) program_override("trbdk3")  );
};
log{
    source(s_trbdk3);
    destination( d_mesg );
 };

答え2

rsyslog のimfile入力モジュールは次のことが可能です。

任意の標準テキスト ファイルを syslog メッセージに変換する機能を提供します。標準テキスト ファイルは、行が LF で区切られた印刷可能な文字で構成されるファイルです。

あなたは読むことができます公式文書多くのための。

試したことはないし、それほど効率的ではないかもしれないが、目的は達成できそうだ。

syslog-ngは同様のことを実行できるようです。file()ソースドライバこの例次のようなソース宣言を提案します:

source s_all {  
    file("/path/to/your/file" follow_freq(1) flags(no-parse)); 
};  

関連情報