(57)【要約】【課題】異常の発生を早期に検出できる異常検知方法、異常検知プログラムおよび異常検知装置を提供する。【解決手段】取得部４０は、監視対象の状態を示す検出値を取得する。判定部４１は、取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも大きいかを判定する。出力部４２は、検出値が前記特定期間での検出値の最小値よりも大きいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する。【選択図】図２
2015230714.tif 000002
【特許請求の範囲】
【請求項１】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも大きいかを判定し、
前記検出値が前記特定期間での検出値の最小値よりも大きいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する
ことを特徴とする異常検知方法。
【請求項２】
前記検出値は、メモリの使用率である
ことを特徴とする請求項１に記載の異常検知方法。
【請求項３】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最大値よりも小さいかを判定し、
前記検出値が前記特定期間での検出値の最大値よりも小さいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する
ことを特徴とする異常検知方法。
【請求項４】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最大値よりも大きいかを判定し、
前記検出値が前記特定期間での最大値よりも大きいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定し、
前記検出値が前記特定期間での最大値よりも大きいとの判定結果が前記第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間以上にわたり連続して得られた場合、アラートを出力する
処理をコンピュータが実行することを特徴とする異常検知方法。
【請求項５】
前記検出値は、ＣＰＵ（Central  Processing  Unit）の利用率である
ことを特徴とする請求項４に記載の異常検知方法。
【請求項６】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも小さいかを判定し、
前記検出値が前記特定期間での最小値よりも小さいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定し、
前記検出値が前記特定期間での最小値よりも小さいとの判定結果が前記第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間以上にわたり連続して得られた場合、アラートを出力する
処理をコンピュータが実行することを特徴とする異常検知方法。
【請求項７】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも大きいかを判定し、
前記検出値が前記特定期間での検出値の最小値よりも大きいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する
処理をコンピュータに実行させることを特徴とする異常検知プログラム。
【請求項８】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最大値よりも小さいかを判定し、
前記検出値が前記特定期間での検出値の最大値よりも小さいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する
処理をコンピュータに実行させることを特徴とする異常検知プログラム。
【請求項９】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最大値よりも大きいかを判定し、
前記検出値が前記特定期間での最大値よりも大きいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定し、
前記検出値が前記特定期間での最大値よりも大きいとの判定結果が前記第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間以上にわたり連続して得られた場合、アラートを出力する
処理をコンピュータに実行させることを特徴とする異常検知プログラム。
【請求項１０】
監視対象の状態を示す検出値を取得し、
取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも小さいかを判定し、
前記検出値が前記特定期間での最小値よりも小さいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定し、
前記検出値が前記特定期間での最小値よりも小さいとの判定結果が前記第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間以上にわたり連続して得られた場合、アラートを出力する
処理をコンピュータに実行させることを特徴とする異常検知プログラム。
【請求項１１】
監視対象の状態を示す検出値を取得する取得部と、
前記取得部により取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも大きいかを判定する判定部と、
前記判定部により前記検出値が前記特定期間での検出値の最小値よりも大きいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する出力部と
を有することを特徴とする異常検知装置。
【請求項１２】
監視対象の状態を示す検出値を取得する取得部と、
前記取得部により取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最大値よりも小さいかを判定する判定部と、
前記判定部により前記検出値が前記特定期間での検出値の最大値よりも小さいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する出力部と
を有することを特徴とする異常検知装置。
【請求項１３】
監視対象の状態を示す検出値を取得する取得部と、
前記取得部により取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最大値よりも大きいかを判定する第１判定部と、
前記第１判定部により前記検出値が前記特定期間での最大値よりも大きいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定する第２判定部と、
前記第２判定部により前記検出値が前記特定期間での最大値よりも大きいとの判定結果が前記第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間以上にわたり連続して得られた場合、アラートを出力する出力部と
を有することを特徴とする異常検知装置。
【請求項１４】
監視対象の状態を示す検出値を取得する取得部と、
前記取得部により取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも小さいかを判定する第１判定部と、
前記第１判定部により前記検出値が前記特定期間での最小値よりも小さいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定する第２判定部と、
前記第２判定部により前記検出値が前記特定期間での最小値よりも小さいとの判定結果が前記第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間以上にわたり連続して得られた場合、アラートを出力する出力部と
を有することを特徴とする異常検知装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検知方法、異常検知プログラムおよび異常検知装置に関する。
【背景技術】
【０００２】
従来から検出値の変化から異常の発生の検知が行われている。例えば、サーバなど用いたシステムでは、サーバのＣＰＵ（Central  Processing  Unit）の利用率を監視し、ＣＰＵの利用率が一定以上となった場合に異常が発生したと検知する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−９６１０号公報
【特許文献２】特開２００８−１８６４７２号公報
【特許文献３】特開２００１−１４２７０８号公報
【特許文献４】特開２０１０−２５０８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術は、異常の発生の検知が遅くなる場合がある。例えば、ＣＰＵの利用率が一定以上となった場合に異常が発生したと検知する場合、異常の発生の直前、あるいは、異常が発生した事後でないと、異常の発生を検知できない。
【０００５】
このような課題は、ＣＰＵの利用率から異常の発生を検知する場合に限らず、例えば、検出値の変化から異常の発生を検出する場合、全般に発生するものである。
【０００６】
本発明は、一側面では、異常の発生を早期に検出できる異常検知方法、異常検知プログラムおよび異常検知装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、異常検知方法は、コンピュータが、監視対象の状態を示す検出値を取得する処理を実行する。異常検知方法は、コンピュータが、取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも大きいかを判定する処理を実行する。異常検知方法は、コンピュータが、検出値が特定期間での検出値の最小値よりも大きいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力する処理を実行する。
【発明の効果】
【０００８】
本発明の一側面によれば、異常の発生を早期に検出できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、異常の検知を行うシステム構成の一例を説明する図である。
【図２】図２は、異常検知装置の機能的な構成の一例を示す図である。
【図３】図３は、第１待機セットのデータ構成の一例を示す図である。
【図４】図４は、第１アクティブセットのデータ構成の一例を示す図である。
【図５】図５は、第２待機セットのデータ構成の一例を示す図である。
【図６】図６は、第２アクティブセットのデータ構成の一例を示す図である。
【図７Ａ】図７Ａは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｂ】図７Ｂは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｃ】図７Ｃは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｄ】図７Ｄは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｅ】図７Ｅは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｆ】図７Ｆは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｇ】図７Ｇは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｈ】図７Ｈは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｉ】図７Ｉは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｊ】図７Ｊは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｋ】図７Ｋは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図７Ｌ】図７Ｌは、メモリリークの発生を検知する際の流れの一例を示す図である。
【図８】図８は、メモリリークが発生している場合のメモリ使用率の変化の一例を示す図である。
【図９】図９は、メモリリークが発生している場合のメモリ使用率の変化の他の一例を示す図である。
【図１０】図１０は、異常検知処理の手順の一例を示すフローチャートである。
【図１１】図１１は、異常検知装置の機能的な構成の一例を示す図である。
【図１２】図１２は、第３待機セットのデータ構成の一例を示す図である。
【図１３】図１３は、第３アクティブセットのデータ構成の一例を示す図である。
【図１４Ａ】図１４Ａは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｂ】図１４Ｂは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｃ】図１４Ｃは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｄ】図１４Ｄは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｅ】図１４Ｅは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｆ】図１４Ｆは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｇ】図１４Ｇは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｈ】図１４Ｈは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｉ】図１４Ｉは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｊ】図１４Ｊは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｋ】図１４Ｋは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｌ】図１４Ｌは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１４Ｍ】図１４Ｍは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。
【図１５】図１５は、ＣＰＵの利用率の変化の一例を示す図である。
【図１６】図１６は、ＣＰＵの利用率の変化の他の一例を示す図である。
【図１７】図１７は、異常検知処理の手順の一例を示すフローチャートである。
【図１８】図１８は、異常検知プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明にかかる異常検知方法、異常検知プログラムおよび異常検知装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１１】
［システム構成］
最初に、実施例１に係る異常検知装置を用いて異常の検知を行うシステムの一例を説明する。図１は、異常の検知を行うシステム構成の一例を説明する図である。図１に示すように、システム１０は、サーバ装置１１と、異常検知装置１２と有する。サーバ装置１１と異常検知装置１２は、ネットワーク１３を介して通信可能に接続され、各種の情報を交換することが可能とされている。かかるネットワーク１３の一態様としては、有線または無線を問わず、携帯電話などの移動体通信、インターネット（Internet）、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの任意の種類の通信網を採用できる。
【００１２】
サーバ装置１１は、所定のシステムが動作する装置である。例えば、サーバ装置１１は、企業やデータセンタに配置され、基幹システムの提供や所定のサービスを提供するサーバコンピュータである。図１の例では、サーバ装置１１を１つとした場合を例示したが、これに限定されず、サーバ装置１１は任意の数とすることができる。例えば、システム１０は、複数のサーバ装置１１によりクラウドサービスを提供するクラウドシステムであってもよい。
【００１３】
異常検知装置１２は、サーバ装置１１の異常の発生を検知する装置である。異常検知装置１２は、例えば、パーソナルコンピュータやサーバコンピュータなどのコンピュータなどである。異常検知装置１２は、１台のコンピュータとして実装してもよく、また、複数台のコンピュータによる実装してもよい。また、異常検知装置１２は、システム１０を管理する管理端末やサーバ装置１１が兼ねてもよい。なお、本実施例では、異常検知装置１２を１台のコンピュータとして設けた場合を例として説明する。
【００１４】
［異常検知装置の構成］
次に、実施例１に係る異常検知装置１２の構成について説明する。図２は、異常検知装置の機能的な構成の一例を示す図である。図２に示すように、異常検知装置１２は、通信Ｉ／Ｆ（インタフェース）部２０と、記憶部２１と、制御部２２とを有する。
【００１５】
通信Ｉ／Ｆ部２０は、他の装置との間で通信制御を行うインタフェースである。通信Ｉ／Ｆ部２０としては、ＬＡＮカードなどのネットワークインタフェースカードを採用できる。
【００１６】
通信Ｉ／Ｆ部２０は、ネットワーク１３を介して他の装置と各種情報を送受信する。例えば、通信Ｉ／Ｆ部２０は、サーバ装置１１と各種情報を送受信が可能とされており、サーバ装置１１からサーバ装置１１の状態を示す各種情報を受信する。
【００１７】
記憶部２１は、各種のデータを記憶する記憶デバイスである。例えば、記憶部２１は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部２１は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。
【００１８】
記憶部２１は、制御部２２で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部２１は、後述する異常検知処理を実行するプログラムを含む各種のプログラムを記憶する。さらに、記憶部２１は、制御部２２で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部２１は、第１待機セット３０と、第１アクティブセット３１と、第２待機セット３２と、第２アクティブセット３３とを記憶する。
【００１９】
第１アクティブセット３１および第２アクティブセット３３は、異常の検知の対象となる期間のデータを保持するためのデータ領域である。例えば、本実施例では、後述する所定の第１期間での検出値の最小値を求める。また、本実施例では、第１期間の最小値よりも大きいとの判定結果が所定の第２期間の間連続して得られたかを判定する。この第１期間は、検出値の取得時から所定時間間隔をあけており、例えば、５分〜３０分の期間とする。この第１期間は、検出値の取得時を含む期間であってもよい。また、第２期間は、検出値の取得時を含む期間としており、例えば、０分〜３０分の期間とする。第１アクティブセット３１には、第１期間の検出値などのデータを記憶させる。また、第２アクティブセット３３には、第１期間の最小値よりも大きいとの判定結果が第２期間の間連続したかを判定するためのデータを記憶させる。
【００２０】
第１待機セット３０および第２待機セット３２は、異常の検知の対象となる期間の前のデータを保持するためのデータ領域である。
【００２１】
図３は、第１待機セットのデータ構成の一例を示す図である。図３に示すように、第１待機セット３０は、「時刻」、「検出値」の各項目を有する。時刻の項目は、検出値が取得された時刻情報を記憶する領域である。検出値の項目は、取得された検出値を記憶する領域である。第１待機セット３０には、検出値が取得される毎に、取得された検出値が時刻情報と共に格納される。
【００２２】
図４は、第１アクティブセットのデータ構成の一例を示す図である。図４に示すように、第１アクティブセット３１は、上述の第１待機セット３０と同様の構成とされており、「時刻」、「検出値」の各項目を有する。第１アクティブセット３１には、第１待機セット３０に格納された検出値のうち、時刻が第１期間内となった検出値が時刻情報と共に格納される。
【００２３】
図５は、第２待機セットのデータ構成の一例を示す図である。図５に示すように、第２待機セット３２は、「時刻」、「検出値」、「フラグ」の各項目を有する。時刻の項目は、検出値が取得された時刻情報を記憶する領域である。検出値の項目は、取得された検出値を記憶する領域である。フラグの項目は、第１期間のデータの状態を判定した結果を示したフラグを記憶する領域である。第２待機セット３２には、検出値が取得される毎に、取得された検出値が時刻情報、フラグと共に格納される。
【００２４】
図６は、第２アクティブセットのデータ構成の一例を示す図である。図６に示すように、第２アクティブセット３３は、上述の第２待機セット３２と同様の構成とされており、「時刻」、「検出値」、「フラグ」の各項目を有する。第２アクティブセット３３には、第２待機セット３２に格納された検出値のうち、時刻が第２期間内となった検出値が時刻情報、フラグと共に格納される。
【００２５】
第１待機セット３０、第１アクティブセット３１、第２待機セット３２および第２アクティブセット３３のデータの具体例については、後述する。
【００２６】
図２に戻り、制御部２２は、異常検知装置１２を制御するデバイスである。制御部２２としては、ＣＰＵ、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２２は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２２は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２２は、取得部４０と、判定部４１と、出力部４２とを有する。
【００２７】
取得部４０は、各種の取得を行う。例えば、取得部４０は、監視対象の状態を示す検出値を取得する。この検出値は、サーバ装置１１が周期的に検出を行って異常検知装置１２へ送信してもよい。また、検出値は、取得部４０が周期的にサーバ装置１１に対して送信を要求し、サーバ装置１１が要求に応じて検出を行って異常検知装置１２へ送信してもよい。本実施例では、監視対象をサーバ装置１１とし、監視対象の状態を示す検出値として、サーバ装置１１のメモリの使用率を取得する。
【００２８】
取得部４０は、取得された検出値を時刻情報と共に第１待機セット３０に格納する。また、取得部４０は、第１待機セット３０に格納された検出値のうち、第１期間内となった検出値を第１アクティブセット３１に移動させる。また、判定部４１は、第１アクティブセット３１に格納された検出値のうち、第１期間外となった検出値を第１アクティブセット３１から削除する。
【００２９】
判定部４１は、各種の判定を行う。例えば、判定部４１は、取得部４０により取得した検出値ごとに、当該検出値が、取得時よりも前である第１期間での検出値の最小値よりも大きいかを判定する。例えば、判定部４１は、取得部４０により検出値が取得される毎に、第１アクティブセット３１に記憶された検出値内での検出値の最小値を特定する。この第１アクティブセット３１に記憶された検出値の最小値は、第１期間での検出値の最小値である。判定部４１は、検出値が取得される毎に、取得された検出値を、第１期間の検出値の最小値と比較して、取得された検出値が第１期間の検出値の最小値よりも大きいかを判定する。この判定は、検出値が第１期間の検出値の最小値よりも、しきい値以上大きいかを判定するようにしてもよい。本実施例では、判定部４１は、検出値が、第１期間での検出値の最小値と、所定のしきい値を加算した値よりも大きいかを判定する。しきい値は、検出値に大局的に異常な上昇傾向があるかを判定する値であり、ゼロ以上の値に設定する。
【００３０】
判定部４１は、取得された検出値を、判定結果および時刻情報と共に第２待機セット３２に格納する。また、判定部４１は、判定結果として、最新の検出値が第１期間での検出値の最小値よりも大きいか否かを示すフラグを第２待機セット３２に格納する。
【００３１】
出力部４２は、各種の出力を行う。例えば、出力部４２は、第２期間における判定の結果に基づいて、異常が発生したか否かの検知を行う。そして、出力部４２は、異常が発生したことが検知された場合、アラートを出力する。例えば、出力部４２は、検出値が第１期間での検出値の最小値よりも大きいとの判定の結果が第２期間の間連続して得られた場合、異常が発生しているものとして、アラートを出力する。例えば、出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。また、出力部４２は、第２アクティブセット３３に格納された検出値のうち、第２期間外となった検出値を第２アクティブセット３３から削除する。そして、出力部４２は、第２アクティブセット３３に記憶された検出値が全て直近の第１期間の最小値よりも大きいと判定されたものである場合、アラートを出力する。
【００３２】
ここで、具体例を用いて説明する。本実施例では、監視対象をサーバ装置１１とし、検出値としてサーバ装置１１のメモリの使用率を取得し、異常として、サーバ装置１１のメモリリークの発生を検知する場合を例に説明する。また、本実施例では、第１期間を２分〜４分前の期間とし、第２期間を０分〜６分前の期間とする。また、本実施例では、検出値が第１期間の最小値よりしきい値「５」以上大きい状態が第２期間連続した場合にメモリリークが発生したと検知する場合を例に説明する。図７Ａ〜図７Ｌは、メモリリークの発生を検知する際の流れの一例を示す図である。図７Ａ〜図７Ｌには、サーバ装置１１で１分毎に検出されるメモリの使用率と、第１待機セット３０、第１アクティブセット３１、第２待機セット３２および第２アクティブセット３３に格納されるデータの変化の一例が示されている。なお、図７Ａ〜図７Ｌの例では、時刻の経過を把握しやくするため、時刻を図７Ａの時点を基準（００：００）として示している。また、図７Ａ〜図７Ｌの例では、入力として、各時刻で取得されるメモリ使用率が示されている。
【００３３】
図７Ａに示すように、取得部４０は、時刻「００：００」にサーバ装置１１のメモリ使用率「１１」が取得されると、時刻「００：００」およびメモリ使用率「１１」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、第１アクティブセット３１にはデータの格納は行わない。第１アクティブセット３１にデータが格納されていないため、第１アクティブセット３１に格納されたメモリ使用率の最小値は、未定である。取得されたメモリ使用率「１１」は、第１アクティブセット３１に格納されたメモリ使用率の最小値と、しきい値「５」とを加算した値より大きくはない。このため、判定部４１は、フラグ「０」として、時刻「００：００」、メモリ使用率「１１」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ａの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：００」、メモリ使用率「１１」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００３４】
次に、図７Ｂに示すように、取得部４０は、時刻「００：０１」にサーバ装置１１のメモリ使用率「８３」が取得されると、時刻「００：０１」およびメモリ使用率「８３」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、第１アクティブセット３１にはデータの格納は行わない。第１アクティブセット３１にデータが格納されていないため、第１アクティブセット３１に格納されたメモリ使用率の最小値は、未定である。取得されたメモリ使用率「８３」は、第１アクティブセット３１に格納されたメモリ使用率の最小値と、しきい値「５」とを加算した値より大きくはない。このため、判定部４１は、フラグ「０」として、時刻「００：０１」、メモリ使用率「８３」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｂの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０１」、メモリ使用率「８３」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００３５】
次に、図７Ｃに示すように、取得部４０は、時刻「００：０２」にサーバ装置１１のメモリ使用率「１４」が取得されると、時刻「００：０２」およびメモリ使用率「１４」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：００」、検出値「１１」を第１アクティブセット３１に格納する。取得されたメモリ使用率「１４」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「１１」と、しきい値「５」とを加算した値より大きくはない。このため、判定部４１は、フラグ「０」として、時刻「００：０２」、メモリ使用率「１４」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｃの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０２」、メモリ使用率「１４」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００３６】
次に、図７Ｄに示すように、取得部４０は、時刻「００：０３」にサーバ装置１１のメモリ使用率「７７」が取得されると、時刻「００：０３」およびメモリ使用率「７７」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０１」、検出値「８３」を第１アクティブセット３１に格納する。取得されたメモリ使用率「７７」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「１１」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：０３」、メモリ使用率「７７」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｄの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０３」、メモリ使用率「７７」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００３７】
次に、図７Ｅに示すように、取得部４０は、時刻「００：０４」にサーバ装置１１のメモリ使用率「１５」が取得されると、時刻「００：０４」およびメモリ使用率「１５」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０２」、検出値「１４」を第１アクティブセット３１に格納する。取得されたメモリ使用率「１５」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「１１」と、しきい値「５」とを加算した値より大きくはない。このため、判定部４１は、フラグ「０」として、時刻「００：０４」、メモリ使用率「１５」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｅの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０４」、メモリ使用率「１５」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００３８】
次に、図７Ｆに示すように、取得部４０は、時刻「００：０５」にサーバ装置１１のメモリ使用率「５３」が取得されると、時刻「００：０５」およびメモリ使用率「５３」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０３」、検出値「７７」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：００」のデータが第１期間外となったため、第１アクティブセット３１から削除する。取得されたメモリ使用率「５３」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「１４」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：０５」、メモリ使用率「５３」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｆの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０５」、メモリ使用率「５３」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００３９】
次に、図７Ｇに示すように、取得部４０は、時刻「００：０６」にサーバ装置１１のメモリ使用率「４２」が取得されると、時刻「００：０６」およびメモリ使用率「４２」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０４」、検出値「１５」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０１」のデータが第１期間外となったため、第１アクティブセット３１から削除する。取得されたメモリ使用率「４２」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「１４」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：０６」、メモリ使用率「４２」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｇの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０６」、メモリ使用率「４２」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００４０】
次に、図７Ｈに示すように、取得部４０は、時刻「００：０７」にサーバ装置１１のメモリ使用率「７０」が取得されると、時刻「００：０７」およびメモリ使用率「７０」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０５」、検出値「５３」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０２」のデータが第１期間外となったため、第１アクティブセット３１から削除する。取得されたメモリ使用率「７０」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「１５」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：０７」、メモリ使用率「７０」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｈの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０７」、メモリ使用率「７０」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００４１】
次に、図７Ｉに示すように、取得部４０は、時刻「００：０８」にサーバ装置１１のメモリ使用率「２１」が取得されると、時刻「００：０８」およびメモリ使用率「２１」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０６」、検出値「４２」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０３」のデータが第１期間外となったため、第１アクティブセット３１から削除する。取得されたメモリ使用率「２１」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「１５」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：０８」、メモリ使用率「２１」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｉの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０８」、メモリ使用率「２１」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００４２】
次に、図７Ｊに示すように、取得部４０は、時刻「００：０９」にサーバ装置１１のメモリ使用率「８３」が取得されると、時刻「００：０９」およびメモリ使用率「８３」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０７」、検出値「７０」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０４」のデータが第１期間外となったため、第１アクティブセット３１から削除する。取得されたメモリ使用率「８３」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「４２」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：０９」、メモリ使用率「８３」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｊの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０９」、メモリ使用率「８３」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００４３】
次に、図７Ｋに示すように、取得部４０は、時刻「００：１０」にサーバ装置１１のメモリ使用率「４７」が取得されると、時刻「００：１０」およびメモリ使用率「４７」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０８」、検出値「２１」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０５」のデータが第１期間外となったため、第１アクティブセット３１から削除する。取得されたメモリ使用率「４７」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「２１」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：１０」、メモリ使用率「４７」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｋの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：１０」、メモリ使用率「４７」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００４４】
次に、図７Ｌに示すように、取得部４０は、時刻「００：１１」にサーバ装置１１のメモリ使用率「９３」が取得されると、時刻「００：１１」およびメモリ使用率「９３」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０９」、検出値「８３」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０６」のデータが第１期間外となったため、第１アクティブセット３１から削除する。取得されたメモリ使用率「９３」は、第１アクティブセット３１に格納されたメモリ使用率の最小値「２１」と、しきい値「５」とを加算した値より大きい。このため、判定部４１は、フラグ「１」として、時刻「００：１１」、メモリ使用率「９３」を第２待機セット３２に格納する。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図７Ｌの例では、第２期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：１１」、メモリ使用率「９３」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００４５】
ここで、図７Ｌに示す第２アクティブセット３３に格納された第２の期間の各データは、全てフラグが１となっている。この図７Ｌに示す状態は、取得された検出値が第１期間での検出値の最小値よりも大きいとの判定の結果が第２期間の間連続して得られた状態である。出力部４２は、第２アクティブセット３３に記憶された各データのフラグが全て「１」である場合、アラートを出力する。
【００４６】
例えば、サーバ装置１１では、メモリリークが発生している場合、処理に応じてメモリ使用率が変化するが、メモリの記憶領域を全て解放できないため、メモリ使用率の最小値が徐々に増加する。
【００４７】
図８は、メモリリークが発生している場合のメモリ使用率の変化の一例を示す図である。図８に示すように、メモリ使用率は、増加と減少を繰り返すが大局的には増加する。このような場合、例えば、メモリ使用率が一定のしきい値以上をとなった場合に異常が発生したと検知すると、異常の発生の検知が遅くなる場合がある。
【００４８】
一方、メモリリークが発生している場合、メモリの記憶領域を全て解放できないため、メモリ使用率は、増加と減少を繰り返すものの、大局的には増加する。そこで、異常検知装置１２は、周期的にサーバ装置１１のメモリ使用率を取得する。そして、異常検知装置１２は、取得された検出値が、取得時よりも前の第１期間での検出値の最小値よりも大きいとの判定の結果が第２期間の間連続して得られた場合、メモリリークが発生していると検知して、アラートを出力する。図９は、メモリリークが発生している場合のメモリ使用率の変化の他の一例を示す図である。図９の例では、取得されたメモリ使用率が、当該メモリ使用率の取得時よりも前の第１期間の最小値より増加している部分にフラグ「１」を表示させている。このように、フラグ「１」の期間が第２期間連続した場合、アラートを出力することにより、異常の発生を早期に検知できる。
【００４９】
［処理の流れ］
本実施例に係る異常検知装置１２が異常を検知する異常検知処理の流れについて説明する。図１０は、異常検知処理の手順の一例を示すフローチャートである。この異常検知処理は、所定のタイミング、例えば、サーバ装置１１から検出値を取得したタイミングで実行される。
【００５０】
図１０に示すように、取得部４０は、サーバ装置１１から検出値を取得すると、取得された検出値を時刻情報と共に第１待機セット３０に格納する（Ｓ１０）。取得部４０は、第１待機セット３０に格納された検出値のうち、第１期間内となった検出値を第１アクティブセット３１に追加する（Ｓ１１）。取得部４０は、第１待機セット３０に格納された検出値のうち、第１期間内となったデータを第１待機セット３０から削除する（Ｓ１２）。
【００５１】
判定部４１は、第１アクティブセット３１に記憶された検出値内での検出値の最小値を特定する（Ｓ１３）。判定部４１は、取得された検出値が、最小値としきい値を加算した値もより大きいかを判定する（Ｓ１４）。検出値が加算した値よりも大きい場合（Ｓ１４肯定）、フラグに「１（ＯＮ）」をセットする（Ｓ１５）。一方、検出値が加算した値もより大きくはない場合（Ｓ１４否定）、フラグに「０（ＯＦＦ）」をセットする（Ｓ１６）。
【００５２】
判定部４１は、取得された検出値、時刻情報、フラグを第２待機セット３２に格納する（Ｓ１７）。出力部４２は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる（Ｓ１８）。また、出力部４２は、第２アクティブセット３３に格納された検出値のうち、第２期間外となった検出値を第２アクティブセット３３から削除する（Ｓ１９）。そして、出力部４２は、第２アクティブセット３３に記憶された検出値のフラグが全て「１」となっているか判定する（Ｓ２０）。フラグが全て「１」となっている場合（Ｓ２０肯定）、出力部４２は、アラートを出力し（Ｓ２１）、処理を終了する。一方、フラグが全て「１」となっていない場合（Ｓ２０否定）、処理を終了する。
【００５３】
［効果］
上述してきたように、本実施例に係る異常検知装置１２は、監視対象の状態を示す検出値を取得する。異常検知装置１２は、取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間（第１期間）での検出値の最小値よりも大きいかを判定する。異常検知装置１２は、検出値が特定期間での検出値の最小値よりも大きいとの判定結果が所定時間（第２期間）以上にわたり連続して得られた場合、アラートを出力する。これにより、異常検知装置１２は、異常の発生を早期に検出できる。
【００５４】
また、本実施例に係る異常検知装置１２は、検出値をメモリの使用率とする。これにより、異常検知装置１２は、メモリリークの発生を早期に検出できる。
【００５５】
ここで、実施例１に係る異常検知装置１２は、検出値が、取得時よりも前である特定期間での検出値の最小値よりも大きいかを判定する場合について説明したが、これに限定されない。例えば、実施例１に係る異常検知装置１２は、取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最大値よりも小さいかを判定する。そして、実施例１に係る異常検知装置１２は、検出値が特定期間での検出値の最大値よりも小さいとの判定結果が所定時間以上にわたり連続して得られた場合、アラートを出力してもよい。この場合、本実施例に係る異常検知装置１２は、検出値の最大値が減少する傾向がある異常を早期に検出できる。このように、第１期間での検出値の最大値の変化から異常を検知可能な検出値としては、例えば、メモリの空き率などが挙げられる。例えば、メモリリークが発生するとメモリの空き率が減少する傾向がある。このため、メモリの空き率が減少する傾向を検出することにより、メモリリークの発生を検知できる。
【実施例２】
【００５６】
次に、実施例２について説明する。実施例２にかかるシステム１０の構成は、図１に示した実施例１の構成と同様であるため、説明を省略する。
【００５７】
［異常検知装置の構成］
実施例２に係る異常検知装置の機能的な構成を説明する。図１１は、異常検知装置の機能的な構成の一例を示す図である。なお、図２に示した実施例１に係る異常検知装置１２と同一部分については同一の符号を付し、主に異なる部分について説明する。図１１に示すように、異常検知装置１２の記憶部２３は、第３待機セット３４と、第３アクティブセット３５とをさらに記憶する。
【００５８】
第３アクティブセット３５は、異常の検知の対象となる期間のデータを保持するためのデータ領域である。例えば、本実施例では、第２期間において、取得された検出値が第１期間での最大値よりも大きいとの判定の結果が少なくとも１回得られるかを判定する。そして、本実施例では、第２期間において、取得された検出値が第１期間での最大値よりも大きいとの判定の結果が少なくとも１回得られる期間が所定の第３期間連続して得られた場合、アラートを出力する。この第１期間は、検出値の取得時から所定時間間隔をあけており、例えば、５分〜３０分の期間とする。また、第２期間は、検出値の取得時を含む期間としており、例えば、０分〜３０分の期間とする。また、第３期間は、検出値の取得時を含む期間としており、例えば、０分〜３０分の期間とする。第３アクティブセット３５には、第２期間において、取得された検出値が第１期間での最大値よりも大きいとの判定の結果が少なくとも１回得られる期間が第３期間連続したかを判定するためのデータを記憶させる。
【００５９】
第３待機セット３４は、異常の検知の対象となる期間の前のデータを保持するためのデータ領域である。
【００６０】
図１２は、第３待機セットのデータ構成の一例を示す図である。図１２に示すように、第３待機セット３４は、「時刻」、「検出値」、「フラグ」、「連続フラグ」の各項目を有する。時刻の項目は、検出値が取得された時刻情報を記憶する領域である。検出値の項目は、取得された検出値を記憶する領域である。フラグの項目は、第１期間のデータの状態を判定した結果を示したフラグを記憶する領域である。連続フラグの項目は、第２期間のデータの状態を判定した結果を示したフラグを記憶する領域である。第３待機セット３４には、検出値が取得される毎に、取得された検出値が時刻情報、フラグ、連続フラグと共に格納される。
【００６１】
図１３は、第３アクティブセットのデータ構成の一例を示す図である。図１３に示すように、第３アクティブセット３５は、上述の第３待機セット３４と同様の構成とされており、「時刻」、「検出値」、「フラグ」、「連続フラグ」の各項目を有する。第３アクティブセット３５には、第３待機セット３４に格納された検出値のうち、時刻が第３期間内となった検出値が時刻情報、フラグ、連続フラグと共に格納される。
【００６２】
また、図１１に示すように、異常検知装置１２の制御部２２は、第１判定部４３と、第２判定部４４を有する。
【００６３】
第１判定部４３は、取得された検出値に対して、各種の判定を行う。例えば、第１判定部４３は、実施例１の判定部４１と同様に、取得部４０により取得した検出値ごとに、当該検出値が、取得時よりも前である第１期間での検出値の最大値よりも大きいかを判定する。例えば、判定部４１は、取得部４０により検出値が取得される毎に、第１アクティブセット３１に記憶された検出値内での検出値の最大値を特定する。この第１アクティブセット３１に記憶された検出値の最大値は、第１期間での検出値の最大値である。判定部４１は、検出値が取得される毎に、取得された検出値を第１期間の検出値の最大値と比較して、取得された検出値が第１期間の検出値の最大値よりも大きいかを判定する。
【００６４】
第１判定部４３は、取得された検出値を時刻情報と共に第２待機セット３２に格納する。また、第１判定部４３は、判定結果として、最新の検出値が第１期間での検出値の最大値よりも大きいか否かを示すフラグを第２待機セット３２に格納する。
【００６５】
第２判定部４４は、第１判定部４３の判定の結果を用いて、各種の判定を行う。例えば、第２判定部４４は、第２期間において、取得された検出値が第１期間での最大値よりも大きいとの判定の結果が少なくとも１回得られるかを判定する。例えば、第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。また、第２判定部４４は、第２アクティブセット３３に格納された検出値のうち、第２期間外となった検出値を第２アクティブセット３３から削除する。そして、第２判定部４４は、取得部４０により検出値が取得される毎に、第２アクティブセット３３に記憶された検出値の何れかでフラグが１のものがあるか判定する。
【００６６】
第２判定部４４は、取得された検出値、時刻情報、フラグを第３待機セット３４に格納する。また、第２判定部４４は、第２アクティブセット３３に記憶された検出値の何れかでフラグが１のものがあるか否かを示す連続フラグを第３待機セット３４に格納する。
【００６７】
出力部４２は、第３期間における判定の結果に基づいて、異常が発生したか否かの検知を行う。そして、出力部４２は、異常が発生したことが検知された場合、アラートを出力する。例えば、出力部４２は、第２期間において、検出値が第１期間での最大値よりも大きいとの判定の結果が少なくとも１回得られるとの判定の結果が第３期間の間連続して得られた場合、異常が発生しているものとして、アラートを出力する。例えば、出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。また、出力部４２は、第３アクティブセット３５に格納された検出値のうち、第３期間外となった検出値を第３アクティブセット３５から削除する。そして、出力部４２は、取得部４０により検出値が取得される毎に、第３アクティブセット３５に記憶された検出値が全て、検出値が第１期間での最大値よりも大きいとの判定の結果が少なくとも１回得られると判定されたものである場合、アラートを出力する。
【００６８】
ここで、具体例を用いて説明する。本実施例では、監視対象をサーバ装置１１とし、検出値としてサーバ装置１１のＣＰＵの利用率を取得し、異常として、サーバ装置１１の異常の発生を検知する場合を例に説明する。また、本実施例では、第１期間を２分〜４分前の期間とし、第２期間を０分〜３分前の期間とし、第３期間を０分〜６分前の期間とする。また、本実施例では、検出値が第１期間の最大値よりしきい値「５」以上大きい状態が第２期間連続した場合にＣＰＵの異常が発生したと検知する場合を例に説明する。図１４Ａ〜図１４Ｍは、ＣＰＵの異常の発生を検知する際の流れの一例を示す図である。図１４Ａ〜図１４Ｍには、サーバ装置１１で１分毎に検出されるＣＰＵの利用率の一例が示されている。また、図１４Ａ〜図１４Ｍには、第１待機セット３０、第１アクティブセット３１、第２待機セット３２、第２アクティブセット３３、第３待機セット３４および第３アクティブセット３５に格納されるデータの変化の一例が示されている。なお、図１４Ａ〜図１４Ｍの例でも、時刻の経過を把握しやくするため、時刻を図１４Ａの時点を基準（００：００）として示している。また、図１４Ａ〜図１４Ｍの例では、入力として、各時刻で取得されるＣＰＵの利用率が示されている。
【００６９】
図１４Ａに示すように、取得部４０は、時刻「００：００」にサーバ装置１１のＣＰＵの利用率「８０」が取得されると、時刻「００：００」およびＣＰＵの利用率「８０」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、第１アクティブセット３１にはデータの格納は行わない。第１アクティブセット３１にデータが格納されていないため、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値は、未定である。取得されたＣＰＵの利用率「８０」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：００」、ＣＰＵの利用率「８０」を第２待機セット３２に格納する。
【００７０】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ａの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：００」、ＣＰＵの利用率「８０」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００７１】
第２アクティブセット３３のデータは、何れのフラグも「０」である。このため、第２判定部４４は、連続フラグ「０」として、時刻「００：００」、ＣＰＵの利用率「８０」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ａの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：００」、ＣＰＵの利用率「８０」、フラグ「０」、連続フラグ「０」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００７２】
次に、図１４Ｂに示すように、取得部４０は、時刻「００：０１」にサーバ装置１１のＣＰＵの利用率「８３」が取得されると、時刻「００：０１」およびＣＰＵの利用率「８３」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、第１アクティブセット３１にはデータの格納は行わない。第１アクティブセット３１にデータが格納されていないため、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値は、未定である。取得されたＣＰＵの利用率「８３」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０１」、ＣＰＵの利用率「８３」を第２待機セット３２に格納する。
【００７３】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｂの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０１」、ＣＰＵの利用率「８３」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００７４】
第２アクティブセット３３のデータは、何れのフラグも「０」である。このため、第２判定部４４は、連続フラグ「０」として、時刻「００：０１」、ＣＰＵの利用率「８３」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｂの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０１」、ＣＰＵの利用率「８３」、フラグ「０」、連続フラグ「０」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００７５】
次に、図１４Ｃに示すように、取得部４０は、時刻「００：０２」にサーバ装置１１のＣＰＵの利用率「１４」が取得されると、時刻「００：０２」およびＣＰＵの利用率「１４」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：００」、検出値「８０」を第１アクティブセット３１に格納する。ＣＰＵの利用率「１４」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「８０」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０２」、ＣＰＵの利用率「１４」を第２待機セット３２に格納する。
【００７６】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｃの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０２」、ＣＰＵの利用率「１４」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００７７】
第２アクティブセット３３のデータは、何れのフラグも「０」である。このため、第２判定部４４は、連続フラグ「０」として、時刻「００：０２」、ＣＰＵの利用率「１４」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｃの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０２」、ＣＰＵの利用率「１４」、フラグ「０」、連続フラグ「０」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００７８】
次に、図１４Ｄに示すように、取得部４０は、時刻「００：０３」にサーバ装置１１のＣＰＵの利用率「３８」が取得されると、時刻「００：０３」およびＣＰＵの利用率「３８」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０１」、検出値「８３」を第１アクティブセット３１に格納する。ＣＰＵの利用率「３８」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「８３」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０３」、ＣＰＵの利用率「３８」を第２待機セット３２に格納する。
【００７９】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｄの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０３」、ＣＰＵの利用率「３８」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００８０】
第２アクティブセット３３のデータは、何れのフラグも「０」である。このため、第２判定部４４は、連続フラグ「０」として、時刻「００：０３」、ＣＰＵの利用率「３８」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｄの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０３」、ＣＰＵの利用率「３８」、フラグ「０」、連続フラグ「０」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００８１】
次に、図１４Ｅに示すように、取得部４０は、時刻「００：０４」にサーバ装置１１のＣＰＵの利用率「１５」が取得されると、時刻「００：０４」およびＣＰＵの利用率「１５」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０２」、検出値「１４」を第１アクティブセット３１に格納する。ＣＰＵの利用率「１５」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「８３」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０４」、ＣＰＵの利用率「１５」を第２待機セット３２に格納する。
【００８２】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｅの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０４」、ＣＰＵの利用率「１５」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００８３】
第２アクティブセット３３のデータは、何れのフラグも「０」である。このため、第２判定部４４は、連続フラグ「０」として、時刻「００：０４」、ＣＰＵの利用率「１５」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｅの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０４」、ＣＰＵの利用率「１５」、フラグ「０」、連続フラグ「０」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００８４】
次に、図１４Ｆに示すように、取得部４０は、時刻「００：０５」にサーバ装置１１のＣＰＵの利用率「５３」が取得されると、時刻「００：０５」およびＣＰＵの利用率「５３」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０３」、検出値「３８」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：００」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「５３」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「８３」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０５」、ＣＰＵの利用率「５３」を第２待機セット３２に格納する。
【００８５】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｆの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０５」、ＣＰＵの利用率「５３」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００８６】
第２アクティブセット３３のデータは、何れのフラグも「０」である。このため、第２判定部４４は、連続フラグ「０」として、時刻「００：０５」、ＣＰＵの利用率「５３」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｆの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０５」、ＣＰＵの利用率「５３」、フラグ「０」、連続フラグ「０」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００８７】
次に、図１４Ｇに示すように、取得部４０は、時刻「００：０６」にサーバ装置１１のＣＰＵの利用率「４５」が取得されると、時刻「００：０６」およびＣＰＵの利用率「４５」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０４」、検出値「１５」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０１」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「４５」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「３８」と、しきい値「５」とを加算した値より大きい。このため、第１判定部４３は、フラグ「１」として、時刻「００：０６」、ＣＰＵの利用率「４５」を第２待機セット３２に格納する。
【００８８】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｇの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０６」、ＣＰＵの利用率「４５」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００８９】
第２アクティブセット３３のデータは、フラグ「１」を含む。このため、第２判定部４４は、連続フラグ「１」として、時刻「００：０６」、ＣＰＵの利用率「４５」、フラグ「１」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｇの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０６」、ＣＰＵの利用率「４５」、フラグ「１」、連続フラグ「１」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００９０】
次に、図１４Ｈに示すように、取得部４０は、時刻「００：０７」にサーバ装置１１のＣＰＵの利用率「２３」が取得されると、時刻「００：０７」およびＣＰＵの利用率「２３」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０５」、検出値「５３」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０２」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「２３」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「５３」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０７」、ＣＰＵの利用率「２３」を第２待機セット３２に格納する。
【００９１】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｈの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０７」、ＣＰＵの利用率「２３」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００９２】
第２アクティブセット３３のデータは、フラグ「１」を含む。このため、第２判定部４４は、連続フラグ「１」として、時刻「００：０７」、ＣＰＵの利用率「２３」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｈの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０７」、ＣＰＵの利用率「２３」、フラグ「０」、連続フラグ「１」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００９３】
次に、図１４Ｉに示すように、取得部４０は、時刻「００：０８」にサーバ装置１１のＣＰＵの利用率「３８」が取得されると、時刻「００：０８」およびＣＰＵの利用率「３８」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０６」、検出値「４５」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０３」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「３８」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「５３」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０８」、ＣＰＵの利用率「３８」を第２待機セット３２に格納する。
【００９４】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｉの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０８」、ＣＰＵの利用率「３８」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００９５】
第２アクティブセット３３のデータは、フラグ「１」を含む。このため、第２判定部４４は、連続フラグ「１」として、時刻「００：０８」、ＣＰＵの利用率「３８」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｉの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０８」、ＣＰＵの利用率「３８」、フラグ「０」、連続フラグ「１」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００９６】
次に、図１４Ｊに示すように、取得部４０は、時刻「００：０９」にサーバ装置１１のＣＰＵの利用率「１８」が取得されると、時刻「００：０９」およびＣＰＵの利用率「１８」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０７」、検出値「２３」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０４」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「１８」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「５３」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：０９」、ＣＰＵの利用率「１８」を第２待機セット３２に格納する。
【００９７】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｊの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：０９」、ＣＰＵの利用率「１８」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【００９８】
第２アクティブセット３３のデータは、フラグ「１」を含む。このため、第２判定部４４は、連続フラグ「１」として、時刻「００：０９」、ＣＰＵの利用率「１８」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｊの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：０９」、ＣＰＵの利用率「１８」、フラグ「０」、連続フラグ「１」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【００９９】
次に、図１４Ｋに示すように、取得部４０は、時刻「００：１０」にサーバ装置１１のＣＰＵの利用率「８５」が取得されると、時刻「００：１０」およびＣＰＵの利用率「８５」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０８」、検出値「３８」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０５」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「８５」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「４５」と、しきい値「５」とを加算した値より大きい。このため、第１判定部４３は、フラグ「１」として、ＣＰＵの利用率「８５」および時刻「００：１０」を第２待機セット３２に格納する。
【０１００】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｋの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：１０」、ＣＰＵの利用率「８５」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【０１０１】
第２アクティブセット３３のデータは、フラグ「１」を含む。このため、第２判定部４４は、連続フラグ「１」として、時刻「００：１０」、ＣＰＵの利用率「８５」、フラグ「１」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｊの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：１０」、ＣＰＵの利用率「８５」、フラグ「１」、連続フラグ「１」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【０１０２】
次に、図１４Ｌに示すように、取得部４０は、時刻「００：１１」にサーバ装置１１のＣＰＵの利用率「４１」が取得されると、時刻「００：１１」およびＣＰＵの利用率「４１」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：０９」、検出値「１８」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０６」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「４１」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「３８」と、しきい値「５」とを加算した値より大きくはない。このため、第１判定部４３は、フラグ「０」として、時刻「００：１１」、ＣＰＵの利用率「４１」を第２待機セット３２に格納する。
【０１０３】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｌの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：１１」、ＣＰＵの利用率「４１」、フラグ「０」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【０１０４】
第２アクティブセット３３のデータは、フラグ「１」を含む。このため、第２判定部４４は、連続フラグ「１」として、時刻「００：１１」、ＣＰＵの利用率「４１」、フラグ「０」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｌの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：１１」、ＣＰＵの利用率「４１」、フラグ「０」、連続フラグ「１」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【０１０５】
次に、図１４Ｍに示すように、取得部４０は、時刻「００：１２」にサーバ装置１１のＣＰＵの利用率「９６」が取得されると、時刻「００：１２」およびＣＰＵの利用率「９６」を第１待機セット３０に格納する。第１期間は、２分〜４分前の期間である。このため、取得部４０は、時刻「００：１０」、検出値「８５」を第１アクティブセット３１に格納する。また、取得部４０は、時刻「００：０７」のデータが第１期間外となったため、第１アクティブセット３１から削除する。ＣＰＵの利用率「９６」は、第１アクティブセット３１に格納されたＣＰＵの利用率の最大値「８５」と、しきい値「５」とを加算した値より大きい。このため、第１判定部４３は、フラグ「１」として、時刻「００：１２」、ＣＰＵの利用率「９６」を第２待機セット３２に格納する。
【０１０６】
第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる。図１４Ｍの例では、第２期間内が０分〜３分前の期間であるため、移動の結果、時刻「００：１２」、ＣＰＵの利用率「９６」、フラグ「１」が第２アクティブセット３３に格納され、第２待機セット３２が空となっている。
【０１０７】
第２アクティブセット３３のデータは、フラグ「１」を含む。このため、第２判定部４４は、連続フラグ「１」として、時刻「００：１２」、ＣＰＵの利用率「９６」、フラグ「１」を第３待機セット３４に格納する。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる。図１４Ｍの例では、第３期間内が０分〜６分前の期間であるため、移動の結果、時刻「００：１２」、ＣＰＵの利用率「９６」、フラグ「１」、連続フラグ「１」が第３アクティブセット３５に格納され、第３待機セット３４が空となっている。
【０１０８】
ここで、図１４Ｍに示す第３アクティブセット３５に格納された第３の期間の各データは、全て連続フラグが１となっている。この図１４Ｍに示す状態は、取得された検出値が第１期間での最大値よりも大きいとの判定の結果が少なくとも１回得られる期間が第３期間連続した状態である。出力部４２は、第３アクティブセット３５に記憶された各データの連続フラグが全て「１」である場合、アラートを出力する。
【０１０９】
例えば、サーバ装置１１では、プロセスを起動するとＣＰＵの利用率が上がり、停止するとＣＰＵの利用率が下がるため、ＣＰＵの利用率が瞬間的に大きく増加し、すぐに元に戻る性質を持つ。
【０１１０】
図１５は、ＣＰＵの利用率の変化の一例を示す図である。図１５に示すように、ＣＰＵの利用率は、瞬間的に大きく増加し、すぐに元に戻る性質を持つ。例えば、システム１０が、サーバ装置１１のＣＰＵの利用率が一定以上に上がらないことを保証するシステムである場合、ＣＰＵの利用率が一定のしきい値以上をとなった場合に異常が発生したと検知すると、異常の発生の検知が遅くなる場合がある。例えば、ＣＰＵの利用率が一定のしきい値以上となったことの検知が、直前あるいは事後のタイミングとなってしまう。
【０１１１】
そこで、異常検知装置１２は、周期的にサーバ装置１１のＣＰＵの利用率を取得する。異常検知装置１２は、取得したＣＰＵの利用率が、取得時よりも前の第１期間でのＣＰＵの利用率の最大値よりも大きいかを判定する。そして、異常検知装置１２は、第２期間において、検出値が第１期間でのＣＰＵの利用率の最大値よりも大きいとの判定の結果が少なくとも１回得られる状態が第３期間の間連続して得られた場合、アラートを出力する。図１６は、ＣＰＵの利用率の変化の他の一例を示す図である。図１６の例では、ＣＰＵの利用率が、ＣＰＵの利用率の取得時よりも前の第１期間の最大値より増加している部分にフラグ「１」を表示させている。また、図１６の例では、ＣＰＵの利用率が、第１期間でのＣＰＵの利用率の最大値よりも大きいとの判定の結果が少なくとも１回得られる部分に連続フラグ「１」を表示させている。このように、連続フラグ「１」の期間が第３期間連続した場合、アラートを出力することにより、ＣＰＵの利用率のように増加、減少の激しい、パルス的なデータの最大値の増加傾向を検知できるため、異常の発生を早期に検知できる。また、本実施例では、第１期間を検出値の取得時から所定時間間隔をあけており、取得時から所定時間を含まない前の期間としている。このように第１期間を取得時から間隔をあけた期間とすることで、直近の検出値の影響を抑制して大局的に増加しているかを検出できる。
【０１１２】
［処理の流れ］
次に、実施例２に係る異常検知処理の手順を説明する。図１７は、異常検知処理の手順の一例を示すフローチャートである。この異常検知処理は、図１０に示した実施例１に係る異常検知処理と同様に、所定のタイミング、例えば、サーバ装置１１から検出値を取得したタイミングで実行される。なお、図１０に示した実施例１に係る異常検知処理と同一部分については同一の符号を付して説明する。
【０１１３】
図１７に示すように、取得部４０は、サーバ装置１１から検出値を取得すると、取得された検出値を時刻情報と共に第１待機セット３０に格納する（Ｓ１０）。取得部４０は、第１待機セット３０に格納された検出値のうち、第１期間内となった検出値を第１アクティブセット３１に追加する（Ｓ１１）。取得部４０は、第１待機セット３０に格納された検出値のうち、第１期間内となったデータを第１待機セット３０から削除する（Ｓ１２）。
【０１１４】
第１判定部４３は、第１アクティブセット３１に記憶された検出値内での検出値の最大値を特定する（Ｓ１３）。第１判定部４３は、取得された検出値が、最大値としきい値を加算した値よりも大きいかを判定する（Ｓ１４）。検出値が加算した値よりも大きい場合（Ｓ１４肯定）、フラグに「１（ＯＮ）」をセットする（Ｓ１５）。一方、検出値が加算した値もより大きくはない場合（Ｓ１４否定）、フラグに「０（ＯＦＦ）」をセットする（Ｓ１６）。
【０１１５】
第１判定部４３は、取得された検出値、時刻情報、フラグを第２待機セット３２に格納する（Ｓ１７）。第２判定部４４は、第２待機セット３２に格納された検出値のうち、第２期間内となった検出値を第２アクティブセット３３に移動させる（Ｓ１８）。また、第２判定部４４は、第２アクティブセット３３に格納された検出値のうち、第２期間外となった検出値を第２アクティブセット３３から削除する（Ｓ１９）。そして、第２判定部４４は、第２アクティブセット３３に記憶された検出値の何れかのフラグが「１」となっているか判定する（Ｓ３０）。何れかのフラグが「１」となっている場合（Ｓ３０肯定）、連続フラグに「１（ＯＮ）」をセットする（Ｓ３１）。一方、何れかのフラグも「１」となっていない場合（Ｓ３０否定）、連続フラグに「０（ＯＦＦ）」をセットする（Ｓ３２）。
【０１１６】
第２判定部４４は、取得された検出値、時刻情報、フラグ、連続フラグを第３待機セット３４に格納する（Ｓ３３）。出力部４２は、第３待機セット３４に格納された検出値のうち、第３期間内となった検出値を第３アクティブセット３５に移動させる（Ｓ３４）。また、出力部４２は、第３アクティブセット３５に格納された検出値のうち、第３期間外となった検出値を第３アクティブセット３５から削除する（Ｓ３５）。そして、出力部４２は、第３アクティブセット３５に記憶された検出値の連続フラグが全て「１」となっているか判定する（Ｓ３６）。連続フラグが全て「１」となっている場合（Ｓ３６肯定）、出力部４２は、アラートを出力し（Ｓ３７）、処理を終了する。一方、連続フラグが全て「１」となっていない場合（Ｓ３６否定）、処理を終了する。
【０１１７】
［効果］
上述してきたように、本実施例に係る異常検知装置１２は、監視対象の状態を示す検出値を取得する。異常検知装置１２は、取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間（第１期間）での検出値の最大値よりも大きいかを判定する。異常検知装置１２は、検出値が特定期間での最大値よりも大きいとの判定結果が第１の所定時間（第２期間）以内に少なくとも１回得られるかを判定する。異常検知装置１２は、検出値が特定期間での最大値よりも大きいとの判定結果が第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間（第３期間）以上にわたり連続して得られた場合、アラートを出力する。これにより、異常検知装置１２は、検出値の変動が激しい場合でも、検出値の最大値が増加する傾向がある異常を早期に検出できる。
【０１１８】
また、本実施例に係る異常検知装置１２は、最大値より大きい判定に閾値を用いており、また、第１期間を取得時から所定時間を含まない前の期間としている。第１期間として直近期間を含む場合には、最大値として直前の検出値が選ばれることがあり、大局的には増加傾向があっても、直前の検出値との差が小さいために、検出値と最大値との差が閾値を超えなくなることがある。一方、本実施例に係る異常検知装置１２は、第１期間を取得時から所定時間を含まない前の期間としたことにより、第１期間の最大値として直近の値が選択されなくなるため、大局的な増加傾向を捉えることができる。
【０１１９】
また、本実施例に係る異常検知装置１２は、検出値をＣＰＵの利用率とする。これにより、異常検知装置１２は、ＣＰＵの利用率に上昇傾向が発生する異常を早期に検出できる。
【０１２０】
ここで、実施例２に係る異常検知装置１２は、検出値が特定期間での最大値よりも大きいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定する場合について、説明したが、これに限定されない。例えば、実施例１に係る異常検知装置１２は、取得した検出値ごとに、当該検出値が、取得時よりも前である特定期間での検出値の最小値よりも小さいかを判定する。異常検知装置１２は、検出値が特定期間での最小値よりも小さいとの判定結果が第１の所定時間以内に少なくとも１回得られるかを判定する。そして、異常検知装置１２は、検出値が特定期間での最小値よりも小さいとの判定結果が前記第１の所定時間以内に少なくとも１回得られるとの判定結果が、第２の所定時間以上にわたり連続して得られた場合、アラートを出力してもよい。この場合、本実施例に係る異常検知装置１２は、検出値の変動が激しい場合でも、検出値の最小値が減少する傾向がある異常を早期に検出できる。このように、第１期間での検出値の最小値の変化から異常を検知可能な検出値としては、例えば、複数のサーバで負荷分散する際のアクセス数や処理数などが挙げられる。例えば、複数のサーバで負荷を均等に分散させる場合、アクセス数や処理数は、ほぼ均等なるが、各サーバのアクセス数や処理数を比較することにより、サーバの異常や負荷分散処理の異常の発生を検知できる。
【実施例３】
【０１２１】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【０１２２】
例えば、上記の実施例１では、第１期間での検出値の最小値よりも大きいとの判定の結果が第２期間の間連続して得られた場合、アラートを出力する場合について説明したが、開示の装置はこれに限定されない。例えば、第２期間の間に、第１期間での検出値の最小値よりも大きいとの判定の結果が所定の割合以上得られた場合、アラートを出力してもよい。また、例えば、第２期間の間に、第１期間での検出値の最小値よりも小さいとの判定の結果が所定の割合以上得られた場合、アラートを出力してもよい。
【０１２３】
また、上記の実施例２では、検出値が第２期間の最大値よりも大きいとの判定の結果が少なくとも１回得られるとの判定結果が、第３期間連続して得られた、アラートを出力する場合について説明したが、開示の装置はこれに限定されない。例えば、検出値が第２期間の最大値よりも大きいとの判定の結果が少なくとも１回得られるとの判定結果が、第３期間の間に所定の割合以上得られた場合、アラートを出力してもよい。また、例えば、検出値が第２期間の最小値よりも小さいとの判定の結果が少なくとも１回得られるとの判定結果が、第３期間の間に所定の割合以上得られた場合、アラートを出力してもよい。
【０１２４】
また、上記の実施例では、他の装置の異常の発生を検出する場合について説明したが、開示の装置はこれに限定されない。例えば、自装置の状態を示す検出値を検出することにより取得し、検出値から自装置の異常の発生を検出してもよい。
【０１２５】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部４０、判定部４１、出力部４２、第１判定部４３および第２判定部４４の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１２６】
［異常検知プログラム］
また、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータシステムの一例を説明する。図１８は、異常検知プログラムを実行するコンピュータを示す図である。
【０１２７】
図１８に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＨＤＤ（Hard  Disk  Drive）３２０、ＲＡＭ（Random  Access  Memory）３４０を有する。これら３００〜３４０の各部は、バス４００を介して接続される。
【０１２８】
ＨＤＤ３２０には上記の取得部４０、判定部４１、出力部４２、第１判定部４３および第２判定部４４と同様の機能を発揮する異常検知プログラム３２０ａが予め記憶される。なお、異常検知プログラム３２０ａについては、適宜分離しても良い。
【０１２９】
また、ＨＤＤ３２０は、各種情報を記憶する。例えば、ＨＤＤ３２０は、ＯＳや生産計画に用いる各種データを記憶する。
【０１３０】
そして、ＣＰＵ３１０が、異常検知プログラム３２０ａをＨＤＤ３２０から読み出して実行することで、実施例の各処理部と同様の動作を実行する。すなわち、異常検知プログラム３２０ａは、取得部４０、判定部４１、出力部４２、第１判定部４３および第２判定部４４と同様の動作を実行する。
【０１３１】
なお、上記した異常検知プログラム３２０ａについては、必ずしも最初からＨＤＤ３２０に記憶させることを要しない。
【０１３２】
例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１３３】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ３００に接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１３４】
１０  システム
１２  異常検知装置
２１  記憶部
２２  制御部
３０  第１待機セット
３１  第１アクティブセット
３２  第２待機セット
３３  第２アクティブセット
３４  第３待機セット
３５  第３アクティブセット
４０  取得部
４１  判定部
４２  出力部
４３  第１判定部
４４  第２判定部
【図１】
2015230714.tif 000003
【図２】
2015230714.tif 000004
【図３】
2015230714.tif 000005
【図４】
2015230714.tif 000006
【図５】
2015230714.tif 000007
【図６】
2015230714.tif 000008
【図７Ａ】
2015230714.tif 000009
【図７Ｂ】
2015230714.tif 000010
【図７Ｃ】
2015230714.tif 000011
【図７Ｄ】
2015230714.tif 000012
【図７Ｅ】
2015230714.tif 000013
【図７Ｆ】
2015230714.tif 000014
【図７Ｇ】
2015230714.tif 000015
【図７Ｈ】
2015230714.tif 000016
【図７Ｉ】
2015230714.tif 000017
【図７Ｊ】
2015230714.tif 000018
【図７Ｋ】
2015230714.tif 000019
【図７Ｌ】
2015230714.tif 000020
【図８】
2015230714.tif 000021
【図９】
2015230714.tif 000022
【図１０】
2015230714.tif 000023
【図１１】
2015230714.tif 000024
【図１２】
2015230714.tif 000025
【図１３】
2015230714.tif 000026
【図１４Ａ】
2015230714.tif 000027
【図１４Ｂ】
2015230714.tif 000028
【図１４Ｃ】
2015230714.tif 000029
【図１４Ｄ】
2015230714.tif 000030
【図１４Ｅ】
2015230714.tif 000031
【図１４Ｆ】
2015230714.tif 000032
【図１４Ｇ】
2015230714.tif 000033
【図１４Ｈ】
2015230714.tif 000034
【図１４Ｉ】
2015230714.tif 000035
【図１４Ｊ】
2015230714.tif 000036
【図１４Ｋ】
2015230714.tif 000037
【図１４Ｌ】
2015230714.tif 000038
【図１４Ｍ】
2015230714.tif 000039
【図１５】
2015230714.tif 000040
【図１６】
2015230714.tif 000041
【図１７】
2015230714.tif 000042
【図１８】
2015230714.tif 000043