(57)【特許請求の範囲】
【請求項１】
コンピュータに、
システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶すると共に、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶し、
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定し、
検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて、出力するか否かを判定する
ことを含む処理を実行させる予兆検知プログラム。
【請求項２】
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報のバリエーションが少ないほど高くなる依存度を計算し、該依存度が予め定めた閾値以上の場合に、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存すると判定する請求項１記載の予兆検知プログラム。
【請求項３】
前記第１ソフトウェア構成情報と前記第２ソフトウェア構成情報との類似度が予め定めた閾値以上の場合に、前記検知結果を出力すると判定する請求項１又は請求項２記載の予兆検知プログラム。
【請求項４】
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々に含まれる設定ファイルの包含関係に基づいて、前記類似度を求める請求項３記載の予兆検知プログラム。
【請求項５】
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記設定ファイルを示す識別情報を該設定ファイルの更新日時順に並べたパターンとし、
前記第１ソフトウェア構成情報を示すパターンと、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求める
請求項３記載の予兆検知プログラム。
【請求項６】
前記検知結果に含まれる設定項目及び障害種別に対応付けて記憶された前記第１ソフトウェア構成情報を示すパターンの各々の間のレーベンシュタイン距離から得られる重心と、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求め、該類似度が、前記重心と前記第１ソフトウェア構成情報を示すパターンの各々とのレーベンシュタイン距離の最大値より小さい場合に、前記検知結果を出力すると判定する請求項５記載の予兆検知プログラム。
【請求項７】
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記システムの運用開始から所定期間に設定された設定ファイルの組み合わせとする請求項１〜請求項６のいずれか１項記載の予兆検知プログラム。
【請求項８】
システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶すると共に、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶する学習部と、
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定する依存判定部と、
検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて、出力するか否かを判定する出力判定部と、
を含む予兆検知装置。
【請求項９】
コンピュータに、
システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶すると共に、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶し、
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定し、
検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて、出力するか否かを判定する
ことを含む処理を実行させる予兆検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予兆検知プログラム、予兆検知装置、及び予兆検知方法に関する。
【背景技術】
【０００２】
従来、ユーザ側で運用しているシステムを監視し、システムでの障害発生の予兆を検知した場合に、ユーザ側のシステム管理者等に障害発生の予兆を検知したことを通知するサービスが行われている。
【０００３】
また、複数の装置にセットアップされる共通ソフトウェア、セットアップ作業が実施済みの装置の構成情報、及びセットアップ作業実施済み装置に対する共通ソフトウェアのセットアップ結果情報を記憶媒体に保持させる技術が提案されている。この技術では、分析装置は、自装置にセットアップする共通ソフトウェアを決定し、該共通ソフトウェアに対応する構成情報を記憶媒体から読み出し、自装置情報テーブルに保持されている自装置の構成情報と比較する。そして、分析装置は、セットアップ作業実施済み装置のうち、同一構成装置又は類似構成装置を決定する。そして、分析装置は、記憶媒体から同一構成装置又は類似構成装置に関するセットアップ結果情報を読み出し、共通ソフトウェアのセットアップ成否情報として出力する。
【０００４】
また、ノウハウを複数のＣＩ（構成要素）で共有可能な構成情報管理データベース（ＣＭＤＢ）が提案されている。このＣＭＤＢには、ＣＩとノウハウが個別に登録されている。そして、ＣＭＤＢ内において、ＣＩに登録されている各“属性：値”の組を、それに関係するノウハウと関連付ける。ノウハウには、関連付けられたＣＩの多数に共通する“属性：値”の組が登録される。
【０００５】
また、プログラムモジュール等の複数の構成要素を有する稼動装置の障害に対する対応を支援する方法が提案されている。この方法では、一の稼動装置の障害に係る障害状況の入力を受け付け、受け付けた障害状況情報を検索キーとして、他の稼動装置に係る構成要素について、同様の障害状況情報をデータベースから抽出する。そして、抽出した障害状況情報に係る障害の原因及び対応方法を、受け付けた障害状況情報に係る障害の原因及び対応方法として出力する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２７７１３０号公報
【特許文献２】特開２００９−２４５０２９号公報
【特許文献３】特開２００７−２５７０９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
システム運用中に現在のシステムに関する様々な設定を状況に応じて変更する場合がある。設定の変更は管理者等により行われるが、管理者のシステムに対する知識のレベルによって、設定ミスを起こすことが考えられる。設定ミスは、管理者が設定変更した後のシステムの稼働によって様々な状況となって表れる。様々な状況として表れた結果を、設定ミスのあった設定項目及び設定値と対応付けて学習データとして記憶しておき、システムに関する設定が行われた際に、この学習データに基づいて、設定ミスを検知することが考えられる。
【０００８】
しかしながら、設定の変更には、その後のシステムの動きを変化させるものがある。例えば、システムで使用されているソフトウェアの設定が変更された場合には、学習データが示す設定項目の設定値の正常範囲が変化する可能性がある。また、他のシステムで取得された学習データを用いる場合にも、他のシステムと自システムとでは、各システムで利用しているソフトウェアに相違がある場合がある。このような場合には、他のシステムで取得された学習データでは、自システムにおける設定ミスの検知が適切に行われない場合がある。
【０００９】
本発明は、一つの側面として、ソフトウェア構成が変更されている場合でも、適切に設定ミスを検知することを目的とする。
【課題を解決するための手段】
【００１０】
一つの態様として、システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶する。また、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶する。さらに、前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定する。そして、検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を出力するか否かを判定する。判定は、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて行う。
【発明の効果】
【００１１】
一つの側面として、ソフトウェア構成が変更されている場合でも、適切に設定ミスを検知することができる、という効果を有する。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係る予兆検知装置を含むシステム構成を示す概略図である。
【図２】本実施形態に係る予兆検知装置の機能ブロック図である。
【図３】障害の発生及び復旧と構成情報の採取との関係を説明するための図である。
【図４】事例データの一例を示す図である。
【図５】障害種別リストの一例を示す図である。
【図６】キーリストの一例を示す図である。
【図７】パターンリストの一例を示す図である。
【図８】無視リストの一例を示す図である。
【図９】学習データ・データベース（ＤＢ）の一例を示す図である。
【図１０】カウントデータＤＢの一例を示す図である。
【図１１】特定スコアＤＢの一例を示す図である。
【図１２】設定ファイルリストの一例を示す図である。
【図１３】ソフトウェア構成ＤＢの一例を示す図である。
【図１４】依存度の計算を説明するための図である。
【図１５】依存度の計算を説明するための図である。
【図１６】依存度ＤＢの一例を示す図である。
【図１７】予兆検知結果リストの一例を示す図である。
【図１８】本実施形態に係る予兆検知装置として機能するコンピュータの概略構成を示すブロック図である。
【図１９】学習処理の一例を示すフローチャートである。
【図２０】パターン生成処理の一例を示すフローチャートである。
【図２１】学習データ生成処理の一例を示すフローチャートである。
【図２２】特定スコア計算処理の一例を示すフローチャートである。
【図２３】ソフトウェア構成学習処理の一例を示すフローチャートである。
【図２４】依存度計算処理の一例を示すフローチャートである。
【図２５】検知処理の一例を示すフローチャートである。
【図２６】出力判定処理の一例を示すフローチャートである。
【図２７】類似度判定処理の一例を示すフローチャートである。
【図２８】類似度判定処理の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して本発明に係る実施形態の一例を詳細に説明する。
【００１４】
図１に示すように、本実施形態に係る予兆検知装置１０は、インターネット等のネットワーク１２を介して、複数の処理装置１６を有する処理システム１４と接続される。予兆検知装置１０は、処理装置１６の各々を監視し、処理装置１６における障害発生の予兆を検知する。
【００１５】
処理装置１６における障害発生の予兆検知は、例えば、処理装置１６の構成情報（詳細は後述）における各種設定項目の設定値として、正しい値が設定されているか否かを判定することにより行うことができる。設定されている値が正しいか否かを判定する方法としては、設定されている値と、予め用意された正解の学習データ、又は誤りの学習データとを比較する方法が想定される。設定されている値と正解の学習データとを比較する場合には、両者が一致する場合に、設定されている値が正しいと判定することができる。設定されている値と誤りの学習データとを比較する場合には、両者が一致する場合に、設定されている値が正しくないと判定することができる。
【００１６】
しかし、処理装置１６に障害が発生する要因には、構成情報の各設定項目の値として、誤った値を設定した場合と、変更すべき値の変更漏れが生じた場合とがある。このように、障害発生の要因に相違があるため、設定された値と、正解の学習データ又は誤りの学習データのいずれとを比較した方が、より適切な予兆検知を行うことができるかを判断することは困難である。
【００１７】
例えば、所定の初期値が設定された設定項目の値を、処理装置１６毎に適切な値に変更しなければならない場合において、値の変更漏れがあった場合には、その設定項目の値は初期値のままになってしまい、障害発生の要因となる。この場合、正しい設定値は、処理装置１６毎に各々異なる可能性があり、これら全てを網羅する正解の学習データを用意しておくことは容易ではない。この場合、初期値が設定されている場合には誤りであることを示す学習データを用意しておき、この誤りの学習データと設定されている値とを比較した方が、障害発生の予兆検知を適切に行うことができる。
【００１８】
そこで、本実施形態に係る予兆検知装置１０では、設定されている値と比較するための正解の学習データと、誤りの学習データとを用意しておき、より適切に障害発生の予兆を検知できる学習データを特定して用いる。
【００１９】
また、構成情報の変更前後の値を比較して障害発生の予兆を検知する場合には、設定値の変更漏れが障害発生の要因になる場合を検知することができない。構成情報の変更前後の値を比較しても値に変化がないためである。本実施形態では、障害復旧前後の構成情報から正解の学習データ及び誤りの学習データを生成し、これらの学習データと設定された値とを比較することにより、設定されている値が正しいか否かを判定する。
【００２０】
図２に、予兆検知装置１０の機能ブロック図を示す。図２に示すように、予兆検知装置１０は、学習部２０と、検知部２６と、出力判定部２７とを有する。学習部２０は、さらに、パターン生成部２１と、学習データ生成部２２と、特定スコア計算部２３と、ソフトウェア構成学習部２４と、依存度計算部２５とを含む。また、記憶部３０には、学習データ・データベース（ＤＢ）３１と、カウントデータＤＢ３２と、特定スコアＤＢ３３と、ソフトウェア構成ＤＢ３４と、依存度ＤＢ３５とが記憶される。各データベースについては後述する。
【００２１】
ここで、図３に示すように、処理装置１６において障害が発生した場合には、障害発生時の状態を確認するために、障害発生直後に構成情報が採取される。そして、障害が復旧した後にも、復旧作業の記録及び動作確認のためなどに構成情報が採取される。予兆検知装置１０には、この障害復旧前後で採取される構成情報の組が、事例データとして入力される。なお、構成情報には、処理装置１６を構成するハードウェアの構成、及び処理装置１６にインストールされているオペレーティングシステム（Operating System、ＯＳ）やアプリケーション等のソフトウェアに関する設定が記述された設定ファイル群が含まれる。構成情報は、例えば、処理装置１６のファイルシステムから従来既知の専用のツールを用いて構成に関する情報を抽出したディレクトリ構造のデータである。
【００２２】
図４に事例データ３６の一例を示す。図４の例では、障害復旧前に採取した構成情報３７Ａがその採取時刻と共に記録されている。また、障害復旧後に採取した構成情報３７Ｂがその採取時刻と共に記録されている。構成情報３７Ａ及び３７Ｂの各々には、各設定ファイル３７１について、設定ファイル３７１の識別情報３７２、及び更新日時３７３が記録されている。なお、ここでは、各設定ファイル３７１の識別情報３７２として、ルートディレクトリから設定ファイル３７１までのパスを用いている。設定ファイル３７１には、設定項目とその設定項目に対する設定値が記述されている。図４に示す障害復旧前の構成情報３７Ａの１つ目の設定ファイル３７１では、設定項目「ＡｕｔｈＭｙＳＱＬＵｓｅｒ」について、設定値「ｕｓｅｒ＿ｎａｍｅ」が設定されている。
【００２３】
さらに、事例データ３６には、障害の種別毎に予め定めた識別情報である障害種別３８が記録されている。障害種別３８は、例えば、障害復旧時に構成情報を採取する作業者等が事例データ３６に記録する。
【００２４】
パターン生成部２１は、複数の事例データ３６を入力として受け付け、所定の記憶領域に蓄積する。また、パターン生成部２１は、蓄積した複数の事例データ３６の各々に含まれる障害種別３８を、例えば、図５に示すような障害種別リスト４２に記録する。なお、重複する障害種別は記録しない。
【００２５】
また、パターン生成部２１は、各事例データ３６に含まれる障害復旧前の構成情報３７Ａ、及び障害復旧後の構成情報３７Ｂの各々から、構成に関する各種設定項目を特定するキーの全てを抽出する。例えば、キーとしては、設定項目の設定値が設定されている設定ファイルの識別情報と、その設定ファイルに設定される設定項目名との組合せを用いることができる。例えば、パターン生成部２１は、図４の事例データ３６の障害復旧前の構成情報３７Ａの１つ目の設定ファイルから、「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」をキーとして抽出する。パターン生成部２１は、抽出したキーを羅列して、例えば、図６に示すようなキーリスト４３を作成する。
【００２６】
また、パターン生成部２１は、キーリスト４３に記録された各キーについて、障害復旧の前後で値が異なる場合に、障害種別と、キーと、障害復旧前後の値とを対応付けたパターンを生成する。例えば、図４の事例データ３６において、キー「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」については、障害復旧前の値「ｕｓｅｒ＿ｎａｍｅ」と、障害復旧後の値「ｕｓｅｒ００１」とが異なる。そのため、障害種別「Ｆ００３」と、キー「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」と、障害復旧前の値「ｕｓｅｒ＿ｎａｍｅ」と、障害復旧後の値「ｕｓｅｒ００１」とを対応付けたパターンが生成される。パターン生成部２１は、各キーについて生成したパターンを、例えば、図７に示すようなパターンリスト４４に記録する。図７の例では、「値ＶＡ」が障害復旧前の値、「値ＶＢ」が障害復旧後の値である。
【００２７】
さらに、パターン生成部２１は、例えば、図８に示すような無視リスト４５に予め定められた障害種別とキーとの組に一致する障害種別とキーとを有するパターンを、パターンリスト４４から削除する。無視リスト４５には、例えば、システムを起動する毎に値が変わるキーなど、障害復旧前後の値を比較したとしても、障害発生の要因や予兆を見つけることが困難なキーを、障害種別毎に予め定めておく。
【００２８】
学習データ生成部２２は、パターン生成部２１で生成されたパターンリスト４４に記録された各パターンから学習データを生成する。学習データは、障害種別毎に、あるキーについて、ある値が正解として出現した回数、及び誤りとして出現した回数を集計したデータである。パターンリスト４４に記録されたパターンは、各キーについて障害復旧前後の値を有しており、障害復旧前の値ＶＡは誤りの値、障害復旧後の値ＶＢは正解の値である。
【００２９】
例えば、図９に示すように、学習データＤＢ３１には、障害種別、キー、正誤、値、及び回数の項目を有する複数の学習データが記録される。学習データ生成部２２は、あるパターンの障害種別、キー、及び障害復旧前の値ＶＡと、障害種別、キー、及び値が一致する学習データであって、正誤が「Ｆａｉｌｕｒｅ」の学習データの回数を、１つのパターンに付き１増加させる。また、学習データ生成部２２は、あるパターンの障害種別、キー、及び障害復旧後の値ＶＢと、障害種別、キー、及び値が一致する学習データであって、正誤が「Ｓｕｃｃｅｓｓ」の学習データの回数を、１つのパターンに付き１増加させる。なお、学習データ生成部２２は、学習データＤＢ３１に障害種別、キー、及び障害復旧前の値ＶＡ又は障害復旧後の値ＶＢがパターンと一致する学習データが登録されていない場合には、該当の学習データを追加した上で、回数に１を設定する。
【００３０】
また、学習データ生成部２２は、例えば、図１０に示すように、正誤が「Ｓｕｃｃｅｓｓ」の学習データの数を、障害種別毎かつキー毎にカウントした回数ＮＳを、カウントデータＤＢ３２に記録する。同様に、学習データ生成部２２は、正誤が「Ｆａｉｌｕｒｅ」の学習データの数を、障害種別かつキー毎にカウントした回数ＮＦを、カウントデータＤＢ３２に記録する。
【００３１】
特定スコア計算部２３は、検知対象の構成情報から障害発生の予兆を検知する際に、学習データのうち、正解の値を有する学習データを利用するか、誤りの値を有する学習データを利用するかを特定するための特定スコアを計算する。特定スコアは、あるキーに対する値として、同じ値をとる確率が高いほど、すなわち、あるキーに対する値のバリエーションが少ないほど、その値が正解として、又は誤りとして確からしいことを表す。
【００３２】
例えば、特定スコア計算部２３は、学習データＤＢ３１において、ある障害種別のあるキーについて、正誤が「Ｓｕｃｃｅｓｓ」の学習データの各値が出現する経験的確率を求める。そして、特定スコア計算部２３は、求めた確率から条件付エントロピーを計算し、これを、正誤が「Ｓｕｃｃｅｓｓ」である学習データの確からしさを示す正解の特定スコアＳＳとする。同様に、特定スコア計算部２３は、正誤が「Ｆａｉｌｕｒｅ」の学習データの各値が出現する経験的確率から条件付エントロピーを計算し、これを、正誤が「Ｆａｉｌｕｒｅ」である学習データの確からしさを示す正解の特定スコアＳＦとする。特定スコアＳＳは下記（１）式で、特定スコアＳＦは下記（２）式で表される。なお、ＸＳｕｃｃｅｓｓは、ある障害種別のあるキーについて、正誤が「Ｓｕｃｃｅｓｓ」の学習データの集合、ＸＦａｉｌｕｒｅは、正誤が「Ｆａｉｌｕｒｅ」の学習データの集合である。
【００３３】
【数１】
0006528669.tif 000002
【００３４】
より具体的に、図９に示す学習データＤＢ３１及び図１０に示すカウントデータＤＢ３２を用いて、特定スコアＳＳ及び特定スコアＳＦを計算する例を説明する。例えば、障害種別「Ｆ００３」かつキー「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」についてのＸＳｕｃｃｅｓｓ及びＸＦａｉｌｕｒｅは下記のとおりである。
【００３５】
ＸＳｕｃｃｅｓｓ＝｛ｕｓｅｒ００１，ｗｅｂａｄｍｉｎ｝
ＸＦａｉｌｕｒｅ＝｛ｕｓｅｒ＿ｎａｍｅ｝
なお、上記の集合に含まれる各学習データは、その学習データが有する値で表している。
【００３６】
特定スコア計算部２３は、学習データＤＢ３１から、ＸＳｕｃｃｅｓｓに含まれる値「ｕｓｅｒ００１」の学習データの出現回数（１回）、値「ｗｅｂａｄｍｉｎ」の学習データの出現回数（１回）を取得する。同様に、特定スコア計算部２３は、学習データＤＢ３１から、ＸＦａｉｌｕｒｅに含まれる値「ｕｓｅｒ＿ｎａｍｅ」の学習データの出現回数（２回）をそれぞれ取得する。また、特定スコア計算部２３は、カウントデータＤＢ３２から、障害種別「Ｆ００３」かつキー「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」の正誤「Ｓｕｃｃｅｓｓ」の学習データの出現回数ＮＳ（２回）を取得する。同様に、特定スコア計算部２３は、正誤「Ｆａｉｌｕｒｅ」の学習データの出現回数ＮＦ（２回）を取得する。
【００３７】
特定スコア計算部２３は、取得した回数を用いて、下記に示すように、学習データの各値について経験的確率を計算する。
ｐ（ｕｓｅｒ００１｜Ｓｕｃｃｅｓｓ）＝１／２
ｐ（ｗｅｂａｄｍｉｎ｜Ｓｕｃｃｅｓｓ）＝１／２
ｐ（ｕｓｅｒ＿ｎａｍｅ｜Ｆａｉｌｕｒｅ）＝２／２
【００３８】
特定スコア計算部２３は、計算した経験的確率を用いて、上記（１）式及び（２）式を用いて、下記のように特定スコアＳＳ及び特定スコアＳＦを計算する。
【００３９】
【数２】
0006528669.tif 000003
【００４０】
特定スコア計算部２３は、障害種別毎、かつキー毎に特定スコアＳＳ及び特定スコアＳＦを計算し、例えば、図１１に示すような特定スコアＤＢ３３に記録する。
【００４１】
ここで、予兆検知の精度向上のためには、事例データ３６を多数採取し、多数の学習データが蓄積されていることが好ましい。そこで、多数の事例データ３６を採取するために、他のシステムで採取された事例データ３６も用いて、学習データを生成することを考える。この場合、事例データ３６を採取したシステムと、障害の予兆検知の対象のシステムとの差異により、同じ設定項目であっても、正解又は誤りとなる設定値が異なる場合がある。
【００４２】
例えば、あるシステムから、設定項目「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＫｅｅｐＡｌｉｖｅ」の設定を誤っていたために、Ａｐａｃｈｅ  ＨＴＴＰ  Ｓｅｒｖｅｒに障害が発生した事例データ３６を採取したとする。この事例データ３６から、キー「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＫｅｅｐＡｌｉｖｅ」についての学習データが得られる。この学習データは、他のシステムを予兆検知の対象とする場合にも有効に作用する。すなわち、検知対象のシステムの構成情報の該当の設定項目に、正解の学習データと異なる値、又は誤りの学習データと同じ値が設定されている場合には、障害の予兆を検知することができる。
【００４３】
一方、あるシステムから、設定項目「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」の設定を誤っていたために、Ａｐａｃｈｅ  ＨＴＴＰ  Ｓｅｒｖｅｒに障害が発生した事例データ３６を採取したとする。この事例データ３６から、キー「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」についての学習データが得られる。そして、他のシステムを予兆検知の対象として、この学習データを用いた場合、他のシステムにおける該当の設定項目に対する設定値によっては、障害の予兆が検知されることになる。しかし、他のシステムで、設定項目「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」に該当する機能を使用していない場合には、その予兆検知は不適切なものとなる。
【００４４】
機能を使用する又は使用しないなど、システムで利用するソフトウェアの設定ファイルは、ソフトウェアがシステムにインストール後に編集される。特に、主要なソフトウェアほど設定項目を修正又は追記する可能性が高い。このような設定ファイルへの記述の相違、すなわちソフトウェア構成の相違がある場合、他のシステムで採取された学習データを用いた場合に、設定項目に設定された設定値の正誤を正しく判定できない場合がある。
【００４５】
そこで、本実施形態では、設定ミスがソフトウェア構成に依存するか否かを判定し、その上で、ソフトウェア構成が類似する他システムの学習データを用いることで、予兆検知を適切に行うことができるようにする。
【００４６】
そのために、ソフトウェア構成学習部２４は、設定ミスがあった設定項目の設定値を学習すると共に、設定ミスがあった際のシステムのソフトウェア構成も学習する。具体的には、ソフトウェア構成学習部２４は、学習データが抽出された構成情報３７Ａから、ソフトウェアの設定ファイル３７１の識別情報３７２及びその設定ファイルの更新日時３７３を抽出する。
【００４７】
より具体的には、ソフトウェア構成学習部２４は、構成情報３７Ａから、正規表現に合致する設定項目と設定値との組を探索する。正規表現は、例えば、“：（コロン）”や“＝（イコール）”で連結された設定項目と設定値との組や、予め定めた設定項目名などとすることができる。ソフトウェア構成学習部２４は、正規表現に合致する設定項目と設定値との組が設定ファイル３７１内に存在する場合、ソフトウェアの設定ファイル３７１であると判定し、その設定ファイル３７１の識別情報３７２及び更新日時３７３を抽出する。
【００４８】
また、ソフトウェア構成学習部２４は、抽出した設定ファイルの識別情報３７２を、例えば、図１２に示すような、ソフトウェア構成ＤＢ３４の一部である設定ファイルリスト４６に記録し、識別情報３７２に、数字や記号等のＩＤを付与する。なお、設定ファイルリスト４６に既に存在する設定ファイルの識別情報３７２については、新たに追記しない。また、ソフトウェア構成学習部２４は、抽出した設定ファイルの識別情報３７２を、設定ファイルリスト４６で付与されたＩＤに置き換え、かつ更新日時順に並び替えて、ソフトウェア構成パターンを生成する。
【００４９】
例えば、以下のような、設定ファイルの３７１の識別情報３７２及び更新日時３７３が抽出され、図１２に示すように、各識別情報３７２にＩＤが付与されたとする。
２０１０／１／１，  ／ｅｔｃ／ｘｘｘ．ｃｏｎｆ
２０１５／４／１，  ／ｅｔｃ／ｙｙｙ．ｃｏｎｆ
２０１５／５／１，  ／ｅｔｃ／ｍｙ．ｃｎｆ
２０１５／６／１，  ／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ
【００５０】
この場合、ソフトウェア構成学習部２４は、（４，３，２，１）というソフトウェア構成パターンを生成する。なお、更新日時での並び替えは、昇順でも降順でもよい。本実施形態では、降順で並び替える例について説明する。また、ソフトウェア構成パターンを生成する際、更新日時３７３がシステムのＯＳ（Operating System）のインストール時刻以前の設定ファイルや、学習データの採取用に生成された設定ファイルの識別情報３７２を取り除いてもよい。
【００５１】
ソフトウェア構成学習部２４は、生成したソフトウェア構成パターンを、該当の事例データ３６から抽出された障害種別３８及びキーと対応付けて、例えば、図１３に示すようなソフトウェア構成ＤＢ３４に記録する。同一の事例データ３６から、複数の障害種別又は複数のキーが抽出されている場合には、ソフトウェア構成学習部２４は、障害種別及びキーの全ての組み合わせに、生成したソフトウェア構成パターンを対応付ける。
【００５２】
依存度計算部２５は、障害種別及びキーの組み合わせ毎に、障害種別及びキーの組み合わせが示す設定ミスによる障害が、ソフトウェア構成に依存して発生したか否かを示す依存度を計算する。ある障害がいつも同じソフトウェア構成で起きる場合には、そのソフトウェア構成に特有の障害であると考えられる。一方、ある障害が色々なソフトウェア構成で起きる場合には、その障害はソフトウェア構成に依存しないで発生する障害であると考えることができる。すなわち、ソフトウェア構成に依存する設定ミスによる障害は、依存しない場合に比べて、障害発生時のソフトウェア構成のバリエーションが少ない。そこで、障害発生時のソフトウェア構成のバリエーションに基づいて、依存度を計算する。
【００５３】
例えば、依存度計算部２５は、下記（３）式により依存度を計算することができる。
【００５４】
【数３】
0006528669.tif 000004
【００５５】
なお、（ｉ）は、該当の障害種別及びキーが抽出された事例データ３６の件数、すなわち、ソフトウェア構成ＤＢ３４に記録されたエントリ（各行）のうち、該当の障害種別及びキーを含むエントリの件数である。（ｉｉ）は、（ｉ）の各エントリのソフトウェア構成パターンに含まれるＩＤの数である。（ｉｉｉ）は、（ｉ）の各エントリのソフトウェア構成パターンに含まれるＩＤのうち、他のソフトウェア構成パターンに含まれない場合があるＩＤの数である。
【００５６】
例えば、図１４に示すように、ある障害種別及びキーに対応して、ソフトウェア構成ＤＢ３４に２件のエントリ（事例１、事例２）が存在したとする。事例１及び事例２共に、ソフトウェア構成パターンは、（４，３，２，１）である。この場合、（ｉ）は２件、（ｉｉ）は４個、（ｉｉｉ）は０個であり、以下のように依存度が計算される。
【００５７】
【数４】
0006528669.tif 000005
【００５８】
また、例えば、図１５に示すように、ある障害種別及びキーに対応して、ソフトウェア構成ＤＢ３４に３件のエントリ（事例１、事例２、事例３）が存在したとする。事例１及び事例２共に、ソフトウェア構成パターンは、（４，３，２，１）であり、事例３のソフトウェア構成パターンは、（４，１，６，５）である。この場合、（ｉ）は３件、（ｉｉ）は６個、（ｉｉｉ）は４個であり、以下のように依存度が計算される。
【００５９】
【数５】
0006528669.tif 000006
【００６０】
このように、上記（３）式によれば、ある障害種別及びキーについて、ソフトウェア構成パターンのバリエーションが少ないほど高くなる依存度を計算することができる。なお、依存度は（３）式の例に限定されず、ソフトウェア構成パターンのバリエーションが少ないほど高くなるものであればよい。また、上記（ｉｉ）及び（ｉｉｉ）をカウントする際、ソフトウェア構成パターン内のＩＤの並び順は考慮してよいし、考慮しなくてもよい。例えば、図１５の例にさらに、ソフトウェア構成パターンが（１，６，５，４）の事例４が含まれるとする。この場合、ソフトウェア構成パターン内のＩＤの並び順を考慮しない場合には、事例３と同じ列にチェック（図１５の例では「○」）が入る。ソフトウェア構成パターン内のＩＤの並び順を考慮する場合には、「ｂｂｂ．ｃｏｎｆ  ＩＤ＝５」の右に、「ｈｔｔｐｄ．ｃｏｍｆ  ＩＤ＝４」の列が追加され、１列目のＩＤ＝４の列ではなく、７列目のＩＤ＝４の列にチェックが入る。
【００６１】
依存度計算部２５は、障害種別及びキーの組み合わせ毎に計算した依存度を、例えば図１６に示すような依存度ＤＢ３５に記録する。
【００６２】
検知部２６は、検知対象の構成情報が入力された場合に、記憶部３０に記憶された学習データＤＢ３１、カウントデータＤＢ３２、及び特定スコアＤＢ３３を用いて、障害発生の予兆を検知する。具体的には、検知部２６は、検知対象の構成情報に含まれるキー及び値の組で表される各検知対象データと、学習データとの比較を行い、構成情報における各設定項目の値が正しく設定されているか否かを判定する。検知部２６は、正しい値が設定されていないと判定した場合には、障害発生の予兆として検知し、予兆検知結果リストに記録する。
【００６３】
上述したように、本実施形態では、正解の学習データと誤りの学習データとのいずれを用いるかを特定したうえで、予兆検知を行う。具体的には、検知部２６は、特定スコアＤＢ３３から、障害種別毎に、検知対象データに含まれるキーと一致するキーに対応する特定スコアＳＳ及び特定スコアＳＦを取得する。上記（１）式に示す特定スコアＳＳは、値が小さいほど正解の学習データの値が正解である確からしさの確度が高いことを表す。また、上記（２）式に示す特定スコアＳＦは、値が小さいほど誤りの学習データの値が誤りである確からしさの確度が高いことを表す。そこで、検知部２６は、特定スコアＳＳが特定スコアＳＦより小さい障害種別については、検知に用いる学習データとして、正解の学習データを特定する。一方、検知部２６は、特定スコアＳＦが特定スコアＳＳより小さい障害種別については、検知に用いる学習データとして、誤りの学習データを特定する。
【００６４】
検知部２６は、正解の学習データを特定した障害種別については、検知対象データと正解の学習データとを比較し、一致しなかった場合に障害発生の予兆を検知する。また、検知部２６は、誤りの学習データを特定した障害種別については、検知対象データと誤りの学習データとを比較し、一致した場合に障害発生の予兆を検知する。検知部２６は、障害発生の予兆を検知した場合には、その障害種別と、検知対象データ（キー及び値）とに、検知スコア（詳細は後述）を付与した予兆検知結果を、例えば、図１７に示すような予兆検知結果リスト４１に記録する。
【００６５】
検知スコアとは、その予兆検知結果の確からしさを示すスコアである。例えば、ある障害種別について、検知対象データのキーと一致するキーを有する誤りの学習データが複数存在し、検知対象データの値が、その誤りの学習データのいずれかと一致したとする。この場合、検知対象データの値と一致した誤りの学習データの出現回数が多いほど、その値が誤りであることの確からしさの確度が高くなる。そこで、検知部２６は、例えば、検知対象データの値と一致した誤りの学習データの出現回数Ｎを、同一の障害種別及びキーの誤りの学習データの出現回数ＮＦで除した値を検知スコアとすることができる。なお、出現回数Ｎは学習データＤＢ３１から取得することができ、出現回数ＮＦはカウントデータＤＢ３２から取得することができる。
【００６６】
また、ある障害種別について、検知対象データのキーと一致するキーを有する正解の学習データの値と、検知対象データの値とが一致しなかった場合には、上記のような出現回数に基づく検知スコアを計算することができない。そこで、検知部２６は、上記の出現回数に基づく検知スコアとは異なり、正解の学習データと一致しなかったことを示す値（例えば、「−１」）を検知スコアとして付与する。
【００６７】
出力判定部２７は、予兆検知結果リスト４１に記録された各予兆検知結果について、キーが示す設定項目に対する設定ミスによる障害種別が示す障害の発生が、ソフトウェア構成に依存するか否かを判定する。具体的には、出力判定部２７は、依存度ＤＢ３５から、予兆検知結果に含まれる障害種別及びキーに対応する依存度Ｄを取得する。出力判定部２７は、取得した依存度Ｄが予め定めた閾値Ｄｔｈより大きい場合には、その障害種別及びキーに対応する障害の発生は、ソフトウェア構成に依存すると判定する。
【００６８】
また、出力判定部２７は、検知対象の構成情報から、ソフトウェア構成学習部２４と同様の手法により、ソフトウェア構成パターンｐを生成する。例えば、検知対象の構成情報から、以下のような、設定ファイルの３７１の識別情報３７２及び更新日時３７３が抽出されたとする。
２０１０／１／１，  ／ｅｔｃ／ｘｘｘ．ｃｏｎｆ
２０１５／６／１０，  ／ｅｔｃ／ｍｙ．ｃｎｆ
２０１５／６／１１，  ／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ
【００６９】
この場合、図１２に示す設定ファイルリスト４６に基づいて、各識別情報３７２がＩＤに置き換えられ、更新日時の降順で並び替えられて、（４，３，１）というソフトウェア構成パターンｐが生成される。
【００７０】
また、出力判定部２７は、ソフトウェア構成ＤＢ３４から、障害の発生がソフトウェア構成に依存すると判定した障害種別及びキーに対応する全てのソフトウェア構成パターンＰ＝｛Ｐ１，Ｐ２，・・・｝を抽出する。例えば、Ｆ＝０００３、Ｋ＝「／ｅｔｃ／ｈｔｔｐｄ／ｃｏｎｆ／ｈｔｔｐｄ．ｃｏｎｆ：ＡｕｔｈＭｙＳＱＬＵｓｅｒ」の場合、図１３に示すソフトウェア構成ＤＢ３４から、Ｐ１＝（４，３，２，１）、Ｐ２＝（４，３，２，１）が抽出される。
【００７１】
出力判定部２７は、生成したソフトウェア構成パターンｐと、ソフトウェア構成ＤＢ３４から抽出したソフトウェア構成パターンＰｉの各々との類似度を計算する。具体的には、出力判定部２７は、ソフトウェア構成パターンｐと、ソフトウェア構成パターンＰｉの各々とのレーベンシュタイン距離を、両ソフトウェア構成パターン間の類似度として計算する。以下では、ｘとｙとのレーベンシュタイン距離をｄＬ（ｘ，ｙ）と表記する。なお、距離の計算においては、挿入・削除コストを１、置換のコストを２とする。レーベンシュタイン距離ｄＬ（ｐ，Ｐｉ）が小さいほど両ソフトウェア構成パターンは類似していることを表す。したがって、出力判定部２７は、ソフトウェア構成パターンｐと、いずれかのソフトウェア構成パターンＰｉとのレーベンシュタイン距離ｄＬ（ｐ，Ｐｉ）が予め定めた閾値ｄｔｈより小さい場合に、両ソフトウェア構成パターンは類似すると判定する。
【００７２】
例えば、ソフトウェア構成パターンｐ＝（４，３，１）と、ソフトウェア構成パターンＰ１＝（４，３，２，１）とのレーベンシュタイン距離ｄＬ（ｐ，Ｐ１）は「２」である。ｄｔｈ＝１とすると、ｄＬ（ｐ，Ｐ１）＝２＞ｄｔｈ＝１であるので、両ソフトウェア構成パターンは類似すると判定される。
【００７３】
出力判定部２７は、ソフトウェア構成パターンｐが、ソフトウェア構成パターンＰｉのいずれとも類似しないと判定した場合には、予兆検知結果リスト４１の該当の予兆検知結果を削除する。これは、ソフトウェア構成に依存する障害は、ソフトウェア構成が類似するシステムにおいて発生するとの考えに基づき、ソフトウェア構成が類似していない場合には、該当の障害が発生する可能性は低いと見做すものである。出力判定部２７は、予兆検知結果リスト４１の各予兆検知結果について上記の判定を行い、最終的な予兆検知結果リスト４１を出力する。
【００７４】
予兆検知装置１０は、例えば図１８に示すコンピュータ５０で実現することができる。コンピュータ５０はＣＰＵ５１、一時記憶領域としてのメモリ５２、及び不揮発性の記憶装置５３を備える。また、コンピュータ５０は、入出力装置５４と、記録媒体５９に対するデータの読み込み及び書き込みを制御するｒｅａｄ／ｗｒｉｔｅ（Ｒ／Ｗ）部５５と、インターネット等のネットワーク１２に接続されるネットワークＩ／Ｆ５６とを備える。ＣＰＵ５１、メモリ５２、記憶装置５３、入出力装置５４、Ｒ／Ｗ部５５、及びネットワークＩ／Ｆ５６は、バス５７を介して互いに接続される。
【００７５】
記憶装置５３はＨＤＤ（Hard Disk Drive）、ＳＳＤ（solid state drive）、フラッシュメモリ等によって実現できる。記憶媒体としての記憶装置５３には、コンピュータ５０を予兆検知装置１０として機能させるための予兆検知プログラム６０が記憶される。また、記憶装置５３は、各種データベース及びリストを構成する情報が記憶される情報記憶領域７０を有する。
【００７６】
ＣＰＵ５１は、予兆検知プログラム６０を記憶装置５３から読み出してメモリ５２に展開し、予兆検知プログラム６０が有するプロセスを順次実行する。また、ＣＰＵ５１は、情報記憶領域７０に記憶された情報を読み出し、各種データベース及びリストとしてメモリ５２に展開する。
【００７７】
予兆検知プログラム６０は、パターン生成プロセス６１と、学習データ生成プロセス６２と、特定スコア計算プロセス６３と、ソフトウェア構成学習プロセス６４と、依存度計算プロセス６５と、検知プロセス６６と、出力判定プロセス６７とを有する。
【００７８】
ＣＰＵ５１は、パターン生成プロセス６１を実行することで、図２に示すパターン生成部２１として動作する。また、ＣＰＵ５１は、学習データ生成プロセス６２を実行することで、図２に示す学習データ生成部２２として動作する。また、ＣＰＵ５１は、特定スコア計算プロセス６３を実行することで、図２に示す特定スコア計算部２３として動作する。また、ＣＰＵ５１は、ソフトウェア構成学習プロセス６４を実行することで、図２に示すソフトウェア構成学習部２４として動作する。また、ＣＰＵ５１は、依存度計算プロセス６５を実行することで、図２に示す依存度計算部２５として動作する。また、ＣＰＵ５１は、検知プロセス６６を実行することで、図２に示す検知部２６として動作する。また、ＣＰＵ５１は、出力判定プロセス６７を実行することで、図２に示す出力判定部２７として動作する。これにより、予兆検知プログラム６０を実行したコンピュータ５０が、予兆検知装置１０として機能することになる。
【００７９】
なお、予兆検知プログラム６０により実現される機能は、例えば半導体集積回路、より詳しくはＡＳＩＣ（Application Specific Integrated Circuit）等で実現することも可能である。
【００８０】
次に、本実施形態に係る予兆検知装置１０の作用について説明する。まず、予兆検知装置１０に複数の事例データ３６が入力されると、予兆検知装置１０において、図１９に示す学習処理が実行される。そして、記憶部３０に学習データＤＢ３１、カウントデータＤＢ３２、特定スコアＤＢ３３、ソフトウェア構成ＤＢ３４、及び依存度ＤＢ３５が記憶される。この状態で、予兆検知装置１０に検知対象の構成情報が入力されると、予兆検知装置１０において、図２５に示す検知処理が実行され、予兆検知結果リスト４１が出力される。なお、予兆検知装置１０により実行される学習処理及び検知処理は、本発明の予兆検知方法の一例である。以下、各処理について詳述する。
【００８１】
図１９に示す学習処理のステップＳ１０で、パターン生成部２１が、図２０に詳細を示すパターン生成処理を実行する。
【００８２】
図２０に示すパターン生成処理のステップＳ１１で、パターン生成部２１は、入力された複数の事例データ３６から１つの事例データ３６を取得する。事例データ３６には、障害復旧前の構成情報３７Ａ、及び障害復旧後の構成情報３７Ｂ、及び障害種別３８が含まれる。また、パターン生成部２１は、所定領域（図示省略）に記憶された無視リスト４５を取得する。
【００８３】
次に、ステップＳ１２で、パターン生成部２１が、取得した事例データ３６に含まれる障害種別３８を、例えば、図５に示すような障害種別リスト４２に記録する。
【００８４】
次に、ステップＳ１３で、パターン生成部２１が、取得した事例データ３６に含まれる障害復旧前の構成情報３７Ａ、及び障害復旧後の構成情報３７Ｂの各々から、キーを全て抽出し、例えば、図６に示すようなキーリスト４３を作成する。
【００８５】
次に、ステップＳ１４で、パターン生成部２１が、キーリスト４３に以下のステップＳ１５〜Ｓ１７の処理が未処理のキーが存在するか否かを判定する。未処理のキーが存在する場合には、処理はステップＳ１５へ移行し、パターン生成部２１が、未処理のキーから１つを選択し、キーＫとする。
【００８６】
次に、ステップＳ１６で、パターン生成部２１が、キーＫに対応する障害復旧前後の値を、障害復旧前の構成情報３７Ａ、及び障害復旧後の構成情報３７Ｂの各々から取得する。そして、パターン生成部２１は、取得した障害復旧前後の値が異なるか否かを判定する。異なる場合には、処理はステップＳ１７へ移行し、等しい場合には、処理はステップＳ１４に戻る。
【００８７】
ステップＳ１７では、パターン生成部２１が、ステップＳ１１で取得した事例データ３６に含まれる障害種別と、キーＫと、キーＫに対応する障害復旧前の値ＶＡと、障害復旧前の値ＶＢとを対応付けたパターンを生成する。そして、パターン生成部２１は、例えば、図７に示すようなパターンリスト４４に、生成したパターンを追加する。
【００８８】
上記ステップＳ１４で、未処理のキーが存在しないと判定されると、処理はステップＳ１８へ移行する。ステップＳ１８では、パターン生成部２１が、上記ステップＳ１１で取得した無視リスト４５に予め定められた障害種別とキーとの組に一致する障害種別とキーとを有するパターンを、パターンリスト４４から削除する。
【００８９】
次に、ステップＳ１９で、パターン生成部２１が、生成した障害種別リスト４２、及びパターンリスト４４を出力する。入力された全ての事例データ３６についてパターン生成処理が終了した場合には、処理は図１９に示す学習処理に戻る。
【００９０】
次に、図１９に示す学習処理のステップＳ２０で、学習データ生成部２２が、図２１に詳細を示す学習データ生成処理を実行する。
【００９１】
図２１に示す学習データ生成処理のステップＳ２１で、学習データ生成部２２が、パターン生成部２１から出力されたパターンリスト４４を取得する。
【００９２】
次に、ステップＳ２２で、学習データ生成部２２が、パターンリスト４４に、以下のステップＳ２３〜Ｓ２６の処理が未処理のパターンが存在するか否かを判定する。未処理のパターンが存在する場合には、処理はステップＳ２３へ移行する。ステップＳ２３では、学習データ生成部２２が、未処理のパターンから１つを選択し、パターンに含まれる障害種別をＦ、キーをＫ、障害復旧前の値をＶＡ、障害復旧後の値をＶＢとする。
【００９３】
次に、ステップＳ２４で、学習データ生成部２２が、例えば、図９に示すような学習データＤＢ３１において、障害種別がＦ、キーがＫ、値がＶＡである学習データであって、正誤が「Ｆａｉｌｕｒｅ」の学習データの回数を１増加させる。次に、ステップＳ２５で、学習データ生成部２２が、学習データＤＢ３１において、障害種別がＦ、キーがＫ、値がＶＢである学習データであって、正誤が「Ｓｕｃｃｅｓｓ」の学習データの回数を１増加させる。なお、ステップＳ２４及びＳ２５において、該当の学習データが学習データＤＢ３１に登録されていない場合には、学習データ生成部２２は、該当の学習データを追加した上で、回数に１を設定する。
【００９４】
次に、ステップＳ２６で、学習データ生成部２２が、例えば、図１０に示すようなカウントデータＤＢ３２において、障害種別がＦ、キーがＫのカウントデータ（ＮＳ及びＮＦ）をそれぞれ１増加させ、処理はステップＳ２２に戻る。なお、該当のカウントデータがカウントデータＤＢ３２に登録されていない場合には、学習データ生成部２２は、該当のカウントデータを追加した上で、ＮＳ及びＮＦの各々に１を設定する。
【００９５】
上記ステップＳ２２で、未処理のパターンが存在しないと判定された場合には、処理はステップＳ２７へ移行し、学習データ生成部２２が、学習データＤＢ３１及びカウントデータＤＢ３２を出力して、処理は図１９に示す学習処理に戻る。
【００９６】
次に、図１９に示す学習処理のステップＳ３０で、特定スコア計算部２３が、図２２に詳細を示す特定スコア計算処理を実行する。
【００９７】
図２２に示す特定スコア計算処理のステップＳ３１で、特定スコア計算部２３が、パターン生成部２１から出力された障害種別リスト４２と、学習データ生成部２２から出力された学習データＤＢ３１及びカウントデータＤＢ３２とを取得する。
【００９８】
次に、ステップＳ３２で、特定スコア計算部２３が、障害種別リスト４２に、以下のステップＳ３３〜Ｓ４０の処理が未処理の障害種別が存在するか否かを判定する。未処理の障害種別が存在する場合には、処理はステップＳ３３へ移行し、特定スコア計算部２３が、未処理の障害種別から１つを選択し、障害種別Ｆとする。
【００９９】
次に、ステップＳ３４で、特定スコア計算部２３が、学習データＤＢ３１に記録された学習データのうち、障害種別がＦの学習データに含まれるキーを全て抽出し、Ｆのキーリストを作成する。次に、ステップＳ３５で、特定スコア計算部２３が、Ｆのキーリストに、以下のステップＳ３６〜Ｓ４０の処理が未処理のキーが存在するか否かを判定する。未処理のキーが存在する場合には、処理はステップＳ３６へ移行し、特定スコア計算部２３が、未処理のキーから１つを選択し、キーＫとする。
【０１００】
次に、ステップＳ３７で、特定スコア計算部２３が、カウントデータＤＢ３２から、障害種別がＦで、キーがＫのカウントデータ（ＮＳ及びＮＦ）を取得する。
【０１０１】
次に、ステップＳ３８で、特定スコア計算部２３が、学習データＤＢ３１から、障害種別がＦ、キーがＫ、正誤が「Ｓｕｃｃｅｓｓ」の学習データの回数を、学習データの値毎に取得する。そして、特定スコア計算部２３が、上記ステップＳ３７で取得した回数ＮＳと、学習データから取得した回数とを用いて値毎の経験的確率を求め、例えば（１）式により、正解の特定スコアＳＳを計算する。
【０１０２】
次に、ステップＳ３９で、特定スコア計算部２３が、学習データＤＢ３１から、障害種別がＦ、キーがＫ、正誤が「Ｆａｉｌｕｒｅ」の学習データの回数を、学習データの値毎に取得する。そして、特定スコア計算部２３が、上記ステップＳ３７で取得した回数ＮＦと、学習データから取得した回数とを用いて値毎の経験的確率を求め、例えば（２）式により、誤りの特定スコアＳＦを計算する。
【０１０３】
次に、ステップＳ４０で、特定スコア計算部２３が、障害種別Ｆと、キーＫと、特定スコアＳＳと、特定スコアＳＦとの組を、例えば、図１１に示すような特定スコアＤＢ３３に記録し、処理はステップＳ３５に戻る。
【０１０４】
上記ステップＳ３５で、未処理のキーが存在しないと判定されると、処理はステップＳ３２に戻る。ステップＳ３２で、未処理の障害種別が存在しないと判定されると、処理はステップＳ４１へ移行する。
【０１０５】
ステップＳ４１では、特定スコア計算部２３が、学習データＤＢ３１、カウントデータＤＢ３２、及び特定スコアＤＢ３３を、記憶部３０に記憶して、処理は図１９に示す学習処理に戻る。
【０１０６】
次に、図１９に示す学習処理のステップＳ５０で、ソフトウェア構成学習部２４が、図２３に詳細を示すソフトウェア構成学習処理を実行する。
【０１０７】
図２３に示すソフトウェア構成学習処理のステップＳ５１で、ソフトウェア構成学習部２４が、学習データが抽出された構成情報３７Ａを取得する。また、ソフトウェア構成学習部２４が、運用開始日時（例えば、ＯＳインストール日時）ＴＬの情報を受け付ける。
【０１０８】
次に、ステップＳ５２で、ソフトウェア構成学習部２４が、構成情報３７Ａに、以下のＳ５３〜Ｓ５５の処理が未処理の設定ファイルが存在するか否かを判定する。未処理の設定ファイルが存在する場合には、処理はステップＳ５３へ移行する。
【０１０９】
ステップＳ５３では、ソフトウェア構成学習部２４が、未処理の設定ファイルから１つを選択し、正規表現を用いるなどして、設定ファイルの内容を構文解析し、正規表現に合致する設定項目と設定値との組を探索する。
【０１１０】
次に、ステップＳ５４で、ソフトウェア構成学習部２４が、上記ステップＳ５３の構文解析の結果、構成情報３７Ａから、正規表現に合致する設定項目と設定値との組が抽出されたか否かを判定する。設定項目と設定値との組が抽出された場合、ソフトウェア構成学習部２４が、設定ファイルはソフトウェアの設定ファイルであると判定し、処理はステップＳ５５へ移行する。一方、設定項目と設定値との組が抽出されなかった場合、ソフトウェア構成学習部２４が、設定ファイルはソフトウェアの設定ファイルではないと判定し、処理はステップＳ５２に戻る。
【０１１１】
ステップＳ５５では、ソフトウェア構成学習部２４が、上記ステップＳ５３で選択した設定ファイルの識別情報３７２及び更新日時３７３を抽出する。また、ソフトウェア構成学習部２４は、例えば、図１２に示すような設定ファイルリスト４６に識別情報３７２を記録し、識別情報３７２に、数字や記号等のＩＤを付与する。
【０１１２】
上記ステップＳ５２で、未処理の設定ファイルが存在しないと判定されると、処理はステップＳ５６へ移行する。ステップＳ５６で、ソフトウェア構成学習部２４が、上記ステップＳ５４で抽出された設定ファイルの識別情報から、更新日時がＴＬより小さい設定ファイルの識別情報を削除する。
【０１１３】
次に、ステップＳ５７で、ソフトウェア構成学習部２４が、上記ステップＳ５４で抽出された設定ファイルの識別情報を、設定ファイルリスト４６で付与されたＩＤに置き換え、かつ更新日時順に並び替えて、ソフトウェア構成パターンを生成する。
【０１１４】
次に、ステップＳ５８で、ソフトウェア構成学習部２４が、生成したソフトウェア構成パターンを、該当の事例データ３６から抽出された障害種別３８及びキーと対応付けて、例えば、図１３に示すようなソフトウェア構成ＤＢ３４に記録する。そして、処理は図１９に示す学習処理に戻る。
【０１１５】
次に、図１９に示す学習処理のステップＳ６０で、依存度計算部２５が、図２４に詳細を示す依存度計算処理を実行する。
【０１１６】
図２４に示す依存度計算処理のステップＳ６１で、依存度計算部２５が、ソフトウェア構成ＤＢ３４を取得する。
【０１１７】
次に、ステップＳ６２で、依存度計算部２５が、ソフトウェア構成ＤＢ３４に、以下のステップＳ６３〜Ｓ６８の処理が未処理の障害種別が存在するか否かを判定する。未処理の障害種別が存在する場合には、処理はステップＳ６３へ移行し、依存度計算部２５が、未処理の障害種別を１つ選択し、Ｆとする。
【０１１８】
次に、ステップＳ６４で、依存度計算部２５が、ソフトウェア構成ＤＢ３４において、障害種別Ｆに対応するキーのうち、以下のステップＳ６５〜Ｓ６８の処理が未処理のキーが存在するか否かを判定する。未処理のキーが存在する場合には、処理はステップＳ６５へ移行し、依存度計算部２５が、未処理のキーから１つを選択し、Ｋとする。
【０１１９】
次に、ステップＳ６６で、依存度計算部２５が、ソフトウェア構成ＤＢ３４から、障害種別Ｆ及びキーＫのエントリを抽出する。そして、次のステップＳ６７で、依存度計算部２５が、例えば、（３）式により、障害種別Ｆ及びキーＫについての依存度を計算する。次に、ステップＳ６８で、依存度計算部２５が、障害種別Ｆ及びキーＫに対応付けて、計算した依存度を、例えば図１６に示すような依存度ＤＢ３５に記録して、処理はステップＳ６４に戻る。
【０１２０】
ステップＳ６４で、未処理のキーが存在しないと判定されると、処理はステップＳ６２に戻り、ステップＳ６２で、未処理の障害種別が存在しないと判定されると、図１９に示す学習処理にリターンし、学習処理は終了する。
【０１２１】
次に、図２５に示す検知処理のステップＳ７１で、検知部２６が、入力された検知対象の構成情報を取得する。また、検知部２６が、記憶部３０に記憶された学習データＤＢ３１、カウントデータＤＢ３２、及び特定スコアＤＢ３３を取得する。
【０１２２】
次に、ステップＳ７２で、検知部２６が、検知対象の構成情報に含まれるキー及び値の組で表される検知対象データのうち、以下のステップＳ７３〜Ｓ８３の処理が未処理の検知対象データが存在するか否かを判定する。未処理の検知対象データが存在する場合には、処理はステップＳ７３へ移行し、検知部２６が、未処理の検知対象データから1つを選択し、選択した検知対象データに含まれるキーをＫ、値をＶとする。
【０１２３】
次に、ステップＳ７４で、検知部２６が、特定スコアＤＢ３３に、キーＫに対応して記録された障害種別のうち、以下のステップＳ７５〜Ｓ８３の処理が未処理の障害種別が存在するか否かを判定する。未処理の障害種別が存在する場合には、処理はステップＳ７５へ移行し、検知部２６が、未処理の障害種別から１つを選択してＦとし、障害種別がＦ、かつキーがＫに対応する特定スコアＳＳ及び特定スコアＳＦを、特定スコアＤＢ３３から取得する。
【０１２４】
次に、ステップＳ７６で、検知部２６が、特定スコアＳＳと特定スコアＳＦとを比較し、ＳＳ＜ＳＦか否かを判定する。上述したように、上記（１）式に示す特定スコアＳＳは、値が小さいほど正解の学習データの値が正解である確からしさの確度が高いことを表す。また、上記（２）式に示す特定スコアＳＦは、値が小さいほど誤りの学習データの値が誤りである確からしさの確度が高いことを表す。従って、ＳＳ＜ＳＦの場合には、正解の学習データを用いた方がより適切に予兆検知を行うことができ、ＳＳ＞ＳＦの場合には、誤りの学習データを用いた方がより適切に予兆検知を行うことができる。ＳＳ＝ＳＦの場合には、どちらを用いてもよいが、本実施形態では、誤りの学習データを用いることとする。ＳＳ＜ＳＦの場合には、処理はステップＳ７７へ移行し、ＳＳ≧ＳＦの場合には、処理はステップＳ８０へ移行する。
【０１２５】
ステップＳ７７では、検知部２６が、学習データＤＢ３１から、障害種別がＦ、キーがＫ、正誤が「Ｓｕｃｃｅｓｓ」の学習データの値を取得し、ＶＲとする。次に、ステップＳ７８で、検知部２６が、検知対象データの値Ｖと取得した学習データの値ＶＲとが一致するか否かを判定する。Ｖ＝ＶＲの場合には、検知対象データの値Ｖには正しい値が設定されていることを表しているため、そのまま処理はステップＳ７４に戻る。Ｖ≠ＶＲの場合には、処理はステップＳ７９へ移行し、検知部２６が、検知スコアＳに、検知対象データの値が、正解の学習データと一致しなかったことを示す値「−１」を設定し、処理はステップＳ８３へ移行する。
【０１２６】
一方、ステップＳ８０では、検知部２６が、学習データＤＢ３１から、障害種別がＦ、キーがＫ、正誤が「Ｆａｉｌｕｒｅ」の学習データの値を取得し、ＶＲとする。次に、ステップＳ８１で、検知部２６が、検知対象データの値Ｖと取得した学習データの値ＶＲとが一致するか否かを判定する。Ｖ≠ＶＲの場合には、検知対象データの値Ｖには誤りの値が設定されているとはいえないため、そのまま処理はステップＳ７４に戻る。Ｖ＝ＶＲの場合には、処理はステップＳ８２へ移行する。ステップＳ８２では、検知部２６が、障害種別がＦ、かつキーがＫで、値ＶＲを有する誤りの学習データの出現回数Ｎを学習データＤＢ３１から取得する。また、検知部２６が、障害種別がＦ、かつキーがＫの誤りの学習データの出現回数ＮＦをカウントデータＤＢ３２から取得する。そして、検知部２６は、検知スコアＳに、Ｎ／ＮＦを設定し、処理はステップＳ８３へ移行する。
【０１２７】
ステップＳ８３では、検知部２６が、障害種別Ｆと、キーＫと、値Ｖと、検知スコアＳとの組を予兆検知結果として、例えば、図１７に示すような予兆検知結果リスト４１に記録し、処理はステップＳ７４に戻る。ステップＳ７４で、未処理の障害種別が存在しないと判定されると、処理はステップＳ７２に戻る。ステップＳ７２で、未処理の検知対象データが存在しないと判定されると、処理はステップＳ９０へ移行する。
【０１２８】
なお、上記ステップＳ７７で、複数の値ＶＲが取得された場合には、ステップＳ７８で、検知対象データの値Ｖが、いずれの値ＶＲとも一致しないと判定される場合に、ステップＳ７９へ移行するようにするとよい。
【０１２９】
また、上記ステップＳ８０で、複数の値ＶＲが取得された場合には、ステップＳ８１で、検知対象データの値Ｖが、いずれかの値ＶＲと一致すると判定される場合に、ステップＳ８２へ移行するようにするとよい。また、検知スコアＳに対する閾値Ｓｔｈを設定しておき、Ｓ＞Ｓｔｈとなる予兆検知結果のみを予兆検知結果リスト４１に追加するようにしてもよい。これにより、障害発生の予兆としてより確からしい場合のみを予兆検知結果リスト４１に含めることができる。また、閾値Ｓｔｈは、障害種別毎及びキー毎に異なる値を設定してもよい。
【０１３０】
ステップＳ９０では、出力判定部２７が、図２６に詳細を示す出力判定処理を実行する。
【０１３１】
図２６に示す出力判定処理のステップＳ９１で、出力判定部２７が、予兆検知結果リスト４１と、ソフトウェア構成ＤＢ３４と、依存度ＤＢ３５とを取得する。次に、ステップＳ９２で、出力判定部２７が、予兆検知結果リスト４１に以下のステップＳ９３〜Ｓ１１２の処理が未処理の予兆検知結果が存在するか否かを判定する。未処理の予兆検知結果が存在する場合には、処理はステップＳ９３へ移行する。
【０１３２】
ステップＳ９３では、出力判定部２７が、未処理の予兆検知結果から１つ選択し、その予兆検知結果に含まれる障害種別をＦ、キーをＫとする。次に、ステップＳ９４で、出力判定部２７が、依存度ＤＢ３５から、障害種別Ｆ及びキーＫに対応する依存度Ｄを取得する。
【０１３３】
次に、ステップＳ９５で、出力判定部２７が、取得した依存度Ｄが予め定めた閾値Ｄｔｈより大きいか否かを判定する。Ｄ＞Ｄｔｈの場合には、出力判定部２７は、障害種別Ｆ及びキーＫに対応する障害の発生は、ソフトウェア構成に依存すると判定し、処理はステップＳ９６へ移行する。一方、Ｄ≦Ｄｔｈの場合には、出力判定部２７は、障害種別Ｆ及びキーＫに対応する障害の発生は、ソフトウェア構成に依存しないと判定し、処理はステップＳ９２に戻る。
【０１３４】
例えば、Ｄｔｈ＝１．５とした場合、図１７に示す予兆検知結果リスト４１の１つ目の予兆検知結果に対応する依存度は、図１６に示す依存度ＤＢ３５から、Ｄ＝２．０８であり、Ｄ＝２．０８＞Ｄｔｈ＝１．５であるので、ソフトウェア構成に依存する。また、図１７に示す予兆検知結果リスト４１の２つ目の予兆検知結果に対応する依存度は、図１６に示す依存度ＤＢ３５から、Ｄ＝１．２８であり、Ｄ＝１．２８＜Ｄｔｈ＝１．５であるので、ソフトウェア構成に依存しない。
【０１３５】
ステップＳ９６では、出力判定部２７が、検知対象の構成情報から、図２３に示すソフトウェア構成学習処理のステップＳ５１〜Ｓ５７と同様の処理により、ソフトウェア構成パターンｐを生成する。なお、ステップＳ５１の「障害復旧前の構成情報」は、「検知対象の構成情報」と読み替える。また、出力判定処理のループが繰り返される場合には、２回目以降のループでは、１回目のループで生成したソフトウェア構成パターンｐを使用すればよい。
【０１３６】
次に、ステップＳ９７で、出力判定部２７が、ソフトウェア構成ＤＢ３４から、障害の発生がソフトウェア構成に依存すると判定した障害種別Ｆ及びキーＫに対応する全てのソフトウェア構成パターンＰ＝｛Ｐ１，Ｐ２，・・・｝を抽出する。
【０１３７】
次に、ステップＳ１００で、出力判定部２７が、図２７に詳細を示す類似度判定処理を実行する。
【０１３８】
図２７に示す類似度判定処理のステップＳ１０１で、出力判定部２７が、ソフトウェア構成ＤＢ３４から抽出したソフトウェア構成パターンＰに、以下のステップＳ１０２〜Ｓ１０６の処理が未処理のソフトウェア構成パターンＰｉが存在するか否かを判定する。未処理のソフトウェア構成パターンＰｉが存在する場合には、処理はステップＳ１０２へ移行する。
【０１３９】
ステップＳ１０２では、出力判定部２７が、ソフトウェア構成パターンＰから、未処理のソフトウェア構成パターンＰｉを１つ選択する。次に、ステップＳ１０３で、出力判定部２７が、ソフトウェア構成パターンｐと、ソフトウェア構成パターンＰｉとのレーベンシュタイン距離ｄＬ（ｐ，Ｐｉ）を、両ソフトウェア構成パターン間の類似度として計算する。
【０１４０】
次に、ステップＳ１０４で、出力判定部２７が、レーベンシュタイン距離ｄＬ（ｐ，Ｐｉ）、予め定めた閾値ｄｔｈより小さいか否かを判定する。ｄＬ（ｐ，Ｐｉ）＜ｄｔｈの場合、出力判定部２７は、両ソフトウェア構成パターンは類似すると判定し、処理はステップＳ１０５へ移行する。ステップＳ１０５では、出力判定部２７が、判定結果「Ｙｅｓ」を出力し、処理は図２６に示す出力判定処理にリターンする。
【０１４１】
一方、ｄＬ（ｐ，Ｐｉ）≧ｄｔｈの場合、出力判定部２７は、両ソフトウェア構成パターンは類似しないと判定し、処理はステップＳ１０１に戻る。ステップＳ１０１で、未処理のソフトウェア構成パターンＰｉが存在しないと判定された場合、すなわち、いずれのソフトウェア構成パターンＰｉもソフトウェア構成パターンｐに類似していないと判定された場合には、処理はステップＳ１０６へ移行する。
【０１４２】
ステップＳ１０６では、出力判定部２７が、判定結果「Ｎｏ」を出力し、処理は図２６に示す出力判定処理にリターンする。
【０１４３】
次に、図２６に示す出力判定処理のステップＳ１１１で、出力判定部２７が、上記ステップＳ１００の類似度判定処理での判定結果が「Ｎｏ」か否かを判定する。判定結果が「Ｎｏ」の場合には、処理はステップＳ１１２へ移行し、出力判定部２７が、予兆検知結果リスト４１の該当の予兆検知結果を削除する。
【０１４４】
一方、判定結果が「Ｙｅｓ」の場合には、処理はステップＳ９２に戻る。ステップＳ９２で、予兆検知結果リスト４１に未処理の予兆検知結果が存在しないと判定されると、処理はステップＳ１１３へ移行する。ステップＳ１１３では、出力判定部２７が、予兆検知結果リスト４１を出力し、処理は図２５に示す検知処理にリターンし、検知処理は終了する。
【０１４５】
以上説明したように、本実施形態によれば、学習データを用いて障害の予兆検知を行い、その障害がソフトウェア構成に依存するか否かを判定した上で、学習時と検知時とで、システムのソフトウェア構成が類似する場合に、該当の予兆検知結果を出力する。これにより、ソフトウェア構成が変更されている場合でも、適切に設定ミスを検知することができる。また、他のシステムで採取された学習データを用いたとしても、ソフトウェア構成の類似度に応じて、予兆検知結果を出力するか否かを判定するため、適切に設定ミスを検知することができる。
【０１４６】
なお、上記実施形態では、ソフトウェア構成に依存する障害について、ソフトウェア構成パターンｐと、ソフトウェア構成パターンＰｉとのいずれかが類似している場合に、予兆検知結果を出力する場合について説明したが、これに限定されない。例えば、ソフトウェア構成ＤＢ３４から抽出したソフトウェア構成パターンＰ全体と、ソフトウェア構成パターンｐとの類似度を判定するようにしてもよい。
【０１４７】
具体的には、図２６に示す出力判定処理のステップＳ１００で、図２７に示す類似度判定処理に替えて、図２８に示す類似度判定処理を実行するようにしてもよい。
【０１４８】
図２８に示す類似度判定処理のステップＳ２０１で、出力判定部２７は、ソフトウェア構成ＤＢ３４から抽出したソフトウェア構成パターンＰに含まれる各ソフトウェア構成パターンＰｉ間の距離を総当りで計算する。ここでは、距離としてレーベンシュタイン距離を用いる。
【０１４９】
例えば、Ｐ＝｛Ｐ１，Ｐ２，Ｐ３｝で、Ｐ１＝（４，３，２，１）、Ｐ２＝（４，５，１）、Ｐ３＝（３，４，２，１，５，６）の場合、ｄＬ（Ｐ１，Ｐ２）＝３、ｄＬ（Ｐ１，Ｐ３）＝４、ｄＬ（Ｐ２，Ｐ３）＝５と計算される。
【０１５０】
次に、ステップＳ２０２で、出力判定部２７が、各ソフトウェア構成パターンＰｉについて、他のソフトウェア構成パターンＰｉとの平均距離ｄＭ（Ｐｉ）を、下記（４）式により計算する。ここでは、ｄＭ（Ｐ１）＝３．５、ｄＭ（Ｐ２）＝４、ｄＭ（Ｐ３）＝４．５と計算される。
【０１５１】
【数６】
0006528669.tif 000007
【０１５２】
次に、ステップＳ２０３で、出力判定部２７が、平均距離ｄＭ（Ｐｉ）が最小のソフトウェア構成パターンＰｉを、重心ＰＣとする。ここでは、Ｐ１が重心ＰＣとなる。次に、ステップＳ２０４で、出力判定部２７が、ソフトウェア構成パターンＰｉの各々と、重心ＰＣとのレーベンシュタイン距離ｄＬ（Ｐｉ，ＰＣ）の最大値を、閾値ｄｔｈに設定する。ここでは、ｄｔｈ＝４に設定される。
【０１５３】
次に、ステップＳ２０５で、出力判定部２７が、検知対象の構成情報から生成したソフトウェア構成パターンｐと、重心ＰＣとのレーベンシュタイン距離ｄＬ（ｐ，ＰＣ）を計算する。ここで、ｐ＝（４，３，１）とすると、ｄＬ（ｐ，ＰＣ）＝１である。そして、出力判定部２７が、ｄＬ（ｐ，ＰＣ）＜ｄｔｈか否かを判定し、ｄＬ（ｐ，ＰＣ）＜ｄｔｈの場合には、処理はステップＳ２０６へ移行し、出力判定部２７が、判定結果「Ｙｅｓ」を出力する。一方、ｄＬ（ｐ，ＰＣ）≧ｄｔｈの場合には、処理はステップＳ２０７へ移行し、出力判定部２７が、判定結果「Ｎｏ」を出力する。そして、処理は図２６に示す出力判定処理にリターンする。
【０１５４】
また、上記実施形態では、ソフトウェア構成パターン間の類似度として、レーベンシュタイン距離を用いる場合について説明したが、これに限定されない。例えば、学習されたソフトウェア構成パターンＰのいずれかのＰｉに含まれるＩＤが、検知対象の構成情報から生成したソフトウェア構成パターンｐに含まれるＩＤをどの程度包含するかに基づいて、類似度を決定してもよい。具体的には、ソフトウェア構成パターンＰｉに含まれるＩＤが、ソフトウェア構成パターンｐに含まれるＩＤを全て包含する場合、又は所定割合以上包含する場合に、両ソフトウェア構成パターンが類似すると判定することができる。例えば、ｐ＝｛４，３，１｝、Ｐｉ＝｛４，３，２，１｝の場合、｛４，３，１｝∈｛４，３，２，１｝であるので、両ソフトウェア構成パターンは類似する。
【０１５５】
なお、この場合、ソフトウェア構成パターンに含まれるＩＤの順序は考慮していないため、ソフトウェア構成パターンを生成する際に、各設定ファイルに対応するＩＤを更新日時順に並べ替える必要はない。
【０１５６】
また、上記実施形態では、障害復旧前後で取得した構成情報の各々から正解の学習データ及び誤りの学習データを生成し、この学習データを用いて障害の予兆検知を行う場合について説明したが、これに限定されない。学習データとしては、障害復旧前の構成情報から生成した誤りの学習データのみを用いてもよいし、障害復旧後の構成情報から生成した正解の学習データのみを用いてもよい。
【０１５７】
なお、上記実施形態では、障害復旧前後で取得した構成情報の各々から正解の学習データ及び誤りの学習データを生成し、この学習データと検知対象の構成情報に含まれる検知対象データとを比較して、各設定項目に正しい値が設定されているか否かを判定する。これにより、構成情報の変更前後で値が異なる箇所を検出して、その箇所が障害の原因になり得るか否かを分析する手法では検知することができない、設定値の変更漏れに起因する障害発生の予兆も検知することができる。
【０１５８】
また、上記実施形態によれば、正解の学習データと、誤りの学習データとで、より正解としての確からしさ、又は誤りとしての確からしさの確度が高い方の学習データを用いる。これにより、設定値の変更誤り又は変更漏れに起因する障害発生のいずれの場合も、より適切に予兆を検知することができる。
【０１５９】
また、上記実施形態では、予兆検知結果に障害種別、キー、値、及び検知スコアを含める場合について説明したが、予兆検知結果に、正解の値も加えてもよい。具体的には、正解の学習データを用いて予兆検知を行った場合には、正解の学習データが有する値を正解の値として加えることができる。また、誤りの学習データを用いて予兆検知を行った場合には、その学習データと障害種別及びキーが同一で、正誤が「Ｓｕｃｃｅｓｓ」の学習データが有する値を正解の値として加えることができる。
【０１６０】
また、上記では、本発明に係る予兆検知プログラムの一例である予兆検知プログラム６０が記憶装置５３に予め記憶（インストール）されている態様を説明したが、これに限定されない。開示の技術に係る予兆検知プログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＵＳＢメモリ等の記録媒体に記録された形態で提供することも可能である。
【０１６１】
以上の実施形態に関し、更に以下の付記を開示する。
【０１６２】
（付記１）
コンピュータに、
システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶すると共に、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶し、
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定し、
検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて、出力するか否かを判定する
ことを含む処理を実行させる予兆検知プログラム。
【０１６３】
（付記２）
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報のバリエーションが少ないほど高くなる依存度を計算し、該依存度が予め定めた閾値以上の場合に、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存すると判定する付記１記載の予兆検知プログラム。
【０１６４】
（付記３）
前記第１ソフトウェア構成情報と前記第２ソフトウェア構成情報との類似度が予め定めた閾値以上の場合に、前記検知結果を出力すると判定する付記１又は付記２記載の予兆検知プログラム。
【０１６５】
（付記４）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々に含まれる設定ファイルの包含関係に基づいて、前記類似度を求める付記３記載の予兆検知プログラム。
【０１６６】
（付記５）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記設定ファイルを示す識別情報を該設定ファイルの更新日時順に並べたパターンとし、
前記第１ソフトウェア構成情報を示すパターンと、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求める
付記３記載の予兆検知プログラム。
【０１６７】
（付記６）
前記検知結果に含まれる設定項目及び障害種別に対応付けて記憶された前記第１ソフトウェア構成情報を示すパターンの各々の間のレーベンシュタイン距離から得られる重心と、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求め、該類似度が、前記重心と前記第１ソフトウェア構成情報を示すパターンの各々とのレーベンシュタイン距離の最大値より小さい場合に、前記検知結果を出力すると判定する付記５記載の予兆検知プログラム。
【０１６８】
（付記７）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記システムの運用開始から所定期間に設定された設定ファイルの組み合わせとする付記１〜付記６のいずれか１項記載の予兆検知プログラム。
【０１６９】
（付記８）
システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶すると共に、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶する学習部と、
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定する依存判定部と、
検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて、出力するか否かを判定する出力判定部と、
を含む予兆検知装置。
【０１７０】
（付記９）
前記依存判定部は、前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報のバリエーションが少ないほど高くなる依存度を計算し、該依存度が予め定めた閾値以上の場合に、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存すると判定する付記８記載の予兆検知装置。
【０１７１】
（付記１０）
前記出力判定部は、前記第１ソフトウェア構成情報と前記第２ソフトウェア構成情報との類似度が予め定めた閾値以上の場合に、前記検知結果を出力すると判定する付記８又は付記９記載の予兆検知装置。
【０１７２】
（付記１１）
前記出力判定部は、前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々に含まれる設定ファイルの包含関係に基づいて、前記類似度を求める付記１０記載の予兆検知装置。
【０１７３】
（付記１２）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記設定ファイルを該設定ファイルの更新日時順に並べたパターンとし、
前記出力判定部は、前記第１ソフトウェア構成情報を示すパターンと、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求める
付記１０記載の予兆検知装置。
【０１７４】
（付記１３）
前記出力判定部は、前記検知結果に含まれる設定項目及び障害種別に対応付けて記憶された前記第１ソフトウェア構成情報を示すパターンの各々の間のレーベンシュタイン距離から得られる重心と、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求め、該類似度が、前記重心と前記第１ソフトウェア構成情報を示すパターンの各々とのレーベンシュタイン距離の最大値より小さい場合に、前記検知結果を出力すると判定する付記１２記載の予兆検知装置。
【０１７５】
（付記１４）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記システムの運用開始から所定期間に設定された設定ファイルの組み合わせとする付記８〜付記１３のいずれか１項記載の予兆検知装置。
【０１７６】
（付記１５）
コンピュータに、
システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶すると共に、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶し、
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定し、
検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて、出力するか否かを判定する
ことを含む処理を実行させる予兆検知方法。
【０１７７】
（付記１６）
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報のバリエーションが少ないほど高くなる依存度を計算し、該依存度が予め定めた閾値以上の場合に、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存すると判定する付記１５記載の予兆検知方法。
【０１７８】
（付記１７）
前記第１ソフトウェア構成情報と前記第２ソフトウェア構成情報との類似度が予め定めた閾値以上の場合に、前記検知結果を出力すると判定する付記１５又は付記１６記載の予兆検知方法。
【０１７９】
（付記１８）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々に含まれる設定ファイルの包含関係に基づいて、前記類似度を求める付記１７記載の予兆検知方法。
【０１８０】
（付記１９）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記設定ファイルを該設定ファイルの更新日時順に並べたパターンとし、
前記第１ソフトウェア構成情報を示すパターンと、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求める
付記１７記載の予兆検知方法。
【０１８１】
（付記２０）
前記検知結果に含まれる設定項目及び障害種別に対応付けて記憶された前記第１ソフトウェア構成情報を示すパターンの各々の間のレーベンシュタイン距離から得られる重心と、前記第２ソフトウェア構成情報を示すパターンとのレーベンシュタイン距離を、前記類似度として求め、該類似度が、前記重心と前記第１ソフトウェア構成情報を示すパターンの各々とのレーベンシュタイン距離の最大値より小さい場合に、前記検知結果を出力すると判定する付記１９記載の予兆検知方法。
【０１８２】
（付記２１）
前記第１ソフトウェア構成情報及び前記第２ソフトウェア構成情報の各々を、前記システムの運用開始から所定期間に設定された設定ファイルの組み合わせとする付記１５〜付記２０のいずれか１項記載の予兆検知方法。
【０１８３】
（付記２２）
コンピュータに、
システムにおける障害発生時に採取した構成情報に含まれる設定ミスのある設定項目及び設定値と障害種別とを対応付けた学習データを記憶すると共に、前記構成情報に含まれるソフトウェアに関する設定が記述された設定ファイルの組み合わせで表される第１ソフトウェア構成情報と前記障害種別及び前記設定項目とを対応付けて記憶し、
前記障害種別及び前記設定項目に対応付けて記憶された前記第１ソフトウェア構成情報に基づいて、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存するか否かを判定し、
検知対象の構成情報から前記学習データに基づいて検知された障害種別及び設定項目を含む検知結果のうち、該障害種別及び該設定項目に対応する障害がソフトウェア構成に依存する検知結果を、前記検知対象の構成情報に含まれる第２ソフトウェア構成情報と、前記検知結果に含まれる障害種別及び設定項目該に対応付けて記憶された第１ソフトウェア構成情報とを比較した結果に基づいて、出力するか否かを判定する
ことを含む処理を実行させる予兆検知プログラムを記憶した記憶媒体。
【符号の説明】
【０１８４】
１０   予兆検知装置
１４   処理システム
１６   処理装置
２０   学習部
２１   パターン生成部
２２   学習データ生成部
２３   特定スコア計算部
２４   ソフトウェア構成学習部
２５   依存度計算部
２６   検知部
２７   出力判定部
３０   記憶部
３１   学習データ・データベース（ＤＢ）
３２   カウントデータＤＢ
３３   特定スコアＤＢ
３４   ソフトウェア構成ＤＢ
３５   依存度ＤＢ
３６   事例データ
３７Ａ 障害復旧前の構成情報
３７Ｂ 障害復旧後の構成情報
３７１ 設定ファイル
３７２ 設定ファイルの識別情報
３７３ 設定ファイルの更新日時
３８   障害種別
５０   コンピュータ
５１   ＣＰＵ
５２   メモリ
５３   記憶装置
５９   記録媒体
６０   予兆検知プログラム
【図１】
0006528669.tif 000008
【図２】
0006528669.tif 000009
【図３】
0006528669.tif 000010
【図４】
0006528669.tif 000011
【図５】
0006528669.tif 000012
【図６】
0006528669.tif 000013
【図７】
0006528669.tif 000014
【図８】
0006528669.tif 000015
【図９】
0006528669.tif 000016
【図１０】
0006528669.tif 000017
【図１１】
0006528669.tif 000018
【図１２】
0006528669.tif 000019
【図１３】
0006528669.tif 000020
【図１４】
0006528669.tif 000021
【図１５】
0006528669.tif 000022
【図１６】
0006528669.tif 000023
【図１７】
0006528669.tif 000024
【図１８】
0006528669.tif 000025
【図１９】
0006528669.tif 000026
【図２０】
0006528669.tif 000027
【図２１】
0006528669.tif 000028
【図２２】
0006528669.tif 000029
【図２３】
0006528669.tif 000030
【図２４】
0006528669.tif 000031
【図２５】
0006528669.tif 000032
【図２６】
0006528669.tif 000033
【図２７】
0006528669.tif 000034
【図２８】
0006528669.tif 000035