Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援システムであって、前記運用系システムの負荷状況を監視するためのシステム監視部と、1または複数のWebブラウザからのリクエストを監視するためのリクエスト監視部と、前記リクエストによって呼び出されるAPIApplicationProgramInterfaceを監視するためのAPI呼び出し監視部と、前記システム監視部、前記リクエスト監視部および前記API呼び出し監視部の監視結果を記憶するための監視情報記憶部と、前記リクエストの処理が行われている際に前記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および前記監視情報記憶部によって記憶された各前記監視結果をログファイルとして出力するための例外監視部と、前記例外監視部から受けた前記ログファイルに基づいてスクリプトを生成するためのスクリプト生成部と、前記スクリプト生成部によって生成された前記スクリプトに基づいて前記例外の発生を再現するための障害再現部とを備える、障害解析支援システム。前記システム監視部、前記リクエスト監視部および前記API呼び出し監視部は、前記運用系システムのプラグインとして実現される、請求項1に記載の障害解析支援システム。前記スクリプト生成部は、前記リクエスト監視部の監視結果および前記API呼び出し監視部の監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するためのリクエスト状況再現スクリプト生成部と、前記リクエスト監視部の監視結果、前記API呼び出し監視部の監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるWebアプリケーションの実行状況を再現するためのスクリプトを生成するための障害アプリケーション実行スクリプト生成部と、前記システム監視部の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するためのシステム状況再現スクリプト生成部とを含む、請求項1または2に記載の障害解析支援システム。前記障害解析支援システムは、さらに、前記Webアプリケーションのコードを解析し、前記リクエストによって実行されるAPI以外の処理を監視するためのユーザコード解析部を備え、前記監視情報記憶部は、さらに、前記ユーザコード解析部の監視結果を記憶する、請求項1から3のいずれかに記載の障害解析支援システム。Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援方法であって、前記運用系システムの負荷状況を監視するステップと、1または複数のWebブラウザからのリクエストを監視するステップと、前記リクエストによって呼び出されるAPIを監視するステップと、前記負荷状況、前記リクエストおよび前記APIの監視結果を記憶するステップと、前記リクエストの処理が行われている際に前記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、前記ログファイルに基づいてスクリプトを生成するステップと、生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを含む、障害解析支援方法。Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援プログラムであって、コンピュータに、前記運用系システムの負荷状況を監視するステップと、1または複数のWebブラウザからのリクエストを監視するステップと、前記リクエストによって呼び出されるAPIを監視するステップと、前記負荷状況、前記リクエストおよび前記APIの監視結果を記憶するステップと、前記リクエストの処理が行われている際に前記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、前記ログファイルに基づいてスクリプトを生成するステップと、生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを実行させるための、障害解析支援プログラム。従来の障害解析の技術では、障害発生時にWebシステムがどのような負荷状況で動作していたか、たとえばどのようなCPUCentralProcessingUnit使用率、メモリ使用量および同時リクエスト数で動作していたかが不明である。このため、再現試験および解析作業に多大な工数および期間が必要であった。あるいは、従来の障害解析の技術では、単一のアプリケーションに関する情報しか採取できない。また、アプリケーション実行に関する情報もリクエストURLのみを採取するなど、障害解析に必要な情報が十分でなかった。この理由としては、従来の障害解析の技術は、あるOSOperatingSystem上のネイティブアプリケーションの障害解析に限定したものであること、問題の発生するアプリケーションを入手できることが前提であること、または、アプリケーション自身ではなく関連して動作する周りのコンポーネントに起因する障害しか想定していないこと、があげられる。すなわち、従来の障害解析の技術では、複数のアプリケーションが動作し、いつ障害が発生するか分からないWebシステムの分野に適用することが困難である。また、従来の障害解析の技術では、メモリ、プロセスおよびスレッドを圧迫するような負荷が継続してかかった結果発生する障害、および複数のリクエストが同時に処理された場合に発生する障害を再現させることができないことから、障害解析が長期化する、という問題点があった。この発明は、上述の課題を解決するためになされたもので、その目的は、Webシステムにおいて障害解析を適切に行なうことが可能な障害解析支援システム、障害解析支援方法、および障害解析支援プログラムを提供することである。上記課題を解決するために、この発明のある局面に係わる障害解析支援システムは、Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援システムであって、上記運用系システムの負荷状況を監視するためのシステム監視部と、1または複数のWebブラウザからのリクエストを監視するためのリクエスト監視部と、上記リクエストによって呼び出されるAPIApplicationProgramInterfaceを監視するためのAPI呼び出し監視部と、上記システム監視部、上記リクエスト監視部および上記API呼び出し監視部の監視結果を記憶するための監視情報記憶部と、上記リクエストの処理が行われている際に上記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、上記例外の内容を示す例外情報を生成し、生成した上記例外情報、および上記監視情報記憶部によって記憶された各上記監視結果をログファイルとして出力するための例外監視部と、上記例外監視部から受けた上記ログファイルに基づいてスクリプトを生成するためのスクリプト生成部と、上記スクリプト生成部によって生成された上記スクリプトに基づいて上記例外の発生を再現するための障害再現部とを備える。上記課題を解決するために、この発明のある局面に係わる障害解析支援方法は、Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援方法であって、上記運用系システムの負荷状況を監視するステップと、1または複数のWebブラウザからのリクエストを監視するステップと、上記リクエストによって呼び出されるAPIを監視するステップと、上記負荷状況、上記リクエストおよび上記APIの監視結果を記憶するステップと、上記リクエストの処理が行われている際に上記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、上記例外の内容を示す例外情報を生成し、生成した上記例外情報、および記憶した各上記監視結果をログファイルとして出力するステップと、上記ログファイルに基づいてスクリプトを生成するステップと、生成した上記スクリプトに基づいて上記例外の発生を再現するステップとを含む。上記課題を解決するために、この発明のある局面に係わる障害解析支援プログラムは、Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援プログラムであって、コンピュータに、上記運用系システムの負荷状況を監視するステップと、1または複数のWebブラウザからのリクエストを監視するステップと、上記リクエストによって呼び出されるAPIを監視するステップと、上記負荷状況、上記リクエストおよび上記APIの監視結果を記憶するステップと、上記リクエストの処理が行われている際に上記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、上記例外の内容を示す例外情報を生成し、生成した上記例外情報、および記憶した各上記監視結果をログファイルとして出力するステップと、上記ログファイルに基づいてスクリプトを生成するステップと、生成した上記スクリプトに基づいて上記例外の発生を再現するステップとを実行させるためのプログラムである。本発明によれば、Webシステムにおいて障害解析を適切に行なうことができる。以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。[構成および基本動作]図1は、本発明の実施の形態に係る障害解析支援システムの構成を示す図である。図1を参照して、障害解析支援システム401は、運用系システム201と、テスト系システム301とを備える。運用系システム201は、アプリケーションサーバ10を備える。テスト系システム301は、アプリケーションサーバ50と、サーバスクリプト生成部60とを備える。なお、アプリケーションサーバ10、アプリケーションサーバ50およびサーバ60は、装置として別個であってもよいし、1つの装置であってもよい。運用系システム201では、複数のWebアプリケーション71が動作する。運用系システム201における複数のWebブラウザは、たとえばアプリケーションサーバ10とは別の情報処理装置に搭載され、アプリケーションサーバ10を介してWebアプリケーション71を実行することが可能である。テスト系システム301は、運用系システム201において障害が発生した場合には、運用系システム201からログを取得し、取得したログに基づいて当該障害を解析する。本発明の実施の形態に係る情報処理装置であるアプリケーションサーバ10、アプリケーションサーバ50およびサーバ60は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、あらかじめインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスクFlexibleDiskおよびCD-ROMCompactDiskReadOnlyMemoryなどの記録媒体に格納されて、あるいはネットワークなどを介して流通する。このような汎用的なコンピュータを利用する場合には、本発明の実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのOSOperatingSystemがインストールされていてもよい。この場合には、本発明の実施の形態に係るプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および/またはタイミングで呼び出して処理を実行するものであってもよい。すなわち、本発明の実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行される場合もある。したがって、本発明の実施の形態に係るプログラムとしては、上記のようなモジュールを含まない形態であってもよい。さらに、本発明の実施の形態に係るプログラムは、OS等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。図2は、本発明の実施の形態に係る情報処理装置の概略構成図である。図2を参照して、情報処理装置は、携帯情報端末、パーソナルコンピュータおよびサーバ等の情報処理装置であり、演算処理部であるCPUCentralProcessingUnit101と、メインメモリ102およびハードディスク103と、入力インタフェース104と、表示コントローラ105と、データリーダ/ライタ106と、通信インタフェース107とを備える。これらの各部は、バス121を介して互いにデータ通信可能に接続される。CPU101は、ハードディスク103に格納されたプログラムコードをメインメモリ102に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ102は、典型的には、DRAMDynamicRandomAccessMemoryなどの揮発性の記憶装置であり、ハードディスク103から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ハードディスク103は不揮発性の磁気記憶装置であり、CPU101で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク103にインストールされるプログラムは、後述するように、記録媒体111に格納された状態で流通する。なお、ハードディスク103に加えて、あるいはハードディスク103に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。入力インタフェース104は、CPU101とキーボード108、マウス109および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インタフェース104は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受け付ける。表示コントローラ105は、表示部の典型例であるディスプレイ110と接続され、ディスプレイ110での表示を制御する。すなわち、表示コントローラ105は、CPU101による画像処理の結果などをユーザに対して表示する。ディスプレイ110は、たとえばLCDLiquidCrystalDisplayまたはCRTCathodeRayTubeである。データリーダ/ライタ106は、CPU101と記録媒体111の間のデータ伝送を仲介する。すなわち、記録媒体111は、情報処理装置で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ106は、この記録媒体111からプログラムを読み出す。また、データリーダ/ライタ106は、CPU101の内部指令に応答して、情報処理装置における処理結果などを記録媒体111へ書き込む。なお、記録媒体111は、たとえば、CFCompactFlashおよびSDSecureDigitalなどの汎用的な半導体記憶デバイス、フレキシブルディスクFlexibleDiskなどの磁気記憶媒体、またはCD-ROMCompactDiskReadOnlyMemoryなどの光学記憶媒体である。通信インタフェース107は、CPU101とパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インタフェース107は、典型的には、イーサネット登録商標またはUSBUniversalSerialBusの通信機能を有する。なお、記録媒体111に格納されたプログラムを情報処理装置にインストールする形態に代えて、通信インタフェース107を介して配信サーバなどからダウンロードしたプログラムを情報処理装置にインストールしてもよい。また、情報処理装置には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。[制御構造]次に、アプリケーションサーバ10、アプリケーションサーバ50およびサーバ60における各種機能を提供するための制御構造について説明する。図1は、本発明の実施の形態に係る障害解析支援システムが提供する制御構造も示している。図1に示す障害解析支援システムの各ブロックは、ハードディスク103に格納されたプログラムコードなどをメインメモリ102に展開して、CPU101に実行させることで提供される。なお、図1に示すモジュールの一部もしくは全部がハードウェアに実装されているファームウェアによって提供される場合もある。あるいは、図1に示す制御構造の一部もしくは全部を専用ハードウェアおよび/または配線回路によって実現してもよい。図1を参照して、アプリケーションサーバ10は、その制御構造として、リクエスト監視部21と、システム監視部22と、API呼び出し監視部23と、例外監視部24とを備える。また、アプリケーションサーバ10は、情報保持テーブル監視情報記憶部30を備える。アプリケーションサーバ50は、その制御構造として、障害再現部80を備える。サーバ60は、その制御構造として、リクエスト状況再現スクリプト生成部61と、障害アプリケーション実行スクリプト生成部62と、システム状況再現スクリプト生成部63とを備える。また、テスト系システム301は、ログファイル43と、手順スクリプトファイル70とを備える。なお、アプリケーションサーバ50およびサーバ60は、装置として別個であってもよいし、1つの装置であってもよい。運用系システム201において、システム監視部22は、運用系システムの負荷状況を監視する。リクエスト監視部21は、1または複数のWebブラウザからのリクエストを監視する。API呼び出し監視部23は、リクエストによって呼び出されるWebアプリケーション71のAPIApplicationProgramInterfaceを監視する。情報保持テーブル30は、システム監視部22、リクエスト監視部21およびAPI呼び出し監視部23の監視結果を記憶する。例外監視部24は、リクエストの処理が行われている際にWebアプリケーション71で例外が発生するか否かを監視し、例外が発生した場合には、例外の内容を示す例外情報を生成し、生成した例外情報、および情報保持テーブル30によって記憶された各監視結果をログファイルとして出力する。テスト系システム301において、スクリプト生成部60は、例外監視部24から受けたログファイルに基づいてスクリプトを生成する。障害再現部80は、スクリプト生成部60によって生成されたスクリプトを実行することにより、例外の発生を再現する。より詳細には、リクエスト監視部21は、アプリケーションサーバ10において処理されるリクエストを監視し、一定時間分の監視結果を情報保持テーブル30に記録し続ける。システム監視部22は、アプリケーションサーバ10のCPU使用率およびメモリ使用量を監視し、一定時間分の監視結果を情報保持テーブル30に記録し続ける。API呼び出し監視部23は、アプリケーションサーバ10において処理されるリクエストが呼び出すAPIの種類を監視し、一定時間分の監視結果を情報保持テーブル30に記録し続ける。例外監視部24は、上記リクエストの処理においてアプリケーション71で例外が発生したかどうかを監視する。例外監視部24は、アプリケーション71で例外が発生すると、発生した例外の内容を示す例外情報と、リクエスト監視部21、システム監視部22およびAPI呼び出し監視部23が情報保持テーブル30に記録した情報とをログファイル41に出力する。また、システム監視部22、リクエスト監視部21およびAPI呼び出し監視部23は、運用系システム201のプラグインとして実現される。より詳細には、リクエスト監視部21、システム監視部22、API呼び出し監視部23および例外監視部24は、運用系システム201におけるアプリケーションサーバ10のプラグインとして実装されることで、アプリケーションサーバ10の起動時に自動的に起動される。ログファイル41の採取情報は、USBメモリなどの電子記録媒体、およびファイル転送等を通じてテスト系システム301に送られ、ログファイル43に取り込まれる。テスト系システム301において、リクエスト状況再現スクリプト生成部61、障害アプリケーション実行スクリプト生成部62およびシステム状況再現スクリプト生成部63は、運用系システム201によって収集されたログファイル43を読み込み、障害発生時の状況を再現するためのスクリプトをそれぞれ生成し、手順スクリプトファイル70へ出力する。より詳細には、リクエスト状況再現スクリプト生成部61は、リクエスト監視部21の監視結果およびAPI呼び出し監視部23の監視結果に基づいて、例外が発生した当時におけるリクエストの状況を再現するためのスクリプトを生成する。障害アプリケーション実行スクリプト生成部62は、リクエスト監視部21の監視結果、API呼び出し監視部23の監視結果および例外情報に基づいて、例外が発生した当時におけるWebアプリケーション71の実行状況を再現するためのスクリプトを生成する。システム状況再現スクリプト生成部63は、システム監視部22の監視結果に基づいて、例外が発生した当時における運用系システムの負荷状況を再現するためのスクリプトを生成する。障害再現部80は、手順スクリプトファイル70を読み込み、実行することにより、障害発生時の状況を再現する。[動作]次に、本発明の実施の形態に係る運用系システム201およびテスト系システム301の動作について図面を用いて説明する。本発明の実施の形態では、運用系システム201およびテスト系システム301を動作させることによって、本発明の実施の形態に係る障害解析支援方法が実施される。よって、本発明の実施の形態に係る障害解析支援方法の説明は、以下の運用系システム201およびテスト系システム301の動作説明に代える。なお、以下の説明においては、適宜図1を参照する。図3は、本発明の実施の形態に係る運用系システムがシステム監視処理を行なう際の動作手順を示すフローチャートである。図3を参照して、まず、アプリケーションサーバ10を起動すると、システム監視部22は、アプリケーションサーバ10によって起動され、システム情報の記録を開始するステップA1。システム監視部22は、起動と同時にシステム情報を情報保持テーブル30へ記録する。記録する情報は、CPU使用率およびメモリ使用状況であるステップA2。ここで、システム監視部22は、システム情報の監視を一定間隔、たとえば5分間隔で定期的に行い、システム情報を記録した後、スリープ待ち状態に入るステップA2~A4。次に、システム監視部22は、システム情報を記録した後、スリープに入る前にアプリケーションサーバ10から監視終了の指示を受けた場合には、スリープせずに処理を終了するステップA3でYES。あるいは、システム監視部22は、スリープ中でも、アプリケーションサーバ10から監視終了の指示を受けた場合にはステップA5でYES、スリープを解除して処理を終了する。一方、システム監視部22は、規定のスリープ時間が経過して復帰した時、アプリケーションサーバ10から監視終了の指示を受けていない場合にはステップA5でNO、再びシステム情報の記録を行なうステップA2。図4は、本発明の実施の形態に係る運用系システムがリクエスト監視処理およびAPI呼び出し処理を行なう際の動作手順を示すフローチャートである。図4を参照して、まず、アプリケーションサーバ10を起動すると、リクエスト監視部21は、アプリケーションサーバ10によって起動され、リクエスト情報の記録を開始するステップB1およびB2。次に、アプリケーションサーバ10がリクエストを受信するとステップB3でYES、リクエスト監視部21は、当該リクエストの情報を情報保持テーブル30に記録するステップB4。記録する情報は、リクエストURL、URLパラメータ、HTTPリクエストヘッダおよびHTTPリクエストボディである。次に、リクエスト監視部21がリクエスト情報を記録した後、アプリケーションサーバ10が受信したリクエストは実行状態に遷移する。リクエストが実行状態に遷移すると、アプリケーションサーバ10は、API呼び出し監視部23を起動する。起動したAPI呼び出し監視部23は、API呼び出しの監視を開始するステップB5。次に、API呼び出し監視部23は、リクエストの実行を監視し、APIが呼び出されるとステップB6でYES、当該APIの情報を情報保持テーブル30に記録するステップB7。記録する情報は、APIの名称、引数、および呼び出しAPIが属するクラスである。次に、API呼び出し監視部23は、API情報を情報保持テーブル30に記録した後、リクエスト処理が終了している場合にはステップB8でYES、処理を終了するステップB9。一方、API呼び出し監視部23は、リクエスト処理が終了していない場合にはステップB8でNO、再びAPIの呼び出しの監視を行なうステップB5。次に、リクエスト監視部21は、リクエスト処理が終了すると、レスポンス情報を情報保持テーブル30に記録するステップB10。記録する情報は、HTTPレスポンスステータス、HTTPレスポンスヘッダおよびHTTPレスポンスボディである。次に、リクエスト監視部21は、レスポンス情報を情報保持テーブル30に記録した後、アプリケーションサーバ10から監視終了の指示を受けている場合にはステップB11でYES、処理を終了するステップB12。一方、リクエスト監視部21は、アプリケーションサーバ10から監視終了の指示を受けていない場合にはステップB11でNO、再びリクエスト情報の記録を行なうステップB2。図5は、本発明の実施の形態に係る運用系システムが例外監視処理を行なう際の動作手順を示すフローチャートである。図5を参照して、まず、アプリケーションサーバ10を起動すると、例外監視部24は、アプリケーションサーバ10によって処理され、例外発生の監視を開始するステップC1。次に、例外監視部24は、起動すると例外が発生するまでスリープ待ち状態に入り、例外が発生するまで待機する。例外監視部24は、例外が発生すると、起動して例外情報を採取するステップC2~C4。採取する情報は、例外メッセージ、スタックトレースおよび例外発生時刻である。次に、例外監視部24は、採取した例外情報と、リクエスト監視部21、システム監視部22およびAPI呼び出し監視部23が情報保持テーブル30に記録した情報とをログファイル41に書き出すステップC5。ここで、ログファイル41は、USBメモリなどの電子記録媒体、またはファイル転送を通じてテスト系システム301に送られ、ログファイル43として用意される。次に、例外監視部24は、例外情報をログファイル41に書き出した後、アプリケーションサーバ10から監視終了の指示を受けた場合にはステップC6でYES、処理を終了する。一方、例外監視部24は、監視終了の指示を受けていない場合にはステップC6でNO、再びスリープに入るステップC2。また、例外監視部24は、スリープ中でもアプリケーションサーバ10から監視終了の指示を受けた場合にはステップC3でYES、スリープを解除して処理を終了する。図6は、本発明の実施の形態に係るテスト系システムが障害再現処理を行なう際の動作手順を示すフローチャートである。図6を参照して、まず、スクリプト生成部60は、ログファイル43を読み込み、ログファイル43から障害再現に有用な情報のみを抽出するステップD1。より詳細には、スクリプト生成部60において、リクエスト状況再現スクリプト生成部61が抽出する情報は、リクエスト情報およびAPI呼び出し情報であるデータD2およびD3。リクエスト状況再現スクリプト生成部61は、リクエスト情報に記録されたリクエストの数、およびリクエストを受信した時刻に基づいて、同時リクエスト数も考慮して、障害発生当時の状況を再現するスクリプトを生成する。また、障害アプリケーション実行スクリプト生成部62が抽出する情報は、リクエスト情報、API呼び出し情報、および例外情報であるデータD2、D3およびD4。障害アプリケーション実行スクリプト生成部62は、例外情報に記載されていないリクエスト受信時の初期の情報として、リクエスト情報およびAPI情報をマージすることにより実行スクリプトを生成する。また、システム状況再現スクリプト生成部63が抽出する情報は、システム情報であるデータD5。システム状況再現スクリプト生成部63は、システム情報に数値として記録されたCPU使用率およびメモリ使用量を忠実に再現し続けるため、データを元に負荷を調整するスクリプトを出力する。次に、リクエスト状況再現スクリプト生成部61、障害アプリケーション実行スクリプト生成部62およびシステム状況再現スクリプト生成部63は、抽出したそれぞれの情報に基づいて、固定キーワードで構成されるスクリプトを書き出すことにより、手順スクリプトファイル70を生成するステップD6~D8。次に、手順スクリプトファイル70が、障害再現部80によって読み込まれるステップD9。次に、障害再現部80は、手順スクリプトファイル70から、まずシステム状況再現スクリプトを取得し、アプリケーションサーバ10において障害が発生した当時の運用系システム201の状況を再現する。続いて、障害再現部80は、手順スクリプトファイル70からリクエスト状況再現スクリプトを取得し、アプリケーションサーバ10において障害が発生した当時のリクエストの状況を再現する。さらに、障害再現部80は、手順スクリプトファイル70から障害アプリケーション実行スクリプトを取得し、問題の障害が発生したリクエストを再現するステップD10。次に、障害解析支援システム401による各種ログの取得および障害の再現の具体例を説明する。図7~図11は、本発明の実施の形態に係る障害解析支援システムにおけるアプリケーションサーバ上のデータをログファイルに記録した具体例を示す図である。図12~図14は、本発明の実施の形態に係るテスト系システムにおけるログファイルから生成した手順スクリプトファイルの具体例を示す図である。アプリケーションサーバ10は、起動するとまもなくリクエストを受け付ける準備が整う。アプリケーションサーバ10が起動すると同時に、システム監視部22がシステム情報の記録を開始し、図10に示すようなCPU使用率およびメモリ使用量を記録する。次に、アプリケーションサーバ10がリクエストを受信すると、リクエスト監視部21が記録を開始する。一つのリクエストにつき、リクエストURL、URLパラメータ、HTTPリクエストヘッダおよびHTTPリクエストボディが図7に示すように記録される。次に、リクエストの実行が始まると、API呼び出し監視部23が記録を開始し、呼び出されたAPIの名称および引数を、図8に示すように記録する。このAPI呼び出し記録は、リクエストの記録と結びついており、図8の先頭行において、どのリクエストのAPI呼び出しなのかが記録される。次に、リクエストの実行が終わると、リクエスト監視部21は、リクエストの実行結果、すなわちレスポンス情報を図9に示すように記録する。そして、新しいリクエストを受信するたびに、図7、図8および図9に示すような情報が情報保持テーブル30に記録される。情報保持テーブル30の容量には限りがあるため、情報保持テーブル30に記録されるのは、一定期間、たとえば30分の情報となる。この一定期間が経過すると、古い情報から順次破棄されることになる。アプリケーションサーバ10は、複数のリクエストを同時に受信することが想定される。この場合、リクエスト監視部21は、当該一定期間の範囲内ですべてのリクエストを記録する。このようにシステムの情報およびリクエストの情報を記録し続けている状態において、あるリクエストで例外が発生すると、例外監視部24は、図11に示すような例外情報を採取する。例外監視部24は、採取した例外情報図11を、情報保持テーブル30に記録されたシステム情報図10、リクエスト情報図7、API情報図8およびレスポンス情報図9とともにログファイル41に書き出す。この書き出された情報は、例外発生時から遡ってたとえば30分保持されており、例外が発生した当時のアプリケーションサーバ10の状況を示すものとなる。テスト系システム301においては、現象再現に必要な手順スクリプトファイル70の生成を行なう。すなわち、スクリプト生成部60は、図7~図11に示す情報の記録されたログファイル43から有効な情報のみを抽出し、障害再現に必要なスクリプトを手順スクリプトファイル70に書き出す。次に、リクエスト状況再現スクリプト生成部61は、リクエスト情報図7およびAPI情報図8に記録された、リクエストの数およびリクエストを受信した時刻から、同時リクエスト数も考慮した当時の状況を再現するリクエスト再現スクリプト図12を出力する。次に、障害アプリケーション実行スクリプト生成部62は、リクエスト情報図7、API情報図8および例外情報図11から、障害が発生したリクエストが、いつ発生し、どのようなAPIを呼び出して例外が発生したかを再現する障害アプリケーション実行スクリプト図13を出力する。次に、システム状況再現スクリプト生成部63は、システム情報図10に数値として記録されたCPU使用率およびメモリ使用量を忠実に再現し続けるため、データを元に負荷を調整するシステム状況再現スクリプト図14を出力する。次に、障害再現部80は、生成された手順スクリプトファイル70を読み込んで実行することにより、アプリケーションサーバ10において例外が発生した当時のシステムの状況、およびリクエストの状況を再現しつつ、アプリケーションサーバ10において例外が発生したタイミングと同じタイミングで例外の発生するリクエストを再現する。以上のように、本発明の実施の形態に係る障害解析支援システムでは、システム監視部22は、運用系システムの負荷状況を監視する。リクエスト監視部21は、1または複数のWebブラウザからのリクエストを監視する。API呼び出し監視部23は、リクエストによって呼び出されるAPIを監視する。情報保持テーブル30は、システム監視部22、リクエスト監視部21およびAPI呼び出し監視部23の監視結果を記憶する。例外監視部24は、リクエストの処理が行われている際にWebアプリケーション71で例外が発生するか否かを監視し、例外が発生した場合には、例外の内容を示す例外情報を生成し、生成した例外情報、および情報保持テーブル30によって記憶された各監視結果をログファイルとして出力する。スクリプト生成部60は、例外監視部24から受けたログファイルに基づいてスクリプトを生成する。そして、障害再現部80は、スクリプト生成部60によって生成されたスクリプトに基づいて例外の発生を再現する。ここで、特許文献1~3に記載の技術と本発明の実施の形態に係る障害解析支援システムとの具体的な相違としては、たとえば、以下のような点がある。すなわち、特許文献1~3に記載の技術は、運用系システムにおける障害発生時の情報を収集し、テスト系システムで当該障害を再現する構成ではない。特に、特許文献2に記載の技術は、テスト系システムでの運用を想定している。これに対して、本発明の実施の形態に係る障害解析支援システムでは、テスト系システムで障害を再現するために最適化した情報を収集することが可能である。また、特許文献3に記載の技術は、リクエスト等のトランザクション情報を収集する構成ではなく、また、プロセスの異常を想定しており、本発明の実施の形態に係る障害解析支援システムが想定するWebアプリケーションの異常とは対象とするレベルがまったく異なる。以上のように、特許文献1~3に記載の技術と本発明の実施の形態に係る障害解析支援システムとは、種々の点で相違がある。すなわち、運用系システム上で動作するWebアプリケーションに障害が発生した場合において、障害の解析を支援するために、アプリケーションサーバ10内部の動作を監視する。これにより、リクエストの状況、APIの呼び出しおよびシステムの負荷状況を収集し、収集した情報を元にテスト系システムで障害の再現を行なう。たとえば、CPU使用率およびメモリ使用量を定期的に採取する。これにより、障害発生に至るまでに運用系システム201がどのような負荷状態であったかを再現することができる。また、たとえば、すべてのリクエストURLを採取し、そして、リクエストの延長で発生するAPI呼び出し状況も採取する。これにより、障害発生前および障害発生時にどのようなリクエストがどれくらいの数行われていたかを正確に再現することができる。また、たとえば、複数のWebアプリケーションが動作するWebシステムの負荷状況、およびリクエストの状況を一定期間分、採取し、更新し続ける。これにより、複数のWebアプリケーションが動作するWebシステムにおいて、いつ障害が発生しても当該障害を再現するための情報を得ることができる。そして、採取した複数の情報をマージしてスクリプトを生成し、生成したスクリプトを実行する。このように、再利用しやすいスクリプトを用いる構成により、他のテスト系システムでの障害解析作業が容易となり、また、当該スクリプトの微修正を行なうことで、障害の再現内容の変更を容易に行なうことができる。すなわち、本発明の実施の形態に係る障害解析支援システムでは、運用系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエスト状況を記録できる。また、テスト系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエスト状況を再現できる。また、運用系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエストの詳しい動作を記録できる。また、テスト系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエストの詳しい動作を再現できる。また、運用系システムにおいて、障害が発生した時アプリケーションサーバがどのような負荷状況で動作していたかを記録できる。また、テスト系システムにおいて、障害が発生した時アプリケーションサーバがどのような負荷状況で動作していたかを再現できる。したがって、障害が発生するまでの状況を正確に再現することができ、運用系システムにおいて発生した障害と同じ障害をテスト系システムにおいて再現することができる。すなわち、本発明の実施の形態に係る障害解析支援システムにおける各構成要素のうち、リクエスト監視部21と、システム監視部22と、API呼び出し監視部23と、例外監視部24と、スクリプト生成部60と、障害再現部80と、情報保持テーブル30とからなる最小構成により、Webシステムにおいて障害解析を適切に行なう、という本発明の目的を達成することが可能となる。また、本発明の実施の形態に係る障害解析支援システムでは、システム監視部22、リクエスト監視部21およびAPI呼び出し監視部23は、運用系システムのプラグインとして実現される。すなわち、運用系システム上で動作するWebアプリケーションに障害が発生した場合において当該障害の解析を支援するために、アプリケーションサーバ10のプラグインとして動作するユニットを設け、アプリケーションサーバ10内部の動作を直接監視する。このような構成により、たとえば運用系システムのプラグインとして客先で情報収集を行なうことが可能となる。また、本発明の実施の形態に係る障害解析支援システムでは、リクエスト状況再現スクリプト生成部61は、リクエスト監視部21の監視結果およびAPI呼び出し監視部23の監視結果に基づいて、例外が発生した当時におけるリクエストの状況を再現するためのスクリプトを生成する。障害アプリケーション実行スクリプト生成部62は、リクエスト監視部21の監視結果、API呼び出し監視部23の監視結果および例外情報に基づいて、例外が発生した当時におけるWebアプリケーション71の実行状況を再現するためのスクリプトを生成する。そして、システム状況再現スクリプト生成部63は、システム監視部22の監視結果に基づいて、例外が発生した当時における運用系システムの負荷状況を再現するためのスクリプトを生成する。このように、運用系システムにおける障害発生時の情報から適切な情報を選択してスクリプトを生成する構成により、テスト系システムで当該障害を適切に再現することができる。図15は、本発明の実施の形態に係る障害解析支援システムの変形例の構成を示す図である。図15を参照して、障害解析支援システム402は、運用系システム202と、テスト系システム301とを備える。アプリケーションサーバ10は、その制御構造として、運用系システム201と比べて、さらに、ユーザコード解析部25を備える。ユーザコード解析部25は、例外発生時のユーザプログラムのコードを解析する。より詳細には、ユーザコード解析部25は、Webアプリケーション71のコードを解析し、リクエストによって実行されるAPI以外の処理を監視する。情報保持テーブル30は、さらに、ユーザコード解析部25の監視結果を記憶する。運用系システム201では、リクエストの内容、APIの呼び出し内容、およびこれらが実行された時間しか記録されていない。このため、ユーザアプリケーションのコードにより引き起こされる障害を再現することができない。これに対して、障害解析支援システム402では、運用系システム202において、ユーザコード解析部25によって例外発生時にユーザアプリケーションのコードを解析し、当該コードのロジックまで記録する。そして、テスト系システム301における障害アプリケーション実行スクリプト生成部62でスクリプトを生成し、障害再現部80で再現する。このような構成により、ユーザアプリケーションのコードに依存して発生するような障害も再現することが可能となる。上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。上記実施の形態の一部または全部は以下の付記のようにも記載されうるが、本発明の範囲は、以下の付記に限定されるものではない。[付記1]Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援システムであって、前記運用系システムの負荷状況を監視するためのシステム監視部と、1または複数のWebブラウザからのリクエストを監視するためのリクエスト監視部と、前記リクエストによって呼び出されるAPIApplicationProgramInterfaceを監視するためのAPI呼び出し監視部と、前記システム監視部、前記リクエスト監視部および前記API呼び出し監視部の監視結果を記憶するための監視情報記憶部と、前記リクエストの処理が行われている際に前記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および前記監視情報記憶部によって記憶された各前記監視結果をログファイルとして出力するための例外監視部と、前記例外監視部から受けた前記ログファイルに基づいてスクリプトを生成するためのスクリプト生成部と、前記スクリプト生成部によって生成された前記スクリプトに基づいて前記例外の発生を再現するための障害再現部とを備える、障害解析支援システム。[付記2]前記システム監視部、前記リクエスト監視部および前記API呼び出し監視部は、前記運用系システムのプラグインとして実現される、付記1に記載の障害解析支援システム。[付記3]前記スクリプト生成部は、前記リクエスト監視部の監視結果および前記API呼び出し監視部の監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するためのリクエスト状況再現スクリプト生成部と、前記リクエスト監視部の監視結果、前記API呼び出し監視部の監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるWebアプリケーションの実行状況を再現するためのスクリプトを生成するための障害アプリケーション実行スクリプト生成部と、前記システム監視部の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するためのシステム状況再現スクリプト生成部とを含む、付記1または2に記載の障害解析支援システム。[付記4]前記障害解析支援システムは、さらに、前記Webアプリケーションのコードを解析し、前記リクエストによって実行されるAPI以外の処理を監視するためのユーザコード解析部を備え、前記監視情報記憶部は、さらに、前記ユーザコード解析部の監視結果を記憶する、付記1から3のいずれかに記載の障害解析支援システム。[付記5]Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援方法であって、前記運用系システムの負荷状況を監視するステップと、1または複数のWebブラウザからのリクエストを監視するステップと、前記リクエストによって呼び出されるAPIを監視するステップと、前記負荷状況、前記リクエストおよび前記APIの監視結果を記憶するステップと、前記リクエストの処理が行われている際に前記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、前記ログファイルに基づいてスクリプトを生成するステップと、生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを含む、障害解析支援方法。[付記6]前記負荷状況の監視、前記リクエストの監視、および前記APIの監視は、前記運用系システムのプラグインを用いて行なう、付記5に記載の障害解析支援方法。[付記7]前記スクリプトを生成するステップは、前記リクエストの監視結果および前記APIの監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するステップと、前記リクエストの監視結果、前記APIの監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるWebアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、前記負荷状況の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む、付記5または6に記載の障害解析支援方法。[付記8]前記障害解析支援方法は、さらに、前記Webアプリケーションのコードを解析し、前記リクエストによって実行されるAPI以外の処理を監視するステップを含み、前記監視結果を記憶するステップにおいては、さらに、前記API以外の処理の監視結果を記憶する、付記5から7のいずれかに記載の障害解析支援方法。[付記9]Webアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援プログラムであって、コンピュータに、前記運用系システムの負荷状況を監視するステップと、1または複数のWebブラウザからのリクエストを監視するステップと、前記リクエストによって呼び出されるAPIを監視するステップと、前記負荷状況、前記リクエストおよび前記APIの監視結果を記憶するステップと、前記リクエストの処理が行われている際に前記Webアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、前記ログファイルに基づいてスクリプトを生成するステップと、生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを実行させるための、障害解析支援プログラム。[付記10]前記負荷状況を監視するステップ、前記リクエストを監視するステップ、および前記APIを監視するステップは、前記運用系システムのプラグインを用いて実行される、付記9に記載の障害解析支援プログラム。[付記11]前記スクリプトを生成するステップは、前記リクエストの監視結果および前記APIの監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するステップと、前記リクエストの監視結果、前記APIの監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるWebアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、前記負荷状況の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む、付記9または10に記載の障害解析支援プログラム。[付記12]前記障害解析支援プログラムは、さらに、前記Webアプリケーションのコードを解析し、前記リクエストによって実行されるAPI以外の処理を監視するステップを含み、前記監視結果を記憶するステップにおいては、さらに、前記API以外の処理の監視結果を記憶する、付記9から11のいずれかに記載の障害解析支援プログラム。