このトピックでは、MBean 属性から永続的な JMX メトリックを作成する方法について説明します。JMX メトリックのモニタリングについては、「JMXのモニタリング」を参照してください。

AppDynamics のコミュニティには、プラットフォーム固有のトラブルシューティングのヒントを得るのに役立つ JMX に関するトピックが多数存在します。

JMXメトリックルールとメトリック

永続的なJMXベースのメトリックは、メトリックルールを使用することでAppDynamicsに追加できます。永続的なJMXメトリックを作成すると、以下を行えるようになります。

  • メトリックブラウザで永続的JMXメトリックを表示する
  • 永続的JMXメトリックをカスタムダッシュボードに追加する
  • 永続的JMXメトリックに正常性ルールを作成し、アラートを受信する

新しいメトリックを作成するには、MBeanブラウザまたはJMXメトリックルールパネルを使用できます。MBeanクエリ式がサポートされています。

権限

新しいJMXメトリックを構成するには、アプリケーションに対する「JMXの構成」権限がユーザアカウントに必要です。アプリケーションに対するユーザ権限の構成については、「Roles and Permissions」を参照してください。

MBeanブラウザへのアクセス

MBeanがすでにモニタリングされている場合、その属性の1つからメトリックを作成するには、MBeanブラウザを使用します。

既存のMBean属性からメトリックを構成するには

  1. MBean をホストするノードのノードダッシュボードを開き [JMX] タブをクリックし、[MBean Browser] サブタブをクリックします。 
  2. 左パネルに表示されるドメインを展開し、目的の属性が含まれている MBean を選択します。 
  3. 右パネルの [Attributes] セクションを開き、その属性を選択して [Create Metric] をクリックします。 

JMXメトリックルールの構成

複雑なマッチングパターンに基づくものと考えられる MBean と属性を追加するには、[Configuration > Instrumentation] に移動し、[JMX] タブをクリックします。

JMXメトリック構成パネルで、Javaプラットフォームをクリックし、メトリックをプラットフォームグループに追加します。または、プラットフォームリストの上部で新規グループを作成し、そのグループにメトリックを追加します。 

グループを使用することで、自分にとって理にかなった方法でメトリックを整理できます。たとえば、Java プラットフォームでカスタムメトリックを維持したり、自分で追加するメトリックはすべて「カスタム」グループに格納して付属のメトリックと区別できます。 

JMXメトリックの設定

MBeanにインストゥルメンテーションを追加するための一般的な設定は、以下のとおりです。

  • Name は、UI に表示する MBean の識別子です。 
  • Exclude Rule は、一致する MBean を除外します。一致しないものは他のルールによって含まれる可能性があります。「MBean属性の除外」を参照してください。 
  • Enabled は、このルールを適用することを示します。
  • Metric Path でメトリックがメトリックブラウザに表示される場所を指定します。以下のスクリーンショットでは、メトリックパスは JMX メトリック「Tomcat_HttpThreadPools」の「Web Container Runtime」です。

MBeanのサブパネルには、監視するMBeanを特定するための一致条件を追加します。

  • [Domain name] は Java ドメインです。このプロパティは正確な名前である必要があり、ワイルドカード文字は使用できません。
  • [Object Name Match Pattern] はフルオブジェクト名のパターンです。このプロパティにはアスタリスクなどのワイルドカード文字を使用でき、名前または値のあらゆる組み合わせを一致させることができます。たとえば、「jmx:type=Hello,*」を指定すると、JMX MBeanオブジェクト名「jmx:type=Hello,name=hello1,key1=value1」と一致します。
  • [Instance Identifier] は MBean ID です。
    インスタンス ID は JMX オブジェクトパターンのフィールドで、同じ属性のセットを持つ MBean カテゴリのランタイムコンテキストを分類するために使用できます。たとえば、ユーザに 8090 と 8181 の 2 つの HTTP ポートがあるとします。ただし、「currentThreadsBusy」と「maxThreads」という属性は同じです。JMX パターンに HTTP と AJP の両方が含まれているが、ユーザが AJP スレッドプールではなく HTTP のみをモニタすることに関心がある場合、ユーザは「HTTP」と一致する名前の ID を使用して、HTTP ポート関連の MBean データのみが収集されるようにします。[ Advanced MBean Matching Criteria] は、属性値と照合するためのオプションのコントロールです。テストする属性名と値および一致条件(サブストリングマッチなど)を指定します。

インスタンス ID が指定されていない場合は、オブジェクト名の一致パターンに一致するリソースまたは属性のツリーが JMX メトリックブラウザに表示されます。

次に例を示します。

JMX -->
        ConnectionPoolModules
                        ConnectionPoolA

                                      PoolSize
                        ConnectionPoolB

                                       PoolSize 

「instance identifier = path2」のようなインスタンス ID を指定した場合は、最上位レベルの第 2 レベル属性も表示されます。

上記のツリーは次のように表示されます。第 2 レベルにある PoolSize は、トップレベルにも表示されています。

JMX -->
        ConnectionPoolModules
                       PoolSize

                       ConnectionPoolA

                                      PoolSize
                        ConnectionPoolB

                                       PoolSize 


たとえば、以下のスクリーンショットは「GCJMXMetric」ルールに対する MBean 一致条件を示したものです。

一致したすべてのMBeanには、そのMBean属性に以下のようなメトリックを1つ以上定義できます。

  • Metric Getter Chain式は、あらゆる値に対して実行できます。さらに、暗黙的な変換を使用するString型とBoolean型のためのGetterチェーンもサポートされています。「MBean Getter チェーン」を参照してください。
  • Metric Time Rollup は、時間の経過にともなうメトリックの集計方法を決定します。データポイントを平均するか合計するか、あるいは期間内の最新のデータポイントを使用するかを選択できます。
  • Metric Cluster Rollup は、ティアにあるすべてのノードのパフォーマンスデータを使用し、ティアのメトリックを集計する方法を定義します。データを平均するか合計するかを選択できます。
  • Metric Aggregator Rollup は、エージェントが複数の測定値(観測値)を 1 分間隔でレポートされる観測情報にロールアップする方法を定義します。パフォーマンス上の理由から、エージェントは 1 分間隔でデータをコントローラにレポートします。「平均応答時間」のように、1分間に複数回測定(観測)されるメトリックもあります。Metric Aggregator Rollup設定は、エージェントがこのようなメトリックを集計する方法を決定します。データポイントの観測値の平均または合計を取ることも、最新の観測値を使用することも可能です。または、最新の観測値と以前の観測値との差分を使用することも可能です。

たとえば以下の構成では、MBean属性の「maxThreads」は、JMXメトリックブラウザのMaximum Threadsメトリックにマッピングされています。

JMX構成のエクスポートおよびインポート

JMX構成の編集後、JMXインストゥルメンテーションページのJMXメトリック構成パネル上部にあるJMX構成エクスポートおよびインポートアイコンを使って、構成をバックアックまたは転送することができます。構成は XML ファイルとしてエクスポートされます。 

JMXによりモニタリングされるノードでのトランザクションモニタリングの無効化

キャッシュやメッセージバスのモニタリングなど、状況によってはトランザクションモニタリングによるオーバーヘッドをかけずにJMXメトリックを収集したほうが良い場合があります。

そのような時は、エントリポイントでトランザクション検出をオフにします。トランザクション検出を無効にする方法については、「トランザクション検出ルール」を参照してください。 

MBean Getterチェーン

カスタムMBeanの構成にあるGetterチェーンは、目的の値を取得するメソッドを指定します。

式は、あらゆる値に対して実行できます。ボクシングされたプリミティブ型数値(Short、Integer、Long など)の Getter チェーンのサポートに加え、暗黙的な変換を使用する String 型や Boolean 型がサポートされています。 

Boolean型とString型は、以下のように暗黙的にIntegerに変換されます。

  • Boolean型は自動的に0(false)および1(true)に変換されます。
  • String型は数値に変換されます。

Getterチェーンの使用方法を解説するため、時間を返すgetSomething()メソッドを以下のようにクラスに指定します。

メトリックGetterチェーンの構成は次のようになります。