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

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

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

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

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

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

新しい JMX メトリックを構成するには、アプリケーションに対する Configure JMX 権限がユーザアカウントに必要です。「カスタムロールの作成と管理」を参照してください。

MBeanブラウザへのアクセス

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

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

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

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

  1. 複雑なマッチングパターンに基づくものと考えられる MBean と属性を追加する場合は、[Configuration > Instrumentation] > [JMX] に移動します。
  2. [JMX Metric Configurations] パネルで、Java プラットフォームをクリックし、メトリックをプラットフォームグループに追加します。 
  3. または、新規グループを作成し、そのグループにメトリックを追加します。
    グループを使用すると、ニーズに合わせてメトリックを整理できます。たとえば、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 です。
    [Instance Identifier] は JMX オブジェクトパターンのフィールドで、同じ属性のセットを持つ MBean カテゴリのランタイムコンテキストを分類するために使用できます。たとえば、ユーザカテゴリに 8090 と 8181 の 2 つの HTTP ポートがあるとします。ただし、currentThreadsBusymaxThreads などの属性は同じです。JMX パターンに HTTP と AJP の両方が含まれているが、ユーザが AJP スレッドプールではなく HTTP のみをモニタすることに関心がある場合、ユーザは「HTTP」と一致する名前の識別子を使用して、HTTP ポート関連の MBean データのみが収集されるようにします。 
  • [Advanced MBean Matching Criteria] は属性値とマッチングするためのオプションのコントロールです。テストする属性名と値および一致条件(サブストリングマッチなど)を指定します。

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

例 1

JMX -->
        ConnectionPoolModules
                        ConnectionPoolA

                                      PoolSize
                        ConnectionPoolB

                                       PoolSize 

instanceIdentifierinstance identifier = path2 と指定すると、最上位レベルと第 2 レベルの属性が表示されます。

上のツリーは、次の例のように表示されます。PoolSize は、第 2 レベルと最上位レベルに表示されます。

JMX -->
        ConnectionPoolModules
                       PoolSize

                       ConnectionPoolA

                                      PoolSize
                        ConnectionPoolB

                                       PoolSize 


たとえば、次のスクリーンショットは GCJMXMetric ルールの MBean 一致条件を示したものです。

MBean Matching Criteria

一致したすべての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 メトリックに次のようにマッピングされます。

maxThreads MBean Attribute Mapping

例 2

たとえば、JBoss で次の Mbean からアクティブ カウント プロパティを取得するとします。

jboss.as:subsystem=datasources,data-source=MyDatasource_01,statistics=pool

次のように、メトリックルールを定義します。

Object name Match Pattern:jboss.as:subsystem=datasources,*,statistics=pool
Instance identifier: data-source
Attribute: ActiveCount

[Object Name Match Pattern] では、ワイルドカードも使用して複数のブランチを置き換えできます。「jboss.as:subsystem=datasources,whatever=another_level,whatever=another_level,data-source=MyDatasource_01,statistics=pool」では、「jboss.as:subsystem=datasources,*,statistics=pool」を使用できます。

インスタンス識別子は、次のように区切られたインスタンス化された要素です。

jboss.as:subsystem=datasources,data-source=MyDatasource_01,statistics=pool

jboss.as:subsystem=datasources,data-source=MyDatasource_02,statistics=pool

...

jboss.as:subsystem=datasources,data-source=MyDatasource_07,statistics=pool

したがって、インスタンス識別子として data-source を使用する必要があります。

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

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

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

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

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

MBean Getterチェーン

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

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

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

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

次の例では、時間を返す getSomething() メソッドがクラスにある場合に、Getter チェーンを使用する方法を示します。

Getter Chain Example

この例では、メトリック Getter チェーン設定は、次のようになります。

Getter Chain Configuration