Works with:

データコレクタを使用すると、ビジネストランザクションやトランザクション分析データをアプリケーションデータで補足することができます。アプリケーションデータは、ビジネストランザクションのパフォーマンス上の問題に背景情報を付加します。たとえば、パフォーマンス低下の影響を受けるビジネストランザクションの特定のパラメータ値や戻り値を示すことがあります。 

このようなデータは、特定のユーザ、注文、製品といった、パフォーマンス上の問題によって悪影響を受けるビジネス状況を示します。  

データコレクタの種類

次の 2 種類のデータコレクタがあります。

  • メソッド呼び出しデータコレクタ:メソッド引数、変数、戻り値などのコードデータをキャプチャします。
  • HTTP データコレクタ:ビジネストランザクションで交換される HTTP メッセージの URL、パラメータ値、ヘッダー、および Cookie をキャプチャします。 

トランザクション分析データの収集」を参照してください。

収集されたデータの表示

ビジネストランザクションに適用されると、データコレクタはトランザクション スナップショットに表示される情報を補足します。HTTP データコレクタによってキャプチャされた情報は [HTTP DATA] と [COOKIES] セクションに表示され、メソッド呼び出しデータは [Business Data] セクションに表示されます。 

収集されたデータを表示するには、次の手順を実行します。

  1. [Transaction Snapshots ] ペインに移動します。 
  2. データを表示するトランザクションをダブルクリックします。
  3. 収集されたデータを表示するには、[Data Collector] をクリックします。

データコレクタの構成

データコレクタを設定するには、[Configure Diagnostic Data Collectors] 権限が必要です。データコレクタを設定するには、次の手順を実行します。

  1. データをキャプチャする方法を特定します。これを行うにはメソッドの署名を定義し、オプションで、メソッド内のコードポイントの値(戻り値や引数など)に基づいてフィルタを定義します。 

  2. データのソースとなる実際のコードポイントを指定します。 

  3. データコレクタをビジネストランザクションに適用する場合は、該当するビジネストランザクションを選択します。 

通常、データコレクタを作成するには、アプリケーションのソースコードまたはドキュメントを参照して、コレクタを設定するコードを把握する必要があります。JVM 1.5 や .NET アプリケーション環境の場合、メソッド呼び出しデータコレクタによってインストゥルメンテーション構成(クラス名、メソッド名、メソッドパラメータなど)が変更される場合に、JVM またはアプリケーションサーバを再起動する必要があります。 

データコレクタには、以下のプラットフォーム固有の考慮事項が適用されます。

  • C/C++ SDK の場合:ここで説明するコントローラ UI ではなく、appd_bt_add_user_data function() を使用してメソッドデータコレクタを作成します。「C/C++ SDK 参考資料」を参照してください。

  • Node.js エージェントの場合:ここで説明するコントローラ UI ではなく、addSnapshotData() Node.js API のみを使用してメソッドデータコレクタを作成します。「Node.jsエージェントAPI参考資料」を参照してください。
  • Python エージェントでは、次を使用してデータコレクタを作成できます。
    • Python エージェント API:add_snapshot_data() Python エージェント API を使用してメソッドデータコレクタを作成します。「PythonエージェントAPI参考資料」を参照してください。
      または、
    • コントローラ UI:[with a Class Name that] オプションのみが有効です。メソッドデータコレクタはスタンドアロン Python 関数に追加できません。Getter チェーンは、access(user.name) 属性、access(user['name])  キー値、および calling(user.getName()  メソッドをサポートしています。
  • PHP メソッドデータコレクタにおいては、「with a Class Name that」オプションのみが有効です。メソッドデータコレクタはスタンドアロン PHP 関数に追加できません。

データコレクタの自動構成

コールグラフを使用して、トランザクション スナップショットからデータコレクタを直接追加できます。これにより、クラスとメソッドが自動的に追加されます。

  1. コールグラフをダブルクリックします。
  2. 目的のノードにドリルダウンします。 
  3. 目的のメソッドを右クリックします。
  4. [Configure Instrumentation for this Class/Method] をクリックします。
  5. ウィザードを完了します。

データコレクタの手動構成

データコレクタは、少なくとも 2 つの方法で手動で設定できます。 

左ペインから:

  1. 左ペインで [Configuration] をクリックします。
  2. [Instrumentation] をクリックします。
  3. [Data Collectors] タブをクリックし、追加するデータコレクタのタイプのデータコレクタボックス下にある [Add] をクリックします。データコレクタ設定パネルが表示されます。

コールグラフから:

  1. コールグラフをダブルクリックします。
  2. メニューバーの [Data Collectors] をクリックします。 
  3. [Actions] をクリックします。
  4. [Configure Data Collectors] をクリックします。
  5. 追加するデータコレクタのタイプのデータコレクタボックス下部にある [Add] をクリックします。データコレクタ設定パネルが表示されます。

データコレクタには、以下に挙げるプラットフォーム固有の考慮事項が適用されるのでご留意ください。

  • C/C++ SDK:ここで説明するコントローラ UI ではなく、appd_bt_add_user_data function() を使用してメソッドデータコレクタを作成します。「C/C++ SDK 参考資料」を参照してください。
  • Node.js エージェント:ここで説明するコントローラ UI ではなく、addSnapshotData() Node.js API のみを使用してメソッドデータコレクタを作成します。「Node.jsエージェントAPI参考資料」を参照してください。
  • Python エージェント:コントローラ UI ではなく、add_snapshot_data() Python エージェント API を使用してメソッドデータコレクタを作成します。「PythonエージェントAPI参考資料」を参照してください。
  • PHP メソッドデータコレクタ:「with a Class Name that」オプションのみが有効です。また、メソッドデータコレクタはスタンドアロン PHP 関数に追加できません。

データコレクタを構成する一般的な手順は以下のとおりです。

  1. データをキャプチャする方法を特定します。これを行うにはメソッドの署名を定義し、オプションで、メソッド内のコードポイントの値(戻り値や引数など)に基づいてフィルタを定義します。 
  2. データのソースとなる実際のコードポイントを指定します。 
  3. データコレクタをビジネストランザクションに適用する場合は、該当するビジネストランザクションを選択します。 

通常、データコレクタを作成するには、アプリケーションのソースコードまたはドキュメントを参照して、コレクタを設定するコードの知識が必要です。JVM 1.5 や .NET など、いくつかのアプリケーション環境においては、メソッド呼び出しデータコレクタによってインストゥルメンテーション構成(クラス名、メソッド名、メソッドパラメータなど)が変更される場合に、JVM またはアプリケーションサーバを再起動する必要があります。 

構成に関する備考

  • [ Apply to new Business Transactions] オプションは、データコレクタを構成した後に作成されたビジネストランザクションにコレクタを適用します。そうでない場合は、データコレクタは後続のデータコレクタ構成ペインで選択したビジネストランザクションのみに適用されます。 
  • [Class] では、クラス名や実装されているインターフェイス名など、データコレクタがクラスの識別に使用できる一致条件を選択します。クラス名で一致させる場合は、そのアプリケーション プラットフォームに適した完全修飾クラス名を使用します。たとえば、equalsフィールド値の形式は次のようになります。
    • Java の場合:com.appdynamics.model.Item
    • .NET の場合:Bookstore.Item
    • PHP の場合:book
  • Is this Method Overloaded:オーバーロードメソッドの場合は、署名を識別するパラメータを追加します。データをキャプチャするメソッドの各形式にデータコレクタ定義を作成する必要があります。たとえば、次の表のオーバーロードメソッドで 2 番目から 2 つの形式のみでデータをキャプチャするには、2 つのデータコレクタを作成する必要があります。構成するパラメータを次に示します。

    署名(Signature)

    構成するパラメータ

    getName()
    • なし(None)
    getName(int studentId)
    • パラメータインデックス 0:java.lang.int
    getName(int studentId, string name)
    • パラメータインデックス 0:java.lang.int
    • パラメータインデックス 1:java.lang.String
  • 特定の条件を満たすようメソッドの選択を調整できます。複数の一致条件を構成する場合、データコレクタをリクエストに適用するには、そのリクエストがすべての一致条件を満たしている必要があります。  

  • メソッドを特定したら、メソッドの戻り値や、引数、呼び出されたオブジェクトの Getter チェーンによりキャプチャされた値など、データをキャプチャするコードポイントを指定します。このコードポイントは、構成設定の [Specify the Data to Collect from this Method Invocation] セクションで構成します。

  • HTTP データコレクタは、HTTP パラメータ、リクエスト属性、cookie などのデータからデータをキャプチャできます。これらのプロパティの名前は正確に一致する必要があります。ワイルドカードはサポートされていません。Content-Length HTTP ヘッダーは、Average Request Size メトリックとして AppDynamics ですでにキャプチャされていることに注意してください。ただし、このヘッダーのデータコレクタがトランザクション スナップショットに値を表示する構成を選択することもできます。これは、メッセージサイズがパフォーマンスの低下に影響しているかどうかなどの検証に役立ちます。 

  • 複数のデータコレクタを構成できます。複数のデータコレクタの影響は累積的です。たとえば、URL HTTP リクエスト属性の収集を行わないカスタムデータコレクタを追加する場合でも、URL が収集されるように構成されているデフォルトの HTTP リクエストデータコレクタ構成を維持すると、URL は収集されます。

メソッド呼び出しデータコレクタの例

メソッド呼び出しデータコレクタは、Java および .NET に適用できます。

この(ウィザードを使用しない)手動設定の例では、Java アプリケーションでメソッド呼び出しデータコレクタを設定します。次のスニペットに示されるメソッド getCartTotal() のデータコレクタを、データソースとして後で使用するメソッド getUser() とともに作成します。   

package com.appdynamicspilot.model;
...
public class Cart implements java.io.Serializable {
    ...
    private Double fakeAmount = 0.0;
    ...
    private User user; 
    ...
    public User getUser() {
        return user;
    }
    ...
    public Double getCartTotal() {
        if (fakeAmount == 0.0) {
            double total = 0;
            if (items != null) {
                for (Item item : items) {
                    total += item.getPrice();
                }
            }
            return total;
        return fakeAmount;
    }
   ...
}

アプリケーションのデータコレクタを構成するには、データコレクタを追加して構成します。

  1. データコレクタを追加する場合は、構成に応じて適切に選択してください。
  2. まだ入力されていない場合は、クラスとメソッドを追加します。クラスとメソッド名は、メソッドを識別するために使用されます。 
  3. [Enable Data Collector for] チェックボックスで、[Transactions Snapshots ] を選択してトラブルシューティング用および APM スナップショット用のメタデータを追加するか、または [Transaction Analytics ] を選択して、後で分析プラットフォームで使用するトランザクションの実行に関するメタデータを収集します。トランザクション スナップショットのみから開始することをお勧めします。対象のデータ収集が確認されたら、トランザクション分析を有効にします。
  4. [Add Parameter] または [Add Match Condition] をクリックして、ポップアップから正しいパラメータを選択します。 
    1. メソッドがオーバーロードされると、メソッドパラメータが追加されます。[Add Parameter ] をクリックすると、パラメータインデックス 0 が追加されます。パラメータの完全修飾クラス名を追加します。 
    2. 一致条件を使用すると、メソッドまたはコード行が複数回呼び出されたときに特定のデータを選択できます。一致条件は、メソッドパラメータまたは戻り値を使用します。[Add Match Condition] を選択すると、[Create Match Condition] ポップアップが開きます。選択をして、[Save] をクリックします。  
    3. データコレクタを設定する場合は、[Apply to new Business Transactions] の横にあるチェックボックスに注意します。 
      1. このボックスをオンにすると、新しいビジネストランザクションにルールが自動的に適用されます。
      2. このチェックボックスをオフにすると、[Configuration > Instrumentation > Data Collectors] に移動して、ビジネストランザクションにルールを手動で適用する必要があります。
    4. 複数のコレクションタイプを追加するには、[Specify the Data to Collect from this Method Invocation] の下の [Add] をクリックして、データのソースを設定します。コードのこのセクションでは、呼び出されたオブジェクトと user.getCustomerName の getter チェーンを使用します。このコードスニペットは、呼び出されたオブジェクトのユーザ名をキャプチャする方法の例です。Cart クラスは、Cart と同じパッケージ内の次のクラスに基づいて User オブジェクトをインスタンス化します。User クラスには、ユーザの名前を返すためのメソッド getCustomerName() が含まれていることに注意してください。

    package com.appdynamicspilot.model;
    ...
    public class User implements java.io.Serializable {
        ...
        private String customerName = null;
        ...
      
        public String getCustomerName() {
            return customerName;
        }
        public void setCustomerName(String customerName) {
            this.customerName = customerName;
        }
        ...

    Getterチェーンを使用すると、このメソッドを同じデータコレクタ内の別のデータソースとして識別できます。たとえば、データソースとして [Invoked Object] を選択できます。Getter チェーン getUser().getCustomerName() は呼び出されたオブジェクトのオペレーションです。
    PHP エージェントでは、MIDC によって収集されたメソッドの戻り値がどの変数にも保存されていない場合、スナップショットと分析データの両方で「null」と表示されます。

  5. 完了したら、[Save] をクリックします。

メソッド呼び出しデータコレクタを構成したら、[Instrumentation] ペインで [Configure Transactions using this Data Collector ] をクリックすると、特定のデータコレクタにトランザクションをドラッグアンドドロップ(または強調表示して移動)できます。

遅い、非常に遅い、停滞したトランザクションのトランザクション スナップショットが完了すると、トランザクション スナップショットには指定されたユーザデータが含まれます。 

HTTP データコレクタの例

HTTP データコレクタ構成で、スナップショットに表示するリクエストデータを指定します。

データコレクタを構成するには、データコレクタを追加して構成します。

  1. 構成に応じて適切に選択してください。
  2. パラメータ、Cookie、セッションキー、またはヘッダーデータを収集するかどうかを決定します。
  3. データ型の下の [+Add] をクリックして、スナップショットに表示するリクエストデータを指定し、必要に応じて入力します。
    データコレクタを設定する場合は、[Apply to new Business Transactions] の横にあるチェックボックスに注意します。 
    1. このボックスをオンにすると、新しいビジネストランザクションにルールが自動的に適用されます。
    2. このチェックボックスをオフにすると、[Configuration > Instrumentation > Data Collectors] に移動して、ビジネストランザクションにルールを手動で適用する必要があります。
  4. 完了したら、[Save] をクリックします。