5

分散コンピューティングを支援するサードパーティ プラットフォーム (GigaSpaces) の使用を開始しました。現在解決しようとしている主要な問題の 1 つは、この分散環境でログ ファイルを管理する方法です。現在、以下の設定を行っています。

私たちのプラットフォームは 8 台のマシンに分散されています。各マシンには、java.util.logging を使用して個別のログ ファイルに記録する 12 ~ 15 のプロセスがあります。このプラットフォームの上に、log4j とログを使用してファイルを分離する独自のアプリケーションがあります。また、stdout を別のファイルにリダイレクトして、スレッド ダンプなどをキャッチします。

これにより、約 200 の異なるログ ファイルが作成されます。

現在のところ、これらのファイルの管理を支援するツールはありません。次の場合、これは私たちに深刻な頭痛の種を引き起こします。

  • どの工程で問題が発生したか事前にわからない場合のトラブルシューティング。この場合、現在、ssh を使用して各マシンにログインし、使用を開始してgrepいます。

  • 通常とは異なるログを定期的にチェックして、積極的に対処しようとします。この場合、現在すべてのマシンにログインし、 と を使用してさまざまなログを調べていlessますtail

  • アラートの設定。しきい値を超えるイベントに関するアラートの設定を検討しています。これは、200 個のログ ファイルをチェックするのに苦労するようです。

現在、1 秒あたり約 5 つのログ イベントしかありませんが、より多くのコードを新しいプラットフォームに移行するにつれて、それは増加します。

コミュニティに次の質問をしたいと思います。

  • さまざまなフレームワークを介して記録された複数のマシンに分散された多くのログ ファイルで、同様のケースをどのように処理しましたか?
  • なぜその特定のソリューションを選択したのですか?
  • ソリューションはどのように機能しましたか? 何が良いと思い、何が悪いと思いましたか?

どうもありがとう。

アップデート

Splunk の試用版を評価することになりました。私たちはそれがどのように機能するかに非常に満足しており、購入することに決めました. セットアップが簡単で、検索が高速で、技術者向けの豊富な機能があります。同様の状況にある人には、チェックすることをお勧めします。

4

5 に答える 5

3

すべての Java ロギングをSimple Logging Facade for Java (SLF4J) にパイプし、すべてのログを SLF4J から LogBack にリダイレクトすることをお勧めします。SLF4J は、すべての一般的なレガシー API (log4j、commons-logging、java.util.logging など) を処理するための特別なサポートを備えています。こちらを参照してください。

LogBack にログを取得したら、多くのアペンダーの 1 つを使用して、複数のマシンでログを集約できます。詳細については、アペンダーに関するマニュアルのセクションを参照してください。ソケット、JMS、および SMTP が最も明白な候補のようです。

LogBack には、ログ ファイル内の特別な条件を監視し、特定のアペンダーに送信されるイベントをフィルター処理するためのサポートも組み込まれています。したがって、ログに ERROR レベルのイベントがあるたびに電子メールを送信するように SMTP アペンダーを設定できます。

最後に、トラブルシューティングを容易にするために、受信するすべての「リクエスト」に何らかのrequestIDを追加してください。詳細については、この質問に対する私の回答を参照してください。

編集: 独自のカスタム LogBack アペンダーを実装し、すべてのログをScribeにリダイレクトすることもできます。

于 2010-10-25T13:40:31.740 に答える
2

調査する興味深いオプションは、これらのノードでHadoop クラスターを実行し、アプリケーションに固有の結果を検索および集計するためのカスタムMap Reduceジョブを作成することです。

于 2010-10-25T13:51:07.400 に答える
1

SplunkScribeなどのログ集計ツールを検討することをお勧めします。

(また、アプリの作成ではなく、アプリとそのデータの管理に関係しているため、これは ServerFault の質問だと思います。)

于 2010-10-25T13:13:32.500 に答える
0

私が提供できる唯一のアドバイスは、コードを介してトランザクションIDを渡し、ログを記録するときに必ずログに記録することです。これにより、後でさまざまな呼び出しを相互に関連付けることができます。

于 2010-10-25T13:36:18.747 に答える
0

ファイルを集中管理されたマシンに転送して、その上でアナライザー メカニズムを実行します。Hadoop クラスターを使用してそれを行い、map/reduce ジョブを実行して分析を行うことができるかもしれません...非常に 5 分で haddop クラスターなどにコピーします。これがニーズに合っているかどうかはわかりません。その関係では、すでに述べたように Scribe を検討することをお勧めします。

于 2010-10-25T13:55:15.160 に答える