(57)【特許請求の範囲】
【請求項１】
Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援システムであって、
前記運用系システムの負荷状況を監視するためのシステム監視部と、
１または複数のＷｅｂブラウザからのリクエストを監視するためのリクエスト監視部と、
前記リクエストによって呼び出されるＡＰＩ（Application Program Interface）を監視するためのＡＰＩ呼び出し監視部と、
前記システム監視部、前記リクエスト監視部および前記ＡＰＩ呼び出し監視部の監視結果を記憶するための監視情報記憶部と、
前記リクエストの処理が行われている際に前記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および前記監視情報記憶部によって記憶された各前記監視結果をログファイルとして出力するための例外監視部と、
前記例外監視部から受けた前記ログファイルに基づいてスクリプトを生成するためのスクリプト生成部と、
前記スクリプト生成部によって生成された前記スクリプトに基づいて前記例外の発生を再現するための障害再現部とを備え、
前記スクリプト生成部は、
前記リクエスト監視部の監視結果および前記ＡＰＩ呼び出し監視部の監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するためのリクエスト状況再現スクリプト生成部と、
前記リクエスト監視部の監視結果、前記ＡＰＩ呼び出し監視部の監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するための障害アプリケーション実行スクリプト生成部と、
前記システム監視部の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するためのシステム状況再現スクリプト生成部とを含む、障害解析支援システム。
【請求項２】
前記システム監視部、前記リクエスト監視部および前記ＡＰＩ呼び出し監視部は、前記運用系システムのプラグインとして実現される、請求項１に記載の障害解析支援システム。
【請求項３】
前記障害解析支援システムは、さらに、
前記Ｗｅｂアプリケーションのコードを解析し、前記リクエストによって実行されるＡＰＩ以外の処理を監視するためのユーザコード解析部を備え、
前記監視情報記憶部は、さらに、前記ユーザコード解析部の監視結果を記憶する、請求項１または２に記載の障害解析支援システム。
【請求項４】
Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援方法であって、
前記運用系システムの負荷状況を監視するステップと、
１または複数のＷｅｂブラウザからのリクエストを監視するステップと、
前記リクエストによって呼び出されるＡＰＩを監視するステップと、
前記負荷状況、前記リクエストおよび前記ＡＰＩの監視結果を記憶するステップと、
前記リクエストの処理が行われている際に前記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、
前記ログファイルに基づいてスクリプトを生成するステップと、
生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを含み、
前記スクリプトを生成するステップは、
前記リクエストの監視結果および前記ＡＰＩの監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するステップと、
前記リクエストの監視結果、前記ＡＰＩの監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、
前記負荷状況の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む、障害解析支援方法。
【請求項５】
Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援プログラムであって、コンピュータに、
前記運用系システムの負荷状況を監視するステップと、
１または複数のＷｅｂブラウザからのリクエストを監視するステップと、
前記リクエストによって呼び出されるＡＰＩを監視するステップと、
前記負荷状況、前記リクエストおよび前記ＡＰＩの監視結果を記憶するステップと、
前記リクエストの処理が行われている際に前記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、
前記ログファイルに基づいてスクリプトを生成するステップと、
生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを実行させるためのプログラムであり、
前記スクリプトを生成するステップは、
前記リクエストの監視結果および前記ＡＰＩの監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するステップと、
前記リクエストの監視結果、前記ＡＰＩの監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、
前記負荷状況の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む、障害解析支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害解析支援システム、障害解析支援方法、および障害解析支援プログラムに関し、特に、Ｗｅｂシステムにおける障害解析支援システム、障害解析支援方法、および障害解析支援プログラムに関する。
【背景技術】
【０００２】
コンピュータシステムにおいて障害解析を行なう技術の一例として、たとえば、特許文献１（特開２００９−２３７７４９号公報）には、以下のような技術が開示されている。すなわち、障害情報収集機能は、アプリケーション実行情報管理機能によってＷｅｂ業務アプリケーションの実行情報を登録し、また、例外情報管理機能により、障害解析に必要な例外情報を例外情報ナレッジから取得する。アプリケーション障害データ収集機能が、例外情報管理機能により取得された例外情報に基づき、Ｗｅｂ業務アプリケーションのアプリケーション構成ファイルからアプリケーション構成情報を生成するとともに、登録されたＷｅｂ業務アプリケーションの実行情報を収集して、Ｗｅｂ業務アプリケーションの障害発生時に、障害原因の解析に必要な障害情報を自動的に収集する。
【０００３】
また、特許文献２（特開２００９−３０１２５２号公報）には、以下のような技術が開示されている。すなわち、基本情報記録手段によりＷｅｂアプリケーションの情報を取得し、内部状態再現情報生成部においてリクエスト、レスポンスおよび操作データからＷｅｂアプリケーションの内部状態再現手順を生成する。内部状態再現部により、上記再現手順に従いＷｅｂアプリケーションへアクセスし、テスト実施部によりテストルールデータベースに基づきＷｅｂアプリケーションのテストを実施しテスト結果を得る。テスト影響判定部にて上記テスト結果の影響を受けたＷｅｂアプリケーションの有無を判定し、テストの継続を実現するために内部状態再現部にてテストの影響をテスト実施前の状態に再現する。
【０００４】
また、特許文献３（特開平９−３２５９０３号公報）には、以下のような技術が開示されている。すなわち、主記憶装置と入出力装置を有する計算機システムの障害解析に必要な障害情報を記録する障害記録方式において、上記入出力装置の動作状態を表す入出力情報の収集手段、上記計算機システムの動作経緯を表す時系列情報の収集手段、上記計算機システムの負荷を表すシステム負荷の収集手段、上記計算機システム上で発生した異常な事象を報告するシステム異常監視手段、上記計算機システム上で実行される業務処理の状態を表すアプリケーションプログラム状態情報の収集手段、利用者が定義した障害情報を収集するユーザ定義情報収集手段、あらかじめ収集する情報の種類を登録しておく収集情報登録手段と、上記収集情報登録手段の登録内容に応じて上記各種の情報収集手段および異常監視手段の情報を収集し、上記主記憶装置上の記録領域に記録する障害情報記録手段とを備える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２３７７４９号公報
【特許文献２】特開２００９−３０１２５２号公報
【特許文献３】特開平９−３２５９０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の障害解析の技術では、障害発生時にＷｅｂシステムがどのような負荷状況で動作していたか、たとえばどのようなＣＰＵ（Central Processing Unit）使用率、メモリ使用量および同時リクエスト数で動作していたかが不明である。このため、再現試験および解析作業に多大な工数および期間が必要であった。
【０００７】
あるいは、従来の障害解析の技術では、単一のアプリケーションに関する情報しか採取できない。また、アプリケーション実行に関する情報もリクエストＵＲＬのみを採取するなど、障害解析に必要な情報が十分でなかった。
【０００８】
この理由としては、従来の障害解析の技術は、あるＯＳ（Operating System）上のネイティブアプリケーションの障害解析に限定したものであること、問題の発生するアプリケーションを入手できることが前提であること、または、アプリケーション自身ではなく関連して動作する周りのコンポーネントに起因する障害しか想定していないこと、があげられる。
【０００９】
すなわち、従来の障害解析の技術では、複数のアプリケーションが動作し、いつ障害が発生するか分からないＷｅｂシステムの分野に適用することが困難である。また、従来の障害解析の技術では、メモリ、プロセスおよびスレッドを圧迫するような負荷が継続してかかった結果発生する障害、および複数のリクエストが同時に処理された場合に発生する障害を再現させることができないことから、障害解析が長期化する、という問題点があった。
【００１０】
この発明は、上述の課題を解決するためになされたもので、その目的は、Ｗｅｂシステムにおいて障害解析を適切に行なうことが可能な障害解析支援システム、障害解析支援方法、および障害解析支援プログラムを提供することである。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、この発明のある局面に係わる障害解析支援システムは、Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援システムであって、上記運用系システムの負荷状況を監視するためのシステム監視部と、１または複数のＷｅｂブラウザからのリクエストを監視するためのリクエスト監視部と、上記リクエストによって呼び出されるＡＰＩ（Application Program Interface）を監視するためのＡＰＩ呼び出し監視部と、上記システム監視部、上記リクエスト監視部および上記ＡＰＩ呼び出し監視部の監視結果を記憶するための監視情報記憶部と、上記リクエストの処理が行われている際に上記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、上記例外の内容を示す例外情報を生成し、生成した上記例外情報、および上記監視情報記憶部によって記憶された各上記監視結果をログファイルとして出力するための例外監視部と、上記例外監視部から受けた上記ログファイルに基づいてスクリプトを生成するためのスクリプト生成部と、上記スクリプト生成部によって生成された上記スクリプトに基づいて上記例外の発生を再現するための障害再現部とを備え、上記スクリプト生成部は、上記リクエスト監視部の監視結果および上記ＡＰＩ呼び出し監視部の監視結果に基づいて、上記例外が発生した当時における上記リクエストの状況を再現するためのスクリプトを生成するためのリクエスト状況再現スクリプト生成部と、上記リクエスト監視部の監視結果、上記ＡＰＩ呼び出し監視部の監視結果および上記例外情報に基づいて、上記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するための障害アプリケーション実行スクリプト生成部と、上記システム監視部の監視結果に基づいて、上記例外が発生した当時における上記運用系システムの負荷状況を再現するためのスクリプトを生成するためのシステム状況再現スクリプト生成部とを含む。
【００１２】
上記課題を解決するために、この発明のある局面に係わる障害解析支援方法は、Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援方法であって、上記運用系システムの負荷状況を監視するステップと、１または複数のＷｅｂブラウザからのリクエストを監視するステップと、上記リクエストによって呼び出されるＡＰＩを監視するステップと、上記負荷状況、上記リクエストおよび上記ＡＰＩの監視結果を記憶するステップと、上記リクエストの処理が行われている際に上記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、上記例外の内容を示す例外情報を生成し、生成した上記例外情報、および記憶した各上記監視結果をログファイルとして出力するステップと、上記ログファイルに基づいてスクリプトを生成するステップと、生成した上記スクリプトに基づいて上記例外の発生を再現するステップとを含み、上記スクリプトを生成するステップは、上記リクエストの監視結果および上記ＡＰＩの監視結果に基づいて、上記例外が発生した当時における上記リクエストの状況を再現するためのスクリプトを生成するステップと、上記リクエストの監視結果、上記ＡＰＩの監視結果および上記例外情報に基づいて、上記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、上記負荷状況の監視結果に基づいて、上記例外が発生した当時における上記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む。
【００１３】
上記課題を解決するために、この発明のある局面に係わる障害解析支援プログラムは、Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援プログラムであって、コンピュータに、上記運用系システムの負荷状況を監視するステップと、１または複数のＷｅｂブラウザからのリクエストを監視するステップと、上記リクエストによって呼び出されるＡＰＩを監視するステップと、上記負荷状況、上記リクエストおよび上記ＡＰＩの監視結果を記憶するステップと、上記リクエストの処理が行われている際に上記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、上記例外の内容を示す例外情報を生成し、生成した上記例外情報、および記憶した各上記監視結果をログファイルとして出力するステップと、上記ログファイルに基づいてスクリプトを生成するステップと、生成した上記スクリプトに基づいて上記例外の発生を再現するステップとを実行させるためのプログラムであり、上記スクリプトを生成するステップは、上記リクエストの監視結果および上記ＡＰＩの監視結果に基づいて、上記例外が発生した当時における上記リクエストの状況を再現するためのスクリプトを生成するステップと、上記リクエストの監視結果、上記ＡＰＩの監視結果および上記例外情報に基づいて、上記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、上記負荷状況の監視結果に基づいて、上記例外が発生した当時における上記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む。
【発明の効果】
【００１４】
本発明によれば、Ｗｅｂシステムにおいて障害解析を適切に行なうことができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態に係る障害解析支援システムの構成を示す図である。
【図２】本発明の実施の形態に係る情報処理装置の概略構成図である。
【図３】本発明の実施の形態に係る運用系システムがシステム監視処理を行なう際の動作手順を示すフローチャートである。
【図４】本発明の実施の形態に係る運用系システムがリクエスト監視処理およびＡＰＩ呼び出し処理を行なう際の動作手順を示すフローチャートである。
【図５】本発明の実施の形態に係る運用系システムが例外監視処理を行なう際の動作手順を示すフローチャートである。
【図６】本発明の実施の形態に係るテスト系システムが障害再現処理を行なう際の動作手順を示すフローチャートである。
【図７】本発明の実施の形態に係る障害解析支援システムにおけるアプリケーションサーバ上のデータをログファイルに記録した具体例を示す図である。
【図８】本発明の実施の形態に係る障害解析支援システムにおけるアプリケーションサーバ上のデータをログファイルに記録した具体例を示す図である。
【図９】本発明の実施の形態に係る障害解析支援システムにおけるアプリケーションサーバ上のデータをログファイルに記録した具体例を示す図である。
【図１０】本発明の実施の形態に係る障害解析支援システムにおけるアプリケーションサーバ上のデータをログファイルに記録した具体例を示す図である。
【図１１】本発明の実施の形態に係る障害解析支援システムにおけるアプリケーションサーバ上のデータをログファイルに記録した具体例を示す図である。
【図１２】本発明の実施の形態に係るテスト系システムにおけるログファイルから生成した手順スクリプトファイルの具体例を示す図である。
【図１３】本発明の実施の形態に係るテスト系システムにおけるログファイルから生成した手順スクリプトファイルの具体例を示す図である。
【図１４】本発明の実施の形態に係るテスト系システムにおけるログファイルから生成した手順スクリプトファイルの具体例を示す図である。
【図１５】本発明の実施の形態に係る障害解析支援システムの変形例の構成を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００１７】
［構成および基本動作］
図１は、本発明の実施の形態に係る障害解析支援システムの構成を示す図である。
【００１８】
図１を参照して、障害解析支援システム４０１は、運用系システム２０１と、テスト系システム３０１とを備える。運用系システム２０１は、アプリケーションサーバ１０を備える。テスト系システム３０１は、アプリケーションサーバ５０と、サーバ（スクリプト生成部）６０とを備える。なお、アプリケーションサーバ１０、アプリケーションサーバ５０およびサーバ６０は、装置として別個であってもよいし、１つの装置であってもよい。
【００１９】
運用系システム２０１では、複数のＷｅｂアプリケーション７１が動作する。運用系システム２０１における複数のＷｅｂブラウザは、たとえばアプリケーションサーバ１０とは別の情報処理装置に搭載され、アプリケーションサーバ１０を介してＷｅｂアプリケーション７１を実行することが可能である。
【００２０】
テスト系システム３０１は、運用系システム２０１において障害が発生した場合には、運用系システム２０１からログを取得し、取得したログに基づいて当該障害を解析する。
【００２１】
本発明の実施の形態に係る情報処理装置であるアプリケーションサーバ１０、アプリケーションサーバ５０およびサーバ６０は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、あらかじめインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスク（Flexible Disk）およびＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。このような汎用的なコンピュータを利用する場合には、本発明の実施の形態に係る機能を提供するためのアプリケーションに加えて、コンピュータの基本的な機能を提供するためのＯＳ（Operating System）がインストールされていてもよい。この場合には、本発明の実施の形態に係るプログラムは、ＯＳの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の順序および／またはタイミングで呼び出して処理を実行するものであってもよい。すなわち、本発明の実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、ＯＳと協働して処理が実行される場合もある。したがって、本発明の実施の形態に係るプログラムとしては、上記のようなモジュールを含まない形態であってもよい。
【００２２】
さらに、本発明の実施の形態に係るプログラムは、ＯＳ等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【００２３】
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００２４】
図２は、本発明の実施の形態に係る情報処理装置の概略構成図である。
【００２５】
図２を参照して、情報処理装置は、携帯情報端末、パーソナルコンピュータおよびサーバ等の情報処理装置であり、演算処理部であるＣＰＵ（Central Processing Unit）１０１と、メインメモリ１０２およびハードディスク１０３と、入力インタフェース１０４と、表示コントローラ１０５と、データリーダ／ライタ１０６と、通信インタフェース１０７とを備える。これらの各部は、バス１２１を介して互いにデータ通信可能に接続される。
【００２６】
ＣＰＵ１０１は、ハードディスク１０３に格納されたプログラム（コード）をメインメモリ１０２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１０２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１０３から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ハードディスク１０３は不揮発性の磁気記憶装置であり、ＣＰＵ１０１で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク１０３にインストールされるプログラムは、後述するように、記録媒体１１１に格納された状態で流通する。なお、ハードディスク１０３に加えて、あるいはハードディスク１０３に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００２７】
入力インタフェース１０４は、ＣＰＵ１０１とキーボード１０８、マウス１０９および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インタフェース１０４は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受け付ける。
【００２８】
表示コントローラ１０５は、表示部の典型例であるディスプレイ１１０と接続され、ディスプレイ１１０での表示を制御する。すなわち、表示コントローラ１０５は、ＣＰＵ１０１による画像処理の結果などをユーザに対して表示する。ディスプレイ１１０は、たとえばＬＣＤ（Liquid Crystal Display）またはＣＲＴ（Cathode Ray Tube）である。
【００２９】
データリーダ／ライタ１０６は、ＣＰＵ１０１と記録媒体１１１の間のデータ伝送を仲介する。すなわち、記録媒体１１１は、情報処理装置で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１０６は、この記録媒体１１１からプログラムを読み出す。また、データリーダ／ライタ１０６は、ＣＰＵ１０１の内部指令に応答して、情報処理装置における処理結果などを記録媒体１１１へ書き込む。なお、記録媒体１１１は、たとえば、ＣＦ（Compact Flash）およびＳＤ（Secure Digital）などの汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体、またはＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体である。
【００３０】
通信インタフェース１０７は、ＣＰＵ１０１とパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インタフェース１０７は、典型的には、イーサネット（登録商標）またはＵＳＢ（Universal Serial Bus）の通信機能を有する。なお、記録媒体１１１に格納されたプログラムを情報処理装置にインストールする形態に代えて、通信インタフェース１０７を介して配信サーバなどからダウンロードしたプログラムを情報処理装置にインストールしてもよい。
【００３１】
また、情報処理装置には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００３２】
［制御構造］
次に、アプリケーションサーバ１０、アプリケーションサーバ５０およびサーバ６０における各種機能を提供するための制御構造について説明する。
【００３３】
図１は、本発明の実施の形態に係る障害解析支援システムが提供する制御構造も示している。図１に示す障害解析支援システムの各ブロックは、ハードディスク１０３に格納されたプログラム（コード）などをメインメモリ１０２に展開して、ＣＰＵ１０１に実行させることで提供される。なお、図１に示すモジュールの一部もしくは全部がハードウェアに実装されているファームウェアによって提供される場合もある。あるいは、図１に示す制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現してもよい。
【００３４】
図１を参照して、アプリケーションサーバ１０は、その制御構造として、リクエスト監視部２１と、システム監視部２２と、ＡＰＩ呼び出し監視部２３と、例外監視部２４とを備える。また、アプリケーションサーバ１０は、情報保持テーブル（監視情報記憶部）３０を備える。アプリケーションサーバ５０は、その制御構造として、障害再現部８０を備える。サーバ６０は、その制御構造として、リクエスト状況再現スクリプト生成部６１と、障害アプリケーション実行スクリプト生成部６２と、システム状況再現スクリプト生成部６３とを備える。また、テスト系システム３０１は、ログファイル４３と、手順スクリプトファイル７０とを備える。なお、アプリケーションサーバ５０およびサーバ６０は、装置として別個であってもよいし、１つの装置であってもよい。
【００３５】
運用系システム２０１において、システム監視部２２は、運用系システムの負荷状況を監視する。
【００３６】
リクエスト監視部２１は、１または複数のＷｅｂブラウザからのリクエストを監視する。
【００３７】
ＡＰＩ呼び出し監視部２３は、リクエストによって呼び出されるＷｅｂアプリケーション７１のＡＰＩ（Application Program Interface）を監視する。
【００３８】
情報保持テーブル３０は、システム監視部２２、リクエスト監視部２１およびＡＰＩ呼び出し監視部２３の監視結果を記憶する。
【００３９】
例外監視部２４は、リクエストの処理が行われている際にＷｅｂアプリケーション７１で例外が発生するか否かを監視し、例外が発生した場合には、例外の内容を示す例外情報を生成し、生成した例外情報、および情報保持テーブル３０によって記憶された各監視結果をログファイルとして出力する。
【００４０】
テスト系システム３０１において、スクリプト生成部６０は、例外監視部２４から受けたログファイルに基づいてスクリプトを生成する。
【００４１】
障害再現部８０は、スクリプト生成部６０によって生成されたスクリプトを実行することにより、例外の発生を再現する。
【００４２】
より詳細には、リクエスト監視部２１は、アプリケーションサーバ１０において処理されるリクエストを監視し、一定時間分の監視結果を情報保持テーブル３０に記録し続ける。
【００４３】
システム監視部２２は、アプリケーションサーバ１０のＣＰＵ使用率およびメモリ使用量を監視し、一定時間分の監視結果を情報保持テーブル３０に記録し続ける。
【００４４】
ＡＰＩ呼び出し監視部２３は、アプリケーションサーバ１０において処理されるリクエストが呼び出すＡＰＩの種類を監視し、一定時間分の監視結果を情報保持テーブル３０に記録し続ける。
【００４５】
例外監視部２４は、上記リクエストの処理においてアプリケーション７１で例外が発生したかどうかを監視する。例外監視部２４は、アプリケーション７１で例外が発生すると、発生した例外の内容を示す例外情報と、リクエスト監視部２１、システム監視部２２およびＡＰＩ呼び出し監視部２３が情報保持テーブル３０に記録した情報とをログファイル４１に出力する。
【００４６】
また、システム監視部２２、リクエスト監視部２１およびＡＰＩ呼び出し監視部２３は、運用系システム２０１のプラグインとして実現される。
【００４７】
より詳細には、リクエスト監視部２１、システム監視部２２、ＡＰＩ呼び出し監視部２３および例外監視部２４は、運用系システム２０１におけるアプリケーションサーバ１０のプラグインとして実装されることで、アプリケーションサーバ１０の起動時に自動的に起動される。
【００４８】
ログファイル４１の採取情報は、ＵＳＢメモリなどの電子記録媒体、およびファイル転送等を通じてテスト系システム３０１に送られ、ログファイル４３に取り込まれる。
【００４９】
テスト系システム３０１において、リクエスト状況再現スクリプト生成部６１、障害アプリケーション実行スクリプト生成部６２およびシステム状況再現スクリプト生成部６３は、運用系システム２０１によって収集されたログファイル４３を読み込み、障害発生時の状況を再現するためのスクリプトをそれぞれ生成し、手順スクリプトファイル７０へ出力する。
【００５０】
より詳細には、リクエスト状況再現スクリプト生成部６１は、リクエスト監視部２１の監視結果およびＡＰＩ呼び出し監視部２３の監視結果に基づいて、例外が発生した当時におけるリクエストの状況を再現するためのスクリプトを生成する。
【００５１】
障害アプリケーション実行スクリプト生成部６２は、リクエスト監視部２１の監視結果、ＡＰＩ呼び出し監視部２３の監視結果および例外情報に基づいて、例外が発生した当時におけるＷｅｂアプリケーション７１の実行状況を再現するためのスクリプトを生成する。
【００５２】
システム状況再現スクリプト生成部６３は、システム監視部２２の監視結果に基づいて、例外が発生した当時における運用系システムの負荷状況を再現するためのスクリプトを生成する。
【００５３】
障害再現部８０は、手順スクリプトファイル７０を読み込み、実行することにより、障害発生時の状況を再現する。
【００５４】
［動作］
次に、本発明の実施の形態に係る運用系システム２０１およびテスト系システム３０１の動作について図面を用いて説明する。本発明の実施の形態では、運用系システム２０１およびテスト系システム３０１を動作させることによって、本発明の実施の形態に係る障害解析支援方法が実施される。よって、本発明の実施の形態に係る障害解析支援方法の説明は、以下の運用系システム２０１およびテスト系システム３０１の動作説明に代える。なお、以下の説明においては、適宜図１を参照する。
【００５５】
図３は、本発明の実施の形態に係る運用系システムがシステム監視処理を行なう際の動作手順を示すフローチャートである。
【００５６】
図３を参照して、まず、アプリケーションサーバ１０を起動すると、システム監視部２２は、アプリケーションサーバ１０によって起動され、システム情報の記録を開始する（ステップＡ１）。
【００５７】
システム監視部２２は、起動と同時にシステム情報を情報保持テーブル３０へ記録する。記録する情報は、ＣＰＵ使用率およびメモリ使用状況である（ステップＡ２）。
【００５８】
ここで、システム監視部２２は、システム情報の監視を一定間隔、たとえば５分間隔で定期的に行い、システム情報を記録した後、スリープ（待ち状態）に入る（ステップＡ２〜Ａ４）。
【００５９】
次に、システム監視部２２は、システム情報を記録した後、スリープに入る前にアプリケーションサーバ１０から監視終了の指示を受けた場合には、スリープせずに処理を終了する（ステップＡ３でＹＥＳ）。
【００６０】
あるいは、システム監視部２２は、スリープ中でも、アプリケーションサーバ１０から監視終了の指示を受けた場合には（ステップＡ５でＹＥＳ）、スリープを解除して処理を終了する。
【００６１】
一方、システム監視部２２は、規定のスリープ時間が経過して復帰した時、アプリケーションサーバ１０から監視終了の指示を受けていない場合には（ステップＡ５でＮＯ）、再びシステム情報の記録を行なう（ステップＡ２）。
【００６２】
図４は、本発明の実施の形態に係る運用系システムがリクエスト監視処理およびＡＰＩ呼び出し処理を行なう際の動作手順を示すフローチャートである。
【００６３】
図４を参照して、まず、アプリケーションサーバ１０を起動すると、リクエスト監視部２１は、アプリケーションサーバ１０によって起動され、リクエスト情報の記録を開始する（ステップＢ１およびＢ２）。
【００６４】
次に、アプリケーションサーバ１０がリクエストを受信すると（ステップＢ３でＹＥＳ）、リクエスト監視部２１は、当該リクエストの情報を情報保持テーブル３０に記録する（ステップＢ４）。記録する情報は、リクエストＵＲＬ、ＵＲＬパラメータ、ＨＴＴＰリクエストヘッダおよびＨＴＴＰリクエストボディである。
【００６５】
次に、リクエスト監視部２１がリクエスト情報を記録した後、アプリケーションサーバ１０が受信したリクエストは実行状態に遷移する。リクエストが実行状態に遷移すると、アプリケーションサーバ１０は、ＡＰＩ呼び出し監視部２３を起動する。起動したＡＰＩ呼び出し監視部２３は、ＡＰＩ呼び出しの監視を開始する（ステップＢ５）。
【００６６】
次に、ＡＰＩ呼び出し監視部２３は、リクエストの実行を監視し、ＡＰＩが呼び出されると（ステップＢ６でＹＥＳ）、当該ＡＰＩの情報を情報保持テーブル３０に記録する（ステップＢ７）。記録する情報は、ＡＰＩの名称、引数、および呼び出しＡＰＩが属するクラスである。
【００６７】
次に、ＡＰＩ呼び出し監視部２３は、ＡＰＩ情報を情報保持テーブル３０に記録した後、リクエスト処理が終了している場合には（ステップＢ８でＹＥＳ）、処理を終了する（ステップＢ９）。
【００６８】
一方、ＡＰＩ呼び出し監視部２３は、リクエスト処理が終了していない場合には（ステップＢ８でＮＯ）、再びＡＰＩの呼び出しの監視を行なう（ステップＢ５）。
【００６９】
次に、リクエスト監視部２１は、リクエスト処理が終了すると、レスポンス情報を情報保持テーブル３０に記録する（ステップＢ１０）。記録する情報は、ＨＴＴＰレスポンスステータス、ＨＴＴＰレスポンスヘッダおよびＨＴＴＰレスポンスボディである。
【００７０】
次に、リクエスト監視部２１は、レスポンス情報を情報保持テーブル３０に記録した後、アプリケーションサーバ１０から監視終了の指示を受けている場合には（ステップＢ１１でＹＥＳ）、処理を終了する（ステップＢ１２）。
【００７１】
一方、リクエスト監視部２１は、アプリケーションサーバ１０から監視終了の指示を受けていない場合には（ステップＢ１１でＮＯ）、再びリクエスト情報の記録を行なう（ステップＢ２）。
【００７２】
図５は、本発明の実施の形態に係る運用系システムが例外監視処理を行なう際の動作手順を示すフローチャートである。
【００７３】
図５を参照して、まず、アプリケーションサーバ１０を起動すると、例外監視部２４は、アプリケーションサーバ１０によって処理され、例外発生の監視を開始する（ステップＣ１）。
【００７４】
次に、例外監視部２４は、起動すると例外が発生するまでスリープ（待ち状態）に入り、例外が発生するまで待機する。例外監視部２４は、例外が発生すると、起動して例外情報を採取する（ステップＣ２〜Ｃ４）。採取する情報は、例外メッセージ、スタックトレースおよび例外発生時刻である。
【００７５】
次に、例外監視部２４は、採取した例外情報と、リクエスト監視部２１、システム監視部２２およびＡＰＩ呼び出し監視部２３が情報保持テーブル３０に記録した情報とをログファイル４１に書き出す（ステップＣ５）。
【００７６】
ここで、ログファイル４１は、ＵＳＢメモリなどの電子記録媒体、またはファイル転送を通じてテスト系システム３０１に送られ、ログファイル４３として用意される。
【００７７】
次に、例外監視部２４は、例外情報をログファイル４１に書き出した後、アプリケーションサーバ１０から監視終了の指示を受けた場合には（ステップＣ６でＹＥＳ）、処理を終了する。
【００７８】
一方、例外監視部２４は、監視終了の指示を受けていない場合には（ステップＣ６でＮＯ）、再びスリープに入る（ステップＣ２）。
【００７９】
また、例外監視部２４は、スリープ中でもアプリケーションサーバ１０から監視終了の指示を受けた場合には（ステップＣ３でＹＥＳ）、スリープを解除して処理を終了する。
【００８０】
図６は、本発明の実施の形態に係るテスト系システムが障害再現処理を行なう際の動作手順を示すフローチャートである。
【００８１】
図６を参照して、まず、スクリプト生成部６０は、ログファイル４３を読み込み、ログファイル４３から障害再現に有用な情報のみを抽出する（ステップＤ１）。
【００８２】
より詳細には、スクリプト生成部６０において、リクエスト状況再現スクリプト生成部６１が抽出する情報は、リクエスト情報およびＡＰＩ呼び出し情報である（データＤ２およびＤ３）。リクエスト状況再現スクリプト生成部６１は、リクエスト情報に記録されたリクエストの数、およびリクエストを受信した時刻に基づいて、同時リクエスト数も考慮して、障害発生当時の状況を再現するスクリプトを生成する。
【００８３】
また、障害アプリケーション実行スクリプト生成部６２が抽出する情報は、リクエスト情報、ＡＰＩ呼び出し情報、および例外情報である（データＤ２、Ｄ３およびＤ４）。障害アプリケーション実行スクリプト生成部６２は、例外情報に記載されていないリクエスト受信時の初期の情報として、リクエスト情報およびＡＰＩ情報をマージすることにより実行スクリプトを生成する。
【００８４】
また、システム状況再現スクリプト生成部６３が抽出する情報は、システム情報である（データＤ５）。システム状況再現スクリプト生成部６３は、システム情報に数値として記録されたＣＰＵ使用率およびメモリ使用量を忠実に再現し続けるため、データを元に負荷を調整するスクリプトを出力する。
【００８５】
次に、リクエスト状況再現スクリプト生成部６１、障害アプリケーション実行スクリプト生成部６２およびシステム状況再現スクリプト生成部６３は、抽出したそれぞれの情報に基づいて、固定キーワードで構成されるスクリプトを書き出すことにより、手順スクリプトファイル７０を生成する（ステップＤ６〜Ｄ８）。
【００８６】
次に、手順スクリプトファイル７０が、障害再現部８０によって読み込まれる（ステップＤ９）。
【００８７】
次に、障害再現部８０は、手順スクリプトファイル７０から、まずシステム状況再現スクリプトを取得し、アプリケーションサーバ１０において障害が発生した当時の運用系システム２０１の状況を再現する。
【００８８】
続いて、障害再現部８０は、手順スクリプトファイル７０からリクエスト状況再現スクリプトを取得し、アプリケーションサーバ１０において障害が発生した当時のリクエストの状況を再現する。
【００８９】
さらに、障害再現部８０は、手順スクリプトファイル７０から障害アプリケーション実行スクリプトを取得し、問題の障害が発生したリクエストを再現する（ステップＤ１０）。
【００９０】
次に、障害解析支援システム４０１による各種ログの取得および障害の再現の具体例を説明する。
【００９１】
図７〜図１１は、本発明の実施の形態に係る障害解析支援システムにおけるアプリケーションサーバ上のデータをログファイルに記録した具体例を示す図である。
【００９２】
図１２〜図１４は、本発明の実施の形態に係るテスト系システムにおけるログファイルから生成した手順スクリプトファイルの具体例を示す図である。
【００９３】
アプリケーションサーバ１０は、起動するとまもなくリクエストを受け付ける準備が整う。アプリケーションサーバ１０が起動すると同時に、システム監視部２２がシステム情報の記録を開始し、図１０に示すようなＣＰＵ使用率およびメモリ使用量を記録する。
【００９４】
次に、アプリケーションサーバ１０がリクエストを受信すると、リクエスト監視部２１が記録を開始する。一つのリクエストにつき、リクエストＵＲＬ、ＵＲＬパラメータ、ＨＴＴＰリクエストヘッダおよびＨＴＴＰリクエストボディが図７に示すように記録される。
【００９５】
次に、リクエストの実行が始まると、ＡＰＩ呼び出し監視部２３が記録を開始し、呼び出されたＡＰＩの名称および引数を、図８に示すように記録する。このＡＰＩ呼び出し記録は、リクエストの記録と結びついており、図８の先頭行において、どのリクエストのＡＰＩ呼び出しなのかが記録される。
【００９６】
次に、リクエストの実行が終わると、リクエスト監視部２１は、リクエストの実行結果、すなわちレスポンス情報を図９に示すように記録する。
【００９７】
そして、新しいリクエストを受信するたびに、図７、図８および図９に示すような情報が情報保持テーブル３０に記録される。情報保持テーブル３０の容量には限りがあるため、情報保持テーブル３０に記録されるのは、一定期間、たとえば３０分の情報となる。この一定期間が経過すると、古い情報から順次破棄されることになる。アプリケーションサーバ１０は、複数のリクエストを同時に受信することが想定される。この場合、リクエスト監視部２１は、当該一定期間の範囲内ですべてのリクエストを記録する。
【００９８】
このようにシステムの情報およびリクエストの情報を記録し続けている状態において、あるリクエストで例外が発生すると、例外監視部２４は、図１１に示すような例外情報を採取する。
【００９９】
例外監視部２４は、採取した例外情報（図１１）を、情報保持テーブル３０に記録されたシステム情報（図１０）、リクエスト情報（図７）、ＡＰＩ情報（図８）およびレスポンス情報（図９）とともにログファイル４１に書き出す。この書き出された情報は、例外発生時から遡ってたとえば３０分保持されており、例外が発生した当時のアプリケーションサーバ１０の状況を示すものとなる。
【０１００】
テスト系システム３０１においては、現象再現に必要な手順スクリプトファイル７０の生成を行なう。
【０１０１】
すなわち、スクリプト生成部６０は、図７〜図１１に示す情報の記録されたログファイル４３から有効な情報のみを抽出し、障害再現に必要なスクリプトを手順スクリプトファイル７０に書き出す。
【０１０２】
次に、リクエスト状況再現スクリプト生成部６１は、リクエスト情報（図７）およびＡＰＩ情報（図８）に記録された、リクエストの数およびリクエストを受信した時刻から、同時リクエスト数も考慮した当時の状況を再現するリクエスト再現スクリプト（図１２）を出力する。
【０１０３】
次に、障害アプリケーション実行スクリプト生成部６２は、リクエスト情報（図７）、ＡＰＩ情報（図８）および例外情報（図１１）から、障害が発生したリクエストが、いつ発生し、どのようなＡＰＩを呼び出して例外が発生したかを再現する障害アプリケーション実行スクリプト（図１３）を出力する。
【０１０４】
次に、システム状況再現スクリプト生成部６３は、システム情報（図１０）に数値として記録されたＣＰＵ使用率およびメモリ使用量を忠実に再現し続けるため、データを元に負荷を調整するシステム状況再現スクリプト（図１４）を出力する。
【０１０５】
次に、障害再現部８０は、生成された手順スクリプトファイル７０を読み込んで実行することにより、アプリケーションサーバ１０において例外が発生した当時のシステムの状況、およびリクエストの状況を再現しつつ、アプリケーションサーバ１０において例外が発生したタイミングと同じタイミングで例外の発生するリクエストを再現する。
【０１０６】
以上のように、本発明の実施の形態に係る障害解析支援システムでは、システム監視部２２は、運用系システムの負荷状況を監視する。リクエスト監視部２１は、１または複数のＷｅｂブラウザからのリクエストを監視する。ＡＰＩ呼び出し監視部２３は、リクエストによって呼び出されるＡＰＩを監視する。情報保持テーブル３０は、システム監視部２２、リクエスト監視部２１およびＡＰＩ呼び出し監視部２３の監視結果を記憶する。例外監視部２４は、リクエストの処理が行われている際にＷｅｂアプリケーション７１で例外が発生するか否かを監視し、例外が発生した場合には、例外の内容を示す例外情報を生成し、生成した例外情報、および情報保持テーブル３０によって記憶された各監視結果をログファイルとして出力する。スクリプト生成部６０は、例外監視部２４から受けたログファイルに基づいてスクリプトを生成する。そして、障害再現部８０は、スクリプト生成部６０によって生成されたスクリプトに基づいて例外の発生を再現する。
【０１０７】
ここで、特許文献１〜３に記載の技術と本発明の実施の形態に係る障害解析支援システムとの具体的な相違としては、たとえば、以下のような点がある。
【０１０８】
すなわち、特許文献１〜３に記載の技術は、運用系システムにおける障害発生時の情報を収集し、テスト系システムで当該障害を再現する構成ではない。特に、特許文献２に記載の技術は、テスト系システムでの運用を想定している。
【０１０９】
これに対して、本発明の実施の形態に係る障害解析支援システムでは、テスト系システムで障害を再現するために最適化した情報を収集することが可能である。
【０１１０】
また、特許文献３に記載の技術は、リクエスト等のトランザクション情報を収集する構成ではなく、また、プロセスの異常を想定しており、本発明の実施の形態に係る障害解析支援システムが想定するＷｅｂアプリケーションの異常とは対象とするレベルがまったく異なる。
【０１１１】
以上のように、特許文献１〜３に記載の技術と本発明の実施の形態に係る障害解析支援システムとは、種々の点で相違がある。
【０１１２】
すなわち、運用系システム上で動作するＷｅｂアプリケーションに障害が発生した場合において、障害の解析を支援するために、アプリケーションサーバ１０内部の動作を監視する。これにより、リクエストの状況、ＡＰＩの呼び出しおよびシステムの負荷状況を収集し、収集した情報を元にテスト系システムで障害の再現を行なう。
【０１１３】
たとえば、ＣＰＵ使用率およびメモリ使用量を定期的に採取する。これにより、障害発生に至るまでに運用系システム２０１がどのような負荷状態であったかを再現することができる。
【０１１４】
また、たとえば、すべてのリクエストＵＲＬを採取し、そして、リクエストの延長で発生するＡＰＩ呼び出し状況も採取する。これにより、障害発生前および障害発生時にどのようなリクエストがどれくらいの数行われていたかを正確に再現することができる。
【０１１５】
また、たとえば、複数のＷｅｂアプリケーションが動作するＷｅｂシステムの負荷状況、およびリクエストの状況を一定期間分、採取し、更新し続ける。これにより、複数のＷｅｂアプリケーションが動作するＷｅｂシステムにおいて、いつ障害が発生しても当該障害を再現するための情報を得ることができる。
【０１１６】
そして、採取した複数の情報をマージしてスクリプトを生成し、生成したスクリプトを実行する。このように、再利用しやすいスクリプトを用いる構成により、他のテスト系システムでの障害解析作業が容易となり、また、当該スクリプトの微修正を行なうことで、障害の再現内容の変更を容易に行なうことができる。
【０１１７】
すなわち、本発明の実施の形態に係る障害解析支援システムでは、運用系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエスト状況を記録できる。また、テスト系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエスト状況を再現できる。
【０１１８】
また、運用系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエストの詳しい動作を記録できる。また、テスト系システムにおいて、障害発生の直接の原因となったリクエスト、および障害が発生した時のリクエストの詳しい動作を再現できる。
【０１１９】
また、運用系システムにおいて、障害が発生した時アプリケーションサーバがどのような負荷状況で動作していたかを記録できる。また、テスト系システムにおいて、障害が発生した時アプリケーションサーバがどのような負荷状況で動作していたかを再現できる。
【０１２０】
したがって、障害が発生するまでの状況を正確に再現することができ、運用系システムにおいて発生した障害と同じ障害をテスト系システムにおいて再現することができる。
【０１２１】
すなわち、本発明の実施の形態に係る障害解析支援システムにおける各構成要素のうち、リクエスト監視部２１と、システム監視部２２と、ＡＰＩ呼び出し監視部２３と、例外監視部２４と、スクリプト生成部６０と、障害再現部８０と、情報保持テーブル３０とからなる最小構成により、Ｗｅｂシステムにおいて障害解析を適切に行なう、という本発明の目的を達成することが可能となる。
【０１２２】
また、本発明の実施の形態に係る障害解析支援システムでは、システム監視部２２、リクエスト監視部２１およびＡＰＩ呼び出し監視部２３は、運用系システムのプラグインとして実現される。
【０１２３】
すなわち、運用系システム上で動作するＷｅｂアプリケーションに障害が発生した場合において当該障害の解析を支援するために、アプリケーションサーバ１０のプラグインとして動作するユニットを設け、アプリケーションサーバ１０内部の動作を直接監視する。
【０１２４】
このような構成により、たとえば運用系システムのプラグインとして客先で情報収集を行なうことが可能となる。
【０１２５】
また、本発明の実施の形態に係る障害解析支援システムでは、リクエスト状況再現スクリプト生成部６１は、リクエスト監視部２１の監視結果およびＡＰＩ呼び出し監視部２３の監視結果に基づいて、例外が発生した当時におけるリクエストの状況を再現するためのスクリプトを生成する。障害アプリケーション実行スクリプト生成部６２は、リクエスト監視部２１の監視結果、ＡＰＩ呼び出し監視部２３の監視結果および例外情報に基づいて、例外が発生した当時におけるＷｅｂアプリケーション７１の実行状況を再現するためのスクリプトを生成する。そして、システム状況再現スクリプト生成部６３は、システム監視部２２の監視結果に基づいて、例外が発生した当時における運用系システムの負荷状況を再現するためのスクリプトを生成する。
【０１２６】
このように、運用系システムにおける障害発生時の情報から適切な情報を選択してスクリプトを生成する構成により、テスト系システムで当該障害を適切に再現することができる。
【０１２７】
図１５は、本発明の実施の形態に係る障害解析支援システムの変形例の構成を示す図である。
【０１２８】
図１５を参照して、障害解析支援システム４０２は、運用系システム２０２と、テスト系システム３０１とを備える。アプリケーションサーバ１０は、その制御構造として、運用系システム２０１と比べて、さらに、ユーザコード解析部２５を備える。
【０１２９】
ユーザコード解析部２５は、例外発生時のユーザプログラムのコードを解析する。より詳細には、ユーザコード解析部２５は、Ｗｅｂアプリケーション７１のコードを解析し、リクエストによって実行されるＡＰＩ以外の処理を監視する。情報保持テーブル３０は、さらに、ユーザコード解析部２５の監視結果を記憶する。
【０１３０】
運用系システム２０１では、リクエストの内容、ＡＰＩの呼び出し内容、およびこれらが実行された時間しか記録されていない。このため、ユーザアプリケーションのコードにより引き起こされる障害を再現することができない。
【０１３１】
これに対して、障害解析支援システム４０２では、運用系システム２０２において、ユーザコード解析部２５によって例外発生時にユーザアプリケーションのコードを解析し、当該コードのロジックまで記録する。そして、テスト系システム３０１における障害アプリケーション実行スクリプト生成部６２でスクリプトを生成し、障害再現部８０で再現する。
【０１３２】
このような構成により、ユーザアプリケーションのコードに依存して発生するような障害も再現することが可能となる。
【０１３３】
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１３４】
上記実施の形態の一部または全部は以下の付記のようにも記載されうるが、本発明の範囲は、以下の付記に限定されるものではない。
【０１３５】
［付記１］
Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援システムであって、
前記運用系システムの負荷状況を監視するためのシステム監視部と、
１または複数のＷｅｂブラウザからのリクエストを監視するためのリクエスト監視部と、
前記リクエストによって呼び出されるＡＰＩ（Application Program Interface）を監視するためのＡＰＩ呼び出し監視部と、
前記システム監視部、前記リクエスト監視部および前記ＡＰＩ呼び出し監視部の監視結果を記憶するための監視情報記憶部と、
前記リクエストの処理が行われている際に前記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および前記監視情報記憶部によって記憶された各前記監視結果をログファイルとして出力するための例外監視部と、
前記例外監視部から受けた前記ログファイルに基づいてスクリプトを生成するためのスクリプト生成部と、
前記スクリプト生成部によって生成された前記スクリプトに基づいて前記例外の発生を再現するための障害再現部とを備える、障害解析支援システム。
【０１３６】
［付記２］
前記システム監視部、前記リクエスト監視部および前記ＡＰＩ呼び出し監視部は、前記運用系システムのプラグインとして実現される、付記１に記載の障害解析支援システム。
【０１３７】
［付記３］
前記スクリプト生成部は、
前記リクエスト監視部の監視結果および前記ＡＰＩ呼び出し監視部の監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するためのリクエスト状況再現スクリプト生成部と、
前記リクエスト監視部の監視結果、前記ＡＰＩ呼び出し監視部の監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するための障害アプリケーション実行スクリプト生成部と、
前記システム監視部の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するためのシステム状況再現スクリプト生成部とを含む、付記１または２に記載の障害解析支援システム。
【０１３８】
［付記４］
前記障害解析支援システムは、さらに、
前記Ｗｅｂアプリケーションのコードを解析し、前記リクエストによって実行されるＡＰＩ以外の処理を監視するためのユーザコード解析部を備え、
前記監視情報記憶部は、さらに、前記ユーザコード解析部の監視結果を記憶する、付記１から３のいずれかに記載の障害解析支援システム。
【０１３９】
［付記５］
Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援方法であって、
前記運用系システムの負荷状況を監視するステップと、
１または複数のＷｅｂブラウザからのリクエストを監視するステップと、
前記リクエストによって呼び出されるＡＰＩを監視するステップと、
前記負荷状況、前記リクエストおよび前記ＡＰＩの監視結果を記憶するステップと、
前記リクエストの処理が行われている際に前記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、
前記ログファイルに基づいてスクリプトを生成するステップと、
生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを含む、障害解析支援方法。
【０１４０】
［付記６］
前記負荷状況の監視、前記リクエストの監視、および前記ＡＰＩの監視は、前記運用系システムのプラグインを用いて行なう、付記５に記載の障害解析支援方法。
【０１４１】
［付記７］
前記スクリプトを生成するステップは、
前記リクエストの監視結果および前記ＡＰＩの監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するステップと、
前記リクエストの監視結果、前記ＡＰＩの監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、
前記負荷状況の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む、付記５または６に記載の障害解析支援方法。
【０１４２】
［付記８］
前記障害解析支援方法は、さらに、
前記Ｗｅｂアプリケーションのコードを解析し、前記リクエストによって実行されるＡＰＩ以外の処理を監視するステップを含み、
前記監視結果を記憶するステップにおいては、さらに、前記ＡＰＩ以外の処理の監視結果を記憶する、付記５から７のいずれかに記載の障害解析支援方法。
【０１４３】
［付記９］
Ｗｅｂアプリケーションを実行するための運用系システムにおける障害を解析するための障害解析支援プログラムであって、コンピュータに、
前記運用系システムの負荷状況を監視するステップと、
１または複数のＷｅｂブラウザからのリクエストを監視するステップと、
前記リクエストによって呼び出されるＡＰＩを監視するステップと、
前記負荷状況、前記リクエストおよび前記ＡＰＩの監視結果を記憶するステップと、
前記リクエストの処理が行われている際に前記Ｗｅｂアプリケーションで例外が発生するか否かを監視し、例外が発生した場合には、前記例外の内容を示す例外情報を生成し、生成した前記例外情報、および記憶した各前記監視結果をログファイルとして出力するステップと、
前記ログファイルに基づいてスクリプトを生成するステップと、
生成した前記スクリプトに基づいて前記例外の発生を再現するステップとを実行させるための、障害解析支援プログラム。
【０１４４】
［付記１０］
前記負荷状況を監視するステップ、前記リクエストを監視するステップ、および前記ＡＰＩを監視するステップは、前記運用系システムのプラグインを用いて実行される、付記９に記載の障害解析支援プログラム。
【０１４５】
［付記１１］
前記スクリプトを生成するステップは、
前記リクエストの監視結果および前記ＡＰＩの監視結果に基づいて、前記例外が発生した当時における前記リクエストの状況を再現するためのスクリプトを生成するステップと、
前記リクエストの監視結果、前記ＡＰＩの監視結果および前記例外情報に基づいて、前記例外が発生した当時におけるＷｅｂアプリケーションの実行状況を再現するためのスクリプトを生成するステップと、
前記負荷状況の監視結果に基づいて、前記例外が発生した当時における前記運用系システムの負荷状況を再現するためのスクリプトを生成するステップとを含む、付記９または１０に記載の障害解析支援プログラム。
【０１４６】
［付記１２］
前記障害解析支援プログラムは、さらに、
前記Ｗｅｂアプリケーションのコードを解析し、前記リクエストによって実行されるＡＰＩ以外の処理を監視するステップを含み、
前記監視結果を記憶するステップにおいては、さらに、前記ＡＰＩ以外の処理の監視結果を記憶する、付記９から１１のいずれかに記載の障害解析支援プログラム。
【産業上の利用可能性】
【０１４７】
本発明は、たとえば業務アプリケーションに障害が発生したときに、テスト系システムで障害を解析するのに必要な情報を収集することが可能である。したがって、本発明は、産業上の利用可能性を有している。
【符号の説明】
【０１４８】
１０  アプリケーションサーバ
５０  アプリケーションサーバ
６０  サーバ（スクリプト生成部）
７１  Ｗｅｂアプリケーション
２１  リクエスト監視部
２２  システム監視部
２３  ＡＰＩ呼び出し監視部
２４  例外監視部
２５  ユーザコード解析部
３０  情報保持テーブル（監視情報記憶部）
４３  ログファイル
６１  リクエスト状況再現スクリプト生成部
６２  障害アプリケーション実行スクリプト生成部
６３  システム状況再現スクリプト生成部
７０  手順スクリプトファイル
８０  障害再現部
１０１  ＣＰＵ
１０２  メインメモリ
１０３  ハードディスク
１０４  入力インタフェース
１０５  表示コントローラ
１０６  データリーダ／ライタ
１０７  通信インタフェース
１０８  キーボード
１０９  マウス
１１０  ディスプレイ
１１１  記録媒体
１２１  バス
２０１，２０２  運用系システム
３０１  テスト系システム
４０１，４０２  障害解析支援システム
【図１】
0005545761.tif 000002
【図２】
0005545761.tif 000003
【図３】
0005545761.tif 000004
【図４】
0005545761.tif 000005
【図５】
0005545761.tif 000006
【図６】
0005545761.tif 000007
【図７】
0005545761.tif 000008
【図８】
0005545761.tif 000009
【図９】
0005545761.tif 000010
【図１０】
0005545761.tif 000011
【図１１】
0005545761.tif 000012
【図１２】
0005545761.tif 000013
【図１３】
0005545761.tif 000014
【図１４】
0005545761.tif 000015
【図１５】
0005545761.tif 000016