(57)【要約】【課題】異常発生に至る蓋然性の高い事象を推定すること。【解決手段】異常原因推定プログラム３３０ａは、コンピュータ３００に、以下の処理を実行させる。異常原因推定プログラム３３０ａは、アプリケーションサーバの異常を示す場合は、アプリケーションサーバで実行されている１又は複数の機能を特定し、特定した機能をブラックリストに登録する処理を実行させる。一方、異常原因推定プログラム３３０ａは、アプリケーションサーバの異常を示さない場合は、アプリケーションサーバで実行されている１又は複数の機能を特定し、特定した機能をホワイトリストに登録する処理を実行させる。そして、異常原因推定プログラム３３０ａは、ブラックリストに登録された機能のうち、ホワイトリストに登録された機能以外の機能の情報を出力する処理を実行させる。【選択図】図１７
2014120138.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
システムについての負荷情報を取得し、
該負荷情報に基づいて該システムが異常を示すか否かの判定を行い、該判定が該システムの異常を示す場合は、該システムで実行されている１又は複数の機能を含む第１機能群を特定し、該判定が該システムの異常を示さない場合は、該システムで実行されている１又は複数の機能を含む第２機能群を特定し、
前記第１機能群に含まれる機能のうち、前記第２機能群に含まれない機能の情報を出力する、
処理を実行させることを特徴とする異常原因推定プログラム。
【請求項２】
前記機能群の取得を所定時間間隔離間した複数タイミングで行う、
ことを特徴とする請求項１に記載の異常原因推定プログラム。
【請求項３】
前記システムの異常は、前記システムの記憶部に記憶されたデータサイズが第１の所定値以上の場合、及び、前記システムの演算処理部の使用率が第２の所定値異常となった場合に発生することを特徴とする請求項１又は２に記載の異常原因推定プログラム。
【請求項４】
システムについての負荷情報を取得する取得部と、
該負荷情報に基づいて、該システムが異常を示す場合は、該システムで実行されている１又は複数の機能を含む第１機能群を特定し、該判定が該システムの異常を示さない場合は、該システムで実行されている１又は複数の機能を含む第２機能群を特定する特定部と、
前記第１機能群に含まれる機能のうち、前記第２機能群に含まれない機能の情報を出力する推定部と
を有することを特徴とする異常原因推定装置。
【請求項５】
コンピュータが、
システムについての負荷情報を取得し、
該負荷情報に基づいて該システムが異常を示すか否かの判定を行い、該判定が該システムの異常を示す場合は、該システムで実行されている１又は複数の機能を含む第１機能群を特定し、該判定が該システムの異常を示さない場合は、該システムで実行されている１又は複数の機能を含む第２機能群を特定し、
前記第１機能群に含まれる機能のうち、前記第２機能群に含まれない機能の情報を出力する、
処理を実行することを特徴とする異常原因推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常原因推定プログラム、異常原因推定装置及び異常原因推定方法に関する。
【背景技術】
【０００２】
従来から外部アプリケーションの動作ログを詳細に取得するソフトウェアがある。このようなソフトウェアは、アプリケーションのソースコードコンパイル時などに、または、アプリケーションの実行前に、各メソッドに対して、アスペクト指向技術により、ログを取得する処理を埋め込む。また、このようなソフトウェアは、メソッドの入力−出力を解析してログ情報として記憶する。
【０００３】
また、ログ情報から、外部アプリケーションが実行されたシステムに異常が発生した原因を推定する技術もある。例えば、かかる技術では、システムに異常が発生した時刻における機能、例えば、ユーザの操作をログ情報から取得し、取得した機能をシステムに異常が発生した原因として推定する。
【先行技術文献】
【非特許文献】
【０００４】
【特許文献１】特開２０１０−２３１５６８号公報
【特許文献２】特開２００６−０９９２４９号公報
【特許文献３】特開２００５−１４１４５９号公報
【特許文献４】特開２００９−１６９６２３号公報
【特許文献５】特開２０１２−０９４０４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、複数の機能を並列に実行するオンラインシステムの場合、上記の技術では、そのオンラインシステムに異常が発生した原因となる機能を特定することは困難である。
【０００６】
例えば、オンラインシステムは、複数のユーザから複数の操作が入力され、その入力に対応する機能を並列で実行する。このとき、オンラインシステムは、異常の原因となる機能と異常の原因とならない機能とを並列に実行する。異常発生時に実行されていた機能群には異常の原因となる機能と異常の原因とならない機能とが含まれており、作業者は異常の原因となる機能を特定することが困難である。
【０００７】
１つの側面では、本発明は、異常発生に至る蓋然性の高い事象を推定することを目的とする。
【課題を解決するための手段】
【０００８】
本願の開示する異常原因推定プログラムは、１つの態様において、コンピュータに、システムについての負荷情報を取得する処理を実行させる。また、異常原因推定プログラムは、コンピュータに、負荷情報に基づいてシステムが異常を示すか否かの判定を行い、判定がシステムの異常を示す場合は、システムで実行されている１又は複数の機能を含む第１機能群を特定する処理を実行させる。また、異常原因推定プログラムは、コンピュータに、判定がシステムの異常を示さない場合は、システムで実行されている１又は複数の機能を含む第２機能群を特定する処理を実行させる。また、異常原因推定プログラムは、コンピュータに、第１機能群に含まれる機能のうち、第２機能群に含まれない機能の情報を出力する処理を実行させる。
【発明の効果】
【０００９】
異常発生に至る蓋然性の高い事象を推定することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例に係る異常原因推定装置の一例であるセンターが適用されたシステムの構成の一例を示す図である。
【図２】図２は、概況データのデータ構成の一例を示す図である。
【図３】図３は、インシデントデータのデータ構成の一例を示す図である。
【図４】図４は、第１のＤＢのデータ構成の一例を示す図である。
【図５】図５は、第２のＤＢのデータ構成の一例を示す図である。
【図６】図６は、第３のＤＢのデータ構成の一例を示す図である。
【図７】図７は、第４のＤＢのデータ構成の一例を示す図である。
【図８】図８は、実施例に係るセンターが実行する処理の一例を説明するための図である。
【図９】図９は、実施例に係るセンターが実行する処理の一例を説明するための図である。
【図１０】図１０は、実施例に係るセンターが実行する処理の一例を説明するための図である。
【図１１】図１１は、実施例に係るセンターが実行する処理の一例を説明するための図である。
【図１２】図１２は、実施例に係るセンターが実行する処理の一例を説明するための図である。
【図１３】図１３は、実施例に係るセンターが実行する処理の一例を説明するための図である。
【図１４】図１４は、実施例に係る生成処理の手順を示すフローチャートである。
【図１５】図１５は、実施例に係る異常原因推定処理の手順を示すフローチャートである。
【図１６】図１６は、変形例に係るセンターが実行する処理の一例を説明するための図である。
【図１７】図１７は、異常原因推定プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する異常原因推定プログラム、異常原因推定装置及び異常原因推定方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【００１２】
実施例に係る異常原因推定装置について説明する。図１は、実施例に係る異常原因推定装置の一例であるセンターが適用されたシステムの構成の一例を示す図である。図１に示すように、システム５０は、ユーザ端末５、コンソール６、アプリケーションサーバ７、センター８を有する。
【００１３】
ユーザ端末５は、アプリケーションサーバ７にアプリケーションの実行を依頼し、アプリケーションサーバ７からアプリケーションの実行結果を取得する。例えば、ユーザ端末５は、ユーザによって指定されたアプリケーションを実行する指示をアプリケーションサーバ７に送信し、アプリケーションサーバ７から実行結果を取得する。なお、ユーザ端末５の台数は、１台に限られず複数台であってもよい。
【００１４】
コンソール６は、センター８に対して各種の処理を依頼する端末である。例えば、コンソール６は、システム利用者や管理者からの操作を受け付けて、後述する異常原因推定処理を実行する指示を受け付ける。そして、コンソール６は、受け付けた指示をセンター８に送信する。これにより、センター８において異常原因推定処理が実行される。また、コンソール６は、センター８から送信された画面を受信すると、受信した画面を図示しない表示装置に表示する。
【００１５】
アプリケーションサーバ７は、アプリケーションを実行する。また、アプリケーションサーバ７は、アスペクト指向の技術により設定された、ログを取得するエージェント１０を有する。エージェント１０は、生成部１０ａ、抽出部１０ｂ及び送信部１０ｃを有する。
【００１６】
生成部１０ａは、概況データを生成する。例えば、生成部１０ａは、所定時間間隔で、アプリケーションを実行するアプリケーションサーバ７のメモリ使用率及びＣＰＵ（Central  Processing  Unit）使用率などの負荷情報を取得する。また、生成部１０ａは、所定時間間隔で、アプリケーションにより表示された画面に含まれるボタンのうち、ユーザにより操作されたボタンについての情報を取得する。以下、生成部１０ａが、１分毎に、過去１分間のアプリケーションサーバ７のメモリ使用率の平均値及びＣＰＵ使用率の平均値を含む負荷情報を取得する場合を例に挙げて説明する。また、以下、生成部１０ａが、１分毎に、過去１分間の間、ユーザにより操作されたボタンについての全ての情報を取得する場合について説明する。
【００１７】
そして、生成部１０ａは、１分毎に、取得した各種の情報と時刻とを対応づけた概況データを生成する。図２は、概況データのデータ構成の一例を示す図である。図２の例に示す概況データは、「時刻」、「ユーザ操作」、「メモリ使用率」及び「ＣＰＵ使用率」の各項目を有する。「時刻」の項目には、概況データを生成する時刻が登録される。「ユーザ操作」の項目には、ユーザにより操作されたボタンの識別子と、かかるボタンを有する画面の識別子が登録される。以下の説明では、ボタンの識別子と画面の識別子との組をユーザ操作識別子と称する。「メモリ使用率」の項目には、アプリケーションサーバ７のメモリ使用率の平均値が登録される。「ＣＰＵ使用率」の項目には、アプリケーションサーバ７のＣＰＵ使用率の平均値が登録される。
【００１８】
図２の例に示す概況データは、西暦２０１２年１０月１１日１５時３分に生成された概況データであることを示す。また、図２の例に示す概況データは、西暦２０１２年１０月１１日１５時２分から西暦２０１２年１０月１１日１５時３分までの間に、画面の識別子「Ａ」が示す画面に含まれるボタンのうち、ユーザにより、次のボタンが操作されたことを示す。すなわち、図２の例に示す概況データは、ボタンの識別子「ａ」が示すボタンが操作されたことを示す。また、図２の例に示す概況データは、西暦２０１２年１０月１１日１５時２分から西暦２０１２年１０月１１日１５時３分までの間に、画面の識別子「Ｃ」が示す画面に含まれるボタンのうち、ユーザにより、次のボタンが操作されたことを示す。すなわち、図２の例に示す概況データは、ボタンの識別子「ｅ」が示すボタンが操作されたことを示す。また、図２の例に示す概況データは、西暦２０１２年１０月１１日１５時２分から西暦２０１２年１０月１１日１５時３分までの間のアプリケーションサーバ７のメモリ使用率の平均値が「６０％」であることを示す。また、図２の例に示す概況データは、西暦２０１２年１０月１１日１５時２分から西暦２０１２年１０月１１日１５時３分までの間のアプリケーションサーバ７のＣＰＵ使用率の平均値が「４５％」であることを示す。
【００１９】
図１の説明に戻り、抽出部１０ｂは、概況データが生成されるたびに、生成された概況データのうち、所定の事象を示す概況データを抽出する。例えば、抽出部１０ｂは、「メモリ使用率」の項目に登録されたメモリ使用率の平均値が、所定の閾値（例えば、５０％）以上の概況データを抽出する。また、抽出部１０ｂは、「ＣＰＵ使用率」の項目に登録されたＣＰＵ使用率の平均値が、所定の閾値（例えば、６０％）以上の概況データを抽出する。このようにして、抽出部１０ｂは、アプリケーションサーバ７が異常である可能性が高い概況データを抽出する。続いて、抽出部１０ｂは、抽出した概況データの「時刻」の項目に登録された時刻、異常の候補の種類、及び、負荷情報を含むインシデントデータを生成する。例えば、抽出部１０ｂは、「メモリ使用率」の項目に登録されたメモリ使用率の平均値が、所定の閾値以上の概況データを抽出した場合には、次の処理を行う。すなわち、抽出部１０ｂは、抽出した概況データの「時刻」の項目に登録された時刻、「メモリ使用率異常」、及び、抽出した概況データの「メモリ使用率」の項目に登録された負荷情報を含むインシデントデータを生成する。ここで、「メモリ使用率異常」は、「メモリ使用率」が異常の候補であることを示す。また、抽出部１０ｂは、「ＣＰＵ使用率」の項目に登録されたＣＰＵ使用率の平均値が、所定の閾値以上の概況データを抽出した場合には、次の処理を行う。すなわち、抽出部１０ｂは、抽出した概況データの「時刻」の項目に登録された時刻、「ＣＰＵ使用率異常」、及び、抽出した概況データの「ＣＰＵ使用率」の項目に登録された負荷情報を含むインシデントデータを生成する。ここで、「ＣＰＵ使用率異常」は、「ＣＰＵ使用率」が異常の候補であることを示す。図３は、インシデントデータのデータ構成の一例を示す図である。図３の例に示すインシデントデータは、「時刻」、「異常の候補の種類」及び「負荷情報」の各項目を有する。図３の例において、「時刻」の項目には、概況データの「時刻」の項目に登録された時刻が登録される。また、「異常の候補の種類」の項目には、上述した「メモリ使用率異常」または「ＣＰＵ使用率異常」が登録される。また、「負荷情報」の項目には、「メモリ使用率異常」または「ＣＰＵ使用率異常」に対応する概況データの「メモリ使用率」または「ＣＰＵ使用率」の項目に登録された負荷情報が登録される。図３の例に示すインシデントデータは、西暦２０１２年１０月１１日１５時３分に生成された概況データが示す「メモリ使用率」が異常の候補であり、「メモリ使用率」が「６０％」であることを示す。
【００２０】
また、異常の候補の種類として「メモリ使用率急上昇」および「ＣＰＵ使用率急上昇」もある。メモリ使用率急上昇に相当する異常の状態は、過去のメモリ使用率に比較して現在のメモリ使用率が所定率以上に上昇した場合である。例えば、１分前の状態よりもメモリの使用率が２５％上昇した場合、メモリ使用率急上昇に相当する。ＣＰＵ使用率急上昇に相当する異常の状態は、過去のＣＰＵ使用率に比較して現在のＣＰＵ使用率が所定率以上に上昇した場合である。例えば、１分前の状態よりもＣＰＵの使用率が２５％上昇した場合、ＣＰＵ使用率急上昇に相当する。
【００２１】
異常の原因となる操作は、メモリ使用率またはＣＰＵ使用率の値が高い時というよりも、使用率が急上昇した際に実行されている場合が多いためである。
【００２２】
図１の説明に戻り、送信部１０ｃは、概況データが生成されるたびに、概況データをセンター８に送信する。ここで、送信部１０ｃは、概況データに対応するインシデントデータが生成された場合には、概況データ及びインシデントデータをセンター８に送信する。
【００２３】
センター８は、コンソール６からの指示に応じて各種の処理を行い、処理結果をコンソール６に送信する。センター８は、記憶部１１及び制御部１２を有する。
【００２４】
記憶部１１には、第１のＤＢ（Data  Base）１１ａ、第２のＤＢ１１ｂ、第３のＤＢ１１ｃ及び第４のＤＢ１１ｄが記憶されている。
【００２５】
第１のＤＢ１１ａには、後述の登録部１２ａにより、アプリケーションサーバ７から概況データが送信される度に、概況データの「時刻」の項目に登録された時刻、及び、「ユーザ操作」の項目に登録されたユーザ操作識別子が対応付けて登録される。図４は、第１のＤＢのデータ構成の一例を示す図である。図４の例に示す第１のＤＢ１１ａは、「時刻」及び「ユーザ操作」の各項目を有する。図４の例は、第１のＤＢ１１ａの１番目のレコードに、「西暦２０１２年９月１日０時０分」という時刻と、「［画面Ｄ，ボタンｋ］［画面Ｄ，ボタンｍ］」というユーザ操作識別子とが対応付けられて登録された場合を示す。なお、第１のＤＢ１１ａの各レコードを、説明の便宜上、概況データと称する場合がある。また、「ユーザ操作」の項目に格納されるユーザ操作識別子の数は、１つ又は複数である。
【００２６】
第２のＤＢ１１ｂには、登録部１２ａにより、アプリケーションサーバ７からインシデントデータが送信される度に、次のデータが登録される。すなわち、第２のＤＢ１１ｂには、インシデントデータの「時刻」の項目に登録された時刻、「異常の候補の種類」の項目に登録された異常の候補の種類、及び、「負荷情報」の項目に登録された負荷情報が対応付けて登録される。図５は、第２のＤＢのデータ構成の一例を示す図である。図５の例に示す第２のＤＢ１１ｂは、「時刻」、「異常の候補の種類」及び「負荷情報」の各項目を有する。図５の例は、例えば、第２のＤＢ１１ｂの１番目のレコードに、「西暦２０１２年９月２０日２２時２０分」という時刻と、「メモリ使用率異常」という異常の候補の種類と、「６１％」というメモリの使用率とが対応付けられて登録された場合を示す。
【００２７】
第３のＤＢ１１ｃには、後述の特定部１２ｃにより、次のようなデータが登録される。すなわち、第３のＤＢ１１ｃには、アプリケーションサーバ７に、特定部１２ｃにより選択された種類の異常が発生していない時刻、及び、かかる時刻におけるユーザの操作を示すユーザ操作識別子が対応付けて登録される。これに加えて、第３のＤＢ１１ｃには、特定部１２ｃにより選択された種類の異常が発生していない時刻において発生した異常の種類であって、特定部１２ｃにより選択された種類の異常以外の異常の種類が、時刻及びユーザ操作識別子に対応付けられて登録される。以下、アプリケーションサーバ７に、特定部１２ｃにより選択された種類の異常が発生していない状態のことを、平常状態と称する場合がある。図６は、第３のＤＢのデータ構成の一例を示す図である。図６の例に示す第３のＤＢ１１ｃは、「時刻」、「ユーザ操作」及び「異常の種類」の各項目を有する。ここで、後述の特定部１２ｃにより異常の種類「メモリ使用率異常」が選択された場合について説明する。図６の例は、例えば、第３のＤＢ１１ｃのレコードに、アプリケーションサーバ７が平常状態である場合の「西暦２０１２年１０月２６日１０時２１分」という時刻と、次のユーザ操作識別子と異常の種類とが対応付けられて登録された場合を示す。すなわち、図６の例は、「西暦２０１２年１０月２６日１０時２１分」という時刻と、かかる時刻における「［画面Ｃ，ボタンｅ］」というユーザの操作を示すユーザ操作識別子とが対応付けられて登録された場合を示す。これに加えて、図６の例は、「ＣＰＵ使用率異常」という異常の種類が、「西暦２０１２年１０月２６日１０時２１分」という時刻、及び、かかる時刻における「［画面Ｃ，ボタンｅ］」というユーザ操作識別子に対応付けられて登録された場合を示す。なお、第３のＤＢ１１ｃの登録内容のことをホワイトリストと称する場合がある。
【００２８】
第４のＤＢ１１ｄは、特定部１２ｃにより、アプリケーションサーバ７に異常が発生した時刻、アプリケーションサーバ７に異常が発生した時刻におけるユーザの操作を示すユーザ操作識別子、及び、発生した異常の種類が対応付けられて登録される。図７は、第４のＤＢのデータ構成の一例を示す図である。図７の例に示す第４のＤＢ１１ｄは、「時刻」、「ユーザ操作」及び「異常の種類」の各項目を有する。図７の例は、例えば、第４のＤＢ１１ｄのレコードに、アプリケーションサーバ７に異常が発生した場合の「西暦２０１２年１０月２６日１０時１９分」という時刻と、次のユーザ操作識別子及び異常の種類とが対応付けられて登録された場合を示す。すなわち、図７の例は、「西暦２０１２年１０月２６日１０時１９分」という時刻と、「［画面Ａ，ボタンａ］［画面Ｂ，ボタンｄ］」という２つのユーザ操作識別子と、「メモリ使用率異常」という異常の種類とが対応付けられて登録された場合を示す。なお、第４のＤＢ１１ｄの登録内容のことをブラックリストと称する場合がある。また、第４のＤＢ１１ｄには、特定部１２ｃにより、異常の種類ごとにブラックリストが登録される。例えば、第４のＤＢ１１ｄには、「メモリ使用率異常」、「ＣＰＵ使用率異常」、「メモリ使用率急上昇」及び「ＣＰＵ使用率急上昇」の４つの異常の種類のそれぞれに対応するブラックリストが４つ登録される。
【００２９】
記憶部１１は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１１は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）であってもよい。
【００３０】
制御部１２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１２は、登録部１２ａと、取得部１２ｂと、特定部１２ｃと、推定部１２ｄとを有する。
【００３１】
登録部１２ａは、各種の情報を第１のＤＢ１１ａ及び第２のＤＢ１１ｂに登録する。例えば、登録部１２ａは、アプリケーションサーバ７から概況データが送信される度に、概況データの「時刻」の項目に登録された時刻、及び、「ユーザ操作」の項目に登録されたユーザ操作識別子を対応付けて第１のＤＢ１１ａに登録する。また、登録部１２ａは、アプリケーションサーバ７からインシデントデータが送信される度に、次のデータを第２のＤＢ１１ｂに登録する。すなわち、登録部１２ａは、インシデントデータの「時刻」の項目に登録された時刻、「異常の候補の種類」の項目に登録された異常の候補の種類、及び、「負荷情報」の項目に登録された負荷情報を対応付けて第２のＤＢ１１ｂに登録する。
【００３２】
取得部１２ｂは、各種の情報を取得する。取得部１２ｂの一態様について説明する。例えば、取得部１２ｂは、コンソール６から送信された異常原因推定処理を実行する指示を受信すると、第１のＤＢ１１ａに登録された全ての概況データを取得する。例えば、図４の例に示す第１のＤＢ１１ａに登録された全ての概況データを取得する。
【００３３】
そして、取得部１２ｂは、第２のＤＢ１１ｂに登録された全てのインシデントデータを取得する。例えば、図５の例に示す第２のＤＢ１１ｂに登録された全てのインシデントデータを取得する。
【００３４】
特定部１２ｃは、負荷情報に基づいてアプリケーションサーバ７が異常を示すか否かの判定を行う。判定がアプリケーションサーバ７の異常を示す場合は、特定部１２ｃは、アプリケーションサーバ７で実行されている１又は複数の機能、例えば、ユーザ操作を特定し、特定した機能をブラックリストに登録する。機能は、例えば、ユーザの操作に応じて実行されるアプリケーション、メソッド、関数などの実行単位である。一方、判定がアプリケーションサーバ７の異常を示さない場合は、特定部１２ｃは、アプリケーションサーバ７で実行されている１又は複数の機能を特定し、特定した機能をホワイトリストに登録する。
【００３５】
特定部１２ｃの一態様について説明する。特定部１２ｃは、取得部１２ｂにより第２のＤＢ１１ｂに登録された全てのインシデントデータが取得された場合に、異常の候補の種類のうち、未選択の異常の候補の種類があるか否かを判定する。未選択の異常の候補の種類がある場合には、特定部１２ｃは、未選択の異常の候補の種類を１つ選択する。例えば、特定部１２ｃは、「メモリ使用率異常」、「ＣＰＵ使用率異常」、「メモリ使用率急上昇」及び「ＣＰＵ使用率急上昇」の４つの異常の候補の種類の全てが未選択である場合には、いずれか１つの種類（例えば、「メモリ使用率異常」）を選択する。そして、特定部１２ｃは、取得部１２ｂにより取得されたインシデントデータの中から、選択した異常の候補の種類を含むインシデントデータを全て特定する。
【００３６】
続いて、特定部１２ｃは、特定したインシデントデータの中に、未選択のインシデントデータがあるか否かを判定する。未選択のインシデントデータがある場合には、特定部１２ｃは、未選択のインシデントデータを１つ選択する。例えば、図５の例に示す第２のＤＢ１１ｂに登録された全てのインシデントデータを特定した場合には、特定部１２ｃは、未選択の１番目のレコードに対応するインシデントデータを選択する。
【００３７】
そして、特定部１２ｃは、選択したインシデントデータが、異常を示すか否かを判定する。例えば、特定部１２ｃは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「メモリ使用率異常」である場合には、選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上であるか否かを判定する。また、特定部１２ｃは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「ＣＰＵ使用率異常」である場合には、選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上であるか否かを判定する。また、特定部１２ｃは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「メモリ使用率急上昇」である場合には、次の処理を行う。すなわち、特定部１２ｃは、過去のメモリ使用率に比較して、選択したインシデントデータの「負荷情報」に登録されているメモリ使用率が、所定率以上に上昇したか否かを判定する。また、特定部１２ｃは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「ＣＰＵ使用率急上昇」である場合には、次の処理を行う。すなわち、特定部１２ｃは、過去のＣＰＵ使用率に比較して、選択したインシデントデータの「負荷情報」に登録されているＣＰＵ使用率が、所定率以上に上昇したか否かを判定する。なお、特定部１２ｃで用いられる閾値及び所定率は、先の抽出部１０ｂで用いられる閾値及び所定率よりも高くする。例えば、先の抽出部１０ｂでメモリ使用率との比較に用いられる閾値が５０％である場合には、特定部１２ｃでメモリ使用率との比較に用いられる閾値を５５％とする。また、先の抽出部１０ｂでＣＰＵ使用率との比較に用いられる閾値が６０％である場合には、特定部１２ｃでＣＰＵ使用率との比較に用いられる閾値を６５％とする。また、先の抽出部１０ｂで過去のメモリ使用率との比較に用いられる所定率が２５％である場合には、特定部１２ｃで過去のメモリ使用率との比較に用いられる所定率を３０％とする。また、先の抽出部１０ｂで過去のＣＰＵ使用率との比較に用いられる所定率が２５％である場合には、特定部１２ｃで過去のＣＰＵ使用率との比較に用いられる所定率を３０％とする。選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上である場合、または、所定率以上に上昇した場合には、特定部１２ｃは、選択したインシデントデータが、異常を示すと判定する。一方、選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上でない場合、または、所定率以上に上昇していない場合には、特定部１２ｃは、選択したインシデントデータが、異常を示さないと判定する。
【００３８】
選択したインシデントデータが異常を示さない場合には、特定部１２ｃは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部１２ｃは、選択したインシデントデータの「時刻」の項目に登録された時刻と、取得したユーザ操作識別子と、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類とを対応付けて、第３のＤＢ１１ｃに登録する。これにより、ホワイトリストに、選択したインシデントデータの「時刻」の項目に登録された時刻と、取得したユーザ操作識別子とが対応付けられて登録される。また、ホワイトリストに、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類が、異常の種類として、時刻及びユーザ操作識別子と対応付けられて登録される。
【００３９】
一方、選択したインシデントデータが異常を示す場合には、特定部１２ｃは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部１２ｃは、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類に対応するブラックリストを第４のＤＢ１１ｄの中から選択する。続いて、特定部１２ｃは、選択したインシデントデータの「時刻」及び「異常の候補の種類」の各項目に登録された時刻及び異常の候補の種類と、取得したユーザ操作識別子とを対応付けて、選択したブラックリストに登録する。これにより、異常の候補の種類に対応するブラックリストに、選択したインシデントデータの「時刻」の項目に登録された時刻と、取得したユーザ操作識別子と、異常の種類とが対応付けられて登録される。なお、特定部１２ｃは、異常の候補の種類を異常の種類としてブラックリストの「異常の種類」の項目に登録する。
【００４０】
そして、特定部１２ｃは、取得部１２ｂにより取得された概況データのうち、「時刻」の項目に登録された時刻が、ホワイトリスト及びブラックリストに登録されていない概況データを全て特定する。そして、特定部１２ｃは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と、「ユーザ操作」の項目に登録されたユーザ操作識別子とを対応付けて第３のＤＢ１１ｃに登録する。さらに、特定部１２ｃは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータがあるか否かを判定し、インシデントデータがある場合には、次の処理を行う。すなわち、特定部１２ｃは、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータの「異常の候補の種類」に登録された異常の候補の種類を取得する。そして、特定部１２ｃは、取得した異常の候補の種類を第３のＤＢ１１ｃの対応するレコードの「異常の種類」の項目に登録する。そして、特定部１２ｃは、第３のＤＢ１１ｃのレコードを、時刻が昇順となるようにソートする。
【００４１】
そして、特定部１２ｃは、未選択のインシデントデータがあるか否かを判定する上述した処理から、第３のＤＢ１１ｃのレコードを時刻が昇順となるようにソートする上述した処理までを全てのインシデントデータが未選択でなくなるまで繰り返し行う。このようにして、特定部１２ｃは、選択した異常の候補の種類ごとに、ブラックリストを作成することができる。
【００４２】
続いて、特定部１２ｃは、全てのインシデントデータが未選択でなくなった場合には、異常の候補の種類のうち未選択の異常の候補の種類があるか否かを判定する上述した処理以降の処理を再び行う。
【００４３】
図１の説明に戻り、推定部１２ｄは、特定部１２ｃによりブラックリストに登録された機能のうち、特定部１２ｃによりホワイトリストに登録された機能以外の機能の情報を出力する。これにより、推定部１２ｄは、特定部１２ｃによりブラックリストに登録された機能のうち、特定部１２ｃによりホワイトリストに登録された機能以外の機能をアプリケーションサーバ７に発生した異常の原因として推定することができる。
【００４４】
推定部１２ｄの一態様について説明する。推定部１２ｃは、異常の候補の種類のうち未選択の異常の候補の種類がないと特定部１２ｃにより判定された場合に、次の処理を行う。すなわち、推定部１２ｃは、異常の種類のうち未選択の異常の種類があるか否かを判定する。異常の種類がある場合には、推定部１２ｃは、未選択の異常の種類を１つ選択する。そして、推定部１２ｃは、選択した異常の種類に対応するホワイトリスト及びブラックリストを選択する。ここで、選択した異常の種類に対応するホワイトリストとは、第３のＤＢ１１ｃの全レコードの中から、選択した異常の種類を含むレコードが除去されたホワイトリストを指す。また、選択した異常の種類に対応するブラックリストとは、上述したように、「異常の種類」の項目に、選択した異常の種類が登録された全レコードを有するブラックリストを指す。
【００４５】
そして、推定部１２ｄは、選択したホワイトリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する。図８は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、現在の時刻が西暦２０１２年１０月３１日１２時０分であり、一定期間が３０日であり、選択したホワイトリストの登録内容が先の図６に示す内容である場合には、推定部１２ｄは、次の処理を行う。すなわち、図８に示すように、推定部１２ｄは、西暦２０１２年１０月３１日１２時０分から３０日前までの西暦２０１２年１０月１日１２時０分までのレコードを取得する。なお、図８の例に示すレコードは、「異常の種類」の項目が省略された場合を示す。
【００４６】
続いて、推定部１２ｄは、取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、ユーザ操作識別子がレコードに出現する回数である平常時出現回数を算出する。なお、同一レコードに、同一のユーザ操作識別子が複数含まれている場合には、推定部１２ｄは、かかるレコードに含まれる、かかるユーザ操作識別子の数を「１」として、平常時出現回数を算出する。これにより、推定部１２ｄは、アプリケーションサーバ７が平常状態である場合におけるユーザの操作を示すユーザ操作識別子の平常時出現回数を算出することができる。
【００４７】
次に、推定部１２ｄは、選択したブラックリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する。図９は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、現在の時刻が西暦２０１２年１０月３１日１２時０分であり、一定期間が３０日であり、選択したブラックリストの登録内容が先の図７に示す内容である場合には、推定部１２ｄは、次の処理を行う。すなわち、推定部１２ｄは、図９の例に示すように、西暦２０１２年１０月３１日１２時０分から３０日前までの西暦２０１２年１０月１日１２時０分までのレコードを取得する。なお、図９の例に示すレコードは、「異常の種類」の項目が省略された場合を示す。
【００４８】
そして、推定部１２ｄは、新たに取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、異常時出現率を算出する。異常時出現率の算出方法の一例について説明する。推定部１２ｄは、まず、新たに取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、ユーザ操作識別子がレコードに出現する回数である異常時出現回数を算出する。なお、同一レコードに、同一のユーザ操作識別子が複数含まれている場合には、推定部１２ｄは、かかるレコードに含まれる、かかるユーザ操作識別子の数を「１」として、異常時出現回数を算出する。これにより、推定部１２ｄは、アプリケーションサーバ７が異常状態である場合におけるユーザの操作を示すユーザ操作識別子の異常時出現回数を算出することができる。続いて、推定部１２ｄは、ユーザ操作識別子ごとに、新たに取得した現在の時刻から一定期間前までのレコードの数に対する異常時出現回数の割合を異常時出現率として算出する。図１０は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、「［画面Ａ，ボタンａ］」というユーザ操作識別子の異常時出現回数が「３」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「３」である場合には、推定部１２ｄは、次の処理を行う。すなわち、推定部１２ｄは、図１０に示すように、異常時出現率「１００％」（異常時出現回数「３」／レコードの数「３」）を算出する。また、「［画面Ｃ，ボタンｅ］」というユーザ操作識別子の異常時出現回数が「１」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「３」である場合には、推定部１２ｄは、次の処理を行う。すなわち、推定部１２ｄは、図１０に示すように、異常時出現率「３３％」（異常時出現回数「１」／レコードの数「３」）を算出する。また、「［画面Ｂ，ボタンｄ］」というユーザ操作識別子の異常時出現回数が「２」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「３」である場合には、推定部１２ｄは、次の処理を行う。すなわち、推定部１２ｄは、図１０に示すように、異常時出現率「６６％」（異常時出現回数「２」／レコードの数「３」）を算出する。また、「［画面Ｄ，ボタンｆ］」というユーザ操作識別子の異常時出現回数が「１」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「３」である場合には、推定部１２ｄは、次の処理を行う。すなわち、推定部１２ｄは、図１０に示すように、異常時出現率「３３％」（異常時出現回数「１」／レコードの数「３」）を算出する。
【００４９】
ここで、図１１を参照して、ユーザ操作識別子ごとの異常時出現回数、異常時出現率、及び、平常時出現回数について説明する。図１１は、実施例に係るセンターが実行する処理の一例を説明するための図である。図１１の例に示すように、「［画面Ａ，ボタンａ］」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「３」、「１００％」、「０」である。また、図１１の例に示すように、「［画面Ｃ，ボタンｅ］」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「１」、「３３％」、「４５０」である。また、図１１の例に示すように、「［画面Ｂ，ボタンｄ］」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「２」、「６６％」、「２１１」である。また、図１１の例に示すように、「［画面Ｄ，ボタンｆ］」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「１」、「３３％」、「２」である。
【００５０】
そして、推定部１２ｄは、ユーザ操作識別子ごとに、蓋然性スコアを算出する。蓋然性スコアの算出方法の一例について説明する。例えば、推定部１２ｄは、ユーザ操作識別子ごとに、下記の式（１）に従って、蓋然性スコアを算出する。
蓋然性スコア＝（異常時出現率）×
（（異常時出現回数）／（（異常時出現回数）＋（平常時出現回数）））
・・・（１）
【００５１】
図１２は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、各ユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数が図１１の例に示す値である場合、推定部１２ｄは、次の処理を行う。すなわち、推定部１２ｄは、式（１）に従って、図１２に示すように、「［画面Ａ，ボタンａ］」というユーザ操作識別子の蓋然性スコア「１．０００」を算出する。また、推定部１２ｄは、式（１）に従って、図１２に示すように、「［画面Ｃ，ボタンｅ］」というユーザ操作識別子の蓋然性スコア「０．００１」を算出する。また、推定部１２ｄは、式（１）に従って、図１２に示すように、「［画面Ｂ，ボタンｄ］」というユーザ操作識別子の蓋然性スコア「０．００６」を算出する。また、推定部１２ｄは、式（１）に従って、図１２に示すように、「［画面Ｄ，ボタンｆ］」というユーザ操作識別子の蓋然性スコア「０．１１０」を算出する。ここで、推定部１２ｄは、所定の閾値以上の蓋然性スコアに対応するユーザ操作識別子を以降の処理で用いるようにしてもよい。これにより、処理対象のユーザ操作識別子の数が絞り込まれるため、処理速度が速くなる。
【００５２】
そして、推定部１２ｄは、蓋然性スコアが所定値以上のレコードを特定する。例えば、推定部１２ｄは、蓋然性スコアが所定値以上のユーザ操作識別子を特定し、特定したユーザ操作識別子を有するレコードを第３のＤＢ１１ｃ及び第４のＤＢ１１ｄから特定する。例えば、所定値が「０．１００」である場合には、推定部１２ｄは、蓋然性スコアが「０．１００」以上のユーザ操作識別子「［画面Ａ，ボタンａ］」及び「［画面Ｄ，ボタンｆ］」を特定する。そして、推定部１２ｄは、ユーザ操作識別子「［画面Ａ，ボタンａ］」を有するレコードを第３のＤＢ１１ｃ及び第４のＤＢ１１ｄから特定する。また、推定部１２ｄは、ユーザ操作識別子「［画面Ｄ，ボタンｆ］」を有するレコードを第３のＤＢ１１ｃ及び第４のＤＢ１１ｄから特定する。
【００５３】
そして、推定部１２ｄは、異常の種類のうち未選択の異常の種類があるか否かを判定する上述した処理から、蓋然性スコアが所定値以上のレコードを特定する上述した処理までを全ての異常の種類が未選択でなくなるまで繰り返し行う。
【００５４】
一方、異常の種類のうち未選択の異常の種類がない場合には、推定部１２ｄは、特定したレコードに基づいた画像を生成する。図１３は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、ユーザ操作識別子「［画面Ａ，ボタンａ］」を有するレコード、及び、「［画面Ｄ，ボタンｆ］」を有するレコードを特定した場合には、推定部１２ｄは、所定のテンプレートを用いて、次のような画像を生成する。例えば、推定部１２ｄは、図１３に示すようなメッセージ「画面Ａにおいて、ボタンａを押下することは、異常発生に至る蓋然性の高い事象です。」を含む画像を生成する。この場合、推定部１２ｄは、「画面Ｄにおいて、ボタンｆを押下することは、異常発生に至る蓋然性の高い事象です。」を含む画像を生成することもできる。また、推定部１２ｄは、「画面Ａにおいて、ボタンａを押下することは、異常発生に至る蓋然性の高い事象です。また、画面Ｄにおいて、ボタンｆを押下することは、異常発生に至る蓋然性の高い事象です。」を含む画像を生成することもできる。また、推定部１２ｄは、複数の異常の原因となる蓋然性の高い機能がある場合、異常の原因となる蓋然性の高い上位数個の機能を表示することも可能である。
【００５５】
続いて、推定部１２ｄは、生成した画像をコンソール６に送信する。これにより、コンソール６で画像が表示される。
【００５６】
次に、本実施例に係るエージェント１０が実行する処理の流れを説明する。図１４は、実施例に係る生成処理の手順を示すフローチャートである。この生成処理は、例えば、所定時間間隔、例えば、１分間隔で繰り返し実行される。
【００５７】
図１４に示すように、生成部１０ａは、概況データを生成する（Ｓ１０１）。そして、抽出部１０ｂは、生成された概況データのうち、所定の事象を示す概況データを抽出する（Ｓ１０２）。そして、送信部１０ｃは、概況データ、または、概況データ及びインシデントデータをセンター８に送信し（Ｓ１０３）、処理を終了する。
【００５８】
次に、本実施例に係るセンター８が実行する処理の流れを説明する。図１５は、実施例に係る異常原因推定処理の手順を示すフローチャートである。この異常原因推定処理は、例えば、コンソール６から異常原因推定処理を実行する指示が入力された場合に、センター８により実行される。
【００５９】
図１５に示すように、取得部１２ｂは、第１のＤＢ１１ａに登録された全ての概況データを取得する（Ｓ２０１）。そして、取得部１２ｂは、第２のＤＢ１１ｂに登録された全てのインシデントデータを取得する（Ｓ２０２）。続いて、特定部１２ｃは、異常の候補の種類のうち、未選択の異常の候補の種類があるか否かを判定する（Ｓ２０３）。未選択の異常の候補の種類がある場合（Ｓ２０３肯定）には、特定部１２ｃは、未選択の異常の候補の種類を１つ選択する（Ｓ２０４）。そして、特定部１２ｃは、取得部１２ｂにより取得されたインシデントデータの中から、選択した異常の候補の種類を含むインシデントデータを全て特定する（Ｓ２０５）。
【００６０】
続いて、特定部１２ｃは、特定したインシデントデータの中に、未選択のインシデントデータがあるか否かを判定する（Ｓ２０６）。未選択のインシデントデータがある場合（Ｓ２０６肯定）には、特定部１２ｃは、未選択のインシデントデータを１つ選択する（Ｓ２０７）。
【００６１】
そして、特定部１２ｃは、選択したインシデントデータが、異常を示すか否かを判定する（Ｓ２０８）。選択したインシデントデータが異常を示さない場合（Ｓ２０８否定）には、特定部１２ｃは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部１２ｃは、選択したインシデントデータの「時刻」及び「異常の候補の種類」の各項目に登録された時刻及び異常の候補の種類と、取得したユーザ操作識別子とを対応付けて、第３のＤＢ１１ｃに登録する（Ｓ２１０）。
【００６２】
一方、選択したインシデントデータが異常を示す場合（Ｓ２０８肯定）には、特定部１２ｃは、次の処理を行う。すなわち、特定部１２ｃは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部１２ｃは、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類に対応するブラックリストを第４のＤＢ１１ｄの中から選択する。続いて、特定部１２ｃは、選択したインシデントデータの「時刻」及び「異常の候補の種類」の各項目に登録された時刻及び異常の候補の種類と、取得したユーザ操作識別子とを対応付けて、選択したブラックリストに登録する（Ｓ２０９）。
【００６３】
そして、特定部１２ｃは、取得部１２ｂにより取得された概況データのうち、「時刻」の項目に登録された時刻が、ホワイトリスト及びブラックリストに登録されていない概況データを全て特定する（Ｓ２１１）。そして、特定部１２ｃは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と、「ユーザ操作」の項目に登録されたユーザ操作識別子とを対応付けて第３のＤＢ１１ｃに登録する。さらに、特定部１２ｃは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータがあるか否かを判定し、インシデントデータがある場合には、次の処理を行う。すなわち、特定部１２ｃは、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータの「異常の候補の種類」に登録された異常の候補の種類を取得する。そして、特定部１２ｃは、取得した異常の候補の種類を第３のＤＢ１１ｃの対応するレコードの「異常の種類」の項目に登録する（Ｓ２１２）。そして、特定部１２ｃは、第３のＤＢ１１ｃのレコードを、時刻が昇順となるようにソートし（Ｓ２１３）、Ｓ２０６へ戻る。
【００６４】
一方、未選択のインシデントデータがない場合（Ｓ２０６否定）には、特定部１２ｃは、Ｓ２０３に戻る。また、未選択の異常の候補の種類がない場合（Ｓ２０３否定）には、推定部１２ｃは、異常の種類のうち未選択の異常の種類があるか否かを判定する（Ｓ２１４）。異常の種類がある場合（Ｓ２１４肯定）には、推定部１２ｃは、未選択の異常の種類を１つ選択する（Ｓ２１５）。そして、推定部１２ｃは、選択した異常の種類に対応するホワイトリスト及びブラックリストを選択する（Ｓ２１６）。
【００６５】
続いて、推定部１２ｄは、選択したホワイトリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する（Ｓ２１７）。
【００６６】
続いて、推定部１２ｄは、取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、ユーザ操作識別子がレコードに出現する回数である平常時出現回数を算出する（Ｓ２１８）。次に、推定部１２ｄは、選択したブラックリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する（Ｓ２１９）。
【００６７】
そして、推定部１２ｄは、新たに取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、異常時出現率を算出する（Ｓ２２０）。そして、推定部１２ｄは、ユーザ操作識別子ごとに、蓋然性スコアを算出する（Ｓ２２１）。続いて、推定部１２ｄは、蓋然性スコアが所定値以上のレコードを特定し（Ｓ２２２）、Ｓ２１４に戻る。  
【００６８】
一方、未選択の異常の種類がない場合（Ｓ２１４否定）には、推定部１２ｄは、特定したレコードに基づいた画像を生成する（Ｓ２２３）。続いて、推定部１２ｄは、生成した画像をコンソール６に送信し（Ｓ２２４）、処理を終了する。
【００６９】
上述してきたように、本実施例に係るセンター８は、アプリケーションサーバ７についての負荷情報を取得する。そして、センター８は、負荷情報に基づいてアプリケーションサーバ７が異常を示すか否かの判定を行う。センター８は、判定がアプリケーションサーバ７の異常を示す場合は、アプリケーションサーバ７で実行されている１又は複数の機能を特定し、特定した機能をブラックリストに登録する。一方、センター８は、判定がアプリケーションサーバ７の異常を示さない場合は、アプリケーションサーバ７で実行されている１又は複数の機能を特定し、特定した機能をホワイトリストに登録する。続いて、センター８は、ブラックリストに登録された機能のうち、ホワイトリストに登録された機能以外の機能の情報を出力する。したがって、本実施例によれば、異常発生に至る蓋然性の高い機能を推定することができる。
【００７０】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００７１】
例えば、図１６に示すように、生成部１０ａが、ユーザにより操作されたボタンについての過去１分間の情報９０〜９３のうち、生成タイミング（図中、１９時４２分）をまたがる情報９０、９１を取得することもできる。このように、負荷情報の取得を、所定時間間隔離間した複数タイミングで行うことで、概況データのデータサイズが小さくなり、概況データを用いた異常原因推定処理の処理速度が速くなる。
【００７２】
また、上述した実施例において、取得部１２ｂは、コンソール６から送信された異常原因推定処理を実行する指示を受信すると、第１のＤＢ１１ａに登録されたすべての概況データを取得する。しかし、取得部１２ｂは、コンソールから指示を受けたタイミングで実行するのみではなく、定期的に（例えば１０分に１回等の間隔で）概況データを取得する処理を実行してもよい。この結果、システム管理者はコンソールを操作することなく、システムに異常が発生した場合に、異常の発生情報を取得することができる。
【００７３】
例えば、異常原因推定装置は、システムにおいてメモリ使用率が急上昇したことを定期的な概況データの取得により検出した場合、メモリ資料率急上昇の異常が発生したことおよび蓋然性スコアの高いユーザ操作識別子を管理者にメール通知することが可能になる。
【００７４】
また、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【００７５】
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
【００７６】
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理の順番を変更できる。
【００７７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【００７８】
［異常原因推定プログラム］
また、上記の実施例で説明した異常原因推定装置の一例であるセンター８の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１７を用いて、上記の実施例で説明したセンター８と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１７は、異常原因推定プログラムを実行するコンピュータを示す図である。
【００７９】
図１７に示すように、コンピュータ３００は、ＣＰＵ３１０、ＲＯＭ３２０、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）３３０、ＲＡＭ３４０を有する。これら３１０〜３４０は、バス３５０を介して接続される。
【００８０】
ＲＯＭ３２０には、ＯＳなどの基本プログラムが記憶されている。また、ＨＤＤ３３０には、上記の実施例で示す登録部１２ａ、取得部１２ｂ、特定部１２ｃ、推定部１２ｄと同様の機能を発揮する異常原因推定プログラム３３０ａが予め記憶される。なお、異常原因推定プログラム３３０ａについては、適宜分離しても良い。
【００８１】
そして、ＣＰＵ３１０が、異常原因推定プログラム３３０ａを、ＨＤＤ３３０から読み出して実行する。
【００８２】
なお、上記した異常原因推定プログラム３３０ａについては、必ずしも最初からＨＤＤ３３０に記憶させておく必要はない。
【００８３】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に異常原因推定プログラム３３０ａを記憶させておく。そして、コンピュータ３００がこれらから異常原因推定プログラム３３０ａを読み出して実行するようにしてもよい。  
【００８４】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などに異常原因推定プログラム３３０ａを記憶させておく。そして、コンピュータ３００がこれらから異常原因推定プログラム３３０ａを読み出して実行するようにしてもよい。
【符号の説明】
【００８５】
８        センター
１２ａ    登録部
１２ｂ    取得部
１２ｃ    特定部
１２ｄ    推定部
【図１】
2014120138.tif 000003
【図２】
2014120138.tif 000004
【図３】
2014120138.tif 000005
【図４】
2014120138.tif 000006
【図５】
2014120138.tif 000007
【図６】
2014120138.tif 000008
【図７】
2014120138.tif 000009
【図８】
2014120138.tif 000010
【図９】
2014120138.tif 000011
【図１０】
2014120138.tif 000012
【図１１】
2014120138.tif 000013
【図１２】
2014120138.tif 000014
【図１３】
2014120138.tif 000015
【図１４】
2014120138.tif 000016
【図１５】
2014120138.tif 000017
【図１６】
2014120138.tif 000018
【図１７】
2014120138.tif 000019