2024年12月24日
X-View活用のヒント
(連携トランザクション)
- 1. X-Viewを使用したトランザクションモニタリング
- 2. 連携トランザクションモニタリング
1. X-Viewを使用した
トランザクションモニタリング
JENNIFERにはトランザクションをモニタリングするX-Viewチャートがあります。チャートで表示されている各点は、個別のトランザクションです。トランザクションデータをチャート上の点で選択すると、選択したトランザクションデータの詳細情報が図1のように表示されます。
リアルタイムのトランザクションのX-Viewチャートは、[ダッシュボード ➡ X-View]操作で表示します。過去のトランザクションのX-Viewチャートは、[分析 ➡X-View]操作で表示します。
1.1 X-Viewと応答時間分布パターン
X-Viewチャートに表示される応答時間分布にはアプリケーションの特徴に応じた特定のパターンがあり、このパターンで現在のアプリケーションの問題を推定できます。分布パターンの詳細は、マニュアルの「5.4X-View応答時間分布グラフパターン」を参照してください。
1.2 リアルタイムX-View
リアルタイムX-Viewで現時点に処理されたトランザクションの応答時間分布を確認できます。更に、Y軸基準の変更とフィルタリングができます。
1.2.1 Y軸基準の変更
応答時間は、トランザクション性能の中で最も重要な要素であるため、デフォルトのY軸の表示基準は応答時間に設定されています。
応答時間以外の性能のトランザクション分布を確認する場合は、Y軸の基準を変更します。Y軸の基準は、応答時間の他に、SQL時間、Fetch時間、外部呼び出し時間、CPU時間を選択できます。 リアルタイムでは[ダッシュボード ➡X-View]操作で、過去は[分析 ➡X-View]操作のトランザクションタブで確認できます。
1.2.2 フィルタリング
基本的にX-Viewには全てのトランザクションが表示されます。このとき、フィルタリング機能を使用すると、特定の条件を満たすトランザクションだけを確認できます。フィルタリングの条件には、アプリケーション名、クライアントIP、ユーザIDとGUIDなどがあります。リアルタイムでは[ダッシュボード ➡ X-View]操作で、過去は[分析 ➡ X-View]操作で確認できます。
1.3 X-View分析
過去のトランザクションデータを確認するには、[分析 ➡ X-View]操作で、特定の期間のトランザクションデータを照会と分析ができます。
X-View分析では、トランザクションタブの他に、クライアントID、アプリケーション、GUID、ユーザID、クライアントIPのタブを提供します。これらのタブは個別のトランザクションではなく、特定の条件に結びついているトランザクションのグループを1つの点として表示します。
例えば、ユーザIDタブは、同じユーザ(ユーザID)のトランザクションデータを1つの点にグループ化します。この点を選択すると、選択したグループに含まれている全てのトランザクションデータがポップアップで表示されます。
1.4 X-Viewトランザクション分析ポップアップウィンドウ
X-View上の点を選択すると、ポップアップでX-Viewデータを確認できます。X-Viewデータは、トランザクションデータとプロファイルデータに分かれ、各データの詳細については、X-Viewを参照してください。
1.4.1 トランザクションリスト
X-Viewトランザクション分析のポップアップウィンドウの上段にあるテーブルに選択した全てのトランザクションのリストが表示されます。テーブルのカラムにはトランザクションデータの値が表示され、カラム名をクリックすると該当カラムの値でソートして表示できます。
例えば、SQL時間が遅いトランザクションをその順序で確認する場合は、SQL時間のカラムをクリックしてトランザクションを配列し直します。
1.4.2 個別トランザクション分析
トランザクションリストで選択したトランザクションの詳細情報を、タイムライン分析、区間分析とエラータブで確認できます。詳細は [ポップアップ ➡X-View、タブ]を参照してください。
- タイムラインチャート
タイムライン分析タブで選択したトランザクションのプロファイルデータを時系列順に分析できます。
タイムライン分析チャートは、プロファイルデータをメソッド、SQL、外部呼び出しに分類し、時系列順に表示します。タイムライン分析チャートで、個別トランザクションの特徴を素早く確認できます。 更に、タイムラインチャート内の特定の区間をクリックすると、選択された区間のプロファイルデータがCall Treeとテキストに表示され、時間がかかっているプロファイルデータを素早く識別できます。
- Call Treeとテキスト
タイムライン分析タブの[Call Tree]と[テキスト] で、トランザクションのプロファイルデータの詳細情報を確認できます。
Call Treeには、Call Tree型のプロファイルデータが表示されます。ユーザはCall Treeを使用して、プロファイル間の関係を分析できます。更に、Call Treeからクエリビルドができます。Call Treeノードを右クリックすると、メソッドプロファイリング、ユーザIDとGUIDの設定ができます。詳細は[X-View]を参照してください。
テキストには、アプリケーション名や応答時間、プロファイルデータなどのトランザクション情報が文字列形式で表示されます。プロファイルデータの詳細をすぐに確認できます。
ヒント:
1.時間単位でどのような処理が実行されたかを一目で把握するには、タイムラインチャートを使用します。
2.トランザクションデータとプロファイルデータの詳細を把握するには、テキストを使用します。
3.プロファイルデータをCall Tree形式で表示したり、追加設定を行ったりするには、Call Treeを使用します。
- 区間分析
区間分析タブで、トランザクションで実行された様々なプロファイルデータの区間毎の処理時間の割合を確認できます。どの区間でより長い応答時間がかかったかを一目で把握できます。区間は「Front-End」区間と「サーバ」区間から構成され、各区間を選択すると、該当区間で実行された情報を詳細に分析できます(X-Viewを参照)。
- Front-End
該当トランザクションのFront-End時間をDOM、レンダリング(ブラウザ表示)、ネットワークを応答時間の割合で分析して、該当日付の同一アプリケーションの1日の応答時間を分析できます(X-Viewを参照)。
- サーバ
サーバ上で実行されるメソッド、SQL、X-Viewを応答時間の割合で分析できます。メソッド、SQL、外部呼び出しをそれぞれクリックすると、実行されたメソッドの種類毎の繰返し回数、トータル応答時間、平均応答時間を分析できます。
- トランザクション単位の統計分析(メソッド、SQL、外部呼び出し)
タイムラインのCall Treeとテキストが、個別プロファイルデータの表示に最適化されている一方、区間分析タブは、トランザクションで実行されたメソッド、SQL、外部呼び出しの統計情報の表示に最適化されています。
例えば、「SELECT * FROM table」クエリが30msで300回実行された(合計9秒がかかる)と仮定します。Call Treeとテキストにはプロファイルデータが発生順に表示されるため、「SELECT * FROM table」クエリが300回実行されたことを確かめるのは簡単ではありません。ただし、区間分析の場合、SQL統計データが提供されるため、このSQLがトランザクションで消費した時間(9秒)を素早く確認できます。
- エラー
エラータブにより、トランザクション処理中に発生した全てのエラーを確認できます(X-Viewを参照)。
2. 連携トランザクションモニタリング
JENNIFERでは、単一リクエストから始まる複数のトランザクションの相互関係をモニタリングと分析ができます。同一サーバ上で処理される様々な業務トランザクションの連携をモニタリングでき、別のサーバで稼働するトランザクションの連携もモニタリングできます。
例えば、オンラインバンキングシステムの電信送金という単一業務の処理は、それに先立ってログインとアカウントの検索という予備の処理が必要です。この場合、JENNIFERは検索呼び出しメソッドで、連携トランザクションをモニタリングします。更に、[ダッシュボード ➡X-View]操作で表示される画面では、モニタリングHTTPサーバや、内部呼び出し、サーバ間の呼び出し関係、外部呼び出し、サーバとDBの接続状態等を表示できます。
2.1 連携方式
JENNIFERは、Relative CallとLinked Callの2種類の連携トランザクションモニタリング方式を提供します。
項 目 | Relative Call | Linked Call |
方式 | GUID | プロトコルフッキング |
呼出し順序と方向の把握 | 不可 | 可能 |
連携トランザクションの照会 | 可能 | 可能 |
トポロジービューの利用 | 不可 | 可能 |
制限 | GUIDをアプリケーションロジックに含む必要がある | JENNIFERエージェントが対応している通信方式でのみ利用可能 |
2.1.1 Relative Call(GUID追跡方式)
Relative Callとは、GUIDを利用して連携トランザクションをモニタリングする方式です。GUIDは、トランザクション共通で参照する固有のIDであり、GUIDを元に個別トランザクションの呼出し関係を追跡できます。ただし、正確な呼出し順序と方向の把握はできず、時系列で表示します。
- GUIDの設定
エージェントがGUID値を収集できるように、GUID値の取得ができるメソッドのパラメータ又は戻り値を[管理 ➡X-View]操作で表示される画面で指定します。
<%@ page language="java" pageEncoding="UTF-8" session="false" %>
<%!
public String getGUID(String text, int value) {
return text + ":" + value;
}
%>
<%
String value = getGUID("MY_GUID", 1);
out.println(value);
%>
例えば、上記のようなjspファイルがあると仮定すると、getGUIDメソッドをGUID対象に指定できます。上のコードでは、”text”パラメータをGUID対象に指定した場合は、”MY_GUID”GUIDがGUIDになり、戻り値をGUID対象に指定した場合は、”MY GUID:1″となります。
ノート:
通常、連携トランザクションモニタリングが必要な場合は、アプリケーション内にGUIDの役割をするキーの生成ロジックが実装されているため、即座に設定できます。GUIDを生成するためのロジックがない場合、アプリケーションにGUID生成ロジックを挿入する必要があります。
2.1.2 Linked Call(プロトコルフッキングメソッド)
JENNIFERは通信方式に従い、呼び出されたノードで転送されたデータを収集して、連携トランザクションをモニタリングできます。GUIDとは違い、トランザクション呼び出しシーケンスおよび方向の把握ができるため、ノード間の連結状態はトポロジービューを使って表示できます。
プラットフォーム毎のLinked Callに対応する仕様は、以下の通りです。
- JAVAプラットフォーム
HTTPプロトコル(例:Apache UrlConnection)
- .NETプラットフォーム
HttpWebリクエスト、ASMX呼出し、WCF呼出し(COM+及び.NETリモート呼出しは今後対応予定)
- PHPプラットフォーム
file、file_get_contents関数を使用する外部呼び出し
2.2 モニタリングと分析
2.2.1 Relative Call
[ダッシュボード ➡X-View]操作と[分析 ➡X-View]操作で表示される画面でフィルタリングを使用し、特定GUIDをもつトランザクションだけをモニタリングと分析ができます。また、[分析 ➡X-View]操作で表示される画面のGUIDタブで、GUID単位にトランザクションをグループ化してX-Viewの分析ができます。
2.2.2 Linked Call
[ダッシュボード ➡トポロジービュー]操作で表示される画面で、クライアントサーバとサーバノード間の連結状態や、ノード別アクティブサービス等の様々な情報をモニタリングできます。
2.2.3 X-Viewトランザクション分析による連携トランザクション分析
X-View上にGUIDでグループ化されているトランザクションを選択して表示される[ポップアップ ➡X-View]画面でトランザクションをクリックすると、<連携トランザクション>ボタンが有効化し、同じGUID又はプロトコルフッキング方式で連結されたトランザクションを照会できます。
ボタンをクリックすると、下記の図5に示すようにトランザクションの連携データに基づきトポロジーマップが表示され、2つの方式(Relative CallとLinked Call)で連結された全てのトランザクションが下段のリストに表示されます。
ノート: GUID(Relative Call)で連携すると、ノード間のリンクは表示されず、開始時刻に基づき、左から右方向へノードが表示されます。