どのようにモニターの例外やエラーの発生その他のJavaアプリケーションのシームレス?
質問
を見つけていきたいまたはアプリケーション開発の実行可能なデーモンとしては、当組合にご連絡のうえ、管理者にメールまたはsmsを受信できない場合は、Javaのプレゼンテーションをホストも例外やエラーが知ってい JVMTI を実現できるのが私の目標です影響のモニタ用途ないわからないどのくらいになるので、可能な微もできるようにしtroublesom仕事をJVMTI剤をお使いいただくことによって起こらない場合複数の運用会社のパイオニアとして活動を同時に同じです。がより良いソリューション?よろしくお願いします。
解決
1つの方法は、システムAで発生するすべてのエラーをシステムB上のロギングサーバーに公開するLog4Jのようなロギングシステムを使用して、発生したエラーを監視できることです。ただし、これは完全に一般的な溶融ではありません。Log4J(または他のロギングシステム)に伝播される例外のみが処理されるためですが、それは良いスタートかもしれません。
他のヒント
最良の解決策は、Javaアプリケーションに電子メール/SMSを介してエラーを送信させることです。問題は、プログラムが例外を生成し、通常の操作で正しく処理することです。あなたは特定の例外のみを望んでいます。
これに失敗すると、アプリケーションのログを読み取るログリーダーを書くことができます。これは正しくなるのが難しいですが、それを行うことができます。
アプリケーションは、これらの例外を処理する方法を知っているため、アプリケーションは1日あたり1000以上の例外を生成できますが、通常は動作します。たとえば、ソケット接続が閉じるたびに例外をスローできます。
IMO、最良のアプローチは、外部監視システムを展開することです。これはできます:
- 複数のアプリケーションを監視します
- インフラサービスを監視します
- ネットワークの可用性とマシンのアクセシビリティを監視し、
- プロセッサやファイルシステムの使用などのリソースを監視します。
アプリケーションは、次のようなさまざまな方法で監視できます。
- ログイベントを処理することにより、
- アプリケーションの再起動を監視することで、
- アプリケーションのWeb APIを「ping」することにより、サービスの責任を確認し、
- アプリケーションのJMXインターフェイスを使用します。
この情報はフィルタリングおよび優先順位付けされ、インテリジェントな方法で優先順位を付けることができ、重要なイベントはどんな手段でも最も適切であることを報告できます。
個々のアプリケーションが電子メールを送信する必要はありません。まともな仕事をするのに十分な情報がないためです。さらに、レポートロジックを個々のアプリケーションに入れると、一貫性のない実装、設定性が低いなどにつながる可能性があります。
JVMTIに代わる近くの代替品があります。 JPDA. 。このインフラストラクチャを使用すると、Javaコードを使用してリモートの「デバッガー」(はい、それが計画していることです)を作成し、ローカル接続またはリモート接続を使用してVMに接続できます。
JVMTIのように、プログラムの実行へのオーバーヘッドがあります。ただし、 Trace.java
例を示していますが、ターゲットVMを実装して接続することは非常に簡単です。
最後に、Application Server(JBoss、Glassfish、Tomcat、名前)で実行されるようにコードを計装する場合は、さまざまな手段があります。
あのアプリケーションがあるためには影響しない。また見学木花/ElasticSearch、SplunkやLogscape企業向けソリューション(いずれも、無料バージョン).
私のエコーなどといわれているのは、何java既に提供を、よくお使いいただくために外部のモニタリングシステムをJavaで提供:
- log4j-ログエラー、警告、死亡および例外のファイル
- JMXをカスタムアプリケーションのメトリクスでのアクセスがjava.lang/*ご利用いただけませヒープメモリ使用量、ガーベッジコレクション、スレッドカウンター等
- JVM gcログインログインすることができますすべてのごみ収集イベントファイルには、任意長の全GCョンにします。
外部監視システムを可能にする設定アラートがoffの異なる運転シナリオ.まも視覚化システムの性能を示します。に使用しました Logscapeの javaアプリのモニター30javaプロセスに広がるover3。