Business iQのサブセクション
ラボの前提条件
3 minutes
この演習では、以下のタスクを完了します
- WebブラウザからAppDynamics Controllerにアクセスする。
- アプリケーションへのトランザクション負荷を確認する。
- 必要に応じてアプリケーションとトランザクション負荷を再起動する。
Controllerへのログイン
Ciscoの認証情報を使用してAppDynamics SE Lab Controllerにログインします。
アプリケーションへのトランザクション負荷の確認
アプリケーションフローマップを確認します
- last 1 hourの時間枠を選択します。
- フローマップに5つの異なるTierが表示されていることを確認します。
- 過去1時間にわたって一貫した負荷があったことを確認します。

ビジネストランザクションのリストを確認します
- 左メニューの Business Transactions オプションをクリックします。
- 下記に示す11個のビジネストランザクションが表示されていることを確認します。
- 過去1時間に何らかの呼び出し数があることを確認します。
注意: Calls 列が表示されない場合は、View Options ツールバーボタンをクリックしてその列を表示できます。

Nodeのエージェントステータスを確認します
- 左メニューの Tiers & Nodes オプションをクリックします。
- Grid View をクリックします。
- 各Nodeの App Agent Status が過去1時間で90%以上であることを確認します。

必要に応じてアプリケーションと負荷生成の再起動
前のステップで実行した確認のいずれかが検証できなかった場合は、Application VMにSSH接続し、以下の手順に従ってアプリケーションとトランザクション負荷を再起動します。
以下のコマンドを使用して、実行中のApache Tomcatインスタンスを停止します。
cd /usr/local/apache/apache-tomcat-9/bin
./shutdown.sh
以下のコマンドを使用して、まだ実行中のアプリケーションJVMがないか確認します。
ps -ef | grep Supercar-Trader
まだ実行中のアプリケーションJVMが見つかった場合は、以下のコマンドを使用して残りのJVMを終了します。
sudo pkill -f Supercar-Trader
以下のコマンドを使用して、アプリケーションの負荷生成を停止します。すべてのプロセスが停止するまで待ちます。
cd /opt/appdynamics/lab-artifacts/phantomjs
./stop_load.sh
Tomcatサーバーを再起動します
cd /usr/local/apache/apache-tomcat-9/bin
./startup.sh
2分待ってから、以下のコマンドを使用してApache Tomcatがポート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"
....
以下のコマンドを使用して、アプリケーションの負荷生成を開始します。
cd /opt/appdynamics/lab-artifacts/phantomjs
./start_load.sh
以下の画像のような出力が表示されるはずです。

アプリケーションでAnalyticsを有効化
2 minutes
Analyticsは以前、Machine Agentにバンドルされた別のエージェントが必要でした。しかし、現在Analyticsはエージェントレスで、Controller 4.5.16以降の.NET Agent 20.10以降およびJava Agent 4.5.15以降のAPM Agentに組み込まれています。
この演習では、WebブラウザからAppDynamics Controllerにアクセスし、エージェントレスAnalyticsを有効化します。
Controllerへのログイン
Ciscoの認証情報を使用してAppDynamics SE Lab Controllerにログインします。
Analytics設定への移動
- ** 画面左上の Analytics タブを選択します。
- ** 左側の Configuration タブを選択します。
- ** Transaction Analytics - Configuration タブを選択します。
- ** アプリケーション Supercat-Trader-YOURINITIALS の横にあるチェックボックスをオンにします。
- ** Save ボタンをクリックします。

Transaction Summaryの検証
Analyticsがそのアプリケーションで機能し、トランザクションが表示されていることを確認します。
- 左メニューの Analytics tab タブを選択します。
- Home タブを選択します。
- Transactions from でアプリケーション Supercar-Trader-YOURINITIALS にフィルターします。

HTTPデータコレクターの設定
2 minutes
データコレクターを使用すると、ビジネストランザクションとTransaction Analyticsデータをアプリケーションデータで補完できます。アプリケーションデータは、ビジネストランザクションのパフォーマンス問題にコンテキストを追加できます。例えば、パフォーマンス問題の影響を受けたビジネストランザクションの特定のパラメータや戻り値(特定のユーザー、注文、製品など)を表示します。
HTTPデータコレクターは、ビジネストランザクションで交換されるHTTPメッセージのURL、パラメータ値、ヘッダー、Cookieをキャプチャします。
この演習では、以下のタスクを実行します
- すべてのHTTPデータコレクターを有効化する。
- 関連するHTTPデータコレクターを観察して選択する。
- HTTPパラメータを使用してAnalyticsでビジネスデータをキャプチャする。
- HTTPパラメータのAnalyticsを検証する。
すべてのHTTPデータコレクターの有効化
最初に、すべてのHTTPデータコレクターをキャプチャして、Analyticsにキャプチャしてダッシュボードで使用できる有用なパラメータを把握します。
Tip
このステップは本番環境ではなく、UAT環境で実行することを強く推奨します。
- 画面左上の Applications タブを選択します。
- Supercar-Trader-YOURINITIALS アプリケーションを選択します。
- 左側の Configuration タブを選択します。
- Instrumentation リンクをクリックします。
- Data Collectors タブを選択します。
- HTTP Request Data Collectors の Add ボタンをクリックします。

次に、すべてのHTTPパラメータをキャプチャするHTTPデータコレクターを設定します。Transaction Analyticsに必要な正確なパラメータを特定するまで、オーバーヘッドを避けるためにTransaction Snapshotsでのみ有効にします。
- Name に All HTTP Param を指定します。
- Enable Data Collector for で Transaction Snapshots のチェックボックスをオンにします。
- Transaction Analyticsは有効にしないでください。
- HTTP Parametersセクションで + Add をクリックします。
- 新しいパラメータのDisplay Nameに All を指定します。
- HTTP Parameter nameにアスタリスク * を指定します。
- Save をクリックします。

- “Ok"をクリックしてデータコレクターを確認します。
- /Supercar-Trader/sell.do トランザクションを有効にします。
- Save をクリックします。

関連するHTTPデータコレクターの観察と選択
- アプリケーションに負荷をかけ、特に SellCar トランザクションに負荷をかけます。Full Call Graphを含むスナップショットの1つを開き、Data Collectors Tab を選択します。
これですべてのHTTPパラメータを確認できます。Car Price、Color、Yearなど、多くの重要なメトリクスが表示されます。
- 正確なパラメータ名をメモし、HTTP Parameters リストに再度追加してTransaction Analyticsで有効にします。
- 追加したら、All HTTP Param HTTPデータコレクターを削除します。

HTTPパラメータを使用したAnalyticsでのビジネスデータのキャプチャ
次に、HTTPデータコレクターを再度設定しますが、今回は有用なHTTPパラメータのみをキャプチャしてTransaction Analyticsで有効にします。新しいHTTP Data Collectorを追加します:Application -> Configuration -> Instrumentation -> Data Collectorタブ -> HTTP Request Data Collectors セクションで Add をクリックします。
- Nameに CarDetails を指定します。
- Transaction Snapshots を有効にします。
- Transaction Analytics を有効にします。
- HTTP Parametersセクションで + Add をクリックします。
- 新しいパラメータのDisplay Nameに CarPrice_http を指定します。
- HTTP Parameter nameに carPrice を指定します。
- 以下に示すように、残りのCarパラメータについても同様に繰り返します。
- Save をクリックします。
- Ok をクリックしてData Collectorの実装を確認します。

- /Supercar-Trader/sell.do トランザクションを有効にします。
- Save をクリックします。

- All HTTP Param コレクターをクリックして選択し、Delete ボタンをクリックして削除します。
HTTPパラメータのAnalyticsの検証
次に、ビジネスデータがHTTPデータコレクターによってAppDynamics Analyticsでキャプチャされたかどうかを検証します。
- 画面左上の Analytics タブを選択します。
- Searches タブを選択します。
- + Add ボタンをクリックし、新しい Drag and Drop Search を作成します。

- + Add Criteria をクリックします。
- Application を選択し、アプリケーション名 Supercar-Trader-YOURINITIALS を検索します。
- Fields パネルで、Business Parameters がCustom HTTP Request Dataのフィールドとして表示されていることを確認します。
- CarPrice_http のチェックボックスをオンにし、フィールドにデータがあることを確認します。

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

- Start Discovery Session ボタンをクリックします。
- ポップアップウィンドウで Web-Portal Node を選択します。調査しているメソッドが実行されているのと同じ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 メソッドが見つかります。

メソッド呼び出しデータコレクターの作成
前の演習で得た知見を使用して、実行時に実行中のコードから車の詳細を直接取得するメソッド呼び出しデータコレクターを設定できます。
- Applications タブを選択します。
- Supercar-Trader-YOURINITIALS アプリケーションを選択します。
- Configuration タブを選択します。
- Instrumentation リンクをクリックします。
- Data Collectors タブを選択します。
- Method Invocation Data Collectors の Add をクリックします。

車の詳細をキャプチャするメソッド呼び出しデータコレクターを作成します。
- Name に SellCarMI-YOURINITIALS を指定します。
- Transaction Snapshots を有効にします。
- Transaction Analytics を有効にします。
- with a Class Name that を選択します。
- Class Name に supercars.dataloader.CarDataLoader を追加します。
- Method Name に saveCar を追加します。

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

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

- 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サーバーを再起動します。
- Tomcatサーバーが実行されていることを確認します。これには数分かかる場合があります。
<!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パラメータのAnalyticsの検証
Webサイトにアクセスし、Sell Carページでフォームを数回送信して手動で負荷をかけます。
次に、ビジネスデータがHTTPデータコレクターによってAppDynamics Analyticsでキャプチャされたかどうかを検証します。
- Analytics タブを選択します。
- Searches タブを選択し、新しい Drag and Drop Search を追加します。
- + Add ボタンをクリックし、新しい Drag and Drop Search を作成します。
- + Add Criteria をクリックします。
- Application を選択し、アプリケーション名 Supercar-Trader-YOURINITIALS を検索します。
- Business Parameters が Custom Method Data のフィールドとして表示されていることを確認します。
- CarPrice Field にデータがあることを確認します。

まとめ
これで、実行時にNodeからSell Carトランザクションのビジネスデータをキャプチャしました。このデータは、AppDynamicsのAnalyticsおよびダッシュボード機能で使用でき、ビジネスにより多くのコンテキストを提供し、ITがビジネスに与える影響を測定できます。
ダッシュボードコンポーネント
2 minutes
ダッシュボードを構築する機能は、AppDynamicsの機能と価値の重要なコンポーネントです。この演習では、魅力的なダッシュボードを構築するために使用できるダッシュボードコンポーネントのいくつかを操作します。
新しいダッシュボードの作成
- Dashboard & Reports タブを選択します。
- Create Dashboard をクリックします。
- SuperCar-Dashboard-YOURINITIALS などのダッシュボード名を入力します。
- Canvas Type として Absolute Layout を選択します。
- OK をクリックします。

新しく作成した空のダッシュボードを開きます。次に、さまざまなウィジェットタイプを追加します。
ダッシュボードコンポーネント:カスタムウィジェットビルダー
カスタムウィジェットビルダーは、数値ビュー、時系列、円グラフなど、データの表現を生成できる非常に柔軟なツールです。AppDynamics ADクエリ言語に基づいています。
ウィジェットを作成するには、以下の手順に従います
- ダッシュボードの左上隅にある Edit Mode を切り替えます。
- Add Widget をクリックします。
- 左側の Analytics タブを選択します。
- Custom Widget Builder をクリックします。

カスタムウィジェットビルダーでは、多くのチャートタイプを作成できます。情報をドラッグアンドドロップするか、Advancedペインでクエリを作成できます。

ここでは、数値チャート、棒グラフ、円グラフについて説明します。
数値チャート
演習: エラーによって影響を受けた金額を定量化することで、ITパフォーマンスがビジネス収益に与える影響を示すことができます。
- Numeric チャートタイプを選択します。
- Applicationフィールドにフィルターを追加し、アプリケーション名 Supercar-Trader-YOURINITIALS を選択します。
- /Supercar-Trader/sell.do ビジネストランザクションにフィルターを追加します。
- User Experienceフィールドにフィルターを追加し、Error のみを選択してエラーの影響を表示します。
- 左側のパネルで CarPrice_MIDC フィールドを見つけ、Y軸にドラッグアンドドロップします。SUMがモデルごとの合計価格をキャプチャするために使用される集計であることに注意してください。
- 見やすくするためにフォントの色を赤に変更します。
- Save をクリックします。

User ExperienceフィルターをNORMAL、SLOW、VERY SLOWのみに変更することで、正常に処理された金額についても同様のことができます。
また、Analyticsモジュールでカスタムメトリクスを作成し、影響を受けた金額がベースライン以上かどうかを示すヘルスルールを定義することで、このメトリクスをベースライン化することもできます。通貨のラベルを追加することもできます。

棒グラフ
演習: 次に、影響を受けた車種のトップを視覚化する棒グラフを作成します。このチャートは、User Experienceで分類されたすべての SellCar トランザクションの車種を表示します。
- + Add Widget、Analytics、Custom Widger Builder をクリックして新しいウィジェットを作成します。
- Column チャートタイプを選択します。
- 以下のフィルターを追加します:Application = Supercar-Trader-YOURINITIALS およびBusiness Transaction = /Supercar-Trader/sell.do。
- X軸に CarModel_MIDC と User Experience を追加します。
- Save をクリックします。

このチャートタイプは、ニーズに応じて調整できます。例えば、X軸を顧客タイプ、会社、組織などでグループ化できます。以下の例を参照してください。

円グラフ
次に、sellCar トランザクションによって報告されたすべての車種とモデルごとの価格の合計を表示する円グラフを作成します。これにより、アプリケーションで最も需要の高いモデルが表示されます。
- 新しいウィジェットを作成します。
- Pie チャートタイプを選択します。
- 以下のフィルターを追加します:Application = Supercar-Trader-YOURINITIALS およびBusiness Transaction = /Supercar-Trader/sell.do。
- X軸に CarModel_MIDC を追加します。
- Y軸に CarPrice_MIDC を追加します。SUM がモデルごとの合計価格をキャプチャするために使用される集計であることに注意してください。
- タイトルに Sold by Car Model を追加します。
- Save をクリックします。

円グラフウィジェットのその他の使用例については、以下の例を参照してください。

ダッシュボードコンポーネント:コンバージョンファネル
コンバージョンファネルは、複数のステップからなるプロセスを通じたユーザーまたはイベントのフローを視覚化するのに役立ちます。これにより、より成功した収束のためにどのステップを最適化できるかをより良く理解できます。また、コンバージョンファネルを使用して各ステップのITパフォーマンスを調べ、ユーザーエクスペリエンスへの影響とユーザー離脱の原因を理解することもできます。
ファネルは、その特定の順序でこのパスを実行したユーザーに基づいてフィルタリングされており、ステップごとの総訪問数ではないことに注意してください。
ファネル作成の最初のステップは、ファネルを通じた各ユーザーナビゲーションを表すことができるトランザクションの一意の識別子を選択することです。通常、Session IDはファネルの各ステップを通じて永続するため、最良の選択です。
Session IDはトランザクションからキャプチャできます。ファネルトランザクションのカウンターとして使用するには、SessionId データコレクターが必要です。
Javaアプリケーションの場合、AppDynamicsにはデフォルトのHTTPデータコレクターでSession IDをキャプチャする機能があります。有効になっていることを確認し、すべてのビジネストランザクションに適用してすべてのトランザクションでSession IDをキャプチャします。
- Applications タブを選択します。
- Supercar-Trader-YOURINITIALS アプリケーションを選択します。
- 左側の Configuration タブを選択します。
- Instrumentation をクリックします。
- Data Collectors タブを選択します。
- Default HTTP Request Request Data Collectors を編集します。
- Transaction Analytics を選択します。
- SessionID が選択されていることを確認します。
- Save をクリックします。

次に、/Supercar-Trader/home.do ページから複数回ナビゲートして負荷をかけます。その後、アプリケーションの /Supercar-Trader/sell.do ページに直接ナビゲートします。
ダッシュボードに戻ってファネルウィジェットを作成します。
- Edit スライダーを切り替えます。
- Add Widget をクリックします。
- Analytics タブを選択します。
- Funnel Analysis をクリックします。
- ドロップダウンリストから Transactions を選択します。
- Count Distinct of でドロップダウンリストから uniqueSessionId を選択します。
- Add Step をクリックします。Home Page と名前を付けます。
- Add Criteria をクリックします。以下の条件を追加します:Application: Supercar-Trader-YOURINITIALS & Business Transactions: /Supercar-Trader/home.do。
- Add Step をクリックします。SellCar Page と名前を付けます。
- Add Criteria をクリックします。以下の条件を追加します:Application: Supercar-Trader-YOURINITIALS & Business Transactions: /Supercar-Trader/sell.do。
- 右側のパネルで Show Health チェックボックスを選択して、フローマップでトランザクションの正常性を視覚化します。
- Save をクリックします。

ダッシュボードを構築する
20 minutes
演習 - 独自のダッシュボードを構築する
このラーニングラボの締めくくりとして、前の演習でメソッド呼び出しデータコレクターを使用してキャプチャしたビジネスデータとダッシュボードコンポーネントの理解を使用して、ITビジネスインパクトダッシュボードを構築します。
以下の例を参照し、同じデータとウィジェットを使用して独自のダッシュボードを構築してください。

おめでとうございます!BusinessIQ Fundamentalsラーニングラボを完了しました!