2.1.2 Webトランザクションの計測
PFM - Agent for Service Responseでは,HTTP(S)サービスを計測するにあたって,1回のリクエスト・レスポンスの計測だけでなく複数のHTTP(S)のリクエスト・レスポンスから成る一連の作業をWebトランザクションとして定義し,計測できます。これによって,Webサーバの計測だけでなく,ログインを必要とするWebアプリケーションの計測もできます。PFM - Agent for Service Responseでは,Webトランザクションの応答時間を,秒単位で小数点第3位(0.001秒の位)まで計測できます。
Webトランザクション計測の概要を次の図に示します。
|
PFM - Agent for Service ResponseのProbe Daemonは,起動時に次の4つのファイルを読み込みます。計測結果は,計測条件ごとにいったんレポートファイルに出力され,一定の間隔でAgent Collectorによって収集されます。
-
Probe動作条件定義ファイル(esp.conf)
PFM - Agent for Service Responseのプローブの計測多重度やレポートファイルのサイズ上限などの起動オプションを定義するファイルです。詳細については,「8.2 Probe動作条件定義ファイル(esp.conf)」を参照してください。
-
計測条件登録ファイル(esptask.xml)
計測対象のサービスタイプや,ホスト名,計測間隔などの計測条件を定義するファイルです。PFM - Web Consoleから設定します(直接編集することもできます)。PFM - Web Consoleからの設定については,「4.7 PFM - Web Consoleからの計測条件の定義」を参照してください。計測条件登録ファイルの詳細については,「8.3 計測条件登録ファイル(esptask.xml)」を参照してください。
-
Webトランザクションファイル
計測対象となるWebトランザクションのアクセス先のURL,Web認証,プロキシなどの情報を定義するファイルです。詳細については,「8.5 Webトランザクションファイル」を参照してください。
-
パスワードファイル(esp.pdb)
計測対象のインターネットサービスへログインする際に必要なパスワードを登録・管理するファイルです。詳細については,「4.3.1 パスワードの登録」を参照してください。
Webトランザクションの計測では,Webトランザクションの定義に従ってHTTP(S)リクエストを発行し,応答時間などを計測します。計測するURLは,HTMLのフレーム単位に定義する必要があります。トランザクションは,Internet Explorerなどのブラウザソフトでの連続した操作をシミュレーションして計測されます。また,Webトランザクション全体の計測のほか,次について計測できます。
計測結果は,Webトランザクションを再生した全体の計測値が出力されます。また,Webトランザクションの任意のページ遷移を計測した結果についても同様に出力されます。計測結果となる稼働性能情報については,「10. レコード」の「Web Transaction(PI_WT)」「Web Transaction Overview(PI_WTO)」を参照してください。
Webトランザクション情報はWeb Recorderで定義できます。Web Recorderでは,Internet Explorerの画面をウィンドウに呼び出し,ウィンドウ上で実行するブラウザ操作を記録することによってWebトランザクション情報を定義できます。
(1) 任意のページ遷移の応答性能計測
任意のページ遷移の応答性能を計測できます。任意のページ遷移の応答性能を計測する場合は,ページの遷移範囲をスコープとして定義します。スコープは8個まで定義できます。スコープとして定義するページ遷移の範囲は,ほかのスコープで定義した範囲と重複してもかまいません。スコープの定義例を次の図に示します。
|
上記の例の場合,各スコープの計測項目は次のようになります。
-
トランザクション全体
ログイン画面の取得から,ログイン,送信メール一覧取得,受信メール一覧取得に要した時間
-
スコープ1
ログイン画面の取得とログインに要した時間など
-
スコープ2
ログイン画面の取得から,送信メール一覧の取得までに要した時間など
-
スコープ3
送信メール一覧の取得に要した時間など
-
スコープ4
受信メール一覧の取得に要した時間など
このように,1つのWebトランザクションについて,スコープを定義することによって各処理の性能を計測できます。
(2) レスポンス判定
レスポンス判定情報を定義することによって,定義したURLから取得したHTMLの応答内容をチェックし,計測対象の異常を検知できます。
ログインに失敗しても再度ログイン画面が表示されるなど,HTTPプロトコルレベルでは成功していても,Webトランザクションの監視は失敗と扱いたい場合は,レスポンス判定情報を定義して,応答内容をチェックしてください。レスポンス判定の定義例を次の図に示します。
|
この例の場合,「Invalid」という単語が遷移後のページに含まれていると,ログインが失敗したと判定されます。このようなエラーを検知した場合には,トランザクションの計測を中止します。
(3) 埋め込みリソースの取得
埋め込みリソースを取得するよう定義することによって,計測時に埋め込みリソースを自動的に取得できます。計測時に取得したHTMLを解析し,次の表に示すタグおよび属性名の値に指定されているリソースを取得します。埋め込みリソースの取得対象となっていないタグで指定している埋め込みリソースや,JavaScriptなどを使用して埋め込まれているリソースなどの取得時間を応答時間に含めて計測したい場合は,Webトランザクションの定義でそれらのリソースのURLをステップとして追加してください。
タグ名 |
属性名 |
---|---|
applet |
code |
body |
background |
embed |
src |
img |
src |
object |
data |
script |
src |
- 注
-
タグ名および属性名は,大文字・小文字を区別しません。
(4) 動的セッション管理対応
Webトランザクションの計測では,発行するリクエストの内容が動的に変化する場合にも対応しており,セッションIDを用いてセッション管理を行っているサイトなども計測できます。
例として,Webアプリケーションなどを使用したサイトで,HTML上のフォームでログインを行うページについて説明します。このようなサイトでは,ログイン時にセッションIDを割り当て,その後のリクエスト内にセッションIDを含めることで,アクセス元を特定しています。
このようなサイトを監視する場合は,ログイン時に発行(返信)されたセッションIDを以降のアクセスで発行するリクエストに含ませる必要があります。
動的にセッションIDを発行して管理するサイトの例を次の図に示します。
|
しかし,Web Recorderで記録したセッションIDでリクエストを発行すると,Webサーバで不当なセッションIDとしてリクエストが送信されていると判断され,「セッションIDが無効」などのエラーメッセージを示すHTMLが返信されます(このようなエラーメッセージを表示する場合でもHTTPとしてのリクエスト結果は成功になります)。
このような環境で正しく計測するには,Web Recorderで記録したセッションIDではなく,Webトランザクション計測中に発行されたセッションIDを使用してリクエストを発行する必要があります。
PFM - Agent for Service Responseでは,可変文字列と代替文字列を設定することで,動的セッション管理に対応します。可変文字列として,記録時に発行されたセッションIDが含まれる部分を設定します。このとき,Webトランザクションの定義でHTMLを出力するように指定した状態([トランザクションの設定]画面から,[トランザクション]タブの[取得したHTMLおよびHTTPヘッダーをファイルに出力する]をチェックする,または<HTML_OUT>タグを指定)で計測し,出力されたHTMLを基に,セッションIDとなる部分を探して定義します。また,代替文字列には,実際に取得したHTML内のセッションIDとなる部分を指定します。
なお,Webトランザクションの計測では,計測中に発生したCookieは,その条件に従って,リクエストを発行します。動的セッション管理をCookieで実装しており,Cookieの値を編集しなくてよい場合は,可変文字列と代替文字列の定義は不要です。Cookieの値を編集する場合は,Cookieの値を編集するための代替文字列生成コマンドを用意して,可変文字列にCookieの値を,代替文字列に代替文字列生成コマンドを定義します。
動的セッション管理対応の定義については,「4.4.6 動的セッション管理対応のための定義」を参照してください。
(5) 文字セットの指定
Webトランザクションの計測では,次の文字セットを指定できます。文字セットは,Webトランザクションファイルで指定します。
-
Webトランザクションファイルを記載する文字セット
WebトランザクションファイルのXML宣言文で指定します。指定できる文字セットは,Shift_JIS,EUC-JP,ISO-2022-JP,UTF-8,US-ASCIIまたはGB18030です。
複数の文字セットが混合するWebトランザクションファイルは作成できません。ファイルを分けて定義してください。なお,UTF-8を指定する場合,Webトランザクションファイルをエディタで編集して保存する際にBOM(Byte Order Mark)を付加しないでください。BOMを付加するとWeb Recorderで読み込みに失敗します。
-
取得するHTMLの文字セット
Webトランザクションファイルの<DEFAULT_CHARSET>タグまたは<CHARSET>タグで指定します。指定できる文字セットは,Shift_JIS,EUC-JP,ISO-2022-JP,UTF-8またはGB18030のどれかです。また,HTMLの文字セットがUS-ASCIIの場合,Shift_JISを指定して,レスポンス判定や可変文字列をASCII文字で定義することで対応できます。
レスポンス判定や可変文字列を定義する場合は,この文字セットを正しく指定する必要があります。
-
計測時に送信するリクエスト情報(URL,メッセージボディ,Cookie)の文字セット
Webトランザクションファイルの<REQUEST_CHARSET>タグで指定します。
Webトランザクションファイルを記載した文字セット,取得したHTMLの文字セットに関係なく,ここで指定した文字セットでリクエスト情報が送信されます。指定できる文字セットは,Shift_JIS,EUC-JP,ISO-2022-JP,UTF-8またはGB18030のどれかです。また,リクエスト情報をUS-ASCIIで送信する場合,指定の省略またはShift_JISの指定によって対応できます。なお,ISO-2022-JPを指定した場合は,URLにマルチバイト文字を含まないようにしてください。また,可変文字列も定義しないでください。
リクエスト情報をすべてASCIIコードで定義している場合(URLエンコードされた文字列など)は,特に指定する必要はありません。
- 重要
-
-
UTF-8は日本語および中国語だけをサポートしています。
-
GB18030は中国語だけをサポートしています。
-
指定方法の詳細については,「8.5 Webトランザクションファイル」を参照してください。
(6) URLエンコード
Webトランザクションファイルに定義されているURLとメッセージボディは,リクエスト発行時に,次のようにURLエンコードが行われます。
URLエンコード対象 |
対象の文字列 |
URLエンコードの処理 |
---|---|---|
URL |
「%xy」※1の3文字の文字列 |
そのまま |
英数字 |
そのまま |
|
次の記号文字 ; / ? : @ & = + $ , - _ . ! ~ * ' ( ) |
そのまま |
|
上記以外の文字 |
1バイトごとに「%xy」※1の3文字の文字列に変換されます。 |
|
メッセージボディ※2 |
半角スペース |
「+」に変換されます。 |
「%xy」※1の3文字の文字列 |
そのまま |
|
英数字 |
そのまま |
|
次の記号文字 ; / ? : @ & = + $ , - _ . ! ~ * ' ( ) |
そのまま |
|
上記以外の文字 |
1バイトごとに「%xy」※1の3文字の文字列に変換されます。 |
- 注※1
-
x,yはそれぞれ4ビットを16進数で表現した値です。
- 注※2
-
application/x-www-form-urlencodedで送信する場合だけです。
代替文字列に対しても,上表と同様に処理されて,可変文字列に置き換えられます。URLで区切り文字として扱われる文字(「/」「=」など)を可変文字列として使用したい場合,その文字を強制的にURLエンコードする必要があります。この場合,Webトランザクションファイルで<SUBSTITUTE_FORCE_URLENCODE>タグを指定してください。<SUBSTITUTE_FORCE_URLENCODE>タグの詳細については,「8.5.2 Webトランザクション計測条件定義の書式と定義内容」を参照してください。