(57)【要約】【課題】複数のコンポーネントを含む情報システムにおいて、障害発生の原因箇所の効率的な発見を支援する。【解決手段】本発明に係る支援システムは、コンポーネントをノードとし、コンポーネント同士が直接に依存する関係をリンクで表した依存グラフを記憶する記憶部と、障害の発生したコンポーネントの検出に応じ、当該コンポーネントにおいて生じたイベントのログを表示するログ表示部と、利用者の指示に応じ、障害の発生したコンポーネントに依存グラフ上で隣接するコンポーネントを、障害原因の候補となる候補コンポーネントとして選択する選択部と、選択した候補コンポーネントにおいて生じたイベントのログを、ログ表示部にさらに表示させる表示制御部とを備え、選択部は、さらに、利用者の指示に応じ、候補コンポーネントに依存グラフ上で隣接するコンポーネントを、既にログを表示させていないことを条件に、新たな候補コンポーネントとして選択する。【選択図】図２
2008065668.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンポーネントを含む情報システムにおいて、障害発生の原因箇所の発見を支援する支援システムであって、
コンポーネントをノードとし、コンポーネント同士が直接に依存する関係をリンクで表した依存グラフを記憶する記憶部と、
障害の発生したコンポーネントの検出に応じ、当該コンポーネントにおいて生じたイベントのログを表示するログ表示部と、
利用者の指示に応じ、障害の発生したコンポーネントに前記依存グラフ上で隣接するコンポーネントを、障害原因の候補となる候補コンポーネントとして選択する選択部と、
選択した前記候補コンポーネントにおいて生じたイベントのログを、前記ログ表示部にさらに表示させる表示制御部と
を備え、前記選択部は、さらに、利用者の指示に応じ、前記候補コンポーネントに前記依存グラフ上で隣接するコンポーネントを、既にログを表示させていないことを条件に、新たな候補コンポーネントとして選択する支援システム。
【請求項２】
前記情報システムは複数の情報処理装置を有し、
それぞれのコンポーネントは、何れかの情報処理装置のハードウェアの少なくとも一部、または、何れかの情報処理装置で動作するソフトウェアの少なくとも一部であり、
前記記憶部は、同一の情報処理装置で動作する複数のコンポーネントのうちの一のコンポーネントが他のコンポーネントの動作を前提に動作する関係を垂直方向のリンクで表し、かつ、それぞれが互いに異なる情報処理装置で動作する複数のコンポーネントが互いに通信する関係を水平方向のリンクで表した依存グラフを記憶し、
前記選択部は、障害原因を垂直方向に探索する指示に応じ、障害の発生した前記コンポーネントまたは既に選択した前記候補コンポーネントに前記依存グラフ上で垂直方向のリンクを介して隣接するコンポーネントを、新たな候補コンポーネントとして選択し、
障害原因を水平方向に探索する指示に応じ、障害の発生した前記コンポーネントまたは既に選択した前記候補コンポーネントに前記依存グラフ上で水平方向のリンクを介して隣接するコンポーネントを、新たな候補コンポーネントとして選択する
請求項１に記載の支援システム。
【請求項３】
前記選択部は、方向を指定しない探索の指示に応じ、水平方向または垂直方向のうち前回の指示と異なる方向のリンクを介して、既に選択した前記候補コンポーネントに前記依存グラフ上で隣接するコンポーネントを、新たな候補コンポーネントとして選択することにより、当該指示の毎に垂直方向の探索および水平方向の探索を交互に繰り返す
請求項２に記載の支援システム。
【請求項４】
前記選択部は、既に選択した前記候補コンポーネントに前記依存グラフ上で隣接するコンポーネントにおいて、障害の重大さを示す重大度が予め定められた基準値以上の障害が発生していないことを条件に、当該コンポーネントを新たな候補コンポーネントとして選択しない
請求項１に記載の支援システム。
【請求項５】
前記記憶部は、コンポーネント同士が互いに依存する関係を表すリンクを、リンクの種類を示す属性に対応付けて記憶し、
前記選択部は、前記依存グラフにおいて、障害の発生した前記コンポーネントまたは既に選択した前記候補コンポーネントに、発生した障害の種類に予め対応付けられた属性に対応するリンクを介して隣接するコンポーネントを、新たな候補コンポーネントとして選択する
請求項１に記載の支援システム。
【請求項６】
既に候補コンポーネントとして選択してイベントのログを表示したコンポーネントのうち、利用者に指定されたコンポーネントを、候補コンポーネントから除外する選択除外部を更に備え、
前記表示制御部は、候補コンポーネントから除外された前記コンポーネントのログを、前記ログ表示部の表示から除外する
請求項１に記載の支援システム。
【請求項７】
前記ログ表示部は、イベントのログを予め定められた期間毎に分割した複数の分割ログのそれぞれを、当該分割ログに記録された障害の重大度を示すシンボルによって表し、それぞれのシンボルをイベント発生順に配列して、コンポーネント毎に表示し、さらに、
利用者から受けたシンボルの指定に応じ、指定された当該シンボルとして表された分割ログを表示する
請求項１に記載の支援システム。
【請求項８】
既に候補コンポーネントとして選択してイベントのログを表示したコンポーネントのうち、利用者に指定されたコンポーネントを、候補コンポーネントから除外する選択除外部を更に備え、
前記表示制御部は、候補コンポーネント、候補コンポーネントとして選択されなかったコンポーネント、および、候補コンポーネントとして選択されてから候補コンポーネントから除外されたコンポーネントの順に優先して、前記ログ表示部にイベントのログを表示させる
請求項１に記載の支援システム。
【請求項９】
前記記憶部は、他のコンポーネントにおいて障害が発生したか否かを監視するプログラムである監視エージェントが、監視結果を収集する監視サーバプログラムに対し監視結果を送信する関係を表す監視用リンクを、他のリンクとは区別可能に表した依存グラフを記憶し、
前記選択部は、監視用リンクを介して障害原因を探索する指示に応じ、障害の発生したコンポーネントまたは候補コンポーネントを監視する監視エージェントと、前記依存グラフ上で前記監視用リンクを介して隣接するコンポーネントを候補コンポーネントとして選択する
請求項１に記載の支援システム。
【請求項１０】
複数のコンポーネントを含む情報システムにおいて、障害発生の原因箇所の発見を支援する方法であって、
コンポーネントをノードとし、コンポーネント同士が直接に依存する関係をリンクで表した依存グラフを記憶し、
障害の発生したコンポーネントの検出に応じ、当該コンポーネントにおいて生じたイベントのログを表示し、
利用者の指示に応じ、障害の発生したコンポーネントに前記依存グラフ上で隣接するコンポーネントを、障害原因の候補となる候補コンポーネントとして選択し、
選択した前記候補コンポーネントにおいて生じたイベントのログをさらに表示させ、
さらに、利用者の指示に応じ、前記候補コンポーネントに前記依存グラフ上で隣接するコンポーネントを、既にログを表示させていないことを条件に、新たな候補コンポーネントとして選択し、
選択した前記候補コンポーネントにおいて生じたイベントのログをさらに表示させる方法。
【請求項１１】
複数のコンポーネントを含む情報システムにおいて、障害発生の原因箇所の発見を支援する支援システムとして、情報処理装置を機能させるプログラムであって、
前記情報処理装置を、
コンポーネントをノードとし、コンポーネント同士が直接に依存する関係をリンクで表した依存グラフを記憶する記憶部と、
障害の発生したコンポーネントの検出に応じ、当該コンポーネントにおいて生じたイベントのログを表示するログ表示部と、
利用者の指示に応じ、障害の発生したコンポーネントに前記依存グラフ上で隣接するコンポーネントを、障害原因の候補となる候補コンポーネントとして選択する選択部と、
選択した前記候補コンポーネントにおいて生じたイベントのログを、前記ログ表示部にさらに表示させる表示制御部と
して機能させ、前記選択部は、さらに、利用者の指示に応じ、前記候補コンポーネントに前記依存グラフ上で隣接するコンポーネントを、既にログを表示させていないことを条件に、新たな候補コンポーネントとして選択するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害発生の原因箇所の発見を支援する技術に関する。特に、本発明は、複数のコンポーネントを含む情報システムにおいて、障害発生の原因となるコンポーネントの発見を支援する技術に関する。
【背景技術】
【０００２】
近年の情報システムは大規模かつ複雑であり、障害が発生してもその原因箇所の発見が困難な場合が多い。例えば、原因箇所を発見するための問題判別（Ｐｒｏｂｌｅｍ  Ｄｅｔｅｒｍｉｎａｔｉｏｎ）は、多くの専門家（ＳＭＥ：Ｓｕｂｊｅｃｔ  Ｍａｔｔｅｒ  Ｅｘｐｅｒｔ）による経験的知識や試行錯誤に依存している。専門家による問題判別のアプローチの一つとして、イベントログの解析が行われている。イベントログの解析は、例えば、障害の報告されたコンポーネントのイベントログを精査して、障害発生前後に発生したイベントのエラーメッセージの内容を調査することを内容とする。
【０００３】
しかしながら、大規模かつ複雑な情報システムにおいて、障害の報告されたコンポーネントと、その根本原因となるコンポーネントとは異なる場合が多い。したがって、障害の発生したコンポーネントの専門家は、そのコンポーネントに根本原因が無いことが分かると、他のコンポーネントの専門家に対し根本原因の調査を依頼する。依頼された専門家は、自己の担当するコンポーネントに根本原因が無いことが分かると、更に他の専門家に調査を依頼する。このように、原因箇所を発見するまでには、多くの専門家が相互に調査を依頼し合い、多くの時間が費やされる場合が多かった。
【０００４】
障害箇所の検出に関する参考技術として特許文献１を挙げる。特許文献１は、利用中のサービスに障害が発生した際に、ネットワーク依存グラフ上の依存関係を辿ることにより、障害の原因等となりうるサービスの集合を抽出することを内容とする（特許文献１の請求項１などを参照。）。そして、原因追究時にも正常動作しているサービスなどを当該集合から取り除くことで、障害箇所を含む範囲を徐々に絞り込んでいく（特許文献１の請求項１２などを参照。）。これにより、障害箇所を含むと推測される範囲をできる限り狭く限定することを目的とする（特許文献１の発明の効果の記載などを参照。）。
【特許文献１】特開平１１−２５９３３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術は、調査すべき範囲を、サービスが正常動作しているかどうかなど、現在の動作状況に基づいて絞り込む。しかしながら、近年の情報システムは継続的な運用が求められるところ、障害発生後直ちにシステムは再起動され、原因の追究開始までに既にシステムは正常動作している場合が多い。したがって、現在の動作状況を解析に用いるのは現実的ではない場合が多い。このような場合、原因追究に用いることができるのはイベントのログなど、過去に収集されたデータに限られるが、特許文献１ではそのようなログの活用については言及されていない。
【０００６】
また、特許文献１の技術は、初めに調査範囲を広く定めてそれを徐々に限定するアプローチを基本とするから、調査に参加する専門家の数は結果として非常に多くなる可能性がある。さらに、特許文献１の技術は、障害原因を調査すべき範囲を示すものであり、範囲が決定された後にその範囲内をどの様な順序で調査するべきかを指示することはできず、調査が効率的でない場合がある。
【０００７】
そこで本発明は、上記の課題を解決することのできる支援システム、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の１つの側面においては、複数のコンポーネントを含む情報システムにおいて、障害発生の原因箇所の発見を支援する支援システムであって、コンポーネントをノードとし、コンポーネント同士が直接に依存する関係をリンクで表した依存グラフを記憶する記憶部と、障害の発生したコンポーネントの検出に応じ、当該コンポーネントにおいて生じたイベントのログを表示するログ表示部と、利用者の指示に応じ、障害の発生したコンポーネントに依存グラフ上で隣接するコンポーネントを、障害原因の候補となる候補コンポーネントとして選択する選択部と、選択した候補コンポーネントにおいて生じたイベントのログを、ログ表示部にさらに表示させる表示制御部とを備え、選択部は、さらに、利用者の指示に応じ、候補コンポーネントに依存グラフ上で隣接するコンポーネントを、既にログを表示させていないことを条件に、新たな候補コンポーネントとして選択する支援システムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明を実施するための最良の形態】
【０００９】
以下、発明を実施するための最良の形態（以下、実施形態と称す）を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１０】
図１は、情報システム１０および支援システム２０の接続関係を示す。情報システム１０は、複数の情報処理装置、例えば、情報処理装置１００−１〜６を備える。情報処理装置１００−１〜６のそれぞれは、ハードウェアのコンポーネントおよびソフトウェアのコンポーネントによって構成されている。また、情報処理装置１００−１〜６は、電気通信回線を介して接続されており、相互に通信して処理をすすめる。なお、情報処理装置１００−１〜６のそれぞれは、互いに同一の大型汎用計算機上に設けられ、その一部ずつを使用して物理的に分割して、または時分割して使用する論理的な情報処理装置であってよい。即ち、本実施形態における情報処理装置とは、物理的な態様を問わず、情報システム１０の障害を検知し修復するシステム管理者にとって、他の装置とは独立にイベントログを取得でき、他の装置に対する障害対応とは独立に障害対応をすることができる装置をいう。
【００１１】
また、情報システム１０は、支援システム２０に接続されている。支援システム２０は、情報システム１０内のそれぞれのコンポーネントにおいて生じたイベントのログを収集する。また、支援システム２０は、情報システム１０内の何れかのコンポーネントにおいて発生した障害を検出する。例えば、支援システム２０は、情報システム１０内の障害モニタリングシステムから、重度の障害が発生した旨の警告を受け付けてもよい。
本実施形態に係る支援システム２０は、障害を検出した場合に、収集した各種のログを、障害との関連の強さの順に選択して表示することで、利用者による原因発見のための分析作業を効率化することを目的とする。
【００１２】
図２は、支援システム２０の機能構成を示す。支援システム２０は、依存グラフ記憶部２００と、障害検出部２１０と、ログ表示部２２０と、ログＤＢ２２５と、選択部２３０と、表示制御部２４０と、選択除外部２５０とを有する。依存グラフ記憶部２００は、コンポーネントをノードとし、コンポーネント同士が直接に依存する関係をリンクで表した依存グラフを記憶する。障害検出部２１０は、情報システム１０内の障害監視用サーバや障害監視エージェントから受けた警告に基づき、情報システム１０内で障害の発生したコンポーネントを検出する。ログ表示部２２０は、障害の発生したコンポーネントの検出に応じ、そのコンポーネントにおいて生じたイベントのログをログＤＢ２２５から読み出して利用者に対し表示する。ログＤＢ２２５は、障害の発生の有無に関わらず例えば定期的に情報システム１０から収集されたイベントのログを記憶している。
【００１３】
ログ表示部２２０は、障害の発生したコンポーネントのログを見た利用者から、さらに他のコンポーネントのログを表示する指示を受け付ける。選択部２３０は、利用者の指示に応じ、障害の発生したコンポーネントに依存グラフ上で隣接するコンポーネントを、障害原因の候補となる候補コンポーネントとして選択する。選択した候補コンポーネントを識別する情報は、表示制御部２４０に対し出力される。表示制御部２４０は、選択したその候補コンポーネントにおいて生じたイベントのログを、ログ表示部２２０にさらに表示させる。ログ表示部２２０は、候補コンポーネントのログを見た利用者から、さらに他のコンポーネントのログを表示する指示を受け付ける。選択部２３０は、利用者の指示に応じ、既に選択した候補コンポーネントに依存グラフ上で隣接するコンポーネントを、既にログを表示させていないことを条件に、新たな候補コンポーネントとして選択する。選択された新たな候補コンポーネントのログは、表示制御部２４０によってログ表示部２２０においてさらに表示される。
【００１４】
ログ表示部２２０は、候補コンポーネントから除外するべきコンポーネントの指定を利用者からさらに受け付けてもよい。この場合、選択除外部２５０は、既に候補コンポーネントとして選択してイベントのログを表示したコンポーネントのうち、利用者に指定されたコンポーネントを、候補コンポーネントから除外する。これを受けて、表示制御部２４０は、候補コンポーネントから除外されたコンポーネントのログを、ログ表示部２２０の表示から除外する。
【００１５】
図３ａは、依存グラフ記憶部２００に記憶されるデータの第１例を示す。依存グラフ記憶部２００に記憶される依存グラフにおいて、各ノードは、何れかの情報処理装置１００のハードウェアの少なくとも一部を構成するコンポーネント、または、何れかの情報処理装置１００において動作するソフトウェアの少なくとも一部を構成するコンポーネントを示す。より具体的には、各ノードは、例えば、何れかの情報処理装置１００のハードウェア、情報処理装置１００で動作するオペレーティングシステム、そのオペレーティングシステム上で動作するミドルウェア、および、そのミドルウェア上で動作するアプリケーションプログラムの何れかである。
【００１６】
そして、依存グラフ記憶部２００が記憶する依存グラフは、同一の情報処理装置１００で動作する複数のコンポーネントのうちの一のコンポーネントが他のコンポーネントの動作を前提に動作する関係を垂直方向のリンクで表す。具体的には、ノード３１０はアプリケーションプログラムを表し、ノード３２０はミドルウェアを表し、ノード３３０はオペレーティングシステムを表し、ノード３４０はハードウェアを表し、これらのノードは同一の情報処理装置１００で動作する。そして、ノード３１０によって表されるアプリケーションプログラムは、ノード３２０によって表されるミドルウェアにより起動されて動作するから、ノード３１０およびノード３２０は垂直方向のリンクで接続される。同様に、ミドルウェアとオペレーティングシステムとの間でデータが授受されるから、ノード３２０およびノード３３０は垂直方向のリンクで接続される。また、ノード３３０およびノード３４０についても同様に垂直方向のリンクで接続される。なお、図中では、ノード３２０から見て垂直方向の上側にはノード３１０のみが接続されているが、複数のアプリケーションプログラムが動作する場合には、ノード３２０から見て垂直方向の上側に複数のノードが接続されていてもよい。
【００１７】
このように、複数のコンポーネントのうちの一のコンポーネントが他のコンポーネントの動作を前提に動作する関係とは、例えば、一のコンポーネントおよび他のコンポーネントが処理の呼出先および呼出元となる関係、または、一のコンポーネントおよび他のコンポーネントがデータを授受する関係をいう。呼出元および呼出先となる関係とは、例えば、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）などの関数の呼出元および呼出先となる関係をいい、その関数の呼出に引数がパラメータとして与えられているか否かを問わない。また、一のコンポーネントが他のコンポーネントの動作を前提に動作する関係とは、例えば、コンポーネントと、そのコンポーネントを動作させる基盤環境となるコンポーネントとの関係であってもよい。例えば、アプリケーションプログラムとそのプログラムを動作させる基盤環境であるミドルウェアの関係である。
【００１８】
また、依存グラフ記憶部２００が記憶する依存グラフは、それぞれが互いに異なる情報処理装置１００で動作する複数のコンポーネントが互いに通信する関係を水平方向のリンクで表す。例えば、ノード３２０として表されたミドルウェアは、他の情報処理装置において動作する他のミドルウェアを表すノード３５０と通信するから、ノード３２０およびノード３５０は水平方向のリンクで接続される。同様に、ノード３２０は、さらに他の情報処理装置において動作する他のミドルウェアを表すノード３６０と、水平方向のリンクで接続される。ノード３２０によって表されるミドルウェアは、ノード３５０によって表されるミドルウェアを中継して、ノード３７０によって表されるミドルウェアとも通信しているが、直接の通信ではないのでノード３２０およびノード３７０はリンクで接続されない。
【００１９】
より詳細には、複数のコンポーネントが互いに通信する関係とは、例えば、あるコンポーネントがデータの送信先となる他のコンポーネントを指定して当該他のコンポーネントに対しデータを送信する関係をいう。これに代えて、複数のコンポーネントが互いに通信する関係とは、通信回線に接続された記憶装置を媒介とし、その記憶装置にデータを書き込むコンポーネントおよび書込んだそのデータを読み出すコンポーネントの関係であってもよい。この場合の記憶装置は、本実施形態に係る支援システム２０による障害検出の対象外であり、このような記憶装置を媒介としたデータの授受は、これら２つのコンポーネントが直接に通信する関係とみなす。さらに他の例として、複数のコンポーネントが互いに通信する関係とは、これらのコンポーネントが同一の大型汎用計算機上で動作する場合においては、これらのコンポーネントが共有のメモリ空間を媒介としてデータを授受する関係であってもよい。さらには、複数のコンポーネントが互いに通信する関係とは、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）において、異なる情報処理装置において動作するコンポーネント（この場合は、オペレーティングシステム）が、同一の記憶領域に対してアクセス可能となる関係であってもよい。
【００２０】
なお、本図では説明の都合上、水平方向のリンクは、ミドルウェアの階層に属するコンポーネント同士を接続するもののみを図示した。これに加えて、水平方向のリンクは、アプリケーションプログラムの階層に属するコンポーネント同士をさらに接続してよいし、ハードウェアの階層に属するコンポーネント同士をさらに接続してもよい。これらの接続は、例えば、ハードウェアの階層にあっては有線または無線による通信回線の接続を示し、ミドルウェアの階層にあっては情報の授受の他、リモートプロシジャーコールなどの呼び出し関係を示し、アプリケーションプログラムの階層にあってはアプリケーションプログラム間での情報の授受を示す。なお、アプリケーションプログラム間での情報の授受は、実際にはオペレーティングシステムに対するＡＰＩの呼出によって実現され、オペレーティングシステム間でデータが送受信されるが、このようなデータの送受信は、アプリケーションプログラム間の通信とみなし、オペレーティングシステム間の通信とはみなさない。一方で、オペレーティングシステム間の通信とは、オペレーティングシステムが自律的に他のオペレーティングシステムと通信することをいい、アプリケーションプログラムの要求による通信ではない。
以上、図３ａに示す依存グラフは、依存グラフ中のノードはコンポーネントを表し、依存グラフ中のリンクは、通信の送信元となるコンポーネントおよび送信先となるコンポーネントの関係、あるいは、データの出力元となるコンポーネントおよび出力先となるコンポーネントの関係を表している。
【００２１】
これに加えて、依存グラフ記憶部２００は、コンポーネント同士が互いに依存する関係を表すリンクを、リンクの種類を示す属性に対応付けて記憶してもよい。例えば、依存グラフ記憶部２００は、それぞれが互いに異なる情報処理装置１００で動作する複数のコンポーネントが互いに通信する関係を示すリンクを、通信の種類を示す属性に対応付けて記憶する。通信の種類を示す属性とは、例えば通信プロトコルなどであってもよいし、通信の頻度や転送されるデータ量であってもよい。さらに他の例として、依存グラフ記憶部２００は、無向リンクのみならず有向リンクを含む有向グラフを依存グラフとして記憶してもよい。有向リンクは、通信の方向や依存の方向を表す。即ち、ノードＡからノードＢにデータが送信されるがノードＢからノードＡにデータが送信されない場合には、ノードＡからノードＢに対する有向リンクが記憶される。また、ノードＡがノードＢの動作を前提に動作する場合には、ノードＡからノードＢに対する有向リンクが記憶される。動作の前提となる関係とは、例えば、プログラムとそのプログラムを動作させる基盤環境との関係をいう。具体的には、アプリケーションプログラムはそのプログラムを動作させる基盤環境であるミドルウェアをいう。この場合、選択部２３０は、ノードＡからノードＢに対する有向リンクが存在する場合には、ノードＡから見てノードＢは隣接関係にあるが、ノードＢから見てノードＡは隣接関係に無いと判断する。
【００２２】
図３ｂは、依存グラフ記憶部２００に記憶されるデータの第２例を示す。それぞれの情報処理装置１００においては、その情報処理装置１００で動作するアプリケーションプログラムの動作状態を監視し、障害が発生したか否かを監視させる目的で、動作監視用のプログラム（以下、監視エージェントと称す）が動作している場合がある。具体的には、本図中に示すように、アプリケーションプログラム３１０が動作する情報処理装置１００においては、その情報処理装置１００上で動作するアプリケーションプログラムの動作を監視するために、監視エージェント３２１が動作している。また、他のそれぞれの情報処理装置１００においては、監視エージェント３５１、監視エージェント３６１および監視エージェント３７１が動作している。
【００２３】
これらの監視エージェントは、他の情報処理装置１００で動作する監視サーバプログラム３９０に対し、当該監視サーバプログラムにおいて監視結果を収集させるために、監視結果を送信する。このような監視結果の送信関係は、依存グラフ記憶部２００において依存グラフ中の監視用リンクとして、他のリンクとは区別可能に記憶されてよい。このリンクを図３ｂにおいては点線で示す。この場合、好ましくは、選択部２３０は、利用者の指示に応じて、監視用リンクまたはその他のリンクの何れかを選択し、その一方のみを介して既に選択されている候補コンポーネントと隣接するコンポーネントを、候補コンポーネントとして選択する。これにより、監視処理や監視結果の通知処理自体の異常が原因で、通常のアプリケーションプログラムにおいて異常が発生したかのように判断された場合においても、異常の原因箇所を絞り込んで原因発見を効率化できる。
【００２４】
図４は、ログＤＢ２２５のデータ構造の一例を示す。ログＤＢ２２５は、コンポーネント毎に、そのコンポーネントから収集されたイベントのログを記憶している。例えば、ログＤＢ２２５は、コンポーネントの１つであるウェブアプリケーションサーバプログラムについて、そのウェブアプリケーションサーバプログラムを識別する番号７に対応付けて、そのアプリケーションサーバプログラムにおいて発生したイベントの発生時刻、そのイベントが障害を示す場合における障害の重大度、および、そのイベントの内容を自然言語で記述したメッセージを記憶する。一例として、このプログラムにおいて、２００６年６月１２日１０時２８分０秒には、ＸＸという処理の初期化が失敗しており、それを障害と見た場合の重大度は１００分の１０である。なお、ここでいう障害とは、障害検出部２１０によって検出される障害を含んでもよいが、障害検出部２１０によって検出される重大な障害よりも重大度が低く障害検出部２１０によっては検出されない障害を含んでよい。
【００２５】
図５は、ログ表示部２２０の表示例を示す。ログ表示部２２０は、トポロジー・ビュー５１０と、シーケンス・ビュー５２０と、テーブル・ビュー５３０と、指示ボタン５４０と、指示ボタン５５０と、指示ボタン５６０と、指示ボタン５７０と、指示ボタン５８０とを表示する。トポロジー・ビュー５１０は、依存グラフ記憶部２００に記憶されている依存グラフを表示する。表示した依存グラフにおいて、障害が検出されたコンポーネントを示すノードには斜線が付され、他のノードとは識別可能に表示される。また、既に選択された候補ノードにも斜線が付され、他のノードとは識別可能に表示される。シーケンス・ビュー５２０は、障害が検出されたコンポーネントおよび既に選択した候補コンポーネントについて、イベントのログのダイジェストを表示する。
【００２６】
具体的には、シーケンス・ビュー５２０は、イベントのログを予め定められた期間毎に分割した複数の分割ログのそれぞれを、当該分割ログに記録された障害の重大度を示すシンボルによって表し、それぞれのシンボルをイベントの発生順に配列して、コンポーネント毎に表示する。たとえば、ＨＴＴＰサーバプログラムのコンポーネントにおいて、該当期間内にはイベントが発生していないから、イベントの発生を示す矩形状のシンボルは表示されない。一方で、アプリケーションサーバプログラムのコンポーネントにおいて、該当期間の後半で重大度がやや高い障害が記録されているので、斜線の付された矩形状のシンボルが２つ記録されている。シンボルには、対応するログに記録された障害の重要度に応じた色彩や模様が付されてもよい。
【００２７】
テーブル・ビュー５３０は、シーケンス・ビュー５２０に表示されたシンボルの何れかが利用者から指定されると、指定されたそのシンボルとして表された分割ログの内容を表示する。表示されるログは、分割された期間、例えば１分や１時間分のログであり、その内容の具体例は図３を参照して説明したログの内容と同様である。
【００２８】
指示ボタン５４０、指示ボタン５５０、および指示ボタン５６０のそれぞれは、障害原因を探索する指示を利用者から受け付けるためのボタンである。指示ボタン５４０は、探索の方向を指定しないで支援システム２０の裁量で探索範囲を拡大する指示（ＩＥ：Ｉｎｔｅｌｌｉｇｅｎｔ  Ｅｘｐａｎｓｉｏｎ）を受け付けるためのボタンであり、指示ボタン５５０は、障害原因を垂直方向に探索する指示（ＶＥ：Ｖｅｒｔｉｃａｌ  Ｅｘｐａｎｓｉｏｎ）を受け付けるためのボタンであり、指示ボタン５６０は、障害原因を水平方向に探索する指示（ＨＥ：Ｈｏｒｉｚｏｎｔａｌ  Ｅｘｐａｎｓｉｏｎ）を受け付けるためのボタンである。例えば、選択部２３０は、指示ボタン５５０に対する指示に応じ、障害の発生したコンポーネントまたは既に選択した候補コンポーネントに依存グラフ上で垂直方向のリンクを介して隣接するコンポーネントを、新たな候補コンポーネントとして選択する。これを受けて、表示制御部２４０は、新たに選択されたその候補コンポーネントのログをシンボル化してシーケンス・ビュー５２０中に表示させる。
【００２９】
指示ボタン５７０は、指定したコンポーネントを候補コンポーネントから除外するための指示を受け付けるボタンである。例えば、利用者がトポロジー・ビュー５１０上であるノードを指定したうえで指示ボタン５７０を選択すると、選択除外部２５０は、指定されたそのノードによって表されるコンポーネントを候補コンポーネントから除外する。そして、表示制御部２４０は、除外されたその候補コンポーネントのログを、シーケンス・ビュー５２０およびテーブル・ビュー５３０の表示から除外する。
【００３０】
指示ボタン５８０は、監視用リンクを介して障害原因を探索する指示を受け付けるボタンである。例えば、利用者がトポロジー・ビュー５１０上であるノードを指定したうえで指示ボタン５８０を選択すると、選択部２３０は、そのノード（即ち、障害の発生したコンポーネントまたは既に選択した候補コンポーネントに相当）を監視する監視エージェントを選択する。この場合、トポロジー・ビュー５１０には、図３ｂに示した監視用リンクに基づく依存グラフが表示されてよい。そして、選択部２３０は、選択したその監視エージェントと、依存グラフ上で監視用リンクを介して隣接するコンポーネントを候補コンポーネントとして選択する。これにより、障害原因の追究過程で、監視用システムの障害が疑われる場合には、探索に用いる依存グラフのトポロジーを変化させることができる。
【００３１】
図６は、表示されるログの範囲を徐々に拡大させる処理のフローチャートを示す。障害検出部２１０は、情報システム１０内の障害モニタリングシステムから受けた警告に基づき、情報システム１０内で障害の発生したコンポーネントを検出する（Ｓ６００）。ログ表示部２２０は、障害の発生したコンポーネントの検出に応じ、そのコンポーネントにおいて生じたイベントのログをログＤＢ２２５から読み出して利用者に対し表示する（Ｓ６１０）。そして、ログ表示部２２０は、障害の発生したコンポーネントのログを見た利用者から、さらに他のコンポーネントのログを表示する指示を受け付ける。
【００３２】
受け付けた指示が、方向を指定しない探索の指示（ＩＥ）である場合に、選択部２３０は、前回の探索の方向が水平方向であったかを判断する（Ｓ６３０）。水平方向であったことを条件に（Ｓ６３０：ＹＥＳ）、選択部２３０は、前回の指示と異なる方向、即ち垂直方向のリンクを介して、既に選択した候補コンポーネントに依存グラフ上で隣接するコンポーネントを、新たな候補コンポーネントとして選択する（Ｓ６４０）。一方、水平方向でなかったことを条件に（Ｓ６３０：ＮＯ）、選択部２３０は、水平方向のリンクを介して、既に選択した候補コンポーネントに依存グラフ上で隣接するコンポーネントを、新たな候補コンポーネントとして選択する（Ｓ６５０）。前回の指示が無い場合、即ち初めての指示の場合には、選択部２３０は、垂直方向のリンクを介して隣接するコンポーネントを候補コンポーネントとすることが望ましい。同一の情報処理装置で動作するコンポーネントの方が他の情報処理装置のコンポーネントより関連が強い場合が多く、また、ログの分析作業も比較的簡便に行うことができるからである。
【００３３】
また、選択部２３０は、障害原因を垂直方向に探索する指示（ＶＥ）に応じ（Ｓ６６０：ＹＥＳ）、障害の発生したコンポーネントまたは既に選択した候補コンポーネントに依存グラフ上で垂直方向のリンクを介して隣接するコンポーネントを、新たな候補コンポーネントとして選択する（Ｓ６７０）。また、選択部２３０は、障害原因を水平方向に探索する指示（ＨＥ）に応じ（Ｓ６８０：ＹＥＳ）、障害の発生したコンポーネントまたは既に選択した候補コンポーネントに依存グラフ上で水平方向のリンクを介して隣接するコンポーネントを、新たな候補コンポーネントとして選択する（Ｓ６８５）。
【００３４】
次に、選択除外部２５０は、指定したコンポーネントを候補コンポーネントから除外する指示を受けたかを判断する（Ｓ６９０）。当該除外する指示を受けたことに応じ（Ｓ６９０：ＹＥＳ）、選択除外部２５０は、利用者に指定されたそのコンポーネントを候補コンポーネントから除外し、表示制御部２４０は、除外されたそのコンポーネントのログをログ表示部２２０の表示から除外する（Ｓ６９５）。
【００３５】
図７は、水平方向に探索範囲を拡大する処理のフローチャートを示す。Ｓ６５０またはＳ６８０において、まず、選択部２３０は、障害の発生したコンポーネントまたは既に選択した候補コンポーネントに依存グラフ上で水平方向のリンクを介して隣接する全てのコンポーネントを選択する（Ｓ７００）。選択部２３０は、例えばマウスでクリックするなどして利用者から予め選択された候補コンポーネントについてのみ、その候補コンポーネントに隣接するコンポーネントを選択してもよいし、全ての候補コンポーネントについてその何れかに隣接するコンポーネントを選択してもよい。
【００３６】
また、あるコンポーネントに隣接するコンポーネントは、リンクに対応付けて依存グラフ記憶部２００に記憶された属性、または、リンクが有向リンクであればその方向に基づいて判断されてもよい。即ち例えば、選択部２３０は、障害検出部２１０によって検出された障害が、ある通信プロトコル（例えばＴＣＰ／ＩＰプロトコル）による通信の障害である場合には、その通信プロトコルを属性とするリンクを介して隣接するコンポーネントのみを選択してもよい。また、選択部２３０は、あるコンポーネントから他のコンポーネントに対して有向リンクが接続されている場合には、当該コンポーネントに隣接するコンポーネントとして当該他のコンポーネントを選択し、当該他のコンポーネントに隣接するコンポーネントとして当該コンポーネントは選択しない。このように、リンクに対応付けられた属性や方向を有効に利用すれば、障害原因の探索範囲をより狭めることができ、その後の解析作業の負担を軽減できる。
【００３７】
そして、選択部２３０は、選択したそれぞれのコンポーネントについて、既にそのコンポーネントのログを表示させたか否かを判断する（Ｓ７１０）。未だ表示していないことを条件に（Ｓ７１０：ＮＯ）、選択部２３０は、そのコンポーネントを新たな候補コンポーネントとして選択する（Ｓ７２０）。
なお、未だログを表示させていない場合であっても、障害の重大さを示す重大度が予め定められた基準値以上の障害が発生していない場合には、選択部２３０は、そのコンポーネントを新たな候補コンポーネントとして選択しなくてもよい。例えば、選択部２３０は、隣接するそれぞれのコンポーネントのログをログＤＢ２２５から読み出したうえで、それぞれのログに記録されたイベントに対応する障害の重要度を読み出す。そして、選択部２３０は、あるコンポーネントについて読み出したそれぞれのイベントの重要度が何れも基準値以下であれば、そのコンポーネントを候補コンポーネントとして選択しない。軽微な障害ですら発生していないコンポーネントは、障害の根本原因とはなりにくいからである。
【００３８】
そして、隣接するコンポーネントの全てについて判断が完了すれば（Ｓ７３０：ＹＥＳ）、表示制御部２４０は、新たに選択した候補コンポーネントにおいて生じたイベントのログを、ログＤＢ２２５から読み出して、ログ表示部２２０にさらに表示する（Ｓ７４０）。判断の終了していないコンポーネントがあれば（Ｓ７３０：ＮＯ）、選択部２３０は、Ｓ７１０に処理を戻す。
【００３９】
図８は、垂直方向に探索範囲を拡大する処理のフローチャートを示す。Ｓ６４０またはＳ６７０において、まず、選択部２３０は、障害の発生したコンポーネントまたは既に選択した候補コンポーネントに依存グラフ上で垂直方向のリンクを介して隣接する全てのコンポーネントを選択する（Ｓ８００）。選択部２３０は、例えばマウスでクリックするなどして利用者から予め選択された候補コンポーネントについてのみ、その候補コンポーネントに隣接するコンポーネントを選択してもよいし、全ての候補コンポーネントについてその何れかに隣接するコンポーネントを選択してもよい。
【００４０】
そして、選択部２３０は、選択したそれぞれのコンポーネントについて、既にそのコンポーネントのログを表示させたか否かを判断する（Ｓ８１０）。未だ表示していないことを条件に（Ｓ８１０：ＮＯ）、選択部２３０は、そのコンポーネントを新たな候補コンポーネントとして選択する（Ｓ８２０）。そして、隣接するコンポーネントの全てについて判断が完了すれば（Ｓ８３０：ＹＥＳ）、表示制御部２４０は、新たに選択した候補コンポーネントにおいて生じたイベントのログを、ログＤＢ２２５から読み出して、ログ表示部２２０にさらに表示する（Ｓ８４０）。判断の終了していないコンポーネントがあれば（Ｓ８３０：ＮＯ）、選択部２３０は、Ｓ８１０に処理を戻す。
【００４１】
以上、図１から図８までを参照して説明したように、本実施形態に係る支援システム２０によれば、コンポーネント同士の依存関係を３次元構造に視覚化して利用者に提示したうえで、垂直方向の探索および水平方向の探索を区別して指定させることができる。また、ログを表示するコンポーネントの範囲は、障害の発生したコンポーネントを中心として利用者の指示に応じ徐々に拡大させることができる。また、選択されたコンポーネントのログは、期間毎に分割されシンボル化されて時系列に配列されて表示される。これにより、利用者は、コンポーネント同士の関係を水平方向および垂直方向の依存関係に整理して認識し、ログの参照順序の指針とすることができる。また、原因追究の段階に応じ必要となった情報を必要となったときに順次追加して参照することができる。
【００４２】
図９は、本実施形態の変形例におけるログ表示部２２０の表示例を示す。本例は、図５に示す表示例の変形として、利用者の指示に基づき各コンポーネントに優先度を付して表示する例を示す。具体的には、表示制御部２４０は、既に選択された候補コンポーネント、候補コンポーネントとして選択されなかったコンポーネント、および、候補コンポーネントとして選択されてから候補コンポーネントから除外されたコンポーネントの順に優先して、例えば左側から順に配列してログ表示部２２０に表示させる。具体的には、ＨＴＴＰサーバプログラム（ＨＴＴＰサーバ）およびウェブアプリケーションサーバプログラム（ＡＰサーバ）は、候補コンポーネントとして選択されているので、表示制御部２４０は、これらのコンポーネントのログを示すシンボルを、画面左側に分類して表示する。他方、ＤＢサーバプログラム１（ＤＢサーバ１）およびＤＢサーバプログラム２（ＤＢサーバ２）は、候補コンポーネントとして選択されなかったので、表示制御部２４０は、これらのコンポーネントのログを示すシンボルを、画面中央に分類して、２番目に優先して表示する。そして、ＤＢサーバプログラム３（ＤＢサーバ３）は、候補コンポーネントとして選択されてから除外されたので、表示制御部２４０は、このコンポーネントのログを示すシンボルを、画面右側に分類して、３番目に優先して表示する。このように、ログまたはそのシンボルは、利用者の指定に基づく優先度に従って分類されて表示されてもよい。このような表示によれば、原因発見の上で重要なログを区別して表示しつつも、候補から一旦除外され重要度の低いコンポーネントのログも画面上に表示させることができる。
【００４３】
図１０は、支援システム２０として機能する情報処理装置９００のハードウェア構成の一例を示す。情報処理装置９００は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。
【００４４】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００４５】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１０４０は、情報処理装置９００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。
【００４６】
また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＲＯＭ１０１０は、情報処理装置９００の起動時にＣＰＵ１０００が実行するブートプログラムや、情報処理装置９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００４７】
情報処理装置９００に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出され情報処理装置９００にインストールされて実行される。プログラムが情報処理装置９００等に働きかけて行わせる動作は、図１から図９において説明した支援システム２０における動作と同一であるから、説明を省略する。
【００４８】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置９００に提供してもよい。
【００４９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００５０】
【図１】図１は、情報システム１０および支援システム２０の接続関係を示す。
【図２】図２は、支援システム２０の機能構成を示す。
【図３ａ】図３ａは、依存グラフ記憶部２００に記憶されるデータの第１例を示す。
【図３ｂ】図３ｂは、依存グラフ記憶部２００に記憶されるデータの第２例を示す。
【図４】図４は、ログＤＢ２２５のデータ構造の一例を示す。
【図５】図５は、ログ表示部２２０の表示例を示す。
【図６】図６は、表示されるログの範囲を徐々に拡大させる処理のフローチャートを示す。
【図７】図７は、水平方向に探索範囲を拡大する処理のフローチャートを示す。
【図８】図８は、垂直方向に探索範囲を拡大する処理のフローチャートを示す。
【図９】図９は、本実施形態の変形例におけるログ表示部２２０の表示例を示す。
【図１０】図１０は、支援システム２０として機能する情報処理装置９００のハードウェア構成の一例を示す。
【符号の説明】
【００５１】
１０  情報システム
２０  支援システム
１００  情報処理装置
２００  依存グラフ記憶部
２１０  障害検出部
２２０  ログ表示部
２２５  ログＤＢ
２３０  選択部
２４０  表示制御部
２５０  選択除外部
３１０  ノード
３２０  ノード
３２１  ノード
３３０  ノード
３４０  ノード
３５０  ノード
３５１  ノード
３６０  ノード
３６１  ノード
３７０  ノード
３７１  ノード
３９０  ノード
５１０  トポロジー・ビュー
５２０  シーケンス・ビュー
５３０  テーブル・ビュー
５４０  指示ボタン
５５０  指示ボタン
５６０  指示ボタン
５７０  指示ボタン
５８０  指示ボタン
９００  情報処理装置
【図１】
2008065668.tif 000003
【図２】
2008065668.tif 000004
【図３ａ】
2008065668.tif 000005
【図３ｂ】
2008065668.tif 000006
【図４】
2008065668.tif 000007
【図５】
2008065668.tif 000008
【図６】
2008065668.tif 000009
【図７】
2008065668.tif 000010
【図８】
2008065668.tif 000011
【図９】
2008065668.tif 000012
【図１０】
2008065668.tif 000013