Configure Method Data Collectors
この演習では、Web ブラウザから AppDynamics Controller にアクセスし、Agentless Analytics を有効にします。
Method Invocation Data Collector は、メソッド引数、変数、戻り値などのコードデータをキャプチャします。HTTP Data Collector で十分なビジネスデータが取得できない場合でも、コード実行からこれらの情報をキャプチャできます。
この演習では、以下のタスクを実行します
- メソッドの検出
- ディスカバリーセッションの開始
- メソッドパラメータの検出
- コード内のオブジェクトへのドリルダウン
- Method Invocation Data Collector の作成
- Method Invocation Data Collector のアナリティクス検証
ディスカバリーセッションの開始 #
ソースコードからメソッドやパラメータを特定できるアプリケーション開発者がいない場合があります。しかし、AppDynamics から直接アプリケーションのメソッドやオブジェクトを検出するアプローチがあります。
- 画面左上の Applications タブを選択します。
- Supercar-Trader-YOURINITIALS アプリケーションを選択します。
- Configuration タブを選択します。
- Instrumentation リンクをクリックします。
- Transaction Detection タブを選択します。
- 右側の Live Preview Button をクリックします。

- Start Discovery Session ボタンをクリックします。
- ポップアップウィンドウで Web-Portal Node を選択します。調査対象のメソッドが実行されているノードと同じものを選択してください。
- Ok をクリックします。

- 右側のトグルで Tools を選択します。
- ドロップダウンリストで Classes/Methods を選択します。
- Search セクションで Classes with name を選択します。
- テキストボックスにクラス名 supercars.dataloader.CarDataLoader を入力します。クラス名を見つけるには、コールグラフを検索するか、理想的にはソースコードで確認します。
- Apply をクリックして一致するクラスメソッドを検索します。
- 結果が表示されたら、検索に一致するクラスを展開します。
- saveCar メソッドを探します。

saveCar メソッドは入力パラメータとして CarForm オブジェクトを受け取ることに注意してください。
オブジェクトへのドリルダウン #
メソッドが見つかったので、そのパラメータを調べて、車の詳細プロパティをどこから取得できるかを確認します。
saveCar メソッドは複合オブジェクト CarForm を入力パラメータとして受け取ることがわかりました。このオブジェクトはアプリケーションの Web ページで入力されたフォームデータを保持します。次に、そのオブジェクトを調査し、車の詳細をどのように取得できるかを確認する必要があります。
- テキストボックスに入力オブジェクトのクラス名 supercars.form.CarForm を入力します。
- Apply をクリックしてクラスメソッドを検索します。
- 結果が表示されたら、検索に一致する supercars.form.CarForm クラスを展開します。
- 必要な車の詳細を返すメソッドを探します。price、model、color などの get メソッドが見つかります。

Method Invocation Data Collector の作成 #
前の演習で得られた情報をもとに、実行時に実行中のコードから直接車の詳細を取得する Method Invocation Data Collector を設定できます。
- Applications タブを選択します。
- Supercar-Trader-YOURINITIALS アプリケーションを選択します。
- Configuration タブを選択します。
- Instrumentation リンクをクリックします。
- Data Collectors タブを選択します。
- Method Invocation Data Collectors で Add をクリックします。

車の詳細をキャプチャするための Method Invocation Data Collector を作成します。
- Name に SellCarMI-YOURINITIALS を指定します。
- Transaction Snapshots を有効にします。
- Transaction Analytics を有効にします。
- with a Class Name that を選択します。
- Class Name として supercars.dataloader.CarDataLoader を追加します。
- Method Name として saveCar を追加します。

観察した通り、SaveCar メソッドの Index 0 の入力パラメータはクラス CarForm のオブジェクトであり、そのオブジェクト内に getPrice() などの車の詳細プロパティを返す Getter メソッドがあります。
MIDC でその値をどのように取得するかを説明すると、以下の手順を実行します
- MIDC パネルの下部にある Add をクリックして、収集する新しいデータを指定します。
- Display Name に CarPrice_MIDC を指定します。
- Collect Data From で Method Parameter of Index 0(CarForm Object)を選択します。
- Operation on Method Parameter で Use Getter Chain を選択します。CarForm 内のメソッドを呼び出して車の詳細を返します。
- getPrice()(CarForm クラス内の価格を返す Getter メソッド)を指定します。
- Save をクリックします。

- color、model など、データを収集したいすべてのプロパティについて上記の手順を繰り返します。

- Save MIDC をクリックし、"/Supercar-Trader/sell.do" ビジネストランザクションに適用します。
MIDC の実装には JVM の再起動が必要です
- EC2 インスタンスに SSH 接続します。
- Tomcat サーバーをシャットダウンします。
cd /usr/local/apache/apache-tomcat-9/bin
./shutdown.shまだ実行中のアプリケーション JVM が残っている場合は、以下のコマンドで残りの JVM を終了させます。
sudo pkill -f Supercar-Trader- Tomcat サーバーを再起動します。
./startup.sh- Tomcat サーバーが実行中であることを確認します(数分かかる場合があります)。
curl localhost:8080<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/9.0.50</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="wrapper"
....MD パラメータのアナリティクス検証 #
Web サイトにアクセスし、Sell Car ページでフォームを数回送信して手動で負荷をかけます。
次に、AppDynamics Analytics で HTTP Data Collector によってビジネスデータがキャプチャされたかどうかを確認します。
- Analytics タブを選択します。
- Searches タブを選択し、新しい Drag and Drop Search を追加します。
- + Add ボタンをクリックして、新しい Drag and Drop Search を作成します。
- + Add Criteria をクリックします。
- Application を選択し、アプリケーション名 Supercar-Trader-YOURINITIALS を検索します。
- Custom Method Data のフィールドに Business Parameters が表示されることを確認します。
- CarPrice Field にデータがあることを確認します。

まとめ #
これで、実行時にノードから Sell Car トランザクションのビジネスデータをキャプチャできるようになりました。このデータは、AppDynamics 内の Analytics およびダッシュボード機能で使用でき、ビジネスにより多くのコンテキストを提供し、ビジネスに対する IT の影響を測定できます。
