私はグリッドと HPC 空間で多くの作業を行っていますが、数百 (場合によっては数千) のサーバーに分散されたシステムで直面する最大の課題の 1 つは、ログ ファイルの分析です。
現在、ログ ファイルは各ブレードのディスクにローカルに書き込まれますが、UDP アペンダーなどを使用してログ情報を公開し、中央で収集することも検討できます。
できるだけリアルタイムに近い状態で問題を特定できるようにすることが目的であるとすると、何をすべきでしょうか?
私はグリッドと HPC 空間で多くの作業を行っていますが、数百 (場合によっては数千) のサーバーに分散されたシステムで直面する最大の課題の 1 つは、ログ ファイルの分析です。
現在、ログ ファイルは各ブレードのディスクにローカルに書き込まれますが、UDP アペンダーなどを使用してログ情報を公開し、中央で収集することも検討できます。
できるだけリアルタイムに近い状態で問題を特定できるようにすることが目的であるとすると、何をすべきでしょうか?
まず、NTP を使用してシステム内のすべてのクロックを同期します。
次に、ログを 1 つの場所 (あなたが言及した UDP アペンダーなど) で収集している場合は、ログに実際に役立つ十分な情報があることを確認してください。少なくとも、ログを生成したサーバー、ログが発生した時刻、およびメッセージを含めます。何らかの種類のトランザクション ID またはジョブ ID タイプの概念がある場合は、それも含めます。
UDP Appenderについて言及したので、log4j(またはその兄弟の1つ)を使用していると思います。Log4j には、処理スレッドを介して追加情報を渡すことができる MDC クラスがあります。追加情報の一部を収集して渡すのに役立ちます。
Apacheを使用していますか?もしそうなら、mod_log_spreadを見ることができますが、インフラストラクチャが大きすぎて保守できない場合があります。もう1つのオプションは、ログメッセージの「ブロードキャスト」または「マルチキャスト」を確認し、専用のロギングサーバーでこれらのフィードをサブスクライブして照合することです。