この質問は、JMXがどのように機能するか、またはJMXが何をするかについてではありません。この質問は、本番環境の標準アプリケーションサーバー環境でのJMXのアプリケーションに関するものです。特定のサーバー用でもありません。
Java EEサービスの標準スタック(データベースアクセス(JDBCおよびJPA)、セッションEJB、JMS、Webサーバー、Webサービス、AJAX対応サービス)を実行する実稼働環境でJMXを使用して何を監視しますか?
この質問は、JMXがどのように機能するか、またはJMXが何をするかについてではありません。この質問は、本番環境の標準アプリケーションサーバー環境でのJMXのアプリケーションに関するものです。特定のサーバー用でもありません。
Java EEサービスの標準スタック(データベースアクセス(JDBCおよびJPA)、セッションEJB、JMS、Webサーバー、Webサービス、AJAX対応サービス)を実行する実稼働環境でJMXを使用して何を監視しますか?
JVMレベルでは、1分あたりのガベージコレクション期間を監視します。
サーブレットコンテナレベルでは、リクエストの数、例外の数(4xxおよび5xxコード)、1分あたりのリクエスト期間の合計を監視します。
SOAPレベルでは、呼び出しの数、例外の数、および操作ごとと1分あたりの呼び出しの合計を監視します。
Web MVCフレームワークレベルでは、呼び出しの数、例外の数、アクションごとおよび1分あたりの呼び出しの合計を監視します。
プール(データソース、スレッドプール/エグゼキューターサービス)については、アクティブカウントを監視します。
JMS接続の場合、1分あたりの送受信メッセージの数、およびアクティブな受信者の数を監視します。
EhCacheの場合、キャッシュ内のエントリ数、1分あたりのヒット数とミス数を監視します。
ビジネスアプリケーションレベルでは、@ Profiledアノテーションを開発して、呼び出しの数、例外の数、および1分あたりの合計期間を監視しました。
このような種類のメトリックに興味がある場合は、多くのJMXエクストラ(dbcp、util.concurrent、jms、@ profiledアノテーション)を開発し、Spring XML名前空間ベースの構成、Hyperic HQプラグイン、jspページの監視などでこれらすべてをパッケージ化しました。
詳細はこちら:http ://code.google.com/p/xebia-france/wiki/XebiaManagementExtras 。
このコードはすべて、ビジネスフレンドリーなオープンソースApacheソフトウェアライセンス2の下でライセンスされ、Maven中央リポジトリにデプロイされ、jarとしてダウンロードでき、GoogleCodeSubversionサーバーで利用して希望どおりに統合できます。
お役に立てれば、
Cyrille(Xebia)
JMXを使用して、Log4Jロガーレベルを動的に調整できるMBeanを公開しました。これは、指定されたロガーのログレベルを変更するために、すべてのノードでlog4j構成ファイルを変更する必要がないクラスター化されたアプリケーションに非常に役立つことがわかりました。
私の最も一般的な要件は、スレッド数とメモリを監視することです。私の最近の作業は、グリッドにディスパッチするスレッドの多いサーバーに関するものであり、スレッドの使用状況(サーバーが実行しているディスパッチ作業の量の測定値)を監視することが重要でした。メモリはスレッドの使用量と密接に関係しています(一部は各スレッドに関連付けられたオブジェクトのため、一部はスレッドごとの暗黙的なスタック割り当てのため)。
ワークロードキューデータもJMX対応にしました。上記は作業項目のキューイングの症状または影響を監視しましたが、最終的には実際の作業キューを監視したかったのです。何が起こっているのかをより明確に把握するために、JMXを介して主要なコンポーネントを公開することは価値があります。
以前のプロジェクトでは、スレッド数とメモリ、HTTPセッションの数、クエリキャッシュのサイズを監視しました。キャッシュを使用するJMXのもう1つの利点は、強制的にフラッシュできることです。
少しOTですが、JMXをかなり多く使用できます。現在、JMXを使用してコンポーネントをホットデプロイ/ホットフィックスしています。既存のコンポーネント(フィルターなど)に機能を動的に追加します。JMXは、同じJVM上のコンポーネント間の通信に適しています。私が作成するすべてのコンポーネントは、JMXを使用するようにインストルメント化されています。