(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下に、本願の開示する異常原因推定プログラム、異常原因推定装置及び異常原因推定方法の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【0012】
実施例に係る異常原因推定装置について説明する。
図1は、実施例に係る異常原因推定装置の一例であるセンターが適用されたシステムの構成の一例を示す図である。
図1に示すように、システム50は、ユーザ端末5、コンソール6、アプリケーションサーバ7、センター8を有する。
【0013】
ユーザ端末5は、アプリケーションサーバ7にアプリケーションの実行を依頼し、アプリケーションサーバ7からアプリケーションの実行結果を取得する。例えば、ユーザ端末5は、ユーザによって指定されたアプリケーションを実行する指示をアプリケーションサーバ7に送信し、アプリケーションサーバ7から実行結果を取得する。なお、ユーザ端末5の台数は、1台に限られず複数台であってもよい。
【0014】
コンソール6は、センター8に対して各種の処理を依頼する端末である。例えば、コンソール6は、システム利用者や管理者からの操作を受け付けて、後述する異常原因推定処理を実行する指示を受け付ける。そして、コンソール6は、受け付けた指示をセンター8に送信する。これにより、センター8において異常原因推定処理が実行される。また、コンソール6は、センター8から送信された画面を受信すると、受信した画面を図示しない表示装置に表示する。
【0015】
アプリケーションサーバ7は、アプリケーションを実行する。また、アプリケーションサーバ7は、アスペクト指向の技術により設定された、ログを取得するエージェント10を有する。エージェント10は、生成部10a、抽出部10b及び送信部10cを有する。
【0016】
生成部10aは、概況データを生成する。例えば、生成部10aは、所定時間間隔で、アプリケーションを実行するアプリケーションサーバ7のメモリ使用率及びCPU(Central Processing Unit)使用率などの負荷情報を取得する。また、生成部10aは、所定時間間隔で、アプリケーションにより表示された画面に含まれるボタンのうち、ユーザにより操作されたボタンについての情報を取得する。以下、生成部10aが、1分毎に、過去1分間のアプリケーションサーバ7のメモリ使用率の平均値及びCPU使用率の平均値を含む負荷情報を取得する場合を例に挙げて説明する。また、以下、生成部10aが、1分毎に、過去1分間の間、ユーザにより操作されたボタンについての全ての情報を取得する場合について説明する。
【0017】
そして、生成部10aは、1分毎に、取得した各種の情報と時刻とを対応づけた概況データを生成する。
図2は、概況データのデータ構成の一例を示す図である。
図2の例に示す概況データは、「時刻」、「ユーザ操作」、「メモリ使用率」及び「CPU使用率」の各項目を有する。「時刻」の項目には、概況データを生成する時刻が登録される。「ユーザ操作」の項目には、ユーザにより操作されたボタンの識別子と、かかるボタンを有する画面の識別子が登録される。以下の説明では、ボタンの識別子と画面の識別子との組をユーザ操作識別子と称する。「メモリ使用率」の項目には、アプリケーションサーバ7のメモリ使用率の平均値が登録される。「CPU使用率」の項目には、アプリケーションサーバ7のCPU使用率の平均値が登録される。
【0018】
図2の例に示す概況データは、西暦2012年10月11日15時3分に生成された概況データであることを示す。また、
図2の例に示す概況データは、西暦2012年10月11日15時2分から西暦2012年10月11日15時3分までの間に、画面の識別子「A」が示す画面に含まれるボタンのうち、ユーザにより、次のボタンが操作されたことを示す。すなわち、
図2の例に示す概況データは、ボタンの識別子「a」が示すボタンが操作されたことを示す。また、
図2の例に示す概況データは、西暦2012年10月11日15時2分から西暦2012年10月11日15時3分までの間に、画面の識別子「C」が示す画面に含まれるボタンのうち、ユーザにより、次のボタンが操作されたことを示す。すなわち、
図2の例に示す概況データは、ボタンの識別子「e」が示すボタンが操作されたことを示す。また、
図2の例に示す概況データは、西暦2012年10月11日15時2分から西暦2012年10月11日15時3分までの間のアプリケーションサーバ7のメモリ使用率の平均値が「60%」であることを示す。また、
図2の例に示す概況データは、西暦2012年10月11日15時2分から西暦2012年10月11日15時3分までの間のアプリケーションサーバ7のCPU使用率の平均値が「45%」であることを示す。
【0019】
図1の説明に戻り、抽出部10bは、概況データが生成されるたびに、生成された概況データのうち、所定の事象を示す概況データを抽出する。例えば、抽出部10bは、「メモリ使用率」の項目に登録されたメモリ使用率の平均値が、所定の閾値(例えば、50%)以上の概況データを抽出する。また、抽出部10bは、「CPU使用率」の項目に登録されたCPU使用率の平均値が、所定の閾値(例えば、60%)以上の概況データを抽出する。このようにして、抽出部10bは、アプリケーションサーバ7が異常である可能性が高い概況データを抽出する。続いて、抽出部10bは、抽出した概況データの「時刻」の項目に登録された時刻、異常の候補の種類、及び、負荷情報を含むインシデントデータを生成する。例えば、抽出部10bは、「メモリ使用率」の項目に登録されたメモリ使用率の平均値が、所定の閾値以上の概況データを抽出した場合には、次の処理を行う。すなわち、抽出部10bは、抽出した概況データの「時刻」の項目に登録された時刻、「メモリ使用率異常」、及び、抽出した概況データの「メモリ使用率」の項目に登録された負荷情報を含むインシデントデータを生成する。ここで、「メモリ使用率異常」は、「メモリ使用率」が異常の候補であることを示す。また、抽出部10bは、「CPU使用率」の項目に登録されたCPU使用率の平均値が、所定の閾値以上の概況データを抽出した場合には、次の処理を行う。すなわち、抽出部10bは、抽出した概況データの「時刻」の項目に登録された時刻、「CPU使用率異常」、及び、抽出した概況データの「CPU使用率」の項目に登録された負荷情報を含むインシデントデータを生成する。ここで、「CPU使用率異常」は、「CPU使用率」が異常の候補であることを示す。
図3は、インシデントデータのデータ構成の一例を示す図である。
図3の例に示すインシデントデータは、「時刻」、「異常の候補の種類」及び「負荷情報」の各項目を有する。
図3の例において、「時刻」の項目には、概況データの「時刻」の項目に登録された時刻が登録される。また、「異常の候補の種類」の項目には、上述した「メモリ使用率異常」または「CPU使用率異常」が登録される。また、「負荷情報」の項目には、「メモリ使用率異常」または「CPU使用率異常」に対応する概況データの「メモリ使用率」または「CPU使用率」の項目に登録された負荷情報が登録される。
図3の例に示すインシデントデータは、西暦2012年10月11日15時3分に生成された概況データが示す「メモリ使用率」が異常の候補であり、「メモリ使用率」が「60%」であることを示す。
【0020】
また、異常の候補の種類として「メモリ使用率急上昇」および「CPU使用率急上昇」もある。メモリ使用率急上昇に相当する異常の状態は、過去のメモリ使用率に比較して現在のメモリ使用率が所定率以上に上昇した場合である。例えば、1分前の状態よりもメモリの使用率が25%上昇した場合、メモリ使用率急上昇に相当する。CPU使用率急上昇に相当する異常の状態は、過去のCPU使用率に比較して現在のCPU使用率が所定率以上に上昇した場合である。例えば、1分前の状態よりもCPUの使用率が25%上昇した場合、CPU使用率急上昇に相当する。
【0021】
異常の原因となる操作は、メモリ使用率またはCPU使用率の値が高い時というよりも、使用率が急上昇した際に実行されている場合が多いためである。
【0022】
図1の説明に戻り、送信部10cは、概況データが生成されるたびに、概況データをセンター8に送信する。ここで、送信部10cは、概況データに対応するインシデントデータが生成された場合には、概況データ及びインシデントデータをセンター8に送信する。
【0023】
センター8は、コンソール6からの指示に応じて各種の処理を行い、処理結果をコンソール6に送信する。センター8は、記憶部11及び制御部12を有する。
【0024】
記憶部11には、第1のDB(Data Base)11a、第2のDB11b、第3のDB11c及び第4のDB11dが記憶されている。
【0025】
第1のDB11aには、後述の登録部12aにより、アプリケーションサーバ7から概況データが送信される度に、概況データの「時刻」の項目に登録された時刻、及び、「ユーザ操作」の項目に登録されたユーザ操作識別子が対応付けて登録される。
図4は、第1のDBのデータ構成の一例を示す図である。
図4の例に示す第1のDB11aは、「時刻」及び「ユーザ操作」の各項目を有する。
図4の例は、第1のDB11aの1番目のレコードに、「西暦2012年9月1日0時0分」という時刻と、「[画面D,ボタンk][画面D,ボタンm]」というユーザ操作識別子とが対応付けられて登録された場合を示す。なお、第1のDB11aの各レコードを、説明の便宜上、概況データと称する場合がある。また、「ユーザ操作」の項目に格納されるユーザ操作識別子の数は、1つ又は複数である。
【0026】
第2のDB11bには、登録部12aにより、アプリケーションサーバ7からインシデントデータが送信される度に、次のデータが登録される。すなわち、第2のDB11bには、インシデントデータの「時刻」の項目に登録された時刻、「異常の候補の種類」の項目に登録された異常の候補の種類、及び、「負荷情報」の項目に登録された負荷情報が対応付けて登録される。
図5は、第2のDBのデータ構成の一例を示す図である。
図5の例に示す第2のDB11bは、「時刻」、「異常の候補の種類」及び「負荷情報」の各項目を有する。
図5の例は、例えば、第2のDB11bの1番目のレコードに、「西暦2012年9月20日22時20分」という時刻と、「メモリ使用率異常」という異常の候補の種類と、「61%」というメモリの使用率とが対応付けられて登録された場合を示す。
【0027】
第3のDB11cには、後述の特定部12cにより、次のようなデータが登録される。すなわち、第3のDB11cには、アプリケーションサーバ7に、特定部12cにより選択された種類の異常が発生していない時刻、及び、かかる時刻におけるユーザの操作を示すユーザ操作識別子が対応付けて登録される。これに加えて、第3のDB11cには、特定部12cにより選択された種類の異常が発生していない時刻において発生した異常の種類であって、特定部12cにより選択された種類の異常以外の異常の種類が、時刻及びユーザ操作識別子に対応付けられて登録される。以下、アプリケーションサーバ7に、特定部12cにより選択された種類の異常が発生していない状態のことを、平常状態と称する場合がある。
図6は、第3のDBのデータ構成の一例を示す図である。
図6の例に示す第3のDB11cは、「時刻」、「ユーザ操作」及び「異常の種類」の各項目を有する。ここで、後述の特定部12cにより異常の種類「メモリ使用率異常」が選択された場合について説明する。
図6の例は、例えば、第3のDB11cのレコードに、アプリケーションサーバ7が平常状態である場合の「西暦2012年10月26日10時21分」という時刻と、次のユーザ操作識別子と異常の種類とが対応付けられて登録された場合を示す。すなわち、
図6の例は、「西暦2012年10月26日10時21分」という時刻と、かかる時刻における「[画面C,ボタンe]」というユーザの操作を示すユーザ操作識別子とが対応付けられて登録された場合を示す。これに加えて、
図6の例は、「CPU使用率異常」という異常の種類が、「西暦2012年10月26日10時21分」という時刻、及び、かかる時刻における「[画面C,ボタンe]」というユーザ操作識別子に対応付けられて登録された場合を示す。なお、第3のDB11cの登録内容のことをホワイトリストと称する場合がある。
【0028】
第4のDB11dは、特定部12cにより、アプリケーションサーバ7に異常が発生した時刻、アプリケーションサーバ7に異常が発生した時刻におけるユーザの操作を示すユーザ操作識別子、及び、発生した異常の種類が対応付けられて登録される。
図7は、第4のDBのデータ構成の一例を示す図である。
図7の例に示す第4のDB11dは、「時刻」、「ユーザ操作」及び「異常の種類」の各項目を有する。
図7の例は、例えば、第4のDB11dのレコードに、アプリケーションサーバ7に異常が発生した場合の「西暦2012年10月26日10時19分」という時刻と、次のユーザ操作識別子及び異常の種類とが対応付けられて登録された場合を示す。すなわち、
図7の例は、「西暦2012年10月26日10時19分」という時刻と、「[画面A,ボタンa][画面B,ボタンd]」という2つのユーザ操作識別子と、「メモリ使用率異常」という異常の種類とが対応付けられて登録された場合を示す。なお、第4のDB11dの登録内容のことをブラックリストと称する場合がある。また、第4のDB11dには、特定部12cにより、異常の種類ごとにブラックリストが登録される。例えば、第4のDB11dには、「メモリ使用率異常」、「CPU使用率異常」、「メモリ使用率急上昇」及び「CPU使用率急上昇」の4つの異常の種類のそれぞれに対応するブラックリストが4つ登録される。
【0029】
記憶部11は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部11は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
【0030】
制御部12は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部12は、登録部12aと、取得部12bと、特定部12cと、推定部12dとを有する。
【0031】
登録部12aは、各種の情報を第1のDB11a及び第2のDB11bに登録する。例えば、登録部12aは、アプリケーションサーバ7から概況データが送信される度に、概況データの「時刻」の項目に登録された時刻、及び、「ユーザ操作」の項目に登録されたユーザ操作識別子を対応付けて第1のDB11aに登録する。また、登録部12aは、アプリケーションサーバ7からインシデントデータが送信される度に、次のデータを第2のDB11bに登録する。すなわち、登録部12aは、インシデントデータの「時刻」の項目に登録された時刻、「異常の候補の種類」の項目に登録された異常の候補の種類、及び、「負荷情報」の項目に登録された負荷情報を対応付けて第2のDB11bに登録する。
【0032】
取得部12bは、各種の情報を取得する。取得部12bの一態様について説明する。例えば、取得部12bは、コンソール6から送信された異常原因推定処理を実行する指示を受信すると、第1のDB11aに登録された全ての概況データを取得する。例えば、
図4の例に示す第1のDB11aに登録された全ての概況データを取得する。
【0033】
そして、取得部12bは、第2のDB11bに登録された全てのインシデントデータを取得する。例えば、
図5の例に示す第2のDB11bに登録された全てのインシデントデータを取得する。
【0034】
特定部12cは、負荷情報に基づいてアプリケーションサーバ7が異常を示すか否かの判定を行う。判定がアプリケーションサーバ7の異常を示す場合は、特定部12cは、アプリケーションサーバ7で実行されている1又は複数の機能、例えば、ユーザ操作を特定し、特定した機能をブラックリストに登録する。機能は、例えば、ユーザの操作に応じて実行されるアプリケーション、メソッド、関数などの実行単位である。一方、判定がアプリケーションサーバ7の異常を示さない場合は、特定部12cは、アプリケーションサーバ7で実行されている1又は複数の機能を特定し、特定した機能をホワイトリストに登録する。
【0035】
特定部12cの一態様について説明する。特定部12cは、取得部12bにより第2のDB11bに登録された全てのインシデントデータが取得された場合に、異常の候補の種類のうち、未選択の異常の候補の種類があるか否かを判定する。未選択の異常の候補の種類がある場合には、特定部12cは、未選択の異常の候補の種類を1つ選択する。例えば、特定部12cは、「メモリ使用率異常」、「CPU使用率異常」、「メモリ使用率急上昇」及び「CPU使用率急上昇」の4つの異常の候補の種類の全てが未選択である場合には、いずれか1つの種類(例えば、「メモリ使用率異常」)を選択する。そして、特定部12cは、取得部12bにより取得されたインシデントデータの中から、選択した異常の候補の種類を含むインシデントデータを全て特定する。
【0036】
続いて、特定部12cは、特定したインシデントデータの中に、未選択のインシデントデータがあるか否かを判定する。未選択のインシデントデータがある場合には、特定部12cは、未選択のインシデントデータを1つ選択する。例えば、
図5の例に示す第2のDB11bに登録された全てのインシデントデータを特定した場合には、特定部12cは、未選択の1番目のレコードに対応するインシデントデータを選択する。
【0037】
そして、特定部12cは、選択したインシデントデータが、異常を示すか否かを判定する。例えば、特定部12cは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「メモリ使用率異常」である場合には、選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上であるか否かを判定する。また、特定部12cは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「CPU使用率異常」である場合には、選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上であるか否かを判定する。また、特定部12cは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「メモリ使用率急上昇」である場合には、次の処理を行う。すなわち、特定部12cは、過去のメモリ使用率に比較して、選択したインシデントデータの「負荷情報」に登録されているメモリ使用率が、所定率以上に上昇したか否かを判定する。また、特定部12cは、選択したインシデントデータの「異常の候補の種類」に登録されている内容が、「CPU使用率急上昇」である場合には、次の処理を行う。すなわち、特定部12cは、過去のCPU使用率に比較して、選択したインシデントデータの「負荷情報」に登録されているCPU使用率が、所定率以上に上昇したか否かを判定する。なお、特定部12cで用いられる閾値及び所定率は、先の抽出部10bで用いられる閾値及び所定率よりも高くする。例えば、先の抽出部10bでメモリ使用率との比較に用いられる閾値が50%である場合には、特定部12cでメモリ使用率との比較に用いられる閾値を55%とする。また、先の抽出部10bでCPU使用率との比較に用いられる閾値が60%である場合には、特定部12cでCPU使用率との比較に用いられる閾値を65%とする。また、先の抽出部10bで過去のメモリ使用率との比較に用いられる所定率が25%である場合には、特定部12cで過去のメモリ使用率との比較に用いられる所定率を30%とする。また、先の抽出部10bで過去のCPU使用率との比較に用いられる所定率が25%である場合には、特定部12cで過去のCPU使用率との比較に用いられる所定率を30%とする。選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上である場合、または、所定率以上に上昇した場合には、特定部12cは、選択したインシデントデータが、異常を示すと判定する。一方、選択したインシデントデータの「負荷情報」に登録されている負荷情報が、所定の閾値以上でない場合、または、所定率以上に上昇していない場合には、特定部12cは、選択したインシデントデータが、異常を示さないと判定する。
【0038】
選択したインシデントデータが異常を示さない場合には、特定部12cは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部12cは、選択したインシデントデータの「時刻」の項目に登録された時刻と、取得したユーザ操作識別子と、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類とを対応付けて、第3のDB11cに登録する。これにより、ホワイトリストに、選択したインシデントデータの「時刻」の項目に登録された時刻と、取得したユーザ操作識別子とが対応付けられて登録される。また、ホワイトリストに、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類が、異常の種類として、時刻及びユーザ操作識別子と対応付けられて登録される。
【0039】
一方、選択したインシデントデータが異常を示す場合には、特定部12cは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部12cは、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類に対応するブラックリストを第4のDB11dの中から選択する。続いて、特定部12cは、選択したインシデントデータの「時刻」及び「異常の候補の種類」の各項目に登録された時刻及び異常の候補の種類と、取得したユーザ操作識別子とを対応付けて、選択したブラックリストに登録する。これにより、異常の候補の種類に対応するブラックリストに、選択したインシデントデータの「時刻」の項目に登録された時刻と、取得したユーザ操作識別子と、異常の種類とが対応付けられて登録される。なお、特定部12cは、異常の候補の種類を異常の種類としてブラックリストの「異常の種類」の項目に登録する。
【0040】
そして、特定部12cは、取得部12bにより取得された概況データのうち、「時刻」の項目に登録された時刻が、ホワイトリスト及びブラックリストに登録されていない概況データを全て特定する。そして、特定部12cは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と、「ユーザ操作」の項目に登録されたユーザ操作識別子とを対応付けて第3のDB11cに登録する。さらに、特定部12cは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータがあるか否かを判定し、インシデントデータがある場合には、次の処理を行う。すなわち、特定部12cは、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータの「異常の候補の種類」に登録された異常の候補の種類を取得する。そして、特定部12cは、取得した異常の候補の種類を第3のDB11cの対応するレコードの「異常の種類」の項目に登録する。そして、特定部12cは、第3のDB11cのレコードを、時刻が昇順となるようにソートする。
【0041】
そして、特定部12cは、未選択のインシデントデータがあるか否かを判定する上述した処理から、第3のDB11cのレコードを時刻が昇順となるようにソートする上述した処理までを全てのインシデントデータが未選択でなくなるまで繰り返し行う。このようにして、特定部12cは、選択した異常の候補の種類ごとに、ブラックリストを作成することができる。
【0042】
続いて、特定部12cは、全てのインシデントデータが未選択でなくなった場合には、異常の候補の種類のうち未選択の異常の候補の種類があるか否かを判定する上述した処理以降の処理を再び行う。
【0043】
図1の説明に戻り、推定部12dは、特定部12cによりブラックリストに登録された機能のうち、特定部12cによりホワイトリストに登録された機能以外の機能の情報を出力する。これにより、推定部12dは、特定部12cによりブラックリストに登録された機能のうち、特定部12cによりホワイトリストに登録された機能以外の機能をアプリケーションサーバ7に発生した異常の原因として推定することができる。
【0044】
推定部12dの一態様について説明する。推定部12cは、異常の候補の種類のうち未選択の異常の候補の種類がないと特定部12cにより判定された場合に、次の処理を行う。すなわち、推定部12cは、異常の種類のうち未選択の異常の種類があるか否かを判定する。異常の種類がある場合には、推定部12cは、未選択の異常の種類を1つ選択する。そして、推定部12cは、選択した異常の種類に対応するホワイトリスト及びブラックリストを選択する。ここで、選択した異常の種類に対応するホワイトリストとは、第3のDB11cの全レコードの中から、選択した異常の種類を含むレコードが除去されたホワイトリストを指す。また、選択した異常の種類に対応するブラックリストとは、上述したように、「異常の種類」の項目に、選択した異常の種類が登録された全レコードを有するブラックリストを指す。
【0045】
そして、推定部12dは、選択したホワイトリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する。
図8は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、現在の時刻が西暦2012年10月31日12時0分であり、一定期間が30日であり、選択したホワイトリストの登録内容が先の
図6に示す内容である場合には、推定部12dは、次の処理を行う。すなわち、
図8に示すように、推定部12dは、西暦2012年10月31日12時0分から30日前までの西暦2012年10月1日12時0分までのレコードを取得する。なお、
図8の例に示すレコードは、「異常の種類」の項目が省略された場合を示す。
【0046】
続いて、推定部12dは、取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、ユーザ操作識別子がレコードに出現する回数である平常時出現回数を算出する。なお、同一レコードに、同一のユーザ操作識別子が複数含まれている場合には、推定部12dは、かかるレコードに含まれる、かかるユーザ操作識別子の数を「1」として、平常時出現回数を算出する。これにより、推定部12dは、アプリケーションサーバ7が平常状態である場合におけるユーザの操作を示すユーザ操作識別子の平常時出現回数を算出することができる。
【0047】
次に、推定部12dは、選択したブラックリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する。
図9は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、現在の時刻が西暦2012年10月31日12時0分であり、一定期間が30日であり、選択したブラックリストの登録内容が先の
図7に示す内容である場合には、推定部12dは、次の処理を行う。すなわち、推定部12dは、
図9の例に示すように、西暦2012年10月31日12時0分から30日前までの西暦2012年10月1日12時0分までのレコードを取得する。なお、
図9の例に示すレコードは、「異常の種類」の項目が省略された場合を示す。
【0048】
そして、推定部12dは、新たに取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、異常時出現率を算出する。異常時出現率の算出方法の一例について説明する。推定部12dは、まず、新たに取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、ユーザ操作識別子がレコードに出現する回数である異常時出現回数を算出する。なお、同一レコードに、同一のユーザ操作識別子が複数含まれている場合には、推定部12dは、かかるレコードに含まれる、かかるユーザ操作識別子の数を「1」として、異常時出現回数を算出する。これにより、推定部12dは、アプリケーションサーバ7が異常状態である場合におけるユーザの操作を示すユーザ操作識別子の異常時出現回数を算出することができる。続いて、推定部12dは、ユーザ操作識別子ごとに、新たに取得した現在の時刻から一定期間前までのレコードの数に対する異常時出現回数の割合を異常時出現率として算出する。
図10は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、「[画面A,ボタンa]」というユーザ操作識別子の異常時出現回数が「3」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「3」である場合には、推定部12dは、次の処理を行う。すなわち、推定部12dは、
図10に示すように、異常時出現率「100%」(異常時出現回数「3」/レコードの数「3」)を算出する。また、「[画面C,ボタンe]」というユーザ操作識別子の異常時出現回数が「1」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「3」である場合には、推定部12dは、次の処理を行う。すなわち、推定部12dは、
図10に示すように、異常時出現率「33%」(異常時出現回数「1」/レコードの数「3」)を算出する。また、「[画面B,ボタンd]」というユーザ操作識別子の異常時出現回数が「2」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「3」である場合には、推定部12dは、次の処理を行う。すなわち、推定部12dは、
図10に示すように、異常時出現率「66%」(異常時出現回数「2」/レコードの数「3」)を算出する。また、「[画面D,ボタンf]」というユーザ操作識別子の異常時出現回数が「1」であり、新たに取得した現在の時刻から一定期間前までのレコードの数が「3」である場合には、推定部12dは、次の処理を行う。すなわち、推定部12dは、
図10に示すように、異常時出現率「33%」(異常時出現回数「1」/レコードの数「3」)を算出する。
【0049】
ここで、
図11を参照して、ユーザ操作識別子ごとの異常時出現回数、異常時出現率、及び、平常時出現回数について説明する。
図11は、実施例に係るセンターが実行する処理の一例を説明するための図である。
図11の例に示すように、「[画面A,ボタンa]」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「3」、「100%」、「0」である。また、
図11の例に示すように、「[画面C,ボタンe]」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「1」、「33%」、「450」である。また、
図11の例に示すように、「[画面B,ボタンd]」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「2」、「66%」、「211」である。また、
図11の例に示すように、「[画面D,ボタンf]」というユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数は、それぞれ、「1」、「33%」、「2」である。
【0050】
そして、推定部12dは、ユーザ操作識別子ごとに、蓋然性スコアを算出する。蓋然性スコアの算出方法の一例について説明する。例えば、推定部12dは、ユーザ操作識別子ごとに、下記の式(1)に従って、蓋然性スコアを算出する。
蓋然性スコア=(異常時出現率)×
((異常時出現回数)/((異常時出現回数)+(平常時出現回数)))
・・・(1)
【0051】
図12は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、各ユーザ操作識別子の異常時出現回数、異常時出現率、及び、平常時出現回数が
図11の例に示す値である場合、推定部12dは、次の処理を行う。すなわち、推定部12dは、式(1)に従って、
図12に示すように、「[画面A,ボタンa]」というユーザ操作識別子の蓋然性スコア「1.000」を算出する。また、推定部12dは、式(1)に従って、
図12に示すように、「[画面C,ボタンe]」というユーザ操作識別子の蓋然性スコア「0.001」を算出する。また、推定部12dは、式(1)に従って、
図12に示すように、「[画面B,ボタンd]」というユーザ操作識別子の蓋然性スコア「0.006」を算出する。また、推定部12dは、式(1)に従って、
図12に示すように、「[画面D,ボタンf]」というユーザ操作識別子の蓋然性スコア「0.110」を算出する。ここで、推定部12dは、所定の閾値以上の蓋然性スコアに対応するユーザ操作識別子を以降の処理で用いるようにしてもよい。これにより、処理対象のユーザ操作識別子の数が絞り込まれるため、処理速度が速くなる。
【0052】
そして、推定部12dは、蓋然性スコアが所定値以上のレコードを特定する。例えば、推定部12dは、蓋然性スコアが所定値以上のユーザ操作識別子を特定し、特定したユーザ操作識別子を有するレコードを第3のDB11c及び第4のDB11dから特定する。例えば、所定値が「0.100」である場合には、推定部12dは、蓋然性スコアが「0.100」以上のユーザ操作識別子「[画面A,ボタンa]」及び「[画面D,ボタンf]」を特定する。そして、推定部12dは、ユーザ操作識別子「[画面A,ボタンa]」を有するレコードを第3のDB11c及び第4のDB11dから特定する。また、推定部12dは、ユーザ操作識別子「[画面D,ボタンf]」を有するレコードを第3のDB11c及び第4のDB11dから特定する。
【0053】
そして、推定部12dは、異常の種類のうち未選択の異常の種類があるか否かを判定する上述した処理から、蓋然性スコアが所定値以上のレコードを特定する上述した処理までを全ての異常の種類が未選択でなくなるまで繰り返し行う。
【0054】
一方、異常の種類のうち未選択の異常の種類がない場合には、推定部12dは、特定したレコードに基づいた画像を生成する。
図13は、実施例に係るセンターが実行する処理の一例を説明するための図である。例えば、ユーザ操作識別子「[画面A,ボタンa]」を有するレコード、及び、「[画面D,ボタンf]」を有するレコードを特定した場合には、推定部12dは、所定のテンプレートを用いて、次のような画像を生成する。例えば、推定部12dは、
図13に示すようなメッセージ「画面Aにおいて、ボタンaを押下することは、異常発生に至る蓋然性の高い事象です。」を含む画像を生成する。この場合、推定部12dは、「画面Dにおいて、ボタンfを押下することは、異常発生に至る蓋然性の高い事象です。」を含む画像を生成することもできる。また、推定部12dは、「画面Aにおいて、ボタンaを押下することは、異常発生に至る蓋然性の高い事象です。また、画面Dにおいて、ボタンfを押下することは、異常発生に至る蓋然性の高い事象です。」を含む画像を生成することもできる。また、推定部12dは、複数の異常の原因となる蓋然性の高い機能がある場合、異常の原因となる蓋然性の高い上位数個の機能を表示することも可能である。
【0055】
続いて、推定部12dは、生成した画像をコンソール6に送信する。これにより、コンソール6で画像が表示される。
【0056】
次に、本実施例に係るエージェント10が実行する処理の流れを説明する。
図14は、実施例に係る生成処理の手順を示すフローチャートである。この生成処理は、例えば、所定時間間隔、例えば、1分間隔で繰り返し実行される。
【0057】
図14に示すように、生成部10aは、概況データを生成する(S101)。そして、抽出部10bは、生成された概況データのうち、所定の事象を示す概況データを抽出する(S102)。そして、送信部10cは、概況データ、または、概況データ及びインシデントデータをセンター8に送信し(S103)、処理を終了する。
【0058】
次に、本実施例に係るセンター8が実行する処理の流れを説明する。
図15は、実施例に係る異常原因推定処理の手順を示すフローチャートである。この異常原因推定処理は、例えば、コンソール6から異常原因推定処理を実行する指示が入力された場合に、センター8により実行される。
【0059】
図15に示すように、取得部12bは、第1のDB11aに登録された全ての概況データを取得する(S201)。そして、取得部12bは、第2のDB11bに登録された全てのインシデントデータを取得する(S202)。続いて、特定部12cは、異常の候補の種類のうち、未選択の異常の候補の種類があるか否かを判定する(S203)。未選択の異常の候補の種類がある場合(S203肯定)には、特定部12cは、未選択の異常の候補の種類を1つ選択する(S204)。そして、特定部12cは、取得部12bにより取得されたインシデントデータの中から、選択した異常の候補の種類を含むインシデントデータを全て特定する(S205)。
【0060】
続いて、特定部12cは、特定したインシデントデータの中に、未選択のインシデントデータがあるか否かを判定する(S206)。未選択のインシデントデータがある場合(S206肯定)には、特定部12cは、未選択のインシデントデータを1つ選択する(S207)。
【0061】
そして、特定部12cは、選択したインシデントデータが、異常を示すか否かを判定する(S208)。選択したインシデントデータが異常を示さない場合(S208否定)には、特定部12cは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部12cは、選択したインシデントデータの「時刻」及び「異常の候補の種類」の各項目に登録された時刻及び異常の候補の種類と、取得したユーザ操作識別子とを対応付けて、第3のDB11cに登録する(S210)。
【0062】
一方、選択したインシデントデータが異常を示す場合(S208肯定)には、特定部12cは、次の処理を行う。すなわち、特定部12cは、選択したインシデントデータの「時刻」の項目に登録された時刻を「時刻」の項目に有する概況データの「ユーザ操作」の項目に登録されたユーザ操作識別子を取得する。そして、特定部12cは、選択したインシデントデータの「異常の候補の種類」の項目に登録された異常の候補の種類に対応するブラックリストを第4のDB11dの中から選択する。続いて、特定部12cは、選択したインシデントデータの「時刻」及び「異常の候補の種類」の各項目に登録された時刻及び異常の候補の種類と、取得したユーザ操作識別子とを対応付けて、選択したブラックリストに登録する(S209)。
【0063】
そして、特定部12cは、取得部12bにより取得された概況データのうち、「時刻」の項目に登録された時刻が、ホワイトリスト及びブラックリストに登録されていない概況データを全て特定する(S211)。そして、特定部12cは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と、「ユーザ操作」の項目に登録されたユーザ操作識別子とを対応付けて第3のDB11cに登録する。さらに、特定部12cは、特定した概況データのそれぞれについて、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータがあるか否かを判定し、インシデントデータがある場合には、次の処理を行う。すなわち、特定部12cは、「時刻」の項目に登録された時刻と同一の時刻を有するインシデントデータの「異常の候補の種類」に登録された異常の候補の種類を取得する。そして、特定部12cは、取得した異常の候補の種類を第3のDB11cの対応するレコードの「異常の種類」の項目に登録する(S212)。そして、特定部12cは、第3のDB11cのレコードを、時刻が昇順となるようにソートし(S213)、S206へ戻る。
【0064】
一方、未選択のインシデントデータがない場合(S206否定)には、特定部12cは、S203に戻る。また、未選択の異常の候補の種類がない場合(S203否定)には、推定部12cは、異常の種類のうち未選択の異常の種類があるか否かを判定する(S214)。異常の種類がある場合(S214肯定)には、推定部12cは、未選択の異常の種類を1つ選択する(S215)。そして、推定部12cは、選択した異常の種類に対応するホワイトリスト及びブラックリストを選択する(S216)。
【0065】
続いて、推定部12dは、選択したホワイトリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する(S217)。
【0066】
続いて、推定部12dは、取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、ユーザ操作識別子がレコードに出現する回数である平常時出現回数を算出する(S218)。次に、推定部12dは、選択したブラックリストに登録されたレコードのうち、現在の時刻から、一定期間前までのレコードを取得する(S219)。
【0067】
そして、推定部12dは、新たに取得した現在の時刻から一定期間前までのレコードに基づいて、ユーザ操作識別子ごとに、異常時出現率を算出する(S220)。そして、推定部12dは、ユーザ操作識別子ごとに、蓋然性スコアを算出する(S221)。続いて、推定部12dは、蓋然性スコアが所定値以上のレコードを特定し(S222)、S214に戻る。
【0068】
一方、未選択の異常の種類がない場合(S214否定)には、推定部12dは、特定したレコードに基づいた画像を生成する(S223)。続いて、推定部12dは、生成した画像をコンソール6に送信し(S224)、処理を終了する。
【0069】
上述してきたように、本実施例に係るセンター8は、アプリケーションサーバ7についての負荷情報を取得する。そして、センター8は、負荷情報に基づいてアプリケーションサーバ7が異常を示すか否かの判定を行う。センター8は、判定がアプリケーションサーバ7の異常を示す場合は、アプリケーションサーバ7で実行されている1又は複数の機能を特定し、特定した機能をブラックリストに登録する。一方、センター8は、判定がアプリケーションサーバ7の異常を示さない場合は、アプリケーションサーバ7で実行されている1又は複数の機能を特定し、特定した機能をホワイトリストに登録する。続いて、センター8は、ブラックリストに登録された機能のうち、ホワイトリストに登録された機能以外の機能の情報を出力する。したがって、本実施例によれば、異常発生に至る蓋然性の高い機能を推定することができる。
【0070】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【0071】
例えば、
図16に示すように、生成部10aが、ユーザにより操作されたボタンについての過去1分間の情報90〜93のうち、生成タイミング(図中、19時42分)をまたがる情報90、91を取得することもできる。このように、負荷情報の取得を、所定時間間隔離間した複数タイミングで行うことで、概況データのデータサイズが小さくなり、概況データを用いた異常原因推定処理の処理速度が速くなる。
【0072】
また、上述した実施例において、取得部12bは、コンソール6から送信された異常原因推定処理を実行する指示を受信すると、第1のDB11aに登録されたすべての概況データを取得する。しかし、取得部12bは、コンソールから指示を受けたタイミングで実行するのみではなく、定期的に(例えば10分に1回等の間隔で)概況データを取得する処理を実行してもよい。この結果、システム管理者はコンソールを操作することなく、システムに異常が発生した場合に、異常の発生情報を取得することができる。
【0073】
例えば、異常原因推定装置は、システムにおいてメモリ使用率が急上昇したことを定期的な概況データの取得により検出した場合、メモリ資料率急上昇の異常が発生したことおよび蓋然性スコアの高いユーザ操作識別子を管理者にメール通知することが可能になる。
【0074】
また、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、本実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【0075】
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
【0076】
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理の順番を変更できる。
【0077】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0078】
[異常原因推定プログラム]
また、上記の実施例で説明した異常原因推定装置の一例であるセンター8の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、
図17を用いて、上記の実施例で説明したセンター8と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
図17は、異常原因推定プログラムを実行するコンピュータを示す図である。
【0079】
図17に示すように、コンピュータ300は、CPU310、ROM320、Hard Disk Drive(HDD)330、RAM340を有する。これら310〜340は、バス350を介して接続される。
【0080】
ROM320には、OSなどの基本プログラムが記憶されている。また、HDD330には、上記の実施例で示す登録部12a、取得部12b、特定部12c、推定部12dと同様の機能を発揮する異常原因推定プログラム330aが予め記憶される。なお、異常原因推定プログラム330aについては、適宜分離しても良い。
【0081】
そして、CPU310が、異常原因推定プログラム330aを、HDD330から読み出して実行する。
【0082】
なお、上記した異常原因推定プログラム330aについては、必ずしも最初からHDD330に記憶させておく必要はない。
【0083】
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に異常原因推定プログラム330aを記憶させておく。そして、コンピュータ300がこれらから異常原因推定プログラム330aを読み出して実行するようにしてもよい。
【0084】
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などに異常原因推定プログラム330aを記憶させておく。そして、コンピュータ300がこれらから異常原因推定プログラム330aを読み出して実行するようにしてもよい。