このページでは、Java Management Extensions(JMX)のモニタリングについて説明します。Java アプリケーション環境は、通常 JMX または IBM パフォーマンス モニタリング インフラストラクチャ(PMI)をサポートしています。AppDynamicsでは、JMXおよびPMI属性が自動検出されます。

JMXモニタリングのサポートについて

JMXは、MBeans(Managed Beans)と呼ばれるオブジェクトを使用してアプリケーションからのデータやリソースを表示します。一般的なアプリケーション環境では、JMXを使用する3つの主要なレイヤーが存在します。

  • JVM が、内蔵の JMX インストゥルメンテーションまたは JVM に関する重要なメトリックを供給するプラットフォームレベルの MBeans を提供。
  • アプリケーションサーバーが、サーバーまたはサーバーに関するメトリックを公開するコンテナレベルのMBeansを提供。
  • アプリケーションがアプリケーションレベルのアクティビティをモニタリングするカスタムMBeansを定義。

通常、MBeans はリソースが所属する場所を示すためドメインにグループ化されます。また、JVM には複数のドメインが存在します。たとえば Apche Tomcat で実行するアプリケーションには、Catalina および Java.lang のドメインが存在します。Catalina はリソースと Tomcat コンテナに関連する MBeans を表し、Java.lang は JVM ホットスポットランタイムに関する MBeans を表します。アプリケーションには、独自のカスタムドメインが存在する場合があります。

ここで説明されているように、MBean属性を使用してAppDynamicsで固定JMXメトリックを作成できます。また、あるバージョンの JMX メトリック構成または AppDynamics のインスタンスを、他のバージョンまたはインスタンスにインポートおよびエクスポートすることもできます。 

Writing PMI Applications Using the JMX Interface」を参照してください。

JMXモニタリングの前提条件

AppDyamicsでは、次の場合にMBeanがキャプチャされます。

  • モニタリングするシステムが Java 1.5 以降で実行されている。
  • モニタリング対象の各JavaプロセスでJMXが有効になっています。JMX のドキュメントを参照してください。

MBeanベースのメトリック

AppDynamicsでは、Javaコンテナの正常性を示す主要なMBean属性の長期的なメトリックが作成されます。アプリケーションの構成によって、メトリックには以下が含まれます。

  • アクティブおよび期限切れのセッション数、最大アクティブセッション、処理時間、平均および最大アライブ回数、セッションカウンタなどのセッション情報。
  • ユーザーリクエストに対してサービスを実行するスレッドプールを表すWebコンテナのランタイムメトリック。メトリックには、保留中のリクエストおよびリクエストを実行する現在のスレッド数が含まれる。このメトリックは、応答時間などのビジネストランザクションのメトリックに関連。
  • JMSの宛先に関連するメッセージングメトリック。現在の消費者数や現在のメッセージ数などが含まれる。
  • 現在のプールサイズや最大プールサイズなどのJDBC接続プールメトリック。

ノードで検知されるJMXメトリックを見るには、ノードダッシュボードのJMXタブを確認します。自動検出されないその他のメトリックについては、独自に MBeans から JMX メトリックを構成できます。 

app-agent-config.xml で sensitive-data-filters プロパティを設定すると、JMX および MBean の機密データをマスキングできます。詳細については、機密データのフィルタを参照してください。

JMXメトリックデータの表示

MBeanベースのメトリックは、ノードダッシュボードおよびメトリックブラウザを使用して確認できます。また、MBeanブラウザではシステム内で定義されるすべてのMBeansを表示できます。

メトリックブラウザで JMX メトリックを確認するには、ノードダッシュボードの [JMX] タブをクリックします。JMX メトリックブラウザが開き、MBeans がメトリックツリーで表示されます。 

メトリックブラウザで提供されるすべてのオペレーションを実行できます。詳細については、Metric Browserを参照してください。 

ライブグラフを使用したMBeansの傾向分析

Live Graph を使用すると、特定の MBean 属性の傾向をモニタリングすることができます。 

ライブグラフを表示するには:

  1. ノードダッシュボードで [JMX] タブをクリックし、[MBean Browser] サブタブを選択。

  2. MBean をモニタリングするドメインを選択。 
  3. ドメインツリーでドメインを展開し、MBean を検索して選択。
  4. [Attributes] セクションを展開して MBean の属性を選択。
  5. [Start Live Graph for Attribute] をクリックし、[Start Live Graph] をクリック。ランタイムの値が表示。
  6. 属性を選択して [Live Graph for Attribute] をクリックして、特定のグラフの大観を表示。

MBeanの値について

Javaベースのシステムをトラブルシューティングまたはモニタリングする際に、複合MBeans値の変更やMBeanメソッドの実行が必要な場合があります。

MBean 属性の値を変更したり、オペレーションを呼び出したりするには、アプリケーションに対する Set JMX MBean Attributes and Invoke Operations 権限を持っている必要があります。「アプリケーションの権限」を参照してください。

MBean属性値を表示または編集するには:

  1. [JMX] パネルから、[MBean Browser] を選択。
  2. ドメインツリーで、対象となる MBean を検索。
  3. [Editable] コラムが Yes になっている編集可能な属性を選択し、[View/Edit Attribute] をクリック。
  4. 表示される [MBean Attribute] パネルで、現在の MBean 属性値を確認。
  5. 編集可能な MBean 属性値は、[Value ] フィールドに新しい値を入力して変更。

MBeanオペレーションの呼び出し

JMXビューアを使用すると、パラメータの標準Java言語文字列でMBeanオペレーションを呼び出し、返された値を表示できます。

このアクションを実行するには、ユーザがアプリケーションに対する Set JMX MBean Attributes and Invoke Operations 権限を持っている必要があります。

MBeanオペレーションを呼び出すには

  1. MBean Browser を開く。
  2. ドメインツリーで、対象となる MBean を検索。
  3. [Operations] ペインを開き、スクロールして対象となるオペレーションを見つけたら [Invoke Action] をダブルクリック。
  4. オペレーションのパラメータ値を入力し、[Invoke] をクリック。getMBeanInfo(java.util.Locale)など、複合型コンストラクタのスカラー値には「en-us」の入力が可能。

オペレーションが進行中であることと経過秒数を示すメッセージが表示され、オペレーションが完了すると結果が表示されます。オペレーションが完了すると結果が表示されます。呼び出しからのメソッドの戻り値が複合属性であることもあります。この場合、メソッドの名前、説明、種類、および編集可能な属性も [MBean Operation Result] エリアに表示されます。

使用可能なJXMメトリック

Java Management Extensions(JMX)は、Javaアプリケーションをモニタリング、管理するための公式仕様です。AppDynamicsでは、アプリケーションが消費するリソースなどの管理データを収集するJavaクラスプロパティにJMXを通じてアクセスします。

ご使用の環境で利用可能な特定のメトリックに関する詳細は、ベンダーより提供されるドキュメントでご確認ください。

JMXメトリックの追加

事前構成されたメトリックに加えて、1つ以上のMBeanからの属性セットをマッピングするJMXメトリックルールを使用して新しい固定メトリックを定義できます。詳細については、MBeanからのJMXメトリックの構成を参照してください。

エージェントAPIでモニタリングを拡張

アプリケーションサーバーエージェントAPIはデフォルトやMBeansでサポートされないメトリックへのアクセスを行います。APIを利用して以下を行うことができます。

  • カスタムイベントの注入とそのレポート
  • 新規メトリックの作成とレポート
  • AppDynamicsでサポートされないプロトコルを使用する場合の分散トランザクションの関連付け

アプリケーション サーバ エージェント API の詳細は、下記の場所にある Java エージェントソフトウェアに含まれる Javadoc を参照してください。

<agent_home>/sdk/docs/index.html