(57)【要約】【課題】本発明は、クライアント・サーバシステム上でユーザが問題を発見した時にクライアントのブラウザ上に表示された画面とサーバの動作情報とを関連付けることができ、問題の解析を容易にする情報収集装置を提供する。【解決手段】中継サーバ２００において、中継制御部２０２がＷｅｂブラウザ１０１からのページ要求ごとに要求ＩＤを生成し、要求ＩＤを送信する機能をテスト対象サーバ３００からの応答ページに埋め込んでクライアント端末１００に送出する。中継サーバ２００がクライアント端末１００から問題点報告のリクエストを受信すると、リクエスト中に含まれた要求ＩＤに基づきテスト対象サーバ３００との通信時刻を特定する。そして、その時刻におけるテスト対象サーバ３００の動作情報を取得して応答ページと関連付ける。【選択図】図２
2008052435.tif 000002
【特許請求の範囲】
【請求項１】
クライアントとサーバとの間に接続可能な情報収集装置において、
前記クライアントから送信されたページ要求を前記サーバに転送する第１の転送手段と、
前記転送されたページ要求ごとに識別子を生成する識別子生成手段と、
前記転送されたページ要求に応じて前記サーバから送信された応答ページに、前記識別子を送信する機能を付加して前記クライアントに転送する第２の転送手段と、
前記ページ要求及び前記応答ページに関する前記サーバとの通信時刻を前記識別子と共に記録する第１の記録手段と、
前記クライアントに転送した応答ページを記録する第２の記録手段と、
前記機能により前記クライアントから送信された識別子に基づいて前記第１の記録手段に記録された通信時刻を特定して、当該通信時刻における前記サーバの動作情報を取得する取得手段と、
前記サーバの動作情報と前記クライアントに転送した応答ページとを関連付けて収集する収集手段とを備えることを特徴とする情報収集装置。
【請求項２】
前記クライアントに転送する応答ページ中のイベントハンドラによって起動されるスクリプトをイベント通知に変換する変換手段と、
前記イベント通知を受信してスクリプトを実行するスクリプト実行手段と、
前記スクリプト実行手段によるスクリプト実行結果を前記クライアントに送出する送出手段とを更に備えることを特徴とする請求項１記載の情報収集装置。
【請求項３】
前記スクリプト実行手段は、前記サーバにデータ取得要求を行うデータ取得要求手段を備え、
前記情報収集装置は、前記データ取得要求手段により取得した結果から前記スクリプトの実行による前記サーバとの通信時刻を前記識別子と共に記録する第３の記録手段を更に備えることを特徴とする請求項２記載の情報収集装置。
【請求項４】
前記クライアントから送信されたページ要求から要求したユーザを識別する識別情報を抽出する抽出手段と、
前記識別情報と共に、前記識別子と前記サーバとの通信時刻を記録する第４の記録手段とを備え、
前記取得手段は、前記識別情報に基づいてユーザを特定し、当該ユーザの一連のアクセス履歴から前記サーバとの通信時刻を特定し、当該通信時刻における前記サーバの動作情報を取得することを特徴とする請求項１乃至３のいずれか１項に記載の情報収集装置。
【請求項５】
クライアントとサーバとの間に接続可能な情報収集装置の情報収集方法において、
前記クライアントから送信されたページ要求を前記サーバに転送する第１の転送工程と、
前記転送されたページ要求ごとに識別子を生成する識別子生成工程と、
前記転送されたページ要求に応じて前記サーバから送信された応答ページに、前記識別子を送信する機能を付加して前記クライアントに転送する第２の転送工程と、
前記ページ要求及び前記応答ページに関する前記サーバとの通信時刻を前記識別子と共に記録手段に記録する第１の記録工程と、
前記クライアントに転送した応答ページを前記記録手段に記録する第２の記録工程と、
前記機能により前記クライアントから送信された識別子に基づいて前記記録手段に記録された通信時刻を特定して、当該通信時刻における前記サーバの動作情報を取得する取得工程と、
前記サーバの動作情報と前記クライアントに転送した応答ページとを関連付けて収集する収集工程とを備えることを特徴とする情報収集方法。
【請求項６】
前記クライアントに転送する応答ページ中のイベントハンドラによって起動されるスクリプトをイベント通知に変換する変換工程と、
前記イベント通知を受信してスクリプトを実行するスクリプト実行工程と、
前記スクリプト実行工程によるスクリプト実行結果を前記クライアントに送出する送出工程とを更に備えることを特徴とする請求項５記載の情報収集方法。
【請求項７】
前記サーバにデータ取得要求を行うデータ取得要求工程と、
前記データ取得要求工程にて取得した結果から前記スクリプトの実行による前記サーバとの通信時刻を前記識別子と共に前記記録手段に記録する第３の記録工程とを更に備えることを特徴とする請求項６記載の情報収集方法。
【請求項８】
前記クライアントから送信されたページ要求から要求したユーザを識別する識別情報を抽出する抽出工程と、
前記識別情報と共に、前記識別子と前記サーバとの通信時刻を記録する第４の記録工程と、
前記識別情報に基づいてユーザを特定し、当該ユーザの一連のアクセス履歴から前記サーバとの通信時刻を特定し、当該通信時刻における前記サーバの動作情報を取得する他の取得工程とを更に備えることを特徴とする請求項５乃至７のいずれか１項に記載の情報収集方法。
【請求項９】
クライアントと、サーバと、前記クライアントと前記サーバに接続された中継装置とで構成される情報収集システムにおいて、
前記中継装置は、前記クライアントから送信されたページ要求を前記サーバに転送する第１の転送手段と、
前記転送されたページ要求ごとに識別子を生成する識別子生成手段と、
前記転送されたページ要求に応じて前記サーバから送信された応答ページに、前記識別子を送信する機能を付加して前記クライアントに転送する第２の転送手段と、
前記ページ要求及び前記応答ページに関する前記サーバとの通信時刻を前記識別子と共に記録する第１の記録手段と、
前記クライアントに転送した応答ページを記録する第２の記録手段と、
前記機能により前記クライアントから送信された識別子に基づいて前記第１の記録手段に記録された通信時刻を特定して、当該通信時刻における前記サーバの動作情報を取得する取得手段と、
前記サーバの動作情報と前記クライアントに転送した応答ページとを関連付けて収集する収集手段とを備えることを特徴とする情報収集システム。
【請求項１０】
請求項５乃至８のいずれか１項に記載の情報収集方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアント・サーバシステム上で発生したエラーや問題等に対して解析に必要な情報収集を行う情報収集装置及び方法、プログラム、並びに情報収集システムに関する。
【背景技術】
【０００２】
クライアント・サーバシステムにおいて発生する問題は、クライアント側で問題が発生したとユーザが認識しても、実際にはサーバ側で問題が発生している場合がある。そのため、問題が発生してもその解析作業に多大な労力が費やされていた。
【０００３】
クライアント・サーバシステム上で発生した問題の解析作業を効率よく行うためには、クライアント側の情報を取得するだけでなくサーバ側の情報も取得することが有効である。特に、ユーザがクライアントに表示された画面上で問題を発見した場合、問題が発生した画面と、その画面表示に関連したサーバの動作履歴が問題解析時に有効な情報となる。
【０００４】
クライアント・サーバシステム上で発生する問題を解析する方法として、例えば、クライアントとサーバで記録される履歴データを関連付ける履歴データ収集システムが提案されている（特許文献１参照）。この履歴データ収集システムは、クライアント・サーバシステム上で行われる一連の処理に識別符号を与えて、クライアント及びサーバで記録される履歴データにその識別符号を付すことで履歴データを関連付けている。
【０００５】
ところで、クライアント・サーバシステム上に構築されるＷｅｂシステムでは、ユーザの操作性向上を目的として、ＨＴＭＬ（HyperText Markup Language）文書中にJava(登録商標)Scriptなどのスクリプト言語を埋め込み、クライアントのＷｅｂブラウザ上でスクリプト言語によるプログラムを実行させる技術がある。さらに、これらのスクリプト言語からページ要求とは別に、クライアントがサーバにデータ取得のための通信を行い、表示されているＨＴＭＬ文書を動的に変化させることも行われている。そのため、ユーザがブラウザ画面上で問題を発見した場合に、問題がスクリプト言語の処理にあるのか、サーバの処理にあるのかの切り分けが難しくなっている。
【０００６】
また、問題が発見された画面に至るまでの一連の操作に問題の原因がある場合、その一連の操作にかかわる情報を取得することも、問題解析の情報として有効である。クライアントでの操作履歴の情報を取得する方法として、ＨＴＭＬ文書中のスクリプトを実行させるユーザの操作イベントも含めた操作履歴の取得方法が提案されている（特許文献２参照）。
【特許文献１】特開２００３−２２８４９８号公報
【特許文献２】特開２００１−６０１７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したＷｅｂシステムでは、試験運用などを行う際にユーザが直接ブラウザを操作することによりＷｅｂシステムのテストを実施する場合、ユーザの主体的なアクションによって問題の報告が行われる。例えば、データベース上のデータに問題がある場合、ブラウザの画面上の表示に問題が発生していることを示しているが、プログラム上にはエラーが発生していないことがある。この場合、問題が発生したことをシステム側が検知できないため、ユーザからの問題の報告が必要である。
【０００８】
ユーザがブラウザの画面上で問題を発見し報告するタイミングは、サーバのプログラム上で問題の原因となった処理が実行された直後であるとは限らない。そのため、問題の原因となる処理の実行時刻の特定が難しく、サーバのプログラムが有益な履歴データを記録していたとしても、当該履歴データから問題解析のための情報を抽出することは難しい。
【０００９】
上記特許文献１に記載された、記録される履歴データに識別符号を付与する方法では、ユーザが問題を発見した場合、ユーザが何らかの手段で識別符号を取得して報告を行わないと、クライアントとサーバで記録される履歴データの関連付けを行うことができないという問題がある。また、サーバ及びクライアントのプログラムに、識別符号を付与して履歴データを記録する機能を予め実装しておかないと、関連付けを行うことができないという問題もある。
【００１０】
一方、システム設計者がＷｅｂシステムを構築する際には、既存のシステムを組み合わせて構築することが多い。その場合、システム設計者が独自の履歴データを記録する機能をＷｅｂシステムに組み込むことは実装の負荷や技術的な制約が発生する。
【００１１】
また、問題発生までの一連の操作にかかわる情報を取得する場合において、上記特許文献２に記載されたユーザの操作イベントを記録する方法では、ブラウザの画面に表示されている情報を取得することはできない。その時点の状態に応じて動的な画面を生成するＷｅｂシステムの場合、ユーザの操作イベントを再生しても、その時点と同じ画面が取得できるとは限らないためである。そのため、操作イベントの記録のみでは、問題解析のためには十分といえず、問題が発生したその時点の画面の情報を取得する必要がある。
【００１２】
本発明は、クライアント・サーバシステム上でユーザが問題を発見した時にクライアントのブラウザ上に表示された画面とサーバの動作情報とを関連付けることができ、問題の解析を容易にする情報収集装置及び方法、プログラム、並びに情報収集システムを提供する。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、請求項１記載の情報収集装置は、クライアントとサーバとの間に接続可能な情報収集装置において、前記クライアントから送信されたページ要求を前記サーバに転送する第１の転送手段と、前記転送されたページ要求ごとに識別子を生成する識別子生成手段と、前記転送されたページ要求に応じて前記サーバから送信された応答ページに、前記識別子を送信する機能を付加して前記クライアントに転送する第２の転送手段と、前記ページ要求及び前記応答ページに関する前記サーバとの通信時刻を前記識別子と共に記録する第１の記録手段と、前記クライアントに転送した応答ページを記録する第２の記録手段と、前記機能により前記クライアントから送信された識別子に基づいて前記第１の記録手段に記録された通信時刻を特定して、当該通信時刻における前記サーバの動作情報を取得する取得手段と、前記サーバの動作情報と前記クライアントに転送した応答ページとを関連付けて収集する収集手段とを備えることを特徴とする。
【００１４】
上記目的を達成するために、請求項５記載の情報収集方法は、クライアントとサーバとの間に接続可能な情報収集装置の情報収集方法において、前記クライアントから送信されたページ要求を前記サーバに転送する第１の転送工程と、前記転送されたページ要求ごとに識別子を生成する識別子生成工程と、前記転送されたページ要求に応じて前記サーバから送信された応答ページに、前記識別子を送信する機能を付加して前記クライアントに転送する第２の転送工程と、前記ページ要求及び前記応答ページに関する前記サーバとの通信時刻を前記識別子と共に記録手段に記録する第１の記録工程と、前記クライアントに転送した応答ページを前記記録手段に記録する第２の記録工程と、前記機能により前記クライアントから送信された識別子に基づいて前記記録手段に記録された通信時刻を特定して、当該通信時刻における前記サーバの動作情報を取得する取得工程と、前記サーバの動作情報と前記クライアントに転送した応答ページとを関連付けて収集する収集工程とを備えることを特徴とする。
【００１５】
上記目的を達成するために、請求項９記載の情報収集システムは、クライアントと、サーバと、前記クライアントと前記サーバに接続された中継装置とで構成される情報収集システムにおいて、前記中継装置は、前記クライアントから送信されたページ要求を前記サーバに転送する第１の転送手段と、前記転送されたページ要求ごとに識別子を生成する識別子生成手段と、前記転送されたページ要求に応じて前記サーバから送信された応答ページに、前記識別子を送信する機能を付加して前記クライアントに転送する第２の転送手段と、前記ページ要求及び前記応答ページに関する前記サーバとの通信時刻を前記識別子と共に記録する第１の記録手段と、前記クライアントに転送した応答ページを記録する第２の記録手段と、前記機能により前記クライアントから送信された識別子に基づいて前記第１の記録手段に記録された通信時刻を特定して、当該通信時刻における前記サーバの動作情報を取得する取得手段と、前記サーバの動作情報と前記クライアントに転送した応答ページとを関連付けて収集する収集手段とを備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、クライアントから送信されたページ要求をサーバに転送する場合、転送されたページ要求ごとに識別子を生成し、転送されたページ要求に応じてサーバから送信された応答ページに、識別子を送信する機能を付加してクライアントに転送する。そして、ページ要求及び応答ページに関するサーバとの通信時刻を識別子と共に記録し、クライアントに転送した応答ページを記録する。そして、識別子を送信する機能によりクライアントから送信された識別子に基づいてサーバとの通信時刻を特定して、当該通信時刻におけるサーバの動作情報を取得する。そして、サーバの動作情報とクライアントに転送した応答ページとを関連付けて収集する。これにより、クライアント・サーバシステム上でユーザが問題を発見したときにクライアントのブラウザ上に表示された画面とサーバの動作情報とを関連付けることができ、問題の解析を容易にすることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１８】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係る情報収集システムが適用されたクライアント・サーバシステムの構成を示すブロック図である。
【００１９】
図１において、本クライアント・サーバシステムは、クライアント端末１００と、中継サーバ２００と、テスト対象サーバ３００とで構成される。クライアント端末１００は、図示に限らず、複数台接続されていてもよい。
【００２０】
クライアント端末１００は、不図示のＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク、表示装置、キーボードやマウス等の操作装置、通信Ｉ／Ｆ（インタフェース）等を備える。
【００２１】
中継サーバ２００及びテスト対象サーバ３００は、それぞれが不図示のＣＰＵ、ＲＡＭ、ＲＯＭ、ハードディスク、表示装置、キーボードやマウス等の操作装置、通信Ｉ／Ｆ（インタフェース）等を備える。
【００２２】
クライアント端末１００は、インターネットやＬＡＮ（Local Area Network）等のネットワークを介して中継サーバ２００に接続することが可能である。なお、中継サーバ２００には１台のクライアント端末１００が接続されているが、複数台接続されていてもよい。
【００２３】
クライアント端末１００上では、インターネット上で提供されるＷｅｂページを閲覧するためのアプリケーション・ソフトウェアであるＷｅｂブラウザ１０１が動作する。Ｗｅｂブラウザ１０１は、中継サーバ２００を経由してＷｅｂサーバ３０１に接続し、データの送受信を行う。
【００２４】
テスト対象サーバ３００はネットワーク上に設置され、ネットワークを介して中継サーバ２００に接続することができる。テスト対象サーバ３００では、例えば、ＷＷＷ（World Wide Web）による情報送信機能を有するソフトウェアのＷｅｂサーバ３０１が動作する。Ｗｅｂサーバ３０１は、実行した処理内容をサーバログ３０２としてハードディスク等の記憶装置に記録する。
【００２５】
中継サーバ２００は、クライアント端末１００のＷｅｂブラウザ１０１と通信を行うクライアント通信装置２０１と、テスト対象サーバ３００のＷｅｂサーバ３０１と通信を行うサーバ通信装置２０３と、これらに接続された中継制御部２０２とを備える。中継制御部２０２は、クライアント通信装置２０１及びサーバ通信装置２０３を介してＷｅｂブラウザ１０１とＷｅｂサーバ３０１との間の通信の中継を行う。
【００２６】
クライアント通信装置２０１はＬｏｇ情報収集部２１０に接続されている。Ｌｏｇ情報収集部２１０は、Ｗｅｂブラウザ１０１からの問題点報告を受け、ページ履歴２０８とサーバログ３０２とを関連付けてＬｏｇ情報ＤＢ２０９に格納する。また、Ｌｏｇ情報収集部２１０は、サーバログ構成情報２０６にアクセスすることができる。サーバログ構成情報２０６の一例を図１９に示す。
【００２７】
Ｗｅｂサーバ３０１により記録されるサーバログ３０２には、情報の種類ごとに複数のサーバログが記録される場合がある。Ｗｅｂサーバ３０１が複数のプログラムの組み合わせ、例えば、アプリケーションサーバとＤＢ管理システムなどで実現されることもあることから、図１４〜図１６に示すような複数のサーバログが各種のフォーマットで記録されることになる。そこで、サーバログ構成情報２０６によりサーバログの種類とフォーマットが管理されている。
【００２８】
中継制御部２０２及びＬｏｇ情報収集部２１０は、ＣＧＩプログラムやＪａｖａ(登録商標)のサーブレットなどの一般的なＷｅｂアプリケーション技術によって実現することが可能である。
【００２９】
クライアント通信装置２０１及びサーバ通信装置２０３は、ＷｅｂアプリケーションのプラットフォームとなるＷｅｂアプリケーションサーバによって提供される機能を利用することができる。例えば、ＷｅｂアプリケーションサーバTomcatで動作するＪａｖａ(登録商標)サーブレットプログラムとしてこれらの機能を実現することが可能である。
【００３０】
中継制御部２０２は、要求ＩＤ付与部２０５、ページ更新部２０４に接続されている。また、サーバアクセス履歴２０７、ページ履歴２０８にアクセスすることができる。要求ＩＤ付与部２０５は、後述するユニークな識別子から成る要求ＩＤを生成して応答ページに埋め込む。サーバアクセス履歴２０７には、後述するＷｅｂサーバ３０１へのページ要求送信時刻と応答ページ受信時刻、生成された要求ＩＤがセットにされて記録される。ページ更新部２０４は、ユーザが問題点報告を行う際に起動される要求ＩＤ送信機能を応答ページに埋め込み、応答ページを変更する。
【００３１】
図２は、図１のクライアント・サーバシステムを構成する装置間の基本的な処理の流れを示すシーケンスである。
【００３２】
図２において、まず、ユーザがクライアント端末１００のＷｅｂブラウザ１０１を利用してＷｅｂページを閲覧するときは、クライアント端末１００から中継サーバ２００にページ要求が送信される（ステップＳ２０１）。
【００３３】
中継サーバ２００は、クライアント端末１００から受信したページ要求をテスト対象サーバ３００に転送する（ステップＳ２０２）。
【００３４】
テスト対象サーバ３００は、中継サーバ２００から受信したページ要求の要求内容に応じて、動的に生成した応答ページか或いは予め保持している静的な応答ページを中継サーバ２００へ送信する（ステップＳ２０３）。テスト対象サーバ３００から中継サーバ２００に対して送信される変更前の応答ページの表示画面の一例を図２２に示す。
【００３５】
また、テスト対象サーバ３００は、応答ページを中継サーバ２００に送信する際、当該テスト対象サーバ３００での動作処理の内容を、例えば図１４〜図１６に示すようなサーバログ３０２としてハードディスク等に記録する。
【００３６】
中継サーバ２００がテスト対象サーバ３００からの応答ページを受けると、１つのページの要求ごとに要求ＩＤを生成する。要求ＩＤはユニークな識別子から成る。そして、ユーザが閲覧した応答ページにある問題点をＷｅｂ上で報告するための要求ＩＤを送信する要求ＩＤ送信機能を応答ページに埋め込む。要求ＩＤ送信機能が埋め込まれた変更後の応答ページの表示画面の一例を図２３に示す。この例では、応答ページに対する要求ＩＤ送信機能の埋め込みが、ユーザが問題点を報告するためのボタン（「問題点を報告する」ボタン２３５）をページ中に埋め込む形で実現されている。
【００３７】
中継サーバ２００は、要求ＩＤ送信機能が埋め込まれた応答ページを、ステップＳ２０１のページ要求送信に対する応答としてクライアント端末１００に送信する（ステップＳ２０４）。クライアント端末１００は、受信した応答ページをＷｅｂブラウザ１０１により表示させる。
【００３８】
このように、ユーザがＷｅｂブラウザ１０１を利用してテスト対象サーバ３００に対する試験運用等を実施する間、ステップＳ２０１のページ要求送信処理からステップＳ２０４の応答ページ送信処理が繰り返し実行される。
【００３９】
ここで、ユーザがＷｅｂブラウザ１０１により表示されている応答ページ上に問題を発見した場合、この問題点を報告するための所定の操作を行うと応答ページ中に埋め込まれた要求ＩＤ送信機能が起動する（ステップＳ２０４）。その結果、クライアント端末１００は中継サーバ２００に要求ＩＤを送信する（ステップＳ２０５）。例えば、図２３に示す応答ページ画面上でユーザが問題を発見した場合、画面中の「問題点を報告する」ボタン２３５を押下することにより、クライアント端末１００が中継サーバ２００に要求ＩＤを送信する。
【００４０】
図２４は、「問題点を報告する」ボタン２３５が押下された場合に、ユーザが問題内容を記入するための画面を示す図である。「問題点を報告する」ボタン２３５が押下されると、中継サーバ２００が図２４に示す問題点報告フォーム画面をクライアント端末１００に送信して当該画面を表示させる。そして、クライアント端末１００が問題点報告フォーム画面に記入された問題内容と共に要求ＩＤを送信するようにしてもよい。
【００４１】
次に、中継サーバ２００はクライアント端末１００から要求ＩＤを受信すると、その要求ＩＤに対応するテスト対象サーバ３００への送受信（ステップＳ２０２〜ステップＳ２０３）の時刻を特定する。そして、中継サーバ２００は、特定した時刻に基づいてテスト対象サーバ３００からサーバログ３０２を取得する（ステップＳ２０６）。
【００４２】
図３は、Ｗｅｂブラウザ１０１からページ要求を受けたときのクライアント通信装置２０１の動作処理を示すフローチャートである。
【００４３】
図３において、クライアント通信装置２０１は、Ｗｅｂブラウザ１０１からページ要求（リクエスト）を受信する（ステップＳ３０１）。そして、そのリクエストが上述したＷｅｂサーバ３０１に対するページ要求か、問題点報告のリクエストかを判断する（ステップＳ３０２）。
【００４４】
Ｗｅｂブラウザ１０１は、例えば、中継サーバ２００のホスト名が「ＰＲＯＸＹ−ＨＯＳＴ」である場合、図３４（ａ）に示すようなＵＲＬでページ要求を送信する。一方、問題点報告のリクエストの場合、図３４（ｂ）で示すようなＵＲＬでリクエストを送信する。なお、問題点報告のリクエストか否かの判断は、問題点報告のリクエストのＵＲＬをＷｅｂサーバ３０１が受付可能なＵＲＬのパスと重複しないようにすることにより、ＵＲＬのパスのパターンにより判断することが可能である。
【００４５】
中継サーバ２００の機能をＷｅｂアプリケーションサーバTomcatで動作するＪａｖａ(登録商標)サーブレットプログラムとして実現する場合について説明する。中継制御部２０２とＬｏｇ情報収集部２１０をそれぞれ別のサーブレットプログラムとし、ＵＲＬのパスのパターンにより起動させるＪａｖａ(登録商標)サーブレットプログラムを選択するようにTomcatを設定する。これにより、ステップＳ３０２のリクエストがページ要求か或いは問題点報告のリクエストかを切り分ける処理を実現することができる。
【００４６】
ステップＳ３０２の判断の結果、受信したリクエストが問題点報告のリクエストではなくページ要求である場合（ステップＳ３０２でＮＯ）、クライアント通信装置２０１は中継制御部２０２にリクエスト転送を依頼する（ステップＳ３０３）。一方、問題点報告のリクエストの場合（ステップＳ３０２でＹＥＳ）、クライアント通信装置２０１はＬｏｇ情報収集部２１０に情報収集を依頼する（ステップＳ３０４）。
【００４７】
図４は、ページ要求をＷｅｂサーバ３０１に転送するときの中継制御部２０２の動作処理を示すフローチャートである。
【００４８】
図４において、中継制御部２０２は、図３のステップＳ３０３でクライアント通信装置２０１から依頼されたリクエストを、サーバ通信装置２０３を利用してＷｅｂサーバ３０１に転送する（ステップＳ４０１）。例えば、テスト対象サーバ３００のホスト名が「ＴＡＲＧＥＴ−ＨＯＳＴ」である場合、図３４（ｃ）に示すようなＵＲＬでＷｅｂサーバ３０１にリクエストを転送する。
【００４９】
リクエストが転送された後、サーバ通信装置２０３がＷｅｂサーバ３０１から応答ページを受信すると（ステップＳ４０２，Ｓ４０３でＮＯ）、中継制御部２０２は要求ＩＤ付与部２０５に対して要求ＩＤの生成を要求する（ステップＳ４０５）。一方、中継制御部２０２は、サーバ通信装置２０３がＷｅｂサーバ３０１からの応答のタイムアウトを検出（ステップＳ４０２でＹＥＳ）、或いはエラー応答を検出（ステップＳ４０３でＹＥＳ）した場合、中継制御部２０２は応答ページに替わるエラーページを生成する（ステップＳ４０４）。そして、エラーページに対しても要求ＩＤ送信機能の埋め込みを行うために、ページ更新部２０４を呼び出してステップＳ４０５以降の処理を行う。エラーページ画面の一例を図２１に示す。
【００５０】
次に、中継制御部２０２は、Ｗｅｂサーバ３０１へのページ要求の送信時刻と、応答ページの受信時刻と、生成された要求ＩＤとをセットにして、サーバアクセス履歴２０７に記録する（ステップＳ４０６）。サーバアクセス履歴２０７の一例を図１７に示す。サーバアクセス履歴２０７には、ユニークな識別子から成る要求ＩＤと、クライアント端末のＩＰアドレスから成るユーザ識別子と、送信時刻と、受信時刻と、要求ＵＲＬとが記録される。クライアント通信装置２０１がユーザ識別子と要求ＵＲＬを取得し、リクエスト転送を依頼する際に中継制御部２０２に引き渡す。そして、中継制御部２０２がサーバアクセス履歴２０７に要求ＩＤを記録すると同時に、ユーザ識別子、要求ＵＲＬ、送信時刻、受信時刻を記録する。
【００５１】
図４に戻り、ステップＳ４０７では、中継制御部２０２がページ更新部２０４を呼び出し、ページ更新部２０４により、上述した要求ＩＤ送信機能を応答ページに埋め込んで応答ページを変更する。本実施の形態では、応答ページのＨＴＭＬソース中に要求ＩＤ送信機能として問題点報告を行うためのボタンを埋め込む例について説明する。Ｗｅｂサーバ３０１から送られた変更前の応答ページのＨＴＭＬソースの一例を図１２に示す。
【００５２】
ページ更新部２０４は、応答ページのＨＴＭＬソースを解析し、当該応答ページの元の画面レイアウトに対して影響を与えないようにＨＴＭＬソースを変更する。変更後の応答ページのＨＴＭＬソースの一例を図１３に示す。図２２に示す変更前の応答ページに対して変更後の応答ページは、図２３に示すように、画面上部に「問題点を報告する」ボタン２３５が埋め込まれている。
【００５３】
図１３に示すＨＴＭＬソースの５行目〜１２行目が要求ＩＤ送信機能が埋め込まれている部分である。ＨＴＭＬのＦＯＲＭ機能を利用し、要求ＩＤをHiddenパラメータとして設定しておき（７行目）、「問題点を報告する」ボタン（９行目）が押下されることで、要求ＩＤが送信されるようになっている。要求ＩＤの送信先は６行目のＦＯＲＭタグのaction属性に設定されているパスとなっている。これにより、上述した図３のステップＳ３０２における問題点報告のリクエストか否かの切り分けが、ＵＲＬのパスによって可能になる。
【００５４】
図４に戻り、ページ更新部２０４により応答ページの変更が完了すると、中継制御部２０２は、変更された応答ページを要求ＩＤと共にページ履歴２０８に記録する（ステップＳ４０８）。ページ履歴２０８の一例を図１８に示す。そして、中継制御部２０２は、クライアント通信装置２０１を介して、変更された応答ページをＷｅｂブラウザ１０１に送出する（ステップＳ４０９）。
【００５５】
図５は、Ｌｏｇ情報収集部２１０の動作処理を示すフローチャートである。
【００５６】
図５において、Ｌｏｇ情報収集部２１０は、図３のステップＳ３０４でクライアント通信装置２０１から情報収集の依頼を受けると、ステップＳ３０１で受信したリクエスト中に含まれる要求ＩＤを取得する（ステップＳ５０１）。例えば、要求ＩＤが図１３に示すＨＴＭＬソースの７行目のＦＯＲＭのHiddenパラメータとして設定されている場合、Ｌｏｇ情報収集部２１０は、ＵＲＬ中のQUERY_STRINGからHiddenパラメータの属性名requestidをキーとして要求ＩＤを取得することが可能である。
【００５７】
次に、Ｌｏｇ情報収集部２１０は、サーバアクセス履歴２０７を参照し、テスト対象サーバ３００への要求ＩＤの送受信時刻を特定する（ステップＳ５０２）。例えば、要求ＩＤが「Ｒ０１２３４６」の場合、図１７に示すサーバアクセス履歴２０７を参照して、送信時刻が「2005/11/29 09:46:15」であり、受信時刻が「2005/11/29/Nov 09:46:17」であることを特定することができる。これは、ユーザが問題点を報告したページに対してＷｅｂサーバ３０１で処理が行われた時間が、この送受信時間であることを示している。
【００５８】
次に、Ｌｏｇ情報収集部２１０は、図１９に示すサーバログ構成情報２０６を参照して、サーバログ構成情報を取得する（ステップＳ５０３）。
【００５９】
図１９において、「ログ種別」はＷｅｂサーバ３０１により記録されるサーバログ３０２の種類を示している。「ディレクトリ」はサーバログ３０２の記録場所を示し、「切り替えタイミング」はログファイルの切り替え方法を示している。「ディレクトリ」と「切り替えタイミング」の情報により、ログの記録場所とファイル名を特定することができる。
【００６０】
「ログタイプ」と「フォーマット」は、記録されるサーバログ３０２のログタイプとフォーマットが示されている。この「フォーマット」の情報によりサーバログ３０２中の時刻情報のフィールドを特定することが可能であり、特定時刻における情報を抽出することができる。この特定時刻における情報は、ログの種類により具体的な内容が異なるが、図１９におけるログ種別「access log」の場合は、ＨＴＴＰのメソッド、要求されたリソース（＝ＵＲＬ）、処理結果を示す結果コードなどから成る。この情報が動作情報に相当する。
【００６１】
Ｌｏｇ情報収集部２１０は、ステップＳ５０３で取得したサーバログ構成情報２０６を含む情報に基づいて、テスト対象サーバ３００上のサーバログ３０２から、ステップＳ５０２で特定した送受信時刻間のログ情報（動作情報）を取得する（ステップＳ５０４）。ここで、サーバログが複数ある場合、すべてのサーバログに対してステップＳ５０４の処理を繰り返す（ステップＳ５０５）。なお、サーバログ構成情報２０６を含む情報は、ログのフォーマット情報やディレクトリなども含めたサーバログ構成情報に含まれる全体の情報をいう。
【００６２】
次に、Ｌｏｇ情報収集部２１０は、ページ履歴２０８から要求ＩＤに対応するページの情報を取得する（ステップＳ５０６）。そして、ステップＳ５０４とステップＳ５０６で取得した情報を関連付けて、Ｌｏｇ情報ＤＢ２０９に格納する（ステップＳ５０７）。Ｌｏｇ情報ＤＢ２０９の一例を図２０に示す。そして、Ｌｏｇ情報収集部２１０は、クライアント通信装置２０１を介して、例えば、図２５に示す完了ページをＷｅｂブラウザ１０１に送出する（ステップＳ５０８）。
【００６３】
上記第１の実施の形態によれば、中継サーバ２００では、クライアント端末１００から受信したページ要求ごとに要求ＩＤを生成し、ページ要求をテスト対象サーバ３００に転送する。そのとき、テスト対象サーバ３００との通信時刻が要求ＩＤと共に記録される。そして、テスト対象サーバ３００から受信した応答ページに要求ＩＤ送信機能を埋め込み、クライアント端末１００に送出する。そして、クライアント端末１００から要求ＩＤ送信機能による問題点報告のリクエストを受信すると、該リクエスト中に含まれる要求ＩＤに基づいてテスト対象サーバ３００との通信時刻を特定する。そして、その時刻におけるテスト対象サーバ３００の動作情報を取得して応答ページと関連付ける。これにより、クライアント・サーバシステム上でユーザが問題を発見した時にクライアント端末１００のＷｅｂブラウザ１０１上に表示される画面とテスト対象サーバ３００の動作情報とを関連付けることができ、発見された問題の解析を容易にすることができる。
【００６４】
また、従来のクライアント・サーバシステムに中継サーバ２００を追加接続することでテスト対象サーバ３００及びクライアント端末１００に対してシステム上の変更を行うことなく、試験運用を行うことができる。そのため、試験運用時には、中継サーバ２００を組み込み、本番運用時には取り外すことが容易なため、試験用の環境を新たに用意することなく、試験運用からスムーズに本番運用に移行することができる。
【００６５】
上記第１の実施の形態では、中継制御部２０２とＬｏｇ情報収集部２１０が同一の中継サーバ上で動作する例について説明した。一方、サーバアクセス履歴２０７、ページ履歴２０８を複数の装置からアクセスできるようにすることで、中継制御部２０２とＬｏｇ情報収集部２１０を別々の装置上で動作させることも可能である。
【００６６】
また、Ｗｅｂサーバ３０１の動作情報としてログファイルを収集する例について説明したが、ログファイルのみに限定されるわけではない。例えば、ＤＢ管理システムのバックアップ機能で、特定時刻の状態に復元させる機能をもつものがある。Ｗｅｂサーバ３０１がその機能を利用可能な場合には、問題発生時刻で復元させたＤＢ情報を収集することも可能である。
【００６７】
［第２の実施の形態］
次に、本発明の第２の実施の形態に係る情報収集システムとして、問題点が報告されたページに至るまでの一連の操作履歴を含む情報を取得する場合について説明する。本第２の実施の形態では、ページの遷移による操作履歴だけではなく、Java(登録商標)Scriptによりページの内容が動的に更新される場合の画面の履歴を含む情報を取得する。なお、上記第１の実施の形態における情報収集システムと同一の構成要素には同一の符号を付してその説明を省略する。以下に、上記第１の実施の形態と異なる点のみを説明する。
【００６８】
図６は、本発明の第２の実施の形態に係る情報収集システムが適用されたクライアント・サーバシステムの構成を示すブロック図である。
【００６９】
図６において、本クライアント・サーバシステムは、クライアント端末１００と、中継サーバ６００と、テスト対象サーバ３００とで構成される。
【００７０】
中継サーバ６００は、クライアント通信装置２０１と、中継制御部２０２と、サーバ通信装置２０３と、ページ更新部２０４と、要求ＩＤ付与部２０５と、サーバログ構成情報２０６と、サーバアクセス履歴２０７とを備える。また、中継サーバ６００は、ページ履歴２０８と、Ｌｏｇ情報ＤＢ２０９と、Ｌｏｇ情報収集部２１０と、ユーザ特定部２１１と、スクリプト実行部２１２と、変換イベント情報２１３とを備える。
【００７１】
スクリプト実行部２１２は、ページ更新部２０４、サーバ通信装置２０３、サーバアクセス履歴２０７、及びページ履歴２０８にアクセスすることが可能である。スクリプト実行部２１２は、Java(登録商標)ScriptなどのＨＴＭＬ文書中に埋め込まれた、スクリプト言語によるプログラムを実行する。スクリプト言語のプログラムは、通常Ｗｅｂブラウザ１０１内部で動作する。スクリプト言語のプログラムを中継サーバ６００上で動作させることで、Java(登録商標)Scriptによるページの動的な更新も記録される。また、Java(登録商標)Scriptプログラムをスクリプト実行部２１２で動作させるために、Java(登録商標)Scriptプログラムの起動イベントを中継サーバ６００へのイベント通知に変換する。置き換え元のJava(登録商標)Scriptプログラムは変換元イベント情報２１３に登録されている。
【００７２】
ユーザ特定部２１１は、中継制御部２０２に接続され、ページ要求を送信したＷｅｂブラウザ１０１が動作しているクライアント端末１００或いはユーザを特定する機能をもつ。変換イベント情報２１３は、図３０に示すように、イベントＩＤと実行関数とが関連付けて記録されたものである。
【００７３】
図７は、図６のクライアント・サーバシステムを構成する装置間の基本的な処理の流れを示すシーケンスである。図７におけるステップＳ７０１〜Ｓ７０４は、図２におけるステップＳ２０１〜Ｓ２０４に対応するものである。なお、ステップＳ７０４では、上述した要求ＩＤ送信機能が応答ページに埋め込まれると同時に、応答ページ中のJava(登録商標)Scriptのイベントハンドラが設定されている箇所の関数が、中継サーバ６００へのイベント通知を行うための関数に書き換える処理が行われる。
【００７４】
まず、ユーザがＷｅｂブラウザ１０１を利用することにより、そのイベントハンドラが起動すると、クライアント端末１００から中継サーバ６００にイベント通知（スクリプトイベント）が送信される（ステップＳ７０５）。
【００７５】
中継サーバ６００はクライアント端末１００からイベント通知を受信すると、そのイベント通知に対応する、書き換え前の関数を実行する。そして、中継サーバ６００はJava(登録商標)Scriptの関数の実行により応答ページの更新を行い、更新した応答ページをクライアント端末１００に送信する（ステップＳ７０６）（Ｊａｖａ(登録商標)スクリプトの実行１）。
【００７６】
一方、中継サーバ６００はイベント通知を受信すると、Java(登録商標)Scriptの関数内でXMLHTTPRequstオブジェクトを利用して、テスト対象サーバ３００のＷｅｂサーバ３０１に対して通信を行い、その結果により応答ページの更新を行う場合がある（Ｊａｖａ(登録商標)スクリプトの実行２）。
【００７７】
中継サーバ６００は、クライアント端末１００から送信されたイベント通知（スクリプトイベント）を受信すると（ステップＳ７０７）、Java(登録商標)Scriptの関数を実行し、テスト対象サーバ３００へXMLHTTPRequstによるリクエストを送信する（ステップＳ７０８）。
【００７８】
テスト対象サーバ３００は、受信したリクエストの内容に応じて応答ＸＭＬ文書を生成し、生成した応答ＸＭＬ文書を中継サーバ６００に送信する（ステップＳ７０９）。その際、テスト対象サーバ３００での動作内容がサーバログ３０２として記録される。
【００７９】
中継サーバ６００は、テスト対象サーバ３００から受信した応答ＸＭＬ文書に基づいて応答ページの更新を行い、更新した応答ページをクライアント端末１００に送信する（ステップＳ７１０）。クライアント端末１００では、受信した応答ページがＷｅｂブラウザ１０１により表示される。
【００８０】
ユーザがＷｅｂブラウザ１０１により表示されている画面上で問題を発見し、問題点を報告するための操作を行った場合、ステップＳ７１１〜Ｓ７１２の動作が行われる。これは、上述した図２のステップＳ２０５〜Ｓ２０６に対応するものである。なお、ステップＳ７１２で収集される情報はJava(登録商標)Scriptによるテスト対象サーバ３００での動作のログ（ステップＳ７０８〜Ｓ７０９）も含めて収集される。
【００８１】
図８は、Ｗｅｂブラウザ１０１からページ要求を受けたときのクライアント通信装置２０１の動作処理を示すフローチャートである。
【００８２】
図８において、クライアント通信装置２０１は、Ｗｅｂブラウザ１０１からページ要求（リクエスト）を受信し（ステップＳ８０１）、そのリクエストが問題点報告のリクエストか否かを判断する（ステップＳ８０２）。これは上述した図３のステップＳ３０２と同じである。この判断の結果、受信したリクエストが問題点報告のリクエストである場合（ステップＳ８０２でＹＥＳ）、クライアント通信装置２０１はＬｏｇ情報収集部２１０に情報収集を依頼する（ステップＳ８０５）。
【００８３】
一方、ステップＳ８０２の判断の結果、受信したリクエストが問題点報告のリクエストでない場合（ステップＳ８０２でＮＯ）、受信したリクエストがページ要求のリクエストか或いはJava(登録商標)Scriptの実行イベントの通知かを判断する（ステップＳ８０３）。ここでは、例えば、リクエスト中のパラメータにイベント通知を示すパラメータが含まれる場合にイベント通知であると判断することができる。
【００８４】
ステップＳ８０３の判断の結果、Java(登録商標)Scriptの実行イベントの通知である場合（ステップＳ８０３でＹＥＳ）、クライアント通信装置２０１は中継制御部２０２にJava(登録商標)Scriptの実行を依頼する（ステップＳ８０６）。一方、Java(登録商標)Scriptの実行イベントの通知でない場合（ステップＳ８０３でＮＯ）は、クライアント通信装置２０１は中継制御部２０２にリクエスト転送を依頼する（ステップＳ８０４）。
【００８５】
図９は、ページ要求をＷｅｂサーバ３０１に転送するときの中継制御部２０２の動作処理を示すフローチャートである。
【００８６】
図９において、中継制御部２０２は、図８のステップＳ８０４でクライアント通信装置２０１から依頼されたリクエストを、サーバ通信装置２０３を利用してＷｅｂサーバ３０１に転送する（ステップＳ９０１）。
【００８７】
リクエストが転送された後、サーバ通信装置２０３がＷｅｂサーバ３０１から応答ページを受信すると（ステップＳ９０２，Ｓ９０３でＮＯ）、中継制御部２０２は要求ＩＤ付与部２０５に対して要求ＩＤの生成を要求する（ステップＳ９０５）。一方、中継制御部２０２は、サーバ通信装置２０３がＷｅｂサーバ３０１からの応答のタイムアウトを検出（ステップＳ９０２でＹＥＳ）、或いはエラー応答を検出（ステップＳ９０３でＹＥＳ）した場合、中継制御部２０２は応答ページに替わるエラーページを生成する（ステップＳ９０４）。そして、ステップＳ９０５以降の処理を行う。
【００８８】
次に、中継制御部２０２は、ユーザ特定部２１１に対して、ページ要求を送信したユーザの特定を指示する（ステップＳ９０６）。ユーザ特定部２１１はページ要求からユーザを識別する情報を抽出することでユーザを特定する。例えば、ページ要求を送信したクライアント端末１００のＩＰアドレスをユーザの識別子として利用することが可能である。また、Ｗｅｂサーバ３０１がセッション管理を行っている場合には、ページ要求中のクッキー（Cookie）情報をユーザの識別子として利用することも可能である。例えば、クッキーの値にクライアント端末を一意に識別するための情報を保持させて、セッション管理を実現する方法が広く行われている。
【００８９】
次に、中継制御部２０２は、Ｗｅｂサーバ３０１へのページ要求の送信時刻と、応答ページの受信時刻と、生成された要求ＩＤと、ユーザを識別する情報（ユーザ識別子等）とをセットにして、サーバアクセス履歴２０７に記録する（ステップＳ９０７）。
【００９０】
次に、中継制御部２０２は、ページ更新部２０４を呼び出して応答ページを変更させる。ページ更新部２０４は、応答ページを解析し、ページの中のイベントハンドラによって呼び出される関数を、中継サーバ６００へのイベント通知を行う関数に置き換える（ステップＳ９０８）。Ｗｅｂサーバ３０１から送られる応答ページのJava(登録商標)Script関数を含む変更前のＨＴＭＬソースの一例を図２６に示す。
【００９１】
図２６に示すＨＴＭＬソースの１０行目のＩＮＰＵＴタグには、イベントハンドラonblurで呼び出される関数check_number（）が設定されている。また、１５行目のBUTTONタグには、イベントハンドラonclickで呼び出される関数fill_address（）が設定されている。ページ更新部２０４は、それぞれの関数をイベントを通知するための関数sendenvet（）に置き換える。イベントハンドラにより呼び出される関数が書き換えられた変更後のＨＴＭＬソースの一例を図２７に示す。
【００９２】
図２７において、図２６に示すＨＴＭＬソースの１０行目のcheck_number（）関数は、２０行目でsendevent(‘E02341’)と書き換えられている。また、図２６に示すＨＴＭＬソースの１５行目のfill_address（）は、図２７に示すＨＴＭＬソースの２５行目でsendevent(‘E02342’)と書き換えられている。関数sendenvet（）の引数はそれぞれイベントを識別するためのユニークな識別子から成るイベントＩＤが設定される。
【００９３】
また、図２７に示すＨＴＭＬソースの３行目でJava(登録商標)Script関数を定義する外部ファイルが指定されている。これは上述したイベント通知を行うイベント通知関数send_event（）を定義するものである。イベント通知関数（イベント通知用Java(登録商標)Script）の定義の一例を図２９に示す。ここでは、sendevent（）関数の引数のイベントＩＤが図２７に示すＨＴＭＬソースの２９行目のフォーム中のHidden属性として設定され、フォームを送信する処理が行われている。これにより、イベント通知内容として、イベントＩＤが中継サーバ６００へ送信されることになる。上述した図８のステップＳ８０３でリクエスト中にこのイベントＩＤが含まれているか否かで、リクエストがイベント通知であるかの判定を行うことができる。
【００９４】
図９に戻り、ステップＳ９０８では、中継制御部２０２はページ更新部２０４が置き換えた関数をイベントＩＤと関連付けて変換イベント情報２１３に記録する。変換イベント情報２１３の一例を図３０に示す。
【００９５】
次に、ステップＳ９０９では、中継制御部２０２がページ更新部２０４を呼び出し、ページ更新部２０４により、上述した要求ＩＤ送信機能を応答ページに埋め込んで応答ページを変更する。ページ更新部２０４により応答ページの変更が完了すると、中継制御部２０２は、変更された応答ページを要求ＩＤと共にページ履歴２０８に記録する（ステップＳ９１０）。そして、中継制御部２０２は、クライアント通信装置２０１を介して、変更された応答ページをＷｅｂブラウザ１０１に送出する（ステップＳ９１１）。
【００９６】
図１０は、スクリプトを実行する中継制御部２０２の動作処理を示すフローチャートである。
【００９７】
図１０において、中継制御部２０２は、Ｗｅｂブラウザ１０１からのリクエストを解析し、イベントＩＤを取得する（ステップＳ１００１）。例えば、イベントＩＤが図２７の２９行目で示すＦＯＲＭのHiddenパラメータとして設定されている場合は、送信されるコンテンツの中からHiddenパラメータの属性名eventidをキーとして取得することが可能である。
【００９８】
次に、中継制御部２０２はページ更新部２０４にイベント通知によるページの更新を指示する。ページ更新部２０４は変換イベント情報２１３から、イベントＩＤに対応するイベント通知関数に置き換える前の元の関数を特定する（ステップＳ１００２）。そして、ページ更新部２０４はスクリプト実行部２１２に置き換え前の関数実行を指示する。
【００９９】
まず、スクリプト実行部２１２は、ページ履歴２０８から要求ＩＤ及びイベントＩＤで特定される、前回Ｗｅｂブラウザ１０１に対して送出されたページ情報（送出ページ）を取得する。そして、イベント通知に含まれるフォームパラメータの値を、このページ情報に反映させる（ステップＳ１００３）。例えば、図２７に示すＨＴＭＬページを前回Ｗｅｂブラウザ１０１に対して送信した場合、イベント通知時には、イベントＩＤ以外のフォームのパラメータｖａｌ１，ｖａｌ２，ｖａｌ３，ｖａｌ４に入力されている値も送信されることになる。これにより、Java(登録商標)Script関数の実行前にＷｅｂブラウザ１０１上でユーザが入力した値を中継サーバ６００上で再現することができる。
【０１００】
次に、スクリプト実行部２１２は指定された置き換え前の関数の実行を行う（ステップＳ１００４）。そして、スクリプト実行部２１２は、実行する関数内にＷｅｂサーバ３０１と通信処理が記述されている場合、XMLHTTPRequestオブジェクトを利用してＷｅｂサーバ３０１と通信を行う場合もある（ステップＳ１００５でＹＥＳ）。その場合、スクリプト実行部２１２は、サーバ通信装置２０３を介してＷｅｂサーバ３０１にデータ取得要求（リクエスト）を送信し（ステップＳ１００６）、その結果として応答データを受信する。そして、このときのリクエスト送信時刻及び応答データ受信時刻をサーバアクセス履歴２０７に記録する（ステップＳ１００７）。スクリプトからＷｅｂサーバ３０１へアクセスした際のサーバアクセス履歴２０７の一例を図３１に示す。次に、スクリプト実行部２１２は、上述した関数の実行結果をページ内容に反映させてページを更新する（ステップＳ１００８）。ここで、Java(登録商標)Script実行によりページが更新される動作について図２６、図２７、及び図２８を参照して具体的に説明する。
【０１０１】
図２８は、Java(登録商標)Script実行後のＨＴＭＬソースの一例を示す図である。
【０１０２】
図２６に示すＨＴＭＬソースの１５行目の“自動入力”ボタンの記述は、不図示の自動入力ボタンがクリックされることで、fill_address（）関数が実行されるようになっている。このfill_address（）関数は、他の入力フォームの値を参照して、Ｗｅｂサーバ３０１に通信を行い、図２６に示すＨＴＭＬソースの１４行目のTEXTAREA欄に値を自動で設定する機能をもつものとする。図９のステップＳ９０８で、この関数はイベント通知関数にsendenvet（）に置き換えられる（図２７に示すＨＴＭＬソースの２５行目）。そして、Ｗｅｂブラウザ１０１上でユーザが入力フォームに値を入力して“自動入力”ボタンを押すと、イベントＩＤと、入力フォーム内容が中継サーバ６００に送られる。そして、図１０のステップＳ１００３で入力フォーム内容が反映され、ステップＳ１００４で置き換え前のfill_address（）関数が実行される。こうして、図２８に示すＨＴＭＬソースの２４行目のTEXTAREA欄の値が設定される。
【０１０３】
図１０に戻り、ステップＳ１００８でページの更新が完了すると、中継制御部２０２は、要求ＩＤ及びイベントＩＤと共に、更新されたページをページ履歴２０８に記録する（ステップＳ１００９）。Java(登録商標)Script関数を伴う場合のページ履歴２０８の一例を図３２に示す。そして、中継制御部２０２は、更新されたページをクライアント通信装置２０１を介してＷｅｂブラウザ１０１に送出する（ステップＳ１０１０）。
【０１０４】
図１１は、Ｌｏｇ情報収集部２１０の動作処理を示すフローチャートである。
【０１０５】
図１１において、Ｌｏｇ情報収集部２１０は、図８のステップＳ８０５でクライアント通信装置２０１から情報収集の依頼を受けると、図８のステップＳ８０１で受信したリクエスト中に含まれる要求ＩＤを取得する（ステップＳ１１０１）。
【０１０６】
次に、Ｌｏｇ情報収集部２１０は、サーバアクセス履歴２０７を参照し、取得した要求ＩＤに基づいてユーザを特定し、特定したユーザの一連のアクセス履歴を取得する（ステップＳ１１０２）。例えば、取得した要求ＩＤが「Ｒ０１２３４６」の場合、図１７に示すサーバアクセス履歴２０７を参照して、ユーザ識別子が「１９２．１６８．１．２」であることを特定することができる。そして、特定したユーザ識別子に基づいて過去のアクセス履歴を参照し、要求ＩＤ：Ｒ０１２３４４がユーザ識別子「１９２．１６８．１．２」のユーザの過去の操作によるものであることを特定することができる。こうして、送信された要求ＩＤに至るまでの一連の操作によるユーザのアクセス履歴を取得する。履歴のさかのぼる範囲は、例えば予め設定された一定期間などに限定される。
【０１０７】
次に、Ｌｏｇ情報収集部２１０は、サーバアクセス履歴２０７を参照し、テスト対象サーバ３００への一連のアクセス履歴それぞれの送受信時刻を特定する（ステップＳ１１０３）。次に、Ｌｏｇ情報収集部２１０は、図１９に示すサーバログ構成情報２０６を参照して、サーバログ構成情報を取得する（ステップＳ１１０４）。そして、Ｌｏｇ情報収集部２１０は、取得したディレクトリの情報に基づいてテスト対象サーバ上のサーバログ３０２から、ステップＳ１１０３で特定した送受信時刻間のログ情報（動作情報）を取得する（ステップＳ１１０５）。ここで、サーバログが複数ある場合、すべてのサーバログに対してステップＳ１１０５の処理を繰り返す（ステップＳ１１０６）。
【０１０８】
次に、Ｌｏｇ情報収集部２１０は、図３１に示すようなサーバアクセス履歴２０７から要求ＩＤで特定できるスクリプトによるサーバ送受信時刻を特定する（ステップＳ１１０７）。
【０１０９】
次に、Ｌｏｇ情報収集部２１０は、同じくサーバログ３０２から、特定した送受信時刻間の情報を抽出する（ステップＳ１１０８）。ここでも、サーバログが複数ある場合、すべてのサーバログに対してステップＳ１１０８の処理を繰り返す（ステップＳ１１０９）。こうして一連の操作の各要求ＩＤに関して、ログ収集を繰り返す（ステップＳ１１１０）。
【０１１０】
次に、Ｌｏｇ情報収集部２１０は、ページ履歴２０８から一連操作の各要求ＩＤに対応するページの情報を取得する（ステップＳ１１１１）。そして、ステップＳ１１０５，Ｓ１１０８，及びＳ１１１１で取得した情報を、互いに関連付けてＬｏｇ情報ＤＢ２０９に格納する（ステップＳ１１１２）。Ｌｏｇ情報ＤＢ２０９の一例を図３３に示す。そして、Ｌｏｇ情報収集部２１０は、クライアント通信装置２０１を介して、例えば、図２５に示す完了ページをＷｅｂブラウザ１０１に送出する（ステップＳ１１１３）。
【０１１１】
上記第２の実施の形態によれば、中継サーバ６００では、クライアント端末１００から受信したページ要求ごとに要求ＩＤを生成し、ページ要求をテスト対象サーバ３００に転送する。そして、テスト対象サーバ３００から受信した応答ページ中のイベントハンドラによって呼び出される関数をイベント通知する関数に置き換えると共に、該関数にイベントＩＤが設定される。さらに、応答ページに要求ＩＤ送信機能が埋め込まれてクライアント端末１００に送出される。そして、クライアント端末１００からイベント通知を受信するとJava(登録商標)Scriptを実行し、テスト対象サーバ３００との通信時刻を記録してページを更新すると共に、ページ履歴を記録する。そして、クライアント端末１００から要求ＩＤ送信機能による問題点報告のリクエストを受信すると、取得した要求ＩＤに基づいてユーザを特定し、特定したユーザの一連のアクセス履歴を取得する。これにより、問題発生に至るまでの一連のユーザの操作による画面の履歴と、そのときのサーバの動作情報を関連付けて収集することができる。
【０１１２】
本発明の目的は、上記各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム又は装置に供給し、そのシステム等のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。なお、コンピュータはＣＰＵやＭＰＵ等であってもよい。
【０１１３】
プログラムコードを供給するための記憶媒体としては、例えば、リムーバブルディスク、ハードディスク、光磁気ディスク、光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。また、プログラムコードをネットワークを介してダウンロードしてもよい。光ディスクには、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等が含まれる。
【０１１４】
コンピュータが読み出したプログラムコードを実行することにより、上述した各実施の形態の機能が実現されるだけではない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部又は全部を行い、その処理によって上述した各実施の形態の機能が実現される場合も含まれる。
【０１１５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、次のプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した各実施の形態の機能が実現される場合も含まれる。
【０１１６】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した各実施の形態の機能が実現されるだけではない。すなわち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した各実施の形態の機能が実現される場合も、本発明に含まれることは云うまでもない。この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【０１１７】
上記プログラムの形態は、オブジェクトコード、インタプリタにより実行されるプログラムコード、ＯＳ（オペレーティングシステム）に供給されるスクリプトデータ等の形態から成ってもよい。
【図面の簡単な説明】
【０１１８】
【図１】本発明の第１の実施の形態に係る情報収集システムが適用されたクライアント・サーバシステムの構成を示すブロック図である。
【図２】図１のクライアント・サーバシステムを構成する装置間の基本的な処理の流れを示すシーケンスである。
【図３】Ｗｅｂブラウザからリクエストを受けたときのクライアント通信装置の動作処理を示すフローチャートである。
【図４】ページ要求をＷｅｂサーバに転送するときの中継制御部の動作処理を示すフローチャートである。
【図５】Ｌｏｇ情報収集部の動作処理を示すフローチャートである。
【図６】本発明の第２の実施の形態に係る情報収集システムが適用されたクライアント・サーバシステムの構成を示すブロック図である。
【図７】図６のクライアント・サーバシステムを構成する装置間の基本的な処理の流れを示すシーケンスである。
【図８】Ｗｅｂブラウザからリクエストを受けたときのクライアント通信装置の動作処理を示すフローチャートである。
【図９】ページ要求をＷｅｂサーバに転送するときの中継制御部の動作処理を示すフローチャートである。
【図１０】スクリプトを実行する中継制御部の動作処理を示すフローチャートである。
【図１１】Ｌｏｇ情報収集部の動作処理を示すフローチャートである。
【図１２】Ｗｅｂサーバから送られた変更前の応答ページのＨＴＭＬソースの一例を示す図である。
【図１３】要求ＩＤ送信機能として画面上部にボタンが埋め込まれた変更後の応答ページのＨＴＭＬソースの一例を示す図である。
【図１４】サーバログの一例であるaccess logを示す図である。
【図１５】サーバログの一例であるapplication logを示す図である。
【図１６】サーバログの一例であるerror logを示す図である。
【図１７】サーバアクセス履歴の一例を示す図である。
【図１８】ページ履歴の一例を示す図である。
【図１９】サーバログ構成情報の一例を示す図である。
【図２０】Ｌｏｇ情報ＤＢの一例を示す図である。
【図２１】エラーページ画面の一例を示す図である。
【図２２】変更前の応答ページの表示画面の一例を示す図である。
【図２３】変更後の応答ページの表示画面の一例を示す図である。
【図２４】ユーザが問題内容を記述するための問題点報告フォーム画面の一例を示す図である。
【図２５】問題点報告完了時の完了ページの表示画面の一例を示す図である。
【図２６】応答ページのJava(登録商標)Script関数を含む変更前のＨＴＭＬソースの一例を示す図である。
【図２７】イベントハンドラにより呼び出される関数が書き換えられた変更後のＨＴＭＬソースの一例を示す図である。
【図２８】Java(登録商標)Script実行後のＨＴＭＬソースの一例を示す図である。
【図２９】イベント通知用Java(登録商標)Scriptの一例を示す図である。
【図３０】変換イベント情報の一例を示す図である。
【図３１】第２の実施の形態におけるスクリプトによるサーバアクセス履歴の一例を示す図である。
【図３２】第２の実施の形態におけるJava(登録商標)Script関数を伴う場合のページ履歴の一例を示す図である。
【図３３】第２の実施形態におけるＬｏｇ情報ＤＢの一例を示す図である。
【図３４】リクエストとして送信されるＵＲＬの一例を示す図であり、（ａ）はページ（文書）要求ＵＲＬを示し、（ｂ）は問題点報告ＵＲＬを示し、（ｃ）は転送ＵＲＬを示す。
【符号の説明】
【０１１９】
１００  クライアント端末
１０１  Ｗｅｂブラウザ
２００，６００  中継サーバ
２０１  クライアント通信装置
２０２  中継制御部
２０３  サーバ通信装置
２０４  ページ更新部
２０５  要求ＩＤ付与部
２０６  サーバログ構成情報
２０７  サーバアクセス履歴
２０８  ページ履歴
２０９  Ｌｏｇ情報ＤＢ
２１０  Ｌｏｇ情報収集部
２１１  ユーザ特定部
２１２  スクリプト実行部
３００  テスト対象サーバ
３０１  Ｗｅｂサーバ
３０１  サーバログ
【図１】
2008052435.tif 000003
【図２】
2008052435.tif 000004
【図３】
2008052435.tif 000005
【図４】
2008052435.tif 000006
【図５】
2008052435.tif 000007
【図６】
2008052435.tif 000008
【図７】
2008052435.tif 000009
【図８】
2008052435.tif 000010
【図９】
2008052435.tif 000011
【図１０】
2008052435.tif 000012
【図１１】
2008052435.tif 000013
【図１２】
2008052435.tif 000014
【図１３】
2008052435.tif 000015
【図１４】
2008052435.tif 000016
【図１５】
2008052435.tif 000017
【図１６】
2008052435.tif 000018
【図１７】
2008052435.tif 000019
【図１８】
2008052435.tif 000020
【図１９】
2008052435.tif 000021
【図２０】
2008052435.tif 000022
【図２１】
2008052435.tif 000023
【図２２】
2008052435.tif 000024
【図２３】
2008052435.tif 000025
【図２４】
2008052435.tif 000026
【図２５】
2008052435.tif 000027
【図２６】
2008052435.tif 000028
【図２７】
2008052435.tif 000029
【図２８】
2008052435.tif 000030
【図２９】
2008052435.tif 000031
【図３０】
2008052435.tif 000032
【図３１】
2008052435.tif 000033
【図３２】
2008052435.tif 000034
【図３３】
2008052435.tif 000035
【図３４】
2008052435.tif 000036