(57)【特許請求の範囲】
【請求項１】
障害情報管理装置における障害情報管理方法において、
前記障害情報管理装置は、
プログラム解析でモジュール関連情報を格納するモジュール呼び出し階層テーブルと、障害管理情報を格納する障害管理テーブルと、障害伝播ルートと発生回数を記録するモジュール間呼び出し回数テーブル、モジュール呼び出し回数テーブルを具備し、
入力部から取得した現象モジュールをキーとして前記モジュール呼び出し階層テーブルから関連モジュールを抽出し、
現象モジュールから各モジュールまでの呼び出し関係を作成し、
前記各モジュールにおいて、モジュールをキーとして前記モジュール呼び出し回数テーブルより呼び出し回数情報を取得し、
呼び出し関係において、呼び出し先と呼び出し元をキーとして前記モジュール間呼び出し回数テーブルより呼び出し回数情報を取得し、
モジュールが障害になる確率かける現象モジュールからそのモジュールまで伝播する確率により原因推測値を算出することで、原因推測値から原因モジュールを特定し、原因箇所を特定する、
ことを特徴とする障害情報管理方法。
【請求項２】
障害情報を管理する装置において、
制御部と、入力部と、プログラム解析でモジュール関連情報を格納するモジュール呼び出し階層テーブルと、障害管理情報を格納する障害管理テーブルと、障害伝播ルートと発生回数を記録するモジュール間呼び出し回数テーブル、モジュール呼び出し回数テーブルを具備し、
前記制御部は、
前記入力部から取得した現象モジュールをキーとして前記モジュール呼び出し階層テーブルから関連モジュールを抽出し、
現象モジュールから各モジュールまでの呼び出し関係を作成し、
前記各モジュールにおいて、モジュールをキーとして前記モジュール呼び出し回数テーブルより呼び出し回数情報を取得し、
呼び出し関係において、呼び出し先と呼び出し元をキーとして前記モジュール間呼び出し回数テーブルより呼び出し回数情報を取得し、
モジュールが障害になる確率かける現象モジュールからそのモジュールまで伝播する確率により原因推測値を算出することで、原因推測値から原因モジュールを特定する、
ことを特徴とする障害情報管理装置。
【請求項３】
コンピュータを制御して、請求項１に記載の障害情報管理方法を実行するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害情報管理方法これを実施する障害情報管理装置、プログラムに関する。
【背景技術】
【０００２】
システム運用の際に、多数の障害発生した場合、その障害が他の障害と同一の原因による可能性がある。しかし、各々の障害を調査しないと原因がわからないため、無駄な時間がかかってしまう。
【０００３】
障害の現象、原因、対処内容、ログ情報を障害票として記述し、記述上の類似性から、同じような原因の可能性がある障害をシステムが自動的に検出することで、類似障害の調査効率を上げる方法が知られている（例えば、特許文献１、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２５１２９５号公報
【特許文献２】特開２００６−９９２４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１に開示の技術では、現象、原因、対処内容を着目し、キーワードが似ている障害情報が提示できる。しかし、同じ現象でも人によって文章表現が異なる場合があり、キーワードの検索で似ている障害情報を検出できないことがある。また、これに対し、上記特許文献２に開示の技術では、ログ情報を着目し、ログ情報が似ている障害情報を提示し、検索精度が向上させた。しかし、原因箇所が同一の場合でも見かけの現象、ログ情報が違って見えることがあり、このような場合にはキーワードの検索やログ情報の類似判定では同一原因の障害情報の検出はできない。
【０００６】
本発明の目的は、キーワードによる検索やログ情報の類似判定以外の方法で、原因箇所が同一の障害の検出を可能にすることで、調査効率を向上させることである。
【課題を解決するための手段】
【０００７】
上記課題を解決するための代表的な一例は次の通りである。すなわち、本発明は、障害情報管理装置における障害情報管理方法である。
【０００８】
前記障害情報管理装置は、プログラム解析でモジュール関連情報を格納するモジュール呼び出し階層テーブルと、障害管理情報を格納する障害管理テーブルと、障害伝播ルートと発生回数を記録するモジュール間呼び出し回数テーブル、モジュール呼び出し回数テーブルを具備する。そして、障害情報管理装置により、入力部から取得した現象モジュールをキーとして前記モジュール呼び出し階層テーブルから関連モジュールを抽出し、現象モジュールから各モジュールまでの呼び出し関係を作成し、前記各モジュールにおいて、モジュールをキーとして前記モジュール呼び出し回数テーブルより呼び出し回数情報を取得し、
呼び出し関係において、呼び出し先と呼び出し元をキーとして前記モジュール間呼び出し回数テーブルより呼び出し回数情報を取得し、モジュールが障害になる確率かける現象モジュールからそのモジュールまで伝播する確率により原因推測値を算出することで、原因推測値から原因モジュールを特定し、原因箇所を特定する、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、障害発生時、現象モジュールから原因モジュールを推測することで、原因箇所が同一の既知の障害を抽出することができ、障害調査の効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】障害情報管理装置１のハードウェア構成例を示す図である。
【図２】モジュール関連とモジュールの呼び出し回数の概念を示す図である。
【図３】障害情報管理装置１が具備する障害情報管理テーブル１１４のデータ構成例を示す図である。
【図４】障害情報管理装置１が具備するモジュール呼び出し階層テーブル１１５のデータ構成例を示す図である。
【図５】障害情報管理装置１が具備するモジュール間呼び出し回数テーブル１１６のデータ構成例を示す図である。
【図６】障害情報管理装置１が具備するモジュール呼び出し回数テーブル１１７のデータ構成例を示す図である。
【図７】障害情報管理装置１が具備するモジュール呼び出し階層解析機能１１１の処理を示すフローチャートである。
【図８】障害情報管理装置１が具備する原因モジュール推測機能１１２の処理を示すフローチャートである。
【図９】障害情報管理装置１が具備する原因モジュール推測の処理を示す図である。
【図１０】障害情報管理装置１が具備する障害情報管理機能１１３の処理を示すフローチャートである。
【図１１】障害情報管理装置１の表示部１０２に表示されるメニュー画面例を示す図である。
【図１２】障害情報管理装置１の表示部１０２に表示されるモジュール呼び出し階層解析機能画面例を示す図である。
【図１３】障害情報管理装置１の表示部１０２に表示される原因モジュール推測機能画面例を示す図である。
【図１４】障害情報管理装置１の表示部１０２に表示される障害情報管理機能画面例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施例について、図面を参照して詳細に説明する。
【００１２】
図１は、本実施例に係わる障害情報管理装置１のハードウェア構成例を示す図である。障害情報管理装置１は、記憶部１０１、表示部１０２と、入力部１０３と、制御部１０４とを具備する。各部は、バス（ＢＵＳ）によって接続されている。記憶部１０１には、モジュール呼び出し階層解析機能１１１、原因モジュール推測機能１１２及び障害情報管理機能１１３からなるプログラム１１０と、モジュール呼び出し階層テーブル１１４、障害情報管理テーブル１１５、モジュール間呼び出し回数テーブル１１６及びモジュール呼び出し回数テーブル１１７が格納されている。プログラム１１０は、制御部１０４により記憶部１０１のプログラム格納領域１１８から図示していないメモリにロードされ実行される。
【００１３】
図２は、モジュール関連とモジュールの呼び出し回数の概念を示す図である。
【００１４】
モジュール２０１は、ある機能を実現するプログラム（今回の例ではP0001とする）であり、他のモジュール（今回の例ではF0001とする）を呼び出す機能を有する。この呼び出し関係は実線矢印２０３で表現する。この関連はソースの解析によって生成する。モジュール呼び出し回数２０２は、すべてのモジュールごとに設けたカウンタである。障害発生時は現象モジュールから原因モジュールまで確定したルート上にあるすべてのモジュールの呼び出し回数に１を加算する。またモジュール間呼び出し回数２０４は、呼び出し関係のある２モジュール間に設けたカウンタである。障害発生時は現象モジュールから原因モジュール間まで確定したルート上のすべての2モジュール間のモジュール間呼び出し回数に１を加算する。図の例で現象モジュールP0001で障害が発生し、原因モジュールはD0001の場合、ルート（P0001−F0001−D0001）に対して、モジュール（P0001、F0001、D0001）のモジュール呼び出し回数２０２に１を加算し、2モジュール間（P0001−F0001、F0001−D0001）のモジュール間呼び出し回数２０４に１を加算する。
【００１５】
図３は、障害情報管理装置１が具備するモジュール呼び出し階層テーブル１１４を示す図である。
【００１６】
モジュール呼び出し階層テーブル１１４は、ソース解析によってモジュール呼び出し関係を解析した結果を格納する。2モジュール間の呼び出し関係の呼び出し元を呼び出し元３０２に格納し、呼び出し先を呼び出し先３０３に格納する。通番３０１には、モジュール呼び出し階層テーブル１１４にレコードを追加する度に値を採番し、格納する。
【００１７】
図４は、障害情報管理装置１が具備する障害情報管理テーブルを示す示す図である。
【００１８】
障害情報管理テーブル１１５は、障害情報管理時に利用者により入力部１０３を用いて入力された現象モジュール、現象内容、原因内容および原因モジュールおよび対策内容を格納するテーブルであり、障害情報管理機能１１３が実行された際に更新される。図５に示すように、障害情報管理テーブル１１５は、通番４０１と、障害ID４０２と、現象モジュール４０３と、原因内容４０４と、原因モジュール４０５と、対策内容４０６とをそれぞれ対応付けて記憶する。ここで、通番４０１には、障害情報管理テーブル１１５にレコードが追加される度に採番された値が格納される。障害ID４０２には、障害情報管理テーブル１１５にレコードが追加される度に障害識別子と採番されたちから生成したIDが格納される。現象モジュール４０３には、障害情報管理機能１１３の実行時に利用者により入力部１０３を用いて入力された現象モジュールが格納される。原因内容４０４には、障害情報管理機能１１３の実行時に利用者により入力部１０３を用いて入力された原因が格納される。原因モジュール４０５には、障害情報管理機能１１２の実行時に利用者により入力部１０３を用いて入力された原因モジュールが格納される。対策内容４０６には、障害情報管理機能１１３の実行時に利用者により入力部１０３を用いて入力された対策情報が格納される。
【００１９】
図５は、障害情報管理装置１が具備するモジュール間呼び出し回数テーブル１１６のデータ構成例を示す図である。
【００２０】
モジュール間呼び出し回数テーブル１１６は、モジュール間呼び出し回数５０４を格納するテーブルである。モジュール間呼び出し回数５０４は呼び出し元と呼び出し先で一意に特定するため、呼び出し元を呼び出し元５０２、呼び出し先を呼び出し先５０３に格納する。呼び出し回数は呼び出し回数５０４に格納する。通番５０１には、モジュール間呼び出し回数テーブル１１６にレコードを追加する度に値を採番し、格納する。
【００２１】
図６は、障害情報管理装置１が具備するモジュール呼び出し回数テーブル１１７のデータ構成例を示す図である。
【００２２】
モジュール呼び出し回数テーブル１１７は、モジュール呼び出し回数６０３を格納するテーブルである。モジュール呼び出し回数６０３はモジュールごとに管理する回数のため、当該モジュールをモジュール６０２に格納する。呼び出し回数は呼び出し回数６０３に格納する。通番６０１には、モジュール呼び出し回数テーブル１１７にレコードを追加する度に値を採番し、格納する。
【００２３】
図７は、障害情報管理装置１が具備するモジュール呼び出し階層解析機能１１１の処理を示すフローチャートである。
【００２４】
モジュール呼び出し階層解析機能１１１は、利用者により入力部１０３を用いて図１１に示すメニュー画面でモジュール呼び出し階層解析機能が選択されることで起動し（Ｓ７０１）、図１２に示すモジュール呼び出し階層解析機能画面を表示する（Ｓ７０２）。利用者により入力部１０３を用いてソースのパス（今回の例ではC:\source\とする）を指定するか、利用者により入力部１０３を用いてモジュール解析機能画面の参照ボタンが押下されることで、ソースのパスを指定し、利用者により入力部１０３を用いてモジュール解析機能画面の実行ボタンが押下されることで、モジュール解析を実行する（Ｓ７０３）。すべてのモジュールを解析後、各モジュール間の呼び出し関係の呼び出し元と呼び出し先（たとえば図２を解析後、モジュールの呼び出し関係はP0001−F0001、F0001−D0001、P0002−F0001、P0003−F0002、F0002−D0001、F0002−D0002、F0002−D0003となる）をモジュール呼び出し階層テーブル１１４に格納する（Ｓ７０４）。
【００２５】
図８は障害情報管理装置１が具備する原因モジュール推測機能１１２の処理を示すフローチャートである。
【００２６】
原因モジュール推測機能１１２は、利用者により入力部１０３を用いて図１１に示すメニュー画面で原因モジュール推測機能が選択されることで起動し（Ｓ８０１）、図１３に示す原因モジュール推測機能画面を表示する（Ｓ８０２）。推測ボタン１３０２を押下することによって、原因モジュール推測機能を実行される。まず利用者により入力部１０３を用いて原因モジュール推測機能画面に入力された現象モジュール１３０１（今回の例ではP0001（９０１）とする）を取得する（Ｓ８０３）。前記の現象モジュールをキーにしてモジュール呼び出し階層テーブル１１４の呼び出し元３０２を検索し、該当レコードの呼び出し先３０３を抽出する。次に前記抽出したすべての呼び出し先３０３をキーとして、前記処理を繰り返すことで、次の呼び出し先を抽出する。前記処理により現象モジュールから到達できるすべてのモジュール（今回の例ではP0001（９０１）、F0001（９０３）、F0002（９０７）、D0001（９０５）となる）を取得し（Ｓ８０４）、メモリに格納する。次に、前記の各モジュールに対し、モジュール呼び出し回数テーブル１１７のモジュール６０２をキーに検索し、該当レコードの呼び出し回数６０３を呼び出し回数（今回の例ではP0001（９０１）の呼び出し回数を４、F0001（９０３）の呼び出し回数を３、F0002（９０７）の呼び出し回数を２、D0001（９０５）の呼び出し回数を２とする）として取得した数値をメモリに格納する。前記の各モジュールに対し、モジュール間呼び出し回数テーブル１１６の呼び出し元５０２をキーに検索し、該当レコードの呼び出し回数５０４を抽出し、モジュール間呼び出し回数（今回の例ではP0001−F0001（９０２）は２、F0001−D0001（９０４）は１、P0001−F0002（９０６）は１、F0002−D0001（９０８）は１とする）をメモリに格納する。次に、前記処理で抽出したすべてのモジュールに対して式９０６「（モジュール呼び出し回数−Σモジュールが呼び出し元となるモジュール間呼び出し回数）／（モジュール呼び出し回数）」を参照し、ルート停止確率を計算し（Ｓ８０５）、メモリに格納する（今回の例ではP0001（９０１）の障害確率を（４−２−１）／４＝１／４、F0001（９０３）の障害確率を（３−１）／３＝２／３、F0002（９０７）の障害確率を（２−１）／２＝１／２、D0001（９０５）の障害確立を（２−０）／２＝１となる）。同様に抽出したモジュールを呼び出し元とするすべてのモジュール間において、式９０７「モジュール間呼び出し回数／呼び出し元のモジュール呼び出し回数」を参照し、ルート伝播確率を計算し（Ｓ８０６）、メモリに格納する（今回の例ではP0001−F0001（９０２）のルート伝播確率を２／４＝１／２、F0001−D0001（９０４）のルート伝播確率を１／３、P0001−F0002（９０６）のルート伝播確率を（２−１）／２＝１／２、F0002−D0001（９０８）のルート伝播確率を１／２となる）。前記処理の抽出した各モジュールに対して以下の処理を実施する（Ｓ８０７〜Ｓ８１１）。抽出したモジュールより1つを取り出す（Ｓ８０７）（例えば、これをD0001（９０５）とする）。現象モジュールから到達できるすべてのルートを作成し（Ｓ８０８）、メモリに格納する（今回の現象モジュールP0001（９０１）に対してD0001に到達するすべてのルートを作成すると、P0001−F0001−D0001、P0001−F0002−D0001となる）。次に、前記処理で抽出した各ルートに対して以下の処理を実施する（Ｓ８０９〜Ｓ８１０）。抽出したルートより1つを取り出す（Ｓ８０９）（例えば、P0001−F0001−D0001とする）。式９０８「（現象モジュールから各モジュールまで経由したすべてのモジュールのルート伝播確率の積）×（モジュールのルート停止確率）」を参照し、ルートに沿ったモジュールの原因推測値を計算し（Ｓ８１０）、メモリに格納する（今回の例ではP0001−F0001−D0001の障害確率を（１／２）×（１／３）×（２−０）／２＝１／６となる）。前記すべてのルートで計算したモジュールの原因推測値を加算し（Ｓ８１１）、メモリに格納する（たとえばD0001（９０５）に対して、ルートP0001 −F0001−D0001に沿った原因推測値は１／６、ルートP0001 −F0002−D0001に沿った原因推測値は１／８、最終にD0001 の原因推測値は１／６＋１／８＝７／２４になる）。他のモジュールも同様に計算する（Ｓ８０７〜Ｓ８１１）（P0001は１／４、F0001は１／３、F0002は１／８となる）。前記すべてのモジュールに対し、０より大きいモジュールの原因推測値を降順からソートした結果（今回はF0001、D0001、P0001、F0002の順になる）をメモリに格納する。前記格納したすべてのモジュールに対して以下の処理を実施する。障害情報管理テーブル１１５に対して、前記格納した原因モジュールをキーとして検索し、該当レコード障害ID１３０４、現象モジュール１３０５、現象内容１３０６、原因内容１３０７、原因モジュール１３０８の情報を抽出し、メモリに格納する。前記実施した結果をメモリから取得し、原因モジュール推測結果一覧を図１３に示すモジュール推測機能画面に表示する（Ｓ８１２）。
【００２７】
図１０は障害情報管理装置１が具備する障害情報管理機能１１３の処理を示すフローチャートである。
【００２８】
障害情報管理機能１１２は、利用者により入力部１０３を用いて図１１に示すメニュー画面で障害情報管理機能が選択されることで起動し（Ｓ１００１）、図１４に示す障害情報管理機能画面を表示する（Ｓ１００２）。利用者により入力部１０３を用いて障害情報管理機能画面に入力された現象モジュール１４０２、現象内容１４０４、原因内容１４０４、原因モジュール１４０５及び対策内容１４０６を取得し（Ｓ１００４）、登録ボタン１４０９を押下することによって、前記取得した現象モジュール１４０２、現象内容１４０３、原因内容１４０４、原因モジュール１４０５及び対策内容１４０６とを、それぞれ対応付けて、障害情報管理テーブル１１５に格納する（Ｓ１００５）。
【００２９】
次に、前記の障害情報管理テーブル１１５に格納したレコードの現象モジュール４０３を呼び出し元３０２とし、原因モジュール４０６を呼び出し先３０３とし、モジュール呼び出し階層テーブル１１４を参照し、ルート情報を作成し、プルダウンに表示する。プルダウンから選択されたルートに対して、各モジュールのモジュール間呼び出し回数５０４及びモジュール呼び出し回数６０３に１をプラスし、カウントする（Ｓ１００６）。前記のモジュール間呼び出し回数をモジュール間呼び出し回数テーブル１１６のモジュール間呼び出し回数５０４に格納する。前記のモジュール呼び出し回数をモジュール呼び出し回数テーブル１１７のモジュール呼び出し回数６０３に格納する（Ｓ１００７）。
【００３０】
以上本発明の一実施例について説明した。上述のように、上記実施形態では、プログラムの構造に着目し、障害の原因箇所が同一の障害を同件として判断し、抽出する。上記実施形態によって障害管理を行う対象システムは、単一の機能を実現するモジュールを組み合わせて構成されるシステムである。実際のプログラムではモジュールはクラスあるいは関数という単位である。前記モジュールは当該システムの複雑な機能を実現するために、互いに呼び出し関係をもつ。このようなシステムで障害が発生した場合、その障害を引き起こす直接的な不具合を含むモジュール(原因モジュールと呼ぶ)と、その障害により不具合と認識される事象を示す画面など (現象モジュールと呼ぶ)が異なる場合がある。
【００３１】
本発明に係わる障害情報管理装置は、障害情報管理装置単体で構成される。
【００３２】
障害情報管理装置は、過去に発生した障害について、現象モジュールと原因モジュールの間の呼び出し関係に沿った不具合伝播の道筋(ルートと呼ぶ)と、ルートが各モジュールを通過した回数（「モジュール呼び出し回数」）、各呼び出し関係を通過した回数（「モジュール間呼び出し回数」）を管理し、この情報をもとに新たに発生した不具合現象の現象モジュールから原因モジュールを推測する装置である。
【００３３】
前記障害情報管理装置は、プログラムソースを解析したモジュール呼び出し階層情報を格納するモジュール呼び出し階層テーブルを持ち、障害情報管理装置の入力部から取得したプログラムソース情報を現象モジュールから解析し、モジュールの呼び出し関係を抽出し、前記モジュール呼び出し階層テーブルに格納することを特徴とする。
【００３４】
そして、前記障害情報管理装置は、障害発生した現象モジュール（画面など）、現象内容、原因内容、原因モジュール、対策内容を格納する障害情報管理テーブルと、障害発生した現象モジュールから障害の原因モジュールまで経由した各モジュールの「モジュール呼び出し回数」を格納するモジュール呼び出し回数テーブルと、2つのモジュールの間の「モジュール間呼び出し回数」を格納するモジュール間呼び出し回数テーブルを持つことを特徴とする。
【００３５】
そして、前記障害情報管理装置は新たに発生した障害の現象モジュールを入力部から取得し、障害現象モジュールをキーとして、前記モジュール呼び出し階層テーブルを検索し、障害現象モジュールからのすべて到達できるモジュールを取得し、前記の各モジュールに対し、現象モジュールからのすべてルートを作成する。作成した各ルートの各モジュールのモジュール呼び出し回数テーブルの呼び出し回数及びモジュール間呼び出し回数テーブルの呼び出し回数を取得し、これらの値を用いて各モジュールに対し、現象モジュールからそのモジュールまで伸びてきたルートが、そのモジュールで終わる確率、すなわち、そのルートがモジュールを通るという条件のもとで、そのモジュールが原因モジュールである条件付き確率（ルート停止確率）と、各モジュール呼び出し関係について現象モジュールからそのモジュールまで伸びてきたルートが、その呼び出し関係をたどってモジュールを通り抜ける確率、すなわち、そのルートがモジュールを通るという条件のもとで、ルートがその呼び出し関係をたどる条件付き確率（ルート伝播確率）を計算する。
任意のモジュールに対し、現象モジュールからそのモジュールに到達するすべてのルートを考え、各々のルートの各呼び出し関係に対しルート伝播確率と前記任意のモジュールのルート停止確率の積を計算し、これらの和を取ってモジュールが原因である確率（原因推測値）を算出し、原因モジュールを推測することを特徴とする。
【００３６】
以上本発明の実施形態を説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【符号の説明】
【００３７】
１・・・障害情報管理装置、１０１・・・記憶部、１０２・・・表示部、１０３・・・入力部、１０４・・・制御部。
【図１】
0005932721.tif 000002
【図２】
0005932721.tif 000003
【図３】
0005932721.tif 000004
【図４】
0005932721.tif 000005
【図５】
0005932721.tif 000006
【図６】
0005932721.tif 000007
【図７】
0005932721.tif 000008
【図８】
0005932721.tif 000009
【図９】
0005932721.tif 000010
【図１０】
0005932721.tif 000011
【図１１】
0005932721.tif 000012
【図１２】
0005932721.tif 000013
【図１３】
0005932721.tif 000014
【図１４】
0005932721.tif 000015