29

問題のシステムにはサーバーが 1 つしかないため、分散ソフトウェア (Java で記述) のロギングの問題を集中化する方法を探しています。しかし、特定のサーバーのより多くのインスタンスが将来実行される可能性が非常に高いことを覚えておいてください (そして、これを必要とするアプリケーションがさらに増えるでしょう)、Logging-Server のようなものが必要になるでしょう。着信ログを処理し、サポート チームがアクセスできるようにします。

現在の状況では、いくつかの Java アプリケーションがデータをローカル ファイルに書き込む log4j を使用しているため、クライアントに問題が発生した場合、サポート チームはログを要求する必要がありますが、これは必ずしも簡単ではなく、多くの時間がかかります。 . サーバー障害の場合、とにかくリモートアクセスがあるため、診断の問題はそれほど大きくありませんが、それでも、Logging-Server を介してすべてを監視することは非常に理にかなっています。

「集中ログ」に関する質問を調べているときに、別の質問を見つけました(実際には、(この場合) 使用可能な回答を持つ唯一の質問です。問題は、すべてのアプリケーションが閉じた環境 (1 つのネットワーク内) で実行されていることと、セキュリティ ガイドラインです)。内部ソフトウェアに関するものを環境ネットワークの外に出すことを許可しないでください。

また、このような Logging-Serverを実装する方法についての素晴らしい記事も見つけました。この記事は 2001 年に書かれたものなので、誰かがこの特定の問題を既に解決しているかもしれないと思っていたでしょう。しかし、私の検索結果は何も思いつきませんでした。

私の質問: サポート チームがアクセスできる集中型サーバーを使用して、ネットワーク経由でログを処理するログ フレームワークはありますか?

仕様:

  • 可用性
  • サーバーは当社が運営する必要があります。
  • Java 1.5 の互換性
  • 異種ネットワークへの互換性。
  • 最良のケース: プロトコルは HTTP を使用してログを送信します (ファイアウォールの問題を回避するため)
  • 最良のケース: log4j または LogBack、または基本的に slf4j を実装するものを使用します

必須ではありませんが、あると便利です

  • もちろん、認証とセキュリティは問題ですが、少なくともしばらくは後退する可能性があります (オープンソフトウェアの場合は、必要に応じて拡張しますOT: 私たちは常にプロジェクトに恩返しをします)。
  • データマイニングと分析は、ソフトウェアをより良くするために非常に役立つものですが、それは外部アプリケーションである可能性もあります.

私の最悪のシナリオは、そのようなソフトウェアではないということです。その場合、おそらくこれを自分で実装します。しかし、そのようなクライアント サーバー アプリケーションがあれば、この特に問題のある作業を行う必要がないことに非常に感謝しています。

前もって感謝します

更新:このソリューションは、いくつかの Java 対応プラットフォームで実行する必要があります。(主に Windows、Linux、一部の HP Unix)

更新:さらに多くの調査を行った結果、取得できるソリューションを実際に見つけました。clusterlog.net (少なくとも 2015 年半ば以降はオフライン) は、分散ソフトウェアのログ サービスを提供し、log4j および logback (slf4j と互換性があります) と互換性があります。これにより、アプリケーションを介してすべてのユーザーを分析できます。したがって、報告されたバグ (または報告されていないバグでさえも) を非常に簡単に再現できます。また、重要なイベントを電子メールで通知し、同じ起源のログが簡単にアクセスできる形式にまとめられたレポート システムを備えています。ほんの数日前にここにデプロイしました (これは完璧でした)。

更新 (2016 年): この質問にはまだ多くのトラフィックがありますが、私が言及したサイトはもう存在しません。

4

4 に答える 4

6

Log4jはSocketAppenderで使用できるため、サーバー部分をLogEvent処理として記述する必要があります。http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketAppender.htmlを参照してください

于 2012-06-19T12:34:02.560 に答える
3

Facebook のすぐに使えるソリューションであるScribeがあり、内部で Apache Hadoop を使用しています。しかし、私が知っているほとんどの企業は、依然としてそのための社内システムを開発する傾向があります。私はそのような会社の 1 つに勤務し、約 2 年前に丸太を扱っていました。また、Hadoop も使用しました。私たちの場合、次の設定がありました。

  • ログ集約用のマシンの小さな専用クラスターがありました。
  • ワーカーは本番サービスからログをマイニングし、個々の行を解析しました。
  • 次に、リデューサーが必要なデータを集計し、レポートを作成します。

関心のある少数の一定数のレポートがありました。まれに、別の種類の分析を実行したい場合は、そのための専用のレデューサー コードを追加し、必要に応じて古いログに対して実行しました。

興味のある分析の種類を事前に決定できない場合は、ワーカーによって準備された構造化データを HBase または他の NoSQL データベースに格納することをお勧めします (ここでは、たとえば、人々は Mongo DB を使用します)。そうすれば、未加工のログからデータを再集計する必要がなくなり、代わりにデータストアにクエリを実行できるようになります。

このようなログ集計ソリューションに関する優れた記事が多数あります。たとえば、Pig を使用して集計データをクエリしますPigを使用すると、SQL に似たクエリで大規模な Hadoop ベースのデータセットにクエリを実行できます。

于 2012-06-19T13:07:07.050 に答える
3

logFaces を見てください。仕様が満たされているようです。 http://www.moonlit-software.com/

  • 在庫状況 (チェック)
  • サーバーは当社が運営する必要があります。(小切手)
  • Java 1.5 の互換性 (チェック)
  • 異種ネットワークへの互換性。(小切手)
  • 最良のケース: プロトコルは HTTP を使用してログを送信します (ファイアウォールの問題を回避するため) (ほぼ TCP/UDP)
  • 最良のケース: log4j または LogBack、または基本的に slf4j を実装するものを使用します (チェック)
  • 認証(チェック)
  • データマイニングと分析 (拡張 API を介して可能)
于 2012-06-19T12:40:15.370 に答える