PFM - Agent for Service Responseでは,HTTP(S)サービスを計測するにあたって,1回のリクエスト・レスポンスの計測だけでなく複数のHTTP(S)のリクエスト・レスポンスから成る一連の作業をWebトランザクションとして定義し,計測できます。これによって,Webサーバの計測だけでなく,ログインを必要とするWebアプリケーションの計測もできます。PFM - Agent for Service Responseでは,Webトランザクションの応答時間を,秒単位で小数点第3位(0.001秒の位)まで計測できます。
Webトランザクション計測の概要を次の図に示します。
図1-3 Webトランザクション計測の概要
PFM - Agent for Service ResponseのProbe Daemonは,起動時に次の四つのファイルを読み込みます。計測結果は,計測条件ごとにいったんレポートファイルに出力され,一定の間隔でAgent Collectorによって収集されます。
Webトランザクションの計測では,Webトランザクションの定義に従ってHTTP(S)リクエストを発行し,応答時間などを計測します。計測するURLは,HTMLのフレーム単位に定義する必要があります。トランザクションは,Internet Explorerなどのブラウザーソフトでの連続した操作をシミュレーションして計測されます。また,Webトランザクション全体の計測のほか,次について計測できます。
計測結果は,Webトランザクションを再生した全体の計測値が出力されます。また,Webトランザクションの任意のページ遷移を計測した結果についても同様に出力されます。計測結果となる稼働性能情報については,「9. レコード」の「Web Transaction(PI_WT)」「Web Transaction Overview(PI_WTO)」を参照してください。
Webトランザクション情報はWeb Recorderで定義できます。Web Recorderでは,Internet Explorerの画面をウィンドウに呼び出し,そのウィンドウ上で実行するブラウザー操作を記録することによってWebトランザクション情報を定義できます。
(1) 任意のページ遷移の応答性能計測
任意のページ遷移の応答性能を計測できます。任意のページ遷移の応答性能を計測する場合は,ページの遷移範囲をスコープとして定義します。スコープは8個まで定義できます。スコープとして定義するページ遷移の範囲は,ほかのスコープで定義した範囲と重複してもかまいません。スコープの定義例を次の図に示します。
図1-4 スコープの定義例
上記の例の場合,各スコープの計測項目は次のようになります。
このように,一つのWebトランザクションについて,スコープを定義することによって各処理の性能を計測できます。
(2) レスポンス判定
レスポンス判定情報を定義することによって,定義したURLから取得したHTMLの応答内容をチェックし,計測対象の異常を検知できます。ログインに失敗しても再度ログイン画面が表示されるなど,HTTPプロトコルレベルでは成功していても,Webトランザクションの監視は失敗と扱いたい場合は,レスポンス判定情報を定義して,応答内容をチェックしてください。
(3) 埋め込みリソースの取得
埋め込みリソースを取得するよう定義することによって,計測時に埋め込みリソースを自動的に取得できます。計測時に取得したHTMLを解析し,次の表に示すタグおよび属性名の値に指定されているリソースを取得します。埋め込みリソースの取得対象となっていないタグで指定している埋め込みリソースや,JavaScriptなどを使用して埋め込まれているリソースなどの取得時間を応答時間に含めて計測したい場合は,Webトランザクションの定義でそれらのリソースのURLをステップとして追加してください。
表1-1 埋め込みリソースの取得対象
タグ名 | 属性名 |
---|---|
applet | code |
body | background |
embed | src |
img | src |
object | data |
script | src |
(4) 動的セッション管理対応
Webトランザクションの計測では,発行するリクエストの内容が動的に変化する場合にも対応しており,セッションIDを用いてセッション管理を行っているサイトなども計測できます。
例として,Webアプリケーションなどを使用したサイトで,HTML上のフォームでログインを行うページについて説明します。このようなサイトでは,ログイン時にセッション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_OUT>タグを指定)で計測し,出力されたHTMLを基に,セッションIDとなる部分を探して定義します。また,代替文字列には,実際に取得したHTML内のセッションIDとなる部分を指定します。
なお,Webトランザクションの計測では,計測中に発生したCookieは,その条件に従って,リクエストを発行します。動的セッション管理をCookieで実装しており,Cookieの値を編集しなくてよい場合は,可変文字列と代替文字列の定義は不要です。Cookieの値を編集する場合は,Cookieの値を編集するための代替文字列生成コマンドを用意して,可変文字列にCookieの値を,代替文字列に代替文字列生成コマンドを定義します。
(5) 文字セットの指定
Webトランザクションの計測では,次の文字セットを指定できます。文字セットは,Webトランザクションファイルで指定します。
なお,UTF-8は日本語だけをサポートしています。
指定方法の詳細については,「7.4 Webトランザクションファイル」を参照してください。
(6) URLエンコード
Webトランザクションファイルに定義されているURLとメッセージボディは,リクエスト発行時に,次のようにURLエンコードが行われます。
表1-2 URLエンコードの処理
URLエンコード対象 | 対象の文字列 | URLエンコードの処理 |
---|---|---|
URL | 「%xy」※1の3文字の文字列 | そのまま |
英数字 | そのまま | |
次の記号文字 ; / ? : @ & = + $ , - _ . ! ~ * ' ( ) | そのまま | |
上記以外の文字 | 1バイトごとに「%xy」※1の3文字の文字列に変換されます。 | |
メッセージボディ※2 | 半角スペース | 「+」に変換されます。 |
「%xy」※1の3文字の文字列 | そのまま | |
英数字 | そのまま | |
次の記号文字 ; / ? : @ & = + $ , - _ . ! ~ * ' ( ) | そのまま | |
上記以外の文字 | 1バイトごとに「%xy」※1の3文字の文字列に変換されます。 |
代替文字列に対しても,上表と同様に処理されて,可変文字列に置き換えられます。URLで区切り文字として扱われる文字(「/」「=」など)を可変文字列として使用したい場合,その文字を強制的にURLエンコードする必要があります。この場合,Webトランザクションファイルで<SUBSTITUTE_FORCE_URLENCODE>タグを指定してください。<SUBSTITUTE_FORCE_URLENCODE>タグの詳細については,「7.4.2 Webトランザクション計測条件定義の書式と定義内容」を参照してください。