(57)【要約】【課題】コンピュータシステムの障害発生を適切に検出して、障害除去に必要な情報を自動的に収集する。【解決手段】プログラムの処理経過を示すトレース情報を収集するトレース情報収集システムは、トレース情報の生成対象である対象プログラムの稼動及び停止の履歴を記録する履歴記録部と、停止している対象プログラムが稼動を開始する場合に、対象プログラムが前回に稼動及び停止した動作パターンが、対象プログラムが前回以前に稼動及び停止した動作パターンに類似する程度を示す類似度を算出する類似度算出部と、類似度算出部により算出された類似度が基準の類似度よりも低いことを条件として、対象プログラムの前回の稼動に障害が発生したと判断する障害発生判断部と、障害が発生したと判断されたことに応答して、障害が発生したと判断されていない場合には収集していないトレース情報を対象プログラムから収集するトレース情報収集部とを備える。【選択図】図４
2006202076.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの処理経過を示すトレース情報を収集するトレース情報収集システムであって、
トレース情報の生成対象である対象プログラムの稼動及び停止の履歴を記録する履歴記録部と、
停止している前記対象プログラムが稼動を開始する場合に、前記対象プログラムが前回に稼動及び停止した動作パターンが、前記対象プログラムが前回以前に稼動及び停止した動作パターンに類似する程度を示す類似度を算出する類似度算出部と、
前記類似度算出部により算出された前記類似度が基準の類似度よりも低いことを条件として、前記対象プログラムの前回の稼動に障害が発生したと判断する障害発生判断部と、
前記障害が発生したと判断されたことに応答して、前記障害が発生したと判断されていない場合には収集していないトレース情報を前記対象プログラムから収集するトレース情報収集部と
を備えるトレース情報収集システム。
【請求項２】
前記対象プログラムが稼動及び停止を繰り返す各々の繰り返し毎に、前記対象プログラムが停止してから稼動するまでに経過した停止時間、及び、稼動してから停止するまでに経過した稼動時間の比率である稼動停止時間比率を算出する稼動停止時間比率算出部を更に備え、
前記類似度算出部は、前記繰り返しの各々における前記稼動停止時間比率の確率分布における、前回の稼動及び停止の前記稼動停止時間比率の偏りを示す値を、前記類似度を示す情報として算出し、
前記障害発生判断部は、前記類似度算出部により算出された当該偏りを示す値が、基準の値より高い場合に、前記類似度が基準の類似度よりも低いと判断する
請求項１記載のトレース情報収集システム。
【請求項３】
前記障害発生判断部は、前記対象プログラムが前回停止してから稼動するまでに経過した停止時間が基準の停止時間より短いことを条件として、前記障害が発生したと更に判断する
請求項１記載のトレース情報収集システム。
【請求項４】
前記履歴記録部は、前記対象プログラムが停止される場合に、更に、前記対象プログラムを停止させる停止手続の種類を記録し、
前記障害発生判断部は、前記対象プログラムを前回停止させた停止手続が、既に開始した処理を中断して停止させる即時停止手続であることを条件として、前記障害が発生したと判断し、当該停止手続が、既に開始した処理を完了させてから停止させる完了待停止手続であることを条件として、前記障害が発生したと判断しない
請求項１記載のトレース情報収集システム。
【請求項５】
前記類似度判断部により判断された類似度がより低い場合により高い値をとり、前記対象プログラムを前回停止させた停止手続が前記即時停止手続である場合に前記完了待停止手続である場合と比較してより高い値をとり、かつ、前記対象プログラムが前回停止してから稼動するまでに経過した停止時間が基準の停止時間より短い場合により高い値をとる、前記対象プログラムに前記障害が発生した可能性を示すスコアを算出するスコア算出部を更に備え、
前記障害発生判断部は、前記スコア算出部により算出されたスコアが予め定められた基準値よりも高いことを条件として、前記障害が発生したと判断し、当該スコアが当該基準値以下であることを条件として、前記障害が発生したと判断しない
請求項４記載のトレース情報収集システム。
【請求項６】
前記障害発生判断部は、前記対象プログラムを前回停止させた停止手続が前記即時停止手続であって、かつ、中断した処理の数が基準の数より多いことを更に条件として、前記障害が発生したと判断する
請求項４記載のトレース情報収集システム。
【請求項７】
前記履歴記録部に記録された稼動及び停止の履歴に基づいて、前記対象プログラムが稼動及び停止を繰り返す各々の繰り返しにおける稼動時間の長さの確率分布における、前記対象プログラムが前回に稼動を開始してから停止するまでに経過した稼動時間の偏りを示す値を算出する稼動時間偏差算出を更に備え、
前記障害発生判断部は、前記稼動時間偏差算出部によって算出された当該偏りを示す値が基準の値より高い場合に、更に、前記障害が発生したと判断する
請求項１記載のトレース情報収集システム。
【請求項８】
前記障害発生判断部により前記障害が発生したと判断されたことに応答して、前記対象プログラムに与える動作パラメータを収集する動作パラメータ収集部
を更に備える請求項１記載のトレース情報収集システム。
【請求項９】
前記履歴記録部に記録された稼動の履歴に基づいて、前記対象プログラムの稼動開始から停止までの平均の稼動時間を算出する平均稼動時間算出部を更に備え、
前記トレース情報収集部は、前記障害が発生したと判断されたことに応答して、前記障害が発生したと判断されていない場合には収集しないトレース情報を収集し、前記対象プログラムの稼動の開始から前記平均の稼動時間が経過した場合に、当該トレース情報の収集を終了する
請求項１記載のトレース情報収集システム。
【請求項１０】
前記対象プログラムを実行する情報処理装置のファイル入出力の頻度を検出するファイル入出力使用率検出部を更に備え、
前記トレース情報収集部は、前記トレース情報を収集している場合であっても、前記ファイル入出力の頻度が予め定められた基準の頻度を超えた場合には、当該トレース情報の収集を終了する
請求項１記載のトレース情報収集システム。
【請求項１１】
前記対象プログラムを実行する情報処理装置の中央処理装置の使用率を検出する中央処理装置使用率検出部を更に備え、
前記トレース情報収集部は、前記トレース情報を収集している場合であっても、前記中央処理装置の使用率が予め定められた基準の使用率を超えた場合には、当該トレース情報の収集を終了する
請求項１記載のトレース情報収集システム。
【請求項１２】
プログラムの処理経過を示すトレース情報を収集するトレース情報収集方法であって、
トレース情報の生成対象である対象プログラムの稼動及び停止の履歴を記録する履歴記録段階と、
停止している前記対象プログラムが稼動を開始する場合に、前記対象プログラムが前回に稼動及び停止した動作パターンが、前記対象プログラムが前回以前に稼動及び停止した動作パターンに類似する程度を示す類似度を算出する類似度算出段階と、
前記類似度算出部により算出された前記類似度が基準の類似度よりも低いことを条件として、前記対象プログラムの前回の稼動に障害が発生したと判断する障害発生判断段階と、
前記障害が発生したと判断されたことに応答して、前記障害が発生したと判断されていない場合には収集していないトレース情報を前記対象プログラムから収集するトレース情報収集段階と
を備えるトレース情報収集方法。
【請求項１３】
プログラムの処理経過を示すトレース情報を収集するトレース情報収集システムとして、情報処理装置を機能させるトレース情報収集プログラムであって、
前記情報処理装置を、
トレース情報の生成対象である対象プログラムの稼動及び停止の履歴を記録する履歴記録部と、
停止している前記対象プログラムが稼動を開始する場合に、前記対象プログラムが前回に稼動及び停止した動作パターンが、前記対象プログラムが前回以前に稼動及び停止した動作パターンに類似する程度を示す類似度を算出する類似度算出部と、
前記類似度算出部により算出された前記類似度が基準の類似度よりも低いことを条件として、前記対象プログラムの前回の稼動に障害が発生したと判断する障害発生判断部と、
前記障害が発生したと判断されたことに応答して、前記障害が発生したと判断されていない場合には収集していないトレース情報を前記対象プログラムから収集するトレース情報収集部と
して機能させるトレース情報収集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トレース情報収集システム、トレース情報収集方法、及びトレース情報収集プログラムに関する。特に、本発明は、プログラムの処理経過を示すトレース情報を収集するトレース情報収集システム、トレース情報収集方法、及びトレース情報収集プログラムに関する。
【背景技術】
【０００２】
企業等で運用中のコンピュータシステムに障害が発生した場合には、その障害除去のために、例えば、以下の流れで処理が進められる。
（１）運用中のコンピュータシステムで障害が発生
（２）システム担当者の解析により、障害を発生させたプログラムモジュールを特定
（３）次回稼動時に、そのプログラムモジュールの処理経過を示すトレース情報を取得
（４）取得したトレース情報を解析
（５）障害の原因を究明
【０００３】
トレース情報は、コンピュータシステムの稼動中に順次生成され出力される。このため、コンピュータシステムの運用中にトレース情報を取得しようとすれば、トレース情報を記憶装置等に記憶させる処理が定期的に発生し、本来の処理の処理速度を低下させてしまう。従って、従来は、通常の運用時にはトレース情報を取得せず、障害が発生した場合に限って、システム担当者がトレース情報を取得するように設定変更する場合が多い。但し、運用中のコンピュータシステムの設定を変更するためには、利用者や所有者による同意が必要な場合が多く、その同意を得るのに時間がかかる場合が多い。
【０００４】
一方、近年、コンピュータシステムは、企業における事務処理の効率化のためのみならず、基幹業務においても欠かせない役割を果たすようになってきている。このため、コンピュータシステムに障害が発生したからといってその原因を追究するためにコンピュータシステムを長期間停止することは許されない。従って、障害が発生した場合であってもコンピュータシステムが即座に再起動され、トレース情報を取得するために同意を得る等の作業時間が確保できない場合が多い。このように、運用中のコンピュータシステムにおいて障害を除去するのは困難な場合が多かった。
【０００５】
参考技術として、従来、データベースに対するトランザクションが失敗した場合に、トランザクションの処理経過を取得するように自動的に設定変更し、そのトランザクションを再試行するシステムが提案されている（特許文献１参照。）。このシステムによれば、トランザクションの処理中に発生した障害の原因を追究しやすくすることができる。
【特許文献１】特開平５−２５７７５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記文献に記載の技術は、トレース情報を自動的に取得できる点で、コンピュータシステムの障害に応用可能かとも考えられる。しかしながら、コンピュータシステムの場合、トランザクションと異なり、障害が発生したか否かの判断が困難な場合が多い。例えば、トランザクションの失敗は、所定の記憶領域に記録されたエラーコード等により容易に検出できる。これに対して、コンピュータシステムは、様々なモジュールの複合的な要因で障害が発生する場合が多く、各モジュールが正常でも全体としては異常動作している場合もある。更に、障害が発生していない場合であっても、運用上の都合で処理を中断させる場合もある。このように、コンピュータシステムにおいては障害の発生を適切に判断するのは困難であり、トレース情報を生成するタイミングを適切に定めるのは困難であった。
【０００７】
そこで本発明は、上記の課題を解決することのできるトレース情報収集システム、トレース情報収集方法、及びトレース情報収集プログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の第１の形態においては、プログラムの処理経過を示すトレース情報を収集するトレース情報収集システムであって、トレース情報の生成対象である対象プログラムの稼動及び停止の履歴を記録する履歴記録部と、停止している対象プログラムが稼動を開始する場合に、対象プログラムが前回に稼動及び停止した動作パターンが、対象プログラムが前回以前に稼動及び停止した動作パターンに類似する程度を示す類似度を算出する類似度算出部と、類似度算出部により算出された類似度が基準の類似度よりも低いことを条件として、対象プログラムの前回の稼動に障害が発生したと判断する障害発生判断部と、障害が発生したと判断されたことに応答して、障害が発生したと判断されていない場合には収集していないトレース情報を対象プログラムから収集するトレース情報収集部とを備えるトレース情報収集システム。
【０００９】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００１０】
本発明によれば、コンピュータシステムの障害発生を適切に検出して、障害除去に必要な情報を自動的に収集することができる。
【発明を実施するための最良の形態】
【００１１】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
図１は、情報処理装置１０の内部構成を示す。情報処理装置１０は、ホストコントローラ１０８２により相互に接続される中央処理装置１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有する中央処理装置周辺部を備える。また、中央処理装置１０００は、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部を備える。また、中央処理装置１０００は、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部を備える。
【００１３】
中央処理装置１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。例えば本実施例において、中央処理装置１０００は、トレース情報の生成対象である対象プログラム３０を実行する。対象プログラム３０は、例えば、外部のクライアント装置から受けた要求に応じて各種のサービスを処理するミドルウェアである。これに代えて、対象プログラム３０は、各種のオペレーティングシステムやアプリケーションプログラムであってもよい。更に、中央処理装置１０００は、情報処理装置１０にインストールされたトレース情報収集プログラムにより、トレース情報収集システム４０として機能する。トレース情報収集システム４０は、対象プログラム３０の処理経過を示すトレース情報を収集してトレース記録部２５に記録する。
【００１４】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスする中央処理装置１０００及びグラフィックコントローラ１０７５とを接続する。グラフィックコントローラ１０７５は、中央処理装置１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、中央処理装置１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００１５】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１０４０は、情報処理装置１０が使用するプログラム及びデータを格納する。例えば、ハードディスクドライブ１０４０は、履歴記録部２０と、対象プログラム３０として機能する。履歴記録部２０は、例えば対象プログラム３０に予め備わっている機能により、対象プログラム３０の稼動及び停止の履歴を記録する。トレース記録部２５は、トレース情報収集システム４０により収集されたトレース情報等を記録する。
【００１６】
ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＲＯＭ１０１０は、情報処理装置１０の起動時に中央処理装置１０００が実行するブートプログラムや、情報処理装置１０のハードウェアに依存するプログラム等を格納する。
【００１７】
フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００１８】
情報処理装置１０に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出され情報処理装置１０にインストールされて実行される。プログラムが情報処理装置１０等に働きかけて行わせる動作は、図２から図７において後述する。
【００１９】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置１０に提供してもよい。
【００２０】
図２は、履歴記録部２０のデータ構造の一例を示す。履歴記録部２０は、対象プログラム３０の稼動及び停止の履歴を記録する。例えば、履歴記録部２０は、対象プログラム３０を起動させて稼動を開始させる場合に、稼動を開始させるイベントが発生した旨を、そのイベントが発生した時刻に対応付けて記録する。また、履歴記録部２０は、対象プログラム３０を停止させる場合に、対象プログラム３０を停止させるイベントが発生した旨を、そのイベントが発生した時刻に対応付けて記録する。
【００２１】
一例として、履歴記録部２０は、アプリケーションプログラム又はオペレーティングシステムに発生したその他のイベントを含めて記録するイベントログである。即ち、履歴記録部２０は、アプリケーションプログラム等に何らかのイベントが発生する毎に、その旨の情報をアプリケーションプログラム等から取得し、その旨をその発生時刻に対応付けて記録する。このように、履歴記録部２０は、対象プログラム３０に障害が発生したか否かに関わらず、対象プログラム３０の動作中に発生したイベントを継続して記録し続ける。
【００２２】
更に、履歴記録部２０は、対象プログラム３０が停止される場合に、対象プログラム３０を停止させる停止手続の種類を記録してもよい。具体的には、履歴記録部２０は、既に開始した処理を中断して停止させる即時停止手続であるか、或いは、既に開始した処理を完了させてから停止させる完了待停止手続であるかを記録してもよい。例えば、対象プログラム３０が、要求されたトランザクションを処理するミドルウェアである場合には、対象プログラム３０を停止させる場合における当該トランザクション処理の取り扱いが問題となる。例えば、既に開始したトランザクション処理を中断してしまえば、これまで行った処理結果が失われてしまう。一方、既に開始したトランザクション処理の終了を待ってから停止すれば、これまでの処理結果が無駄になることは無いが、停止手続の完了には時間がかかる。このため、停止手続の種類を記録すれば、その停止手続を行った際の状況が推測される。
【００２３】
図３は、対象プログラム３０が稼動及び停止する動作パターンの一例を示す。本図に示す動作パターンは、図２の履歴記録部２０に記録された履歴に対応している。具体的には、対象プログラム３０は、３月６日（金）の１９：００に完了待停止手続により停止している。そして、対象プログラム３０は、３月９日（月）の８：３０に起動し、３月１３日（金）の１９：００に完了待停止手続により停止している。即ち、対象プログラム３０は、月曜の朝に起動して金曜の夜間に停止する動作パターンにより動作しているようである。
【００２４】
しかしながら、対象プログラム３０は、３月１６日（月）の８：３０に起動した後は、３月２０日（金）を待たずに３月１８日（水）の１３：００に即時停止手続により停止している。その後、対象プログラム３０は、１５分後に再度起動している。このように、前回の稼動及び停止の動作パターンが、前回以前の動作パターンと類似していない場合には、対象プログラム３０の稼動に何らかの障害が生じた可能性が高い。即ち、通常は週初に起動して週末に停止する対象プログラム３０が、水曜日に再起動されたのであれば、その時に障害が発生した可能性が高い。
【００２５】
また、完了待停止手続でなく即時停止手続により停止した場合には、既に開始した処理の途中経過を破棄してまで停止したのであるから、対象プログラム３０の稼動に何らかの障害が生じた可能性が高い。本実施例におけるトレース情報収集システム４０は、このような過去の稼動及び停止の動作パターンから、対象プログラム３０における障害発生を適切に検出し、自動的にトレース情報を生成することを目的とする。
【００２６】
図４は、トレース情報収集システム４０の機能を機能ブロックに分類して示す。トレース情報収集システム４０は、稼動停止時間比率算出部４００と、類似度算出部４１０と、稼動時間偏差値算出部４２０と、スコア算出部４３０と、障害発生判断部４４０と、動作パラメータ収集部４５０と、トレース情報収集部４６０と、平均稼動時間算出部４７０と、ファイル入出力頻度検出部４８０と、中央処理装置使用率検出部４９０とを有する。稼動停止時間比率算出部４００は、停止している対象プログラム３０が稼動を開始する場合に、対象プログラム３０が稼動及び停止を繰り返す各々の繰り返し毎に、対象プログラム３０が停止してから稼動するまでに経過した停止時間、及び、稼動してから停止するまでに経過した稼動時間の比率である稼動停止時間比率を算出する。
【００２７】
具体的には、図３を例にとれば、稼動停止時間比率算出部４００は、稼動時間ＯＮ２及び停止時間ＯＦＦ２の比率、稼動時間ＯＮ１及び停止時間ＯＦＦ１の比率、及び、稼動時間ＯＮ及び停止時間ＯＦＦの比率を算出する。類似度算出部４１０は、対象プログラム３０が前回に稼動及び停止した動作パターンが、対象プログラム３０が前回以前に稼動及び停止した動作パターンに類似する程度を示す類似度を算出する。より具体的には、類似度算出部４１０は、稼動及び停止の繰り返しの各々における稼動停止時間比率の確率分布における、前回の稼動及び停止の稼動停止時間比率の偏りを示す値を算出し、当該類似度を示す情報としてもよい。
【００２８】
稼動時間偏差値算出部４２０は、履歴記録部２０に記録された稼動及び停止の履歴に基づいて、対象プログラム３０が稼動及び停止を繰り返す各々の繰り返しにおける稼動時間の長さの確率分布を求める。そして、稼動時間偏差値算出部４２０は、その確率分布における、対象プログラム３０が前回に稼動を開始してから停止するまでに経過した稼動時間の偏りを示す値を算出する。スコア算出部４３０は、類似度算出部４１０により算出された類似度、及び、稼動時間偏差値算出部４２０により算出された値、その他履歴記録部２０に記録された履歴に基づいて、対象プログラム３０に障害が発生した可能性を示すスコアを算出する。
【００２９】
障害発生判断部４４０は、スコア算出部４３０により算出されたスコアが予め定められた基準値よりも高いことを条件として、対象プログラム３０の前回の稼動に障害が発生したと判断する。一方、障害発生判断部４４０は、そのスコアが基準値以下であることを条件として、当該障害が発生したと判断しない。動作パラメータ収集部４５０は、障害発生判断部４４０により障害が発生したと判断されたことに応答して、対象プログラム３０に与える動作パラメータを取得し、トレース記録部２５に記録する。動作パラメータは、対象プログラム３０の動作開始時に読み出される初期設定ファイル等から取得される。また、動作パラメータは、稼動を開始した対象プログラム３０から取得されてもよいし、オペレーティングシステムの環境変数の値を動作パラメータとして取得してもよい。動作パラメータは、対象プログラム３０による処理の進行や利用者の操作によって時々刻々と変更される場合があるので、障害発生直後の動作パラメータのスナップショットを退避できれば、障害除去に役立てることができる。
【００３０】
トレース情報収集部４６０は、障害発生判断部４４０により障害が発生したと判断されたことに応答して、障害が発生したと判断されていない場合には収集していないトレース情報を対象プログラム３０から収集する。そして、トレース情報収集部４６０は、収集したトレース情報をトレース記録部２５に順次記録する。この結果、トレース記録部２５には、対象プログラム３０の稼動開始時点における動作パラメータと、対象プログラム３０の稼動開始から所定の時間までの処理経過を示すトレース情報が記録される。これにより、システム管理者等による特別な作業によらず、障害の原因解析に必要な情報を適切に収集できる。
【００３１】
ここで、動作パラメータ及びトレース情報の収集とは、対象プログラム３０等から出力された動作パラメータ及びトレース情報を取得して、後ほどアクセス可能な状態で情報処理装置１０４０等の記録媒体に記録する処理をいう。従って、トレース情報収集システム４０は、トレース情報等の出力を対象プログラム３０等に対して必ずしも明示的に指示しなくてもよい。例えば、対象プログラム３０は、トレース情報が収集されていない場合であってもトレース情報を出力ストリームに対して書き出し続けており、トレース情報収集システム４０は、必要な場合にのみそれらを取得してもよい。
【００３２】
平均稼動時間算出部４７０は、障害発生判断部４４０により障害が発生したと判断されたことに応答して、履歴記録部２０に記録された対象プログラム３０の稼動の履歴に基づいて、対象プログラム３０の稼動開始から停止までの平均の稼動時間を算出する。そして、トレース情報収集部４６０は、トレース情報を収集している場合であっても、対象プログラム３０の稼動の開始から当該平均の稼動時間が経過した場合には、そのトレース情報の収集を終了する。これにより、トレース情報の過剰な収集を防ぎ、情報処理装置１０の処理能力を維持することができる。
【００３３】
ファイル入出力頻度検出部４８０は、障害発生判断部４４０により障害が発生したと判断されたことを条件として、例えば定期的に、対象プログラム３０を実行する当該情報処理装置１０のファイル入出力の頻度を検出する。そして、トレース情報収集部４６０は、トレース情報を収集している場合であっても、ファイル入出力の頻度が予め定められた基準の頻度を超えた場合には、そのトレース情報の収集を終了する。これにより、本来の処理によりファイル入出力が頻繁に行われている場合には情報処理装置１０のファイル入出力の処理能力を維持し、当該本来の処理を効率的に実行させることができる。
【００３４】
中央処理装置使用率検出部４９０は、障害発生判断部４４０により障害が発生したと判断されたことを条件として、例えば定期的に、対象プログラム３０を実行する情報処理装置１０の中央処理装置１０００の使用率を検出する。そして、トレース情報収集部４６０はトレース情報を収集している場合であっても、中央処理装置１０００の使用率が予め定められた基準の使用率を超えた場合には、そのトレース情報の収集を終了する。これにより、本来の処理により中央処理装置１０００の処理能力が必要とされている場合には中央処理装置１０００の処理能力を維持し、当該本来の処理を効率的に実行させることができる。
【００３５】
図５は、トレース情報収集システム４０がトレース情報の収集を開始する処理のフローチャートを示す。停止している対象プログラム３０が起動して稼動を開始すると（Ｓ５００）、まず、履歴記録部２０は、対象プログラム３０が稼動を開始した旨を履歴として記録する（Ｓ５１０）。次に、スコア算出部４３０は、対象プログラム３０に障害が発生した可能性を示すスコアを算出する（Ｓ５２０）。スコア算出部４３０により算出されたスコアが予め定められた基準値以下の場合には（Ｓ５３０：ＮＯ）、トレース情報収集システム４０は、対象プログラム３０による通常の処理を開始させ（Ｓ５８０）、その処理過程においてトレース情報を収集しない。
【００３６】
一方、障害発生判断部４４０は、スコア算出部４３０により算出されたスコアが予め定められた基準値よりも高いことを条件として（Ｓ５３０：ＹＥＳ）、対象プログラム３０の前回の稼動に障害が発生したと判断する（Ｓ５４０）。障害発生判断部４４０により障害が発生したと判断されたことに応答して、まず、動作パラメータ収集部４５０は、対象プログラム３０に与える動作パラメータを収集する（Ｓ５５０）。次に、トレース情報収集部４６０は、トレース情報を収集させるための設定変更を行う（Ｓ５６０）。また、平均稼動時間算出部４７０は、履歴記録部２０に記録された対象プログラム３０の稼動の履歴に基づいて、対象プログラム３０の稼動開始から停止までの平均稼動時間を算出する（Ｓ５７０）。そして、トレース情報収集システム４０は、対象プログラム３０による通常の処理を開始させ（Ｓ５８０）、トレース情報収集部４６０は、その処理過程においてトレース情報を収集する。
【００３７】
図６は、図５のＳ５２０における処理の詳細を示すフローチャートである。稼動停止時間比率算出部４００は、対象プログラム３０が稼動及び停止を繰り返す各々の繰り返し毎に、稼動停止時間比率を算出する（Ｓ６００）。次に、類似度算出部４１０は、各々の稼動停止時間比率の確率分布に基づいて、その標準偏差を算出する（Ｓ６１０）。
【００３８】
そして、類似度算出部４１０は、算出した標準偏差に基づいて、対象プログラム３０の前回の稼動及び停止における稼動停止時間比率の偏りを示す値を、動作パターンの類似度を示す指標値として算出する（Ｓ６２０）。例えば、類似度算出部４１０は、前回の稼動及び停止における稼動停止時間比率の偏差値を求め、前回以前の確率分布における偏差値の中央値からの差分の絶対値を求める。これに代えて、類似度算出部４１０は、前回の稼動及び停止における稼動停止時間比率の、前回以前の確率分布に対するカイ２乗検定値を求めてもよい。
【００３９】
スコア算出部４３０は、この値を、対象プログラム３０に障害が発生した可能性を示すスコアとする。この値は、対象プログラム３０が前回に稼動及び停止した動作パターンが、対象プログラム３０が前回以前に稼動及び停止した動作パターンに類似する程度を示す類似度を示すパラメータである。この値がより高い場合には、前回の稼動及び停止における稼動停止時間比率の偏りがより高くなるのであるから、類似度はより低くなる。即ち、スコア算出部４３０により算出されるスコアは、類似度算出部４１０により判断された類似度がより低い場合にはより高い値をとる。
これにより、障害発生判断部４４０は、類似度算出部４１０により算出された類似度が基準の類似度よりも低いことを条件として、対象プログラム３０の前回の稼動に障害が発生したと判断することができる。
【００４０】
続いて、稼動時間偏差値算出部４２０は、対象プログラム３０が稼動及び停止を繰り返す各々の繰り返しにおける稼動時間の確率分布に基づいて、その標準偏差を算出する（Ｓ６３０）。そして、稼動時間偏差値算出部４２０は、算出した標準偏差に基づいて、対象プログラム３０の前回の稼動における稼動時間の偏りを示す値を算出する（Ｓ６４０）。例えば、稼動時間偏差値算出部４２０は、前回の稼動時間の偏差値を求め、前回以前の稼動時間の確率分布における偏差値の中央値からの差分の絶対値を求めてもよい。そして、スコア算出部４３０は、求めた値をスコアに加算する。
これにより、類似度によっては障害の判断が困難な場合であっても、障害発生判断部４４０は、稼動時間の偏りを示す値が基準の値より高いことを条件として、当該障害が発生したと判断することができる。
【００４１】
続いて、スコア算出部４３０は、対象プログラム３０を前回停止させた停止手続が即時停止手続であるか否かを判断する（Ｓ６５０）。即時停止手続であれば（Ｓ６５０：ＹＥＳ）、スコア算出部４３０は、所定のポイントを上記のスコアに加点する（Ｓ６６０）。即ち、スコア算出部４３０により算出されるスコアは、対象プログラム３０を前回停止させた停止手続が即時停止手続である場合に、完了待停止手続である場合と比較してより高い値をとる。
これにより、類似度や稼動時間の偏りによっても障害の判断が困難な場合であっても、障害発生判断部４４０は、前回の停止手続が即時停止手続であることを条件として、当該障害が発生したと判断することができる。
【００４２】
更に、スコア算出部４３０は、その即時停止手続において中断した処理の数に応じたポイントをそのスコアに加点する（Ｓ６７０）。これは、並行して実行する処理の数が多い時には、これらの処理の複合的な要因で障害が発生する可能性が高まることが推測されるからである。これにより、停止手続の種類によっても障害の判断が困難な場合であっても、障害発生判断部４４０は、即時停止手続により中断した処理の数が基準の数より多いことを条件として当該障害が発生したと判断できる。
【００４３】
そして、スコア算出部４３０は、対象プログラム３０が前回停止してから稼動するまでに経過した停止時間を求め、その停止時間の１時間に対する逆数をそのスコアに乗じる（Ｓ６８０）。即ち、定時間が１時間未満の場合にはスコアが増加し、１時間以上の場合にはスコアが減少する。これにより、停止手続の種類等によっても障害の判断が困難な場合であっても、障害発生判断部４４０は、対象プログラム３０が前回停止してから稼動するまでの停止時間が基準の停止時間より短いことを条件として、障害が発生したと更に判断できる。
【００４４】
このように、本図に示す処理によれば、対象プログラム３０の稼動に障害が発生した可能性を示すスコアを、動作パターンの類似度、稼動時間の偏り、停止手続の種類、及び前回の停止時間に基づく簡単な計算により求めることができる。これにより、障害発生判断部４４０は、対象プログラム３０に障害が発生して早急に再起動が必要な緊急事態においても、再起動処理その他本来の処理を遅延させること無く、障害発生の有無を迅速に判断できる。
【００４５】
なお、スコアの算出には、本図に示した処理の全てが必須ではなく、本図に示す一部の処理を除外してスコアを算出してもよい。即ち例えば、スコア算出部４３０は、稼動停止時間比率の偏りと、停止手続が即時停止手続であるか否かとに基づいて、スコアを算出し、稼動時間の偏りをスコア算出の要素から除外してもよい。このような一部の処理を除外した算出方法も、本発明の技術的範囲に含まれる。
【００４６】
図７は、トレース情報収集システム４０がトレース情報の収集を終了する処理のフローチャートを示す。トレース情報収集システム４０は、トレース情報を収集している場合に、以下の処理を例えば定期的に行う。まず、トレース情報収集部４６０は、対象プログラム３０の稼動の開始から平均の稼動時間が経過した場合に（Ｓ７００：ＹＥＳ）、そのトレース情報の収集を終了する（Ｓ７３０）。
【００４７】
中央処理装置使用率検出部４９０は、対象プログラム３０を実行する情報処理装置１０の中央処理装置１０００の使用率を検出し、トレース情報収集部４６０は、その使用率が予め定められた基準の使用率を超えた場合に（Ｓ７１０：ＹＥＳ）、トレース情報の収集を終了する（Ｓ７３０）。ファイル入出力頻度検出部４８０は、対象プログラム３０を実行する当該情報処理装置１０のファイル入出力の頻度を検出し、トレース情報収集部４６０は、その頻度が予め定められた基準の頻度を超えた場合に（Ｓ７２０：ＹＥＳ）、トレース情報の収集を終了する（Ｓ７３０）。それ以外の場合にはトレース情報の収集を継続する（Ｓ７４０）。
【００４８】
なお、本図の例に代えて、トレース情報収集部４６０は、トレース情報の収集を開始してから予め定められた期間が経過した場合に一律にトレース情報の収集を終了してもよいし、利用者から指示を受けるまでトレース情報を収集し続けてもよい。これらの場合は、トレース情報の収集中に終了を判断するために何らかの処理を行う必要はなく、対象プログラム３０本来の処理をより効率的に実行させることができる。
【００４９】
以上、本実施例に係るトレース情報収集システム４０によれば、プログラムから明示的なエラーコード等が得られない場合であっても、プログラムの実行中に発生した障害を適切に検出して、障害解析に必要な情報を自動的に収集することができる。これにより、従来人手で行っていた設定変更を不要とし、運用中のコンピュータシステムにおける障害対応の効率をこれまでより向上させることができる。更に、障害の検出判断には様々なパラメータを用いることで、障害検出の精度を高めることができる。
【００５０】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００５１】
【図１】図１は、情報処理装置１０の機能を機能ブロックに分類して示す。
【図２】図２は、履歴記録部２０のデータ構造の一例を示す。
【図３】図３は、対象プログラム３０が稼動及び停止する動作パターンの一例を示す。
【図４】図４は、トレース情報収集システム４０の機能を機能ブロックに分類して示す。
【図５】図５は、トレース情報収集システム４０がトレース情報の収集を開始する処理のフローチャートを示す。
【図６】図６は、図５のＳ５２０における処理の詳細を示すフローチャートである。
【図７】図７は、トレース情報収集システム４０がトレース情報の収集を終了する処理のフローチャートを示す。
【符号の説明】
【００５２】
１０  情報処理装置
２０  履歴記録部
２５  トレース記録部
３０  対象プログラム
４０  トレース情報収集システム
４００  稼動停止時間比率算出部
４１０  類似度算出部
４２０  稼動時間偏差値算出部
４３０  スコア算出部
４４０  障害発生判断部
４５０  動作パラメータ収集部
４６０  トレース情報収集部
４７０  平均稼動時間算出部
４８０  ファイル入出力頻度検出部
４９０  中央処理装置使用率検出部
１０００  中央処理装置
【図１】
2006202076.tif 000003
【図２】
2006202076.tif 000004
【図３】
2006202076.tif 000005
【図４】
2006202076.tif 000006
【図５】
2006202076.tif 000007
【図６】
2006202076.tif 000008
【図７】
2006202076.tif 000009