Javaアノテーションによるカスタム インストルメンテーション

APMインサイトでは、Javaアノテーションの利用によりお客さまアプリケーションのクラスやメソッドの組み込み・測定ができます。トランザクションにカスタム名を付けたり、カスタム コンポーネントを割り当てたりが可能です。

要件

  • apminsight-javaagent.zipファイルをダウンロードしてください。エージェントjar、関連ファイル、apminsight-javaagent-api.jarが含まれています。
  • apminsight-javaagent-api.jarをプロジェクトのビルド パスに追加します。jarファイルがアプリケーションのライブラリと合わせてエクスポートされるようにしてください。
  • JavaエージェントAPIでは、お客さまアプリケーションでカスタム クラスやメソッドのパフォーマンスを追跡するのに使える、2つのアノテーションを提供しています。
    • ApmTracker:インストルメント対象となり、トレースに含まれるあらゆるクラスやメソッドに利用できます。
    • ApmRootTracker:トランザクション実行の開始ポイント(とりわけバックグラウンド トランザクション)となりうるメソッドに利用できます。

ApmTracker

このアノテーションはクラスとメソッドに使えます。クラスに使うと、クラスに存在するすべてのメソッドに属性が適用されます。メソッドすべてのアノテーションにオーバーライドを行います。

属性:

  • component:追加属性

    アノテートするクラスやメソッドのカスタム コンポーネントを定義します。

    例:

    例1:クラスでの使い方
    @ApmTracker
    public class Category {
        ...
    }

    例2
    @ApmTracker(component="payment"
    public class PaymentProcessor {
        ...
    }

    例3:メソッドでの追懐方
    public class Product {
      @ApmTracker
        public int getPrice(String product, String brand) {
            ...
        }
        ...
        @ApmTracker(component="FetchBrand")
        private List fetchAllBrandsList(String product) {
            ...
        }
    }

  • name:追加属性

    実際のメソッド名の先頭に追加されるアノテーション先要素のカスタム名です。カスタム名をメソッド パラメーターに使う場合は、引数インデックスにプレフィックス「$」を付けてください(インデックスは1から開始です)。

    例:

    インストルメントしたメソッドと、そのカスタム名は、トレースに表示されます。

ApmRootTracker

このアノテーションはメソッドにのみ使えます。アノテートされたメソッドがサーバーでトランザクション処理のため最初に実行されたものである場合、トランザクションはtxnName属性の値にリネームされます。それ以外の場合は、通常のメソッド呼び出しと見なされ、トレースに捕捉されます。

属性:

  • component:追加属性

    アノテートするメソッドのカスタム コンポーネントを定義します。

  • name:追加属性

    実際のメソッド名の先頭に追加されるアノテーション先要素のカスタム名です。カスタム名をメソッド パラメーターに使う場合は、引数インデックスにプレフィックス「$」を付けてください(インデックスは1から開始です)。

  • txnName:必須属性

    メソッドがバックグラウンド トランザクションのエントリ ポイントであれば、トランザクションの名前を定義します。それ以外の場合は、通常のメソッドとして追加しトレースに追加します。

    トランザクション名はtxnName属性で指定した値になります。