(57)【要約】【課題】処理を繰り返して実行する処理装置等における異常を、より正確に検知する。【解決手段】処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに処理装置の所定の項目についてのデータを取得し、当該一の周期の当該区間ごとに取得した所定の項目についてのデータを所定の分類基準で複数のグループに分類し、グループごとの当該一の周期におけるデータの発生頻度を記憶し、当該一の周期と同じ長さである判定対象の周期において当該区間ごとに所定の項目についてのデータを取得し、グループごとの判定対象の周期におけるデータの発生頻度が、当該一の周期におけるデータの発生頻度に基づく許容範囲を逸脱した場合に、処理装置に異常があると判定する、異常検知方法である。【選択図】図１４
2017129917.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに前記処理装置の所定の項目についてのデータを取得し、
前記一の周期の前記区間ごとに取得した前記所定の項目についてのデータを所定の分類基準で複数のグループに分類し、前記グループごとの前記一の周期におけるデータの発生頻度を記憶し、
前記一の周期と同じ長さである判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得し、前記グループごとの前記判定対象の周期におけるデータの発生頻度が、前記一の周期におけるデータの発生頻度に基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する、
異常検知方法。
【請求項２】
前記コンピュータは、
前記判定対象の周期における各区間において、前記グループごとの前記判定対象の周期におけるデータの発生頻度が、前記許容範囲の上限値を超えた場合に、前記処理装置に異常があると判定する、
請求項１に記載の異常検知方法。
【請求項３】
前記コンピュータは、
前記判定対象の周期の満了時に、前記複数のグループのうち１以上のグループの前記判定対象の周期におけるデータの発生頻度が、前記許容範囲の下限値を下回った場合に、前記処理装置に異常があると判定する、
請求項１または２に記載の異常検知方法。
【請求項４】
前記一の周期で取得した前記所定の項目についてのデータを所定の数のグループに分類し、各グループに属するデータの平均値との差分に基づいて各データが属するグループを変更し、分割状態を評価する指標の値に基づいて、前記所定の数のグループのそれぞれをさらに分割するか否か判定し、分割すると判定されたグループについて、前記分割状態を評価する指標の値が所定の条件を充足するまで、前記分割を繰り返すことにより、前記一の周期で取得した前記所定の項目についてのデータを複数のグループに分類する、
請求項１から３のいずれか一項に記載の異常検知方法。
【請求項５】
前記コンピュータは、
前記グループごとの前記一の周期におけるデータの発生頻度を正常パターンとして複数生成して記憶し、
記憶された複数の正常パターンから、所定の条件を満たす正常パターンを選択し、
前記判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得し、前記グループごとの前記判定対象の周期におけるデータの発生頻度が、選択された前記正常パターンに基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する、
請求項１から４のいずれか一項に記載の異常検知方法。
【請求項６】
前記コンピュータは、
前記複数の正常パターンのうち、複数の周期を含む所定期間前までのそれぞれの周期の正常パターンから、直近の周期の正常パターンと最も類似度が高い正常パターンの次の周期の正常パターンを選択する、
請求項５に記載の異常検知方法。
【請求項７】
前記コンピュータは、
前記複数の正常パターンのうち、所定期間ごとに記憶され且つ連続する２つの過去の正常パターン間の類似度が、前記直近の周期の正常パターンと前記所定期間前までのそれぞれの周期の正常パターンのうち前記直近の周期の正常パターンと最も類似度が高い正常パターンとの類似度よりも大きい場合には、前記所定期間ごとに記憶された過去の正常パターンのうち最新の正常パターンを選択する、
請求項６に記載の異常検知方法。
【請求項８】
前記コンピュータは、
比較対象の２つの正常パターンの周期で取得したデータを、それぞれ昇順または降順に並べ替え、前記区間ごとのデータの差分の合計を算出し、前記差分の合計が小さいほど前記比較対象の２つの正常パターン間における前記類似度が高いと判断する、
請求項６または７に記載の異常検知方法。
【請求項９】
前記コンピュータは、
前記一の周期で取得したデータにおける前記複数のグループ間の遷移率をさらに記憶し、
前記判定対象の周期における前記複数のグループ間の遷移率が、前記一の周期で取得されたデータにおける対応するグループ間の遷移率に基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する、
請求項１から８のいずれか一項に記載の異常検知方法。
【請求項１０】
コンピュータが、
処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに前記処理装置の所定の項目についてのデータを取得し、
前記一の周期の前記区間ごとに取得した前記所定の項目についてのデータを所定の分類基準で複数のグループに分類し、前記一の周期で取得されたデータにおける前記複数のグループ間の遷移率を記憶し、
前記一の周期と同じ長さである判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得し、前記判定対象の周期における前記複数のグループ間の遷移率が、前記一の周期で取得されたデータにおける対応するグループ間の遷移率に基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する、
異常検知方法。
【請求項１１】
処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに前記処理装置の所定の項目についてのデータを取得する取得部と、
前記一の周期の前記区間ごとに取得した前記所定の項目についてのデータを所定の分類基準で複数のグループに分類し、前記グループごとの前記一の周期におけるデータの発生頻度を記憶する記憶部と、
前記一の周期と同じ長さである判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得し、前記グループごとの前記判定対象の周期におけるデータの発生頻度が、前記一の周期におけるデータの発生頻度に基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する判定部と、
を備える異常検知装置。
【請求項１２】
コンピュータに、
処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに前記処理装置の所定の項目についてのデータを取得させ、
前記一の周期の前記区間ごとに取得した前記所定の項目についてのデータを所定の分類基準で複数のグループに分類させ、前記グループごとの前記一の周期におけるデータの発
生頻度を記憶させ、
前記一の周期と同じ長さである判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得させ、前記グループごとの前記判定対象の周期における発生頻度が、前記一の周期におけるデータの発生頻度に基づく許容範囲を超えた場合に、前記処理装置に異常があると判定させる、
ための異常検知プログラム。
【請求項１３】
コンピュータに、
一の周期を複数に分割した区間ごとに前記コンピュータの所定の項目についてのデータを取得させ、
前記一の周期の前記区間ごとに取得した前記所定の項目についてのデータを所定の分類基準で複数のグループに分類させ、前記グループごとの前記一の周期におけるデータの発生頻度を記憶させ、
前記一の周期と同じ長さである判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得させ、前記グループごとの前記判定対象の周期における発生頻度が、前記一の周期におけるデータの発生頻度に基づく許容範囲を超えた場合に、前記処理装置に異常があると判定させる、
ための異常検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常検知方法、異常検知装置および異常検知プログラムに関する。
【背景技術】
【０００２】
データセンタ等におけるサーバ、ストレージ等の複数のリソースから形成されるシステムにおいて、繰り返し実行される処理における所定の項目について採取した値を、あらかじめ準備した正常パターンと比較することにより異常を検知する方法がある。正常パターンは、例えば、システム内の他のリソースの設定や状態等の影響を受けない状況で、所定の項目の値を採取し、採取された複数の値から取りうる値の範囲を定義して作成される。システムは、所定の項目の値を定期的に採取し、正常パターンと比較して、取りうる値の範囲を逸脱した項目がある場合に異常と判定する。
【０００３】
正常パターンを定義する際、所定の項目について採取した複数の値の平均値を求め、当該平均値および当該平均値からのずれの許容範囲に応じて、所定の項目の値が取りうる範囲を定義する方法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１０８９９０号公報
【特許文献２】特開２０１５−３６９６１号公報
【非特許文献】
【０００５】
【非特許文献１】Tsunenori Ishioka,“An Expansion of X-means for Automatically Determining the Optimal Number of Clusters,” the Fourth IASTED International Conference on Computational Intelligence, Calgary, Alberta, Canada, July 4-6, 2005, pp.91-96
【発明の概要】
【発明が解決しようとする課題】
【０００６】
正常パターンが平均値に基づいて定義された場合、例えば、平均値から離散的な値を取る項目等に対して、正常な動作の結果であるにもかかわらず、取りうる値の範囲を逸脱するとして異常と判断される場合がある。平均値から離散的な値を取るとは、例えば、採取した所定の項目の複数の値が平均値を挟んで平均値より大きい値と平均値より小さい値を取り、平均値を挟んだ値が平均値から所定限度以上離れているような値の発生状況となることをいう。
【０００７】
１つの側面では、処理を繰り返して実行する処理装置等における異常を、より正確に検知することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、コンピュータが、処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに処理装置の所定の項目についてのデータを取得し、当該一の周期の当該区間ごとに取得した所定の項目についてのデータを所定の分類基準で複数のグループに分類し、グループごとの当該一の周期におけるデータの発生頻度を記憶し、当該一の周期と同じ長さである判定対象の周期において当該区間ごとに所定の項目についてのデータを取得し、グループごとの判定対象の周期におけるデータの発生頻度が、当該一の周期におけるデータの発生頻度に基づく許容範囲を逸脱した場合に、処理装置に異常があ
ると判断する、異常検知方法である。
【発明の効果】
【０００９】
１つの側面では、処理を繰り返して実行する処理装置等における異常を、より正確に検知することができる。
【図面の簡単な説明】
【００１０】
【図１】収集データに基づく異常検知の概要を例示する図である。
【図２】平均値に基づく正常モデルの生成方法の例を示す図である。
【図３】周期性のある学習段階のデータから、平均値に基づいて生成される正常モデルの例を示す図である。
【図４】１の状態モデル更新周期の正常／異常状態の収集データを平均値に基づく正常モデルにおける正常状態のデータの範囲と比較する例を示す図である。
【図５】発生頻度に基づく状態モデルの具体例を示す図である。
【図６】１の状態モデル更新周期の正常／異常状態の収集データを発生頻度に基づく状態モデルにおける正常状態のデータの範囲と比較する例を示す図である。
【図７】異常検知装置のハードウェア構成の一例を示す図である。
【図８】異常検知装置の構成要素の一例を示す図である。
【図９】Ｘ−ｍｅａｎｓによる収集データの分類処理の例を示すフローチャートである。
【図１０】収集データのデータ構成の一例を示す図である。
【図１１Ａ】１０時の状態モデルの例を示す図である。
【図１１Ｂ】１１時の状態モデルの例を示す図である。
【図１２Ａ】発生頻度を含む１０時の状態モデルの例を示す図である。
【図１２Ｂ】発生頻度を含む１１時の状態モデルの例を示す図である。
【図１３】状態モデルのデータ構成の例を示す図である。
【図１４】状態モデル更新周期における異常判定の例を示す図である。
【図１５】検知された異常に関する情報のデータ構成の例を示す図である。
【図１６】状態モデルの生成処理の例を示すフローチャートである。
【図１７】実施形態１の異常判定処理の例を示すフローチャートである。
【図１８Ａ】状態モデルの選択の例を示す図である。
【図１８Ｂ】状態モデルの選択の例を示す図である。
【図１９】実施形態２の異常判定処理の例を示すフローチャートである。
【図２０Ａ】遷移率を含む１０時の状態モデルの例を示す図である。
【図２０Ｂ】遷移率を含む１１時の状態モデルの例を示す図である。
【図２１】実施形態３における状態モデルのデータ構成の例を示す図である。
【図２２】実施形態３の状態モデル更新周期における異常判定の例を示す図である。
【図２３】実施形態３の状態モデルの生成処理の例を示すフローチャートである。
【図２４】実施形態３の異常判定処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１２】
＜異常検知＞
図１は、収集データに基づく異常検知の概要を例示する図である。データ収集処理Ｐ１は、処理を繰り返して実行する処理装置等における異常を検知するために、処理装置等から各リソースの設定・状態を示すデータを収集する。収集されるデータは、例えば、異常検知の対象となるサーバ、ネットワーク、ストレージ、仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、ＶＭ）、仮想スイッチ（Ｖｉｒｔｕａｌ  ｓｗｉｔｃｈ）、仮想ルータ（
Ｖｉｒｔｕａｌ  ｒｏｕｔｅｒ）、ハイパーバイザ（Ｈｙｐｅｒｖｉｓｏｒ）、プロセス等の物理・仮想資源等に関する設定・状態を表す数値データである。データ収集処理Ｐ１は、一定間隔（例えば６０秒間隔）で収集データＰ３１を取得し、記憶部Ｐ３に格納する。データが収集される一定間隔は、データ収集区間とも称される。
【００１３】
なお、以下の各実施形態では、周期的な処理を実行している異常検知の対象(処理装置
等)の異常を検知する異常検知装置が例示される。ここで、周期的な処理には、例えば、
時間ごと、日ごと、週ごと、あるいは月ごとのように、繰り返してなされるユーザの業務に対応して提供されるサーバ等の情報システムの処理、あるいはサービスが例示される。
【００１４】
異常検出処理Ｐ２は、記憶部Ｐ３に格納された収集データＰ３１に基づき、一定周期（例えば１日周期）で正常モデル（以下、状態モデルともいう）Ｐ３２を生成する。正常モデルＰ３２が生成される一定周期は、状態モデル更新周期、または単に、周期とも称される。生成された正常モデルＰ３２は、記憶部Ｐ３に格納される。異常検出処理Ｐ２は、異常検知の判定対象の状態モデル更新周期(以下、判定対象の周期ともいう)においてデータ収集処理Ｐ１が収集した収集データＰ３１と、記憶部Ｐ３に格納された正常モデルＰ３２との比較により、異常が発生したか否かを判定する。異常検出処理Ｐ３は、検知した異常情報Ｐ３３を、記憶部Ｐ３に格納する。
【００１５】
ここでの異常は、正常モデルＰ３２から逸脱した状態をいう。例えば、正常モデルＰ３２は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）使用率等の収集データの値が、所定の範囲内に収まっている状態を示す。つまり、正常モデルＰ３２は、「ＣＰＵ使用率が７０％以下」といった情報である。また、正常モデルＰ３２は、「複数の区分に分割された一つの周期においてＣＰＵ使用率が５０％以上となる区間が発生する回数の割合は３０％である」といった発生頻度についての情報であってもよい。
【００１６】
ＣＰＵ使用率とメモリ使用率等の複数の項目に対して異常検知する場合、正常モデルの生成および異常検知は、項目ごとに実施される。異常が検知されると、項目ごとに異常の発生が通知される。
【００１７】
＜平均値に基づく正常モデル＞
図２は、平均値に基づく正常モデルの生成方法の例を示す図である。図２に示されるＡ１のグラフは、横軸を時間、縦軸をＣＰＵ使用率とし、時間とＣＰＵ使用との関係を示す。ＣＰＵ使用率は、状態モデル更新周期を所定数に等分して得られたデータ収集区間ごとに測定される。黒丸は、データ収集区間ごとに測定されたＣＰＵ使用率の観測値を示す。図２の例では、観測値の平均値は５０％であるが、観測値は５０％に対して上下に離散している。グラフＡ１に示される観測値に基づき、図２に示される正常モデルＡ２が生成される。正常モデルＡ２は、平均値に基づく正常モデルであり、平均値５０％の−ｘ％から＋ｘ％までの連続した範囲を正常値の許容範囲とする。ｘの値は、例えば、異常検知対象の処理装置が異常動作時に示す観測値が、許容範囲に含まれないような値とすることができる。
【００１８】
図３は、周期性のある学習段階のデータから、平均値に基づいて生成される正常モデルの例を示す図である。学習段階は、正常モデルを生成するために用いられるデータを収集する期間であって、１以上の状態モデル更新周期を含む。Ｔｉ（ｉ＝１，２，…）は、状態モデル更新周期である。Ｔ１、Ｔ３、Ｔ５の状態モデル更新周期において、データ収集区間ごとに収集されたデータの観測値の平均値は７５％である。Ｔ２、Ｔ４、Ｔ６の状態モデル更新周期において、データ収集区間ごとに収集されたデータの観測値の平均値は２５％である。
【００１９】
学習段階における各Ｔｉの平均値に基づいて、Ｔ１からＴ６の正常モデルが生成される。Ｔ１、Ｔ３、Ｔ５の状態モデル更新周期は、平均値７５％から所定の閾値の範囲内を正常状態の範囲とする。Ｔ２、Ｔ４、Ｔ６の状態モデル更新周期は、平均値２５％から所定の閾値の範囲内を正常状態の範囲とする。
【００２０】
図４は、１の状態モデル更新周期の正常／異常状態の収集データを平均値に基づく正常モデルにおける正常状態のデータの範囲と比較したときに誤判定する例を示す図である。正常モデルＢ１は、図２のグラフＡ１に示される状態モデル更新周期１周期分の収集データから生成される平均値に基づく正常モデルである。グラフＡ１に示される状態モデル更新周期１周期分の収集データの平均値は５０％である。正常モデルＢ１において、平均値５０％から所定の閾値の範囲は、正常状態の範囲とされる。
【００２１】
図４に示されるＢ２のグラフは、図２と同様に、状態モデル更新周期Ｔ１における時間とＣＰＵ使用との関係を示す。グラフＢ２における観測値は、正常状態を示す図２のグラフＡ１と同様に観測値は５０％に対して上下に離散しているが、グラフＢ２における収集データの各観測値は、正常モデルＢ１の正常状態の範囲には含まれない。したがって、グラフＢ２に示される収集データは、平均値に基づく正常モデルＢ１と比較した場合、例え“正常”であっても“異常”と判定される。
【００２２】
また、図４に示されるＢ３のグラフは、図２と同様に、状態モデル更新周期Ｔ２における時間とＣＰＵ使用との関係を示す。グラフＢ３における観測値は平均値（５０％）付近でほぼ一定値を取っているため、例え“異常”であっても、平均値に基づく正常モデルＢ１と比較した場合、“正常”と判定される。
【００２３】
平均値に基づく正常モデルＢ１によれば、正常状態を示すグラフＢ２の収集データは異常と判定され、異常状態を示すグラフＢ３の収集データは正常と判定される。すなわち、平均値に基づく正常モデルを用いた場合、正常状態と異常状態を正しく判断できない場合が生じる。
【００２４】
〔実施形態１〕
実施形態１では、異常検知の対象となる処理装置等から、各処理装置等のリソースの設定・状態を示すデータが収集される。１の状態モデル更新周期における収集データは複数の状態に分類され、状態ごとの発生頻度の情報を付加した正常モデル（状態モデル）が生成される。異常が発生したか否かは、判定対象の周期において、収集データの状態ごとの発生頻度が状態モデルからの許容範囲を超えたか否かによって判定される。以下、データの収集および異常検知の対象は、ＣＰＵ使用率であるものとして説明されるが、これに限らない。例えば、メモリ使用率、プロセス数、ネットワーク使用量であってもよい。
【００２５】
＜発生頻度に基づく状態モデル＞
図５は、発生頻度に基づく状態モデルの例を示す図である。状態モデルは、状態モデル更新周期ごとに生成される。状態モデル更新周期は、所定数のデータ収集区間に等分される。分割数は適宜設定可能である。実施形態では、各データ収集区間で収集されたデータは、クラスタリング又はグルーピングにより複数の集合（以下、クラスタ、またはグループともいう）に分類される。
【００２６】
また、実施形態では、１つの状態モデル更新周期において、各グループに属するデータの発生回数が計数される。各グループに属するデータの発生回数は、１つの周期における処理装置の動作が異常か否かを判定するための閾値として使用される。
【００２７】
判定対象の周期において、各グループに属するデータの発生回数が、状態モデルにおけ
る各グループの閾値を超過する場合に、当該周期における処理装置の動作は、異常と判定される。異常判定は、データ収集区間ごとに実施される。すなわち、判定対象の周期において各グループに属するデータの発生回数は、データ収集区間ごとに計数され、計数された発生回数が、状態モデルにおける閾値を超過した時点で異常と判定される。なお、異常判定は、１つの周期の経過後に、判定対象の周期における各グループの発生回数と状態モデルにおける閾値との比較に基づいて実施されてもよい。
【００２８】
図５に示される例では、状態モデル更新周期はｔ１からｔ１０のデータ収集区間に等分されている。各データ収集区間で収集されたＣＰＵ使用率の観測値は、状態Ａから状態Ｅの５つのグループに分類されている。図５の例において、状態Ａは、ＣＰＵ使用率が１％のデータを含むグループである。状態Ｂは、ＣＰＵ使用率が１４−１５％のデータを含むグループである。状態Ｃは、ＣＰＵ使用率が２０−２４％のデータを含むグループである。状態Ｄは、ＣＰＵ使用率が７５％のデータを含むグループである。状態Ｅは、状態Ａから状態Ｄのいずれにも属さないデータを含むグループである。
【００２９】
ＣＰＵ使用率が１％となるのは、データ収集区間がｔ５の１回であり、状態モデル更新周期１周期における状態Ａの発生回数は１回である。同様に、ＣＰＵ使用率が１４−１５％となるのは、データ収集区間がｔ１、ｔ７−ｔ９の４回で、状態Ｂの発生回数は４回である。ＣＰＵ使用率が２０−２４％となるのは、データ収集区間がｔ２、ｔ４、ｔ６、ｔ１０の４回で、状態Ｃの発生回数は４回である。ＣＰＵ使用率が７５％となるのは、データ収集区間がｔ３の１回で、状態Ｄの発生回数は１回である。状態Ａから状態Ｄに含まれないＣＰＵ使用率は観測されていないため、状態Ｅの発生回数は０回である。ｔ１からｔ１０のデータ収集区間を含む状態モデル更新周期から生成された状態Ａから状態Ｅは、それぞれの発生回数を閾値とする状態モデルである。
【００３０】
図５に示される状態モデルに基づく異常判定は、以下のように実施される。データ収集区間ｔ２１、ｔ２２、ｔ２３は、ｔ１からｔ１０を含む状態モデル更新周期とは異なる周期に含まれるデータ収集区間とする。各データ収集区間ｔ２１、ｔ２２、ｔ２３におけるＣＰＵ使用率および判定結果の例は以下の通りである。
ｔ２１：ＣＰＵ使用率  ２４％  →  正常（状態Ｃの発生回数＝１）
ｔ２２：ＣＰＵ使用率  ７５％  →  正常（状態Ｄの発生回数＝１）
ｔ２３：ＣＰＵ使用率  ７５％  →  異常（状態Ｄの発生回数＝２）
ｔ２１ではＣＰＵ使用率が２４％であるため、状態Ｃの発生回数は１となる。当該周期における状態Ｃの発生回数が、状態モデルにおける状態Ｃの発生回数４以下であるため、判定結果は正常となる。ｔ２２ではＣＰＵ使用率が７５％であるため、状態Ｄの発生回数は１となる。当該周期における状態Ｄの発生回数が、状態モデルにおける状態Ｄの発生回数１以下であるため、判定結果は正常となる。ｔ２３ではＣＰＵ使用率が７５％であるため、状態Ｄの発生回数は２となる。当該周期における状態Ｄの発生回数が、状態モデルにおける状態Ｄの発生回数１より大きくなるため、判定結果は異常となる。図５の例では、各状態における発生回数を発生頻度として示されるが、発生頻度は、一つの周期におけるデータ収集区間の数に対する各状態に属するデータの発生回数の割合としてもよい。
【００３１】
図６は、１の状態モデル更新周期の正常／異常状態の収集データを発生頻度に基づく状態モデルにおける正常状態のデータの範囲と比較する例を示す図である。図６に示されるＣ１のグラフは、横軸を時間、縦軸をＣＰＵ使用率とし、時間とＣＰＵ使用との関係を示す。ＣＰＵ使用率は、状態モデル更新周期を所定数に等分して得られたデータ収集区間ごとに測定される。黒丸は、データ収集区間ごとに測定されたＣＰＵ使用率の観測値を示す。図６の例では、観測値の平均値は５０％であるが、観測値は５０％に対して上下に離散している。
【００３２】
グラフＣ１に示される観測値に基づき、図６に示される正常モデルＣ２が生成される。正常モデルＣ２は、発生頻度に基づく正常モデルである。グラフＣ１の収集データの観測値は、例えば、５０％より大きい値の範囲にあるグループＣ２１と、５０％より小さい値の範囲にあるグループＣ２２との２つに分類される。状態Ｃ２１に属するデータは４回発生しており、状態Ｃ２２に属するデータは４回発生している。
【００３３】
したがって、状態モデルＣ２において、正常状態の範囲は、平均値の５０％より大きい値の範囲のグループＣ２１、および平均値の５０％より小さい値の範囲のグループＣ２２に属するデータの範囲とされる。また、グループＣ２１およびグループＣ２２の発生頻度は、それぞれ５０％となる。実施形態では、収集データが観測値に応じて複数のグループに分類され、各グループに属するデータの数に基づく発生頻度は、異常か否かの判定条件として用いられる。
【００３４】
図６に示されるＣ３のグラフは、グラフＣ１と同様に状態モデル更新周期Ｔ１における時間とＣＰＵ使用との関係を示す。グラフＣ３における観測値は、正常状態を示すグラフＣ１と同様に観測値は５０％に対して上下に離散している。グラフＣ３における収集データのうち５０％より大きい観測値は８回中４回観測され、状態モデルＣ２の正常状態の範囲であるグループＣ２１に含まれる。また、グラフＣ３における収集データのうち５０％より小さい観測値は８回中４回観測され、状態モデルＣ２の正常状態の範囲であるグループＣ２２に含まれる。すなわち、グループＣ２１およびグループＣ２２に含まれる観測値の発生頻度は、それぞれ５０％である。したがって、グラフＣ３に示される収集データは、発生頻度に基づく正常モデルＣ２と比較した場合、“正常”と判定される。
【００３５】
図６に示されるＣ４のグラフは、グラフＣ１と同様に状態モデル更新周期Ｔ２における時間とＣＰＵ使用との関係を示す。グラフＣ４における観測値は平均値（５０％）付近でほぼ一定値を取り、グラフＣ４の収集データは、異常状態であることを示す。グラフＣ４における収集データの各観測値は、正常モデルＣ２の正常状態の範囲であるグループＣ２１およびグループＣ２２には含まれない。したがって、グラフＣ４に示される収集データは、発生頻度に基づく正常モデルＣ２と比較した場合、“異常”と判定される。
【００３６】
発生頻度に基づく状態モデルＣ２によれば、正常状態を示すグラフＣ３の収集データは正常と判定され、異常状態を示すグラフＣ４の収集データは異常と判定される。すなわち、発生頻度に基づく状態モデルを用いた場合、収集データが離散的な値を取る場合でも、正常状態と異常状態は正しく判定される。
【００３７】
＜装置構成＞
次に、上記した正常・異常の判定方法を用いて、処理装置の動作の正常・異常を判定し、処理装置の異常を検知する異常検知装置について説明する。
【００３８】
図７は、異常検知装置１０のハードウェア構成の一例を示す図である。異常検知装置１０は、プロセッサ１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、ネットワークインタフェース１６を備える。プロセッサ１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、ネットワークインタフェース１６はバス１７により互いに接続される。
【００３９】
プロセッサ１１は、補助記憶装置１３に保持されたオペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、ＯＳ）や様々なコンピュータプログラムを主記憶装置１２にロードして実行することによって、様々な処理を実行する。ただし、コンピュータプログラムによる処理の一部がハードウェア回路により実行されてもよい。プロセッサ１１は、例えば、ＣＰＵや、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ（ＤＳＰ）で
ある。
【００４０】
主記憶装置１２は、プロセッサ１１に、補助記憶装置１３に格納されているプログラムをロードするための記憶領域、及びプログラムを実行するための作業領域を提供する。また、主記憶装置１２は、データを保持するためのバッファとして用いられる。主記憶装置１２は、例えば、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）等の半導体メモリである。
【００４１】
補助記憶装置１３は、様々なプログラムや、各プログラムの実行に際してプロセッサ１１が使用するデータを格納する。補助記憶装置１３は、例えば、Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ（ＥＰＲＯＭ）、又はハードディスクドライブ（Ｈａｒｄ
Ｄｉｓｋ  Ｄｒｉｖｅ、ＨＤＤ）、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）等の不揮発性のメモリである。補助記憶装置１３は、例えば、ＯＳ、異常検知プログラム、その他様々なアプリケーションプログラムを保持する。
【００４２】
入力装置１４は、ユーザからの操作入力を受け付ける。例えば、入力装置１４は、タッチパッド、マウス、タッチパネル等のポインティングデバイス、キーボード、操作ボタン、遠隔操作機からの信号を受信する回路等である。出力装置１５は、異常検知装置１０により検知された異常についての情報を出力する。出力装置１５は、例えば、液晶ディスプレイ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ、ＬＣＤ）である。
【００４３】
ネットワークインタフェース１６は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース１６は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース１６は、例えば、Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ（ＮＩＣ）、無線Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）カード等である。ネットワークインタフェース１６で受信されたデータ等は、プロセッサ１１に出力される。異常検知装置１０は、ネットワークインタフェース１６を介して、接続された各種リソースのデータを収集する。
【００４４】
例えば、異常検知装置１０では、プロセッサ１１が、補助記憶装置１３に保持される異常検知プログラムを主記憶装置１２にロードして実行する。なお、異常検知装置１０のハードウェア構成は一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。
【００４５】
図８は、異常検知装置１０の構成要素の一例を示す図である。異常検知装置１０は、データ収集部１、異常検知部２およびデータストア３の構成要素を含む。また、異常検知装置１０は、ネットワークインタフェース１６を介して、異常検知の対象である処理装置４と通信する。処理装置４は、例えば、Ｓｅｒｖｅｒ（サーバ）、ＶＭ、Ｖｉｒｔｕａｌ  ｓｗｉｔｃｈ、Ｖｉｒｔｕａｌ  ｒｏｕｔｅｒ等である。異常検知装置１０は、通信により、各処理装置４から各リソースの設定・状態を示すデータを収集する。
【００４６】
なお、異常検知装置１０は、自身の設定・状態を示すデータを収集し、異常検知装置１０自身を異常検知の対象としてもよい。この場合、異常検知プログラムは、パーソナルコンピュータ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ、ＰＣ）等におけるアプリケーションとして異常判定処理を実行してもよい。
【００４７】
データ収集部１は、各リソースの設定・状態を示すデータを、状態モデル更新周期を複数に分割したデータ収集区間ごとに収集し、データストア３に格納する。収集データは、異常検知対象の処理装置４から、データ収集部１に対してデータ収集区間ごとに送信され
るようにしてもよい。
【００４８】
異常検知部２は、データストア３に格納された１の状態モデル更新周期における収集データを複数のグループに分類して状態モデルを生成し、生成した状態モデルをデータストア３に格納する。また、異常検知部２は、データ収集部１が収集したデータを、データストア３に格納された状態モデルと対比し、異常があるか否かを判定する。データストア３は、主記憶装置１２及び補助記憶装置１３の少なくとも一方に生成される。
【００４９】
プロセッサ１１は、主記憶装置１２に実行可能に展開されたコンピュータプログラムを実行することによって、データ収集部１および異常検知部２としての動作ないし処理を行う。データ収集機能１１として動作するプロセッサ１１は、ネットワークインタフェース１６を用いた通信によって、各通信相手からデータを収集する。
【００５０】
なお、データ収集部１、異常検知部２のいずれか、またはその処理の一部がハードウェア回路により実行されてもよい。ハードウェア回路は、例えば、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）のようなプログラマブルロジックデバイス（ＰＬＤ）、集積回路（ＩＣ、ＬＳＩ、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＡＳＩＣ）など）を含む。
【００５１】
状態モデルは「正常パターン」の一例である。状態モデル更新周期は、「周期」の一例である。データ収集区間は、「区間」の一例である。データ収集部１は、「取得部」の一例である。異常検知部２は、「判定部」の一例である。データストア３は、「記憶部」の一例である。
【００５２】
＜クラスタリング＞
状態モデル更新周期を分割して得られた複数の区間ごとに収集されたデータの集合を、複数の集合に分類する方法として、例えば、クラスタリングが挙げられる。クラスタリングは、収集されたデータを性質の近い集合（クラスタ）に統計的に分類する。クラスタリングの方法には幾つかの種類があるが、本実施形態においては、一定数のクラスタに分類される方法よりも、収集データの特性に応じた数のクラスタに分類される方法が望ましい。以下の処理例では、異常検知部２等の判定主体が性質の近さを定量的に判定するため、重心からの距離という値が算出される。
【００５３】
分割後のクラスタ数を適切に決定する手法として、例えば、Ｘ−ｍｅａｎｓが挙げられる。Ｘ−ｍｅａｎｓは、収集データをＫ個のクラスタに分類するＫ−ｍｅａｎｓを拡張した手法である。Ｘ−ｍｅａｎｓは、ベイズ情報量基準（ＢＩＣ、Ｂａｙｅｓｉａｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｃｒｉｔｅｒｉｏｎ）等のモデル選択を評価する指標が所定の条件を満たすまで、Ｋ−ｍｅａｎｓを再帰的に繰り返す。ベイズ情報量基準は、測定データを統計的に説明するモデルを作成する際、作成されたモデルの測定データに対する適合度を示す指標である。モデル選択を評価する指標は、モデルを作成するためのパラメータ数、標本の大きさまたは観測データの数等によって定義される。
【００５４】
図９は、Ｘ−ｍｅａｎｓによる収集データの分類処理の例を示すフローチャートである。図９に示される分類処理は、例えば、状態モデル更新周期を経過したときに開始される。なお、分類処理の主体は、例えば、異常検知プログラムの実行により異常検知機能２として動作するプロセッサ１１、或いは、異常検知機能２として動作するハードウェア回路である。以降のフローチャートの説明では、主体は異常検知部２であるものとする。
【００５５】
ＯＰ１０では、異常検知部２は、判定対象の周期における収集データからｋ０個のデータを抽出し、ｋ０個のクラスタとする。ＯＰ１１では、異常検知部２は、クラスタの重心
からの距離に基づき、残りのデータを各クラスタに分類する。クラスタの重心は、例えば、クラスタに含まれるデータの平均値としてもよい。
【００５６】
ＯＰ１２では、異常検知部２は、残りのデータを分類した後、新たな重心を求める。異常検知部２は、新たな重心からの距離に基づき、各データが属するクラスタを変更する。ＯＰ１３では、異常検知部２は、ＯＰ１２の処理において、クラスタ間でデータの移動があったか否かを判定する。クラスタ間でデータの移動があった場合には（ＯＰ１３：はい）、処理がＯＰ１２に戻る。クラスタ間でデータの移動がなかった場合には（ＯＰ１３：いいえ）、処理がＯＰ１４に進む。
【００５７】
ＯＰ１４からＯＰ１６の処理において、異常検知部２は、ベイズ情報量基準が所定の条件を満たすまで、分割によって生成された各クラスタの分割を繰り返す。なお、モデル選択の評価基準は、ベイズ情報量基準に限られず、他の情報量基準であってもよい。
【００５８】
ＯＰ１４では、異常検知部２は、ベイズ情報量基準の値に基づいてＯＰ１０からＯＰ１３までの処理によって生成された各クラスタを、さらに分割するか否かを判定する。クラスタをさらに分割する場合には（ＯＰ１４：はい）、処理がＯＰ１５に進む。クラスタを分割しない場合には（ＯＰ１４：いいえ）、処理がＯＰ１６に進む。
【００５９】
ＯＰ１５では、異常検知部２は、分割対象のクラスタに対し、ｋ０＝２としてＯＰ１０からＯＰ１３までの処理を行い、クラスタを２分割する。ＯＰ１６では、異常検知部２は、ベイズ情報量基準が所定の条件を満たすか否かを判定する。ベイズ情報量基準が所定の条件を満たす場合には（ＯＰ１６：はい）、図９の分類処理が終了する。ベイズ情報量基準が所定の条件を満たさない場合には（ＯＰ１６：いいえ）、処理がＯＰ１４に戻る。
【００６０】
ＯＰ１０で収集される判定対象の周期における収集データは、「一の周期で取得した前記所定の項目についてのデータ」の一例である。ベイズ情報量基準は、「分割状態を評価する指標」の一例である。
【００６１】
ＯＰ１０およびＯＰ１１の処理は、「一の周期で取得した前記所定の項目についてのデータを所定の数のグループに分類」する処理の一例である。ＯＰ１２およびＯＰ１３の処理は、「各グループに属するデータの平均値との差分に基づいて各データが属するグループを変更」する処理の一例である。ＯＰ１４の処理は、「分割状態を評価する指標の値に基づいて、前記所定の数のグループのそれぞれをさらに分割するか否か判定」する処理の一例である。ＯＰ１５およびＯＰ１６の処理は、「分割すると判定されたグループについて、前記分割状態を評価する指標の値が所定の条件を充足するまで、前記分割を繰り返す」処理の一例である。
【００６２】
図９に示されるＸ−ｍｅａｎｓは一例に過ぎず、収集データを複数の集合に分類する方法は、Ｘ−ｍｅａｎｓの種々の変形例であってもよい。例えば、繰り返されるクラスタの分割のうち、適切でない分割については併合する方法が知られている。また、収集データを複数の集合に分類する方法は、Ｘ−ｍｅａｎｓに限られず、データの特性に応じて適切な数のクラスタに分類される方法であればよい。
【００６３】
＜状態モデルの生成＞
図１０から図１３は、状態モデルの生成について説明するための図である。図１０は、収集データのデータ構成の一例を示す図である。図１０の例は、ある処理装置４において、２０１５年７月３０日１時００分から始まる状態モデル更新周期においてデータ収集区間の３０秒ごとに計測されたＣＰＵ使用率のデータを示す。
【００６４】
図１１Ａおよび図１１Ｂは、収集したデータに基づき、クラスタリングによって更新周期ごとに生成された状態モデルの例を示す。各更新周期で収集されたデータは、データのばらつき等の特性に応じた数のグループに分類される。以下、グループは単に「状態」とも呼ばれる。図１１Ａ及び１１Ｂの例では、状態モデル更新周期は１時間である。例えば、１０時の状態モデルは、１０時から１１時までの１時間に収集したデータから生成される状態モデルである。
【００６５】
図１１Ａは、１０時の状態モデルの例を示す図である。１０時から１１時までの周期に収集されたＣＰＵ使用率のデータは、ＣＰＵ使用率が０−２５％、２６−５０％、５１−７５％、７６−１００％の範囲の値を取る４つの状態に分類される。なお、ＣＰＵ使用率のデータは、整数値で示されるものとして説明される。
【００６６】
図１１Ｂは、１１時の状態モデルの例を示す図である。１１時から１２時までの周期に収集されたＣＰＵ使用率のデータは、ＣＰＵ使用率が０−３５％、３６−７０％、７１−１００％の範囲の値を取る３つの状態に分類される。
【００６７】
図１２Ａは、発生頻度を含む１０時の状態モデルの例を示す図である。以下の説明において、状態ごとのデータの発生頻度は、１つの状態モデル更新周期に含まれる各データ収集区間で収集したデータの数に対する、当該状態に属するデータの数の割合とする。以下、状態ごとのデータの発生頻度は、単に「状態の発生頻度」とも呼ばれる。
【００６８】
図１２Ａの例において、１０時の状態モデル更新周期が９０のデータ収集区間に等分されている場合、９０個のデータが収集される。収集されたＣＰＵ使用率のデータのうち、ＣＰＵ使用率が０−２５％であるデータの数は、７５個であったとする。また、ＣＰＵ使用率が２６−５０％、５１−７５％、７６−１００％であるデータの数は、それぞれ７個、７個、１個であったとする。この場合、ＣＰＵ使用率が０−２５％となるデータが属する状態の発生頻度は、（７５／９０）×１００より約８３％となる。同様に、ＣＰＵ使用率が２６−５０％、５１−７５％、７６−１００％となるデータが属する状態の発生頻度は、それぞれ約８％、約８％、約１％となる。
【００６９】
図１２Ｂは、発生頻度を含む１１時の状態モデルの例を示す図である。図１２Ｂの例において、１１時の状態モデル更新周期が９０のデータ収集区間に等分されている場合、９０個のデータが収集される。収集されたＣＰＵ使用率のデータのうち、ＣＰＵ使用率が０−３５％であるデータの数は、７５個であったとする。また、ＣＰＵ使用率が３６−７０％、７１−１００％であるデータの数は、それぞれ１１個、４個であったとする。この場合、ＣＰＵ使用率が０−３５％となるデータが属する状態の発生頻度は、（７５／９０）×１００より約８３％であることを示す。同様に、ＣＰＵ使用率が３６−７０％、７１−１００％となるデータが属する状態の発生頻度は、それぞれ約１２％、約５％となる。
【００７０】
図１３は、状態モデルのデータ構成の例を示す図である。図１３は、図１２Ａおよび図１２Ｂの状態モデルのデータ構成を示す。各状態の発生頻度に対するデータ構成は、「ｐ−ｑ％：（ｘ％，ｙ％）」の形式で示される。ｐ−ｑ％は、ＣＰＵ使用率がｐ−ｑ％のデータを含む状態であることを示す。括弧内の１つ目の構成要素であるｘ％は、ｐ−ｑ％の状態の発生頻度である。括弧内の２つ目の構成要素であるｙ％は、異常判定時に使用される発生頻度のカウンタである。判定対象の周期において、データ収集区間ごとにデータが収集されると、収集されたデータが属する状態の発生頻度が算出され、算出された発生頻度はカウンタｙ％に設定される。カウンタのｙ％は、状態モデル生成時には０％に初期化される。具体的には、図１３において、１０時の状態モデルにおけるＣＰＵ使用率が０−２５％の状態は、発生頻度が８３％であり、「０−２５％：（８３％，０％）」と示される。
【００７１】
＜異常判定＞
図１４および図１５は、異常判定について説明するための図である。図１４は、状態モデル更新周期における異常判定の例を示す図である。図１４では、図１２Ａに示す１０時の状態モデルとの比較により、異常が発生したか否かが判定される。
【００７２】
図１４において、状態モデル更新周期は、Ｔ１からＴ１２０の１２０のデータ収集区間に等分される。異常検知部２は、データ収集区間ごとに、収集したデータが属する状態の発生頻度を算出し異常が発生した否かを判定する。異常検知部２は、算出された発生頻度が、状態モデルにおいて対応する状態の発生頻度を超えた場合に異常と判定する。
【００７３】
異常か否かの判定は、状態モデルにおいて対応する状態の発生頻度を超えたか否かによる判定に限られない。異常検知部２は、例えば、所定の閾値ｘに対し、（状態モデルにおいて対応する状態の発生頻度＋ｘ）％以上となった場合に異常と判定してもよい。また、異常検知部２は、所定の閾値ｙに対し、｛（状態モデルにおいて対応する状態の発生頻度）×（１＋ｙ／１００）｝％以上となった場合に異常と判定してもよい。閾値ｘ、ｙは、例えば、データ収集区間の数、または収集データのばらつき等の特性を考慮して設定することができる。
【００７４】
異常が発生したか否かは、状態モデル更新周期の満了時点においても判定される。発生頻度が許容範囲を下回るか否かは、状態モデル更新周期の満了時点に判定されるためである。状態モデル更新周期の満了時点において、異常検知部２は、各状態の発生頻度を、状態モデルにおいて各々に対応する状態の発生頻度と比較する。異常検知部２は、状態モデル更新周期の満了時点における各状態の発生頻度が、状態モデルにおいて各々に対応する状態の発生頻度より低い状態が１以上ある場合に異常と判定する。
【００７５】
状態の発生頻度が、状態モデルにおいて対応する状態の発生頻度より低いか否かは、例えば、所定の閾値ｘに対し、（状態モデルにおいて対応する状態の発生頻度−ｘ）％以下であるか否かにより判定してもよい。また、状態の発生頻度が状態モデルにおいて対応する状態の発生頻度より低いか否かは、所定の閾値ｙに対し、状態の発生頻度が｛（状態モデルにおいて対応する状態の発生頻度）×（１−ｙ／１００）｝％以下であるか否かにより判定してもよい。閾値ｘ、ｙは、例えば、データ収集区間の数、または収集データのばらつき等の特性を考慮して設定することができる。
【００７６】
以下、図１４における異常判定の具体例が説明される。図１４では、図１２Ａに示す１０時の状態モデルとの比較により、異常が発生したか否かが判定される。Ｔ４のデータ収集後の時点で、０％−２５％のデータを含む状態に属するデータはＴ１、Ｔ２、Ｔ４であり、データ収集区間Ｔ１からＴ１２０において少なくとも３回発生したことになる。したがって、Ｔ４のデータ収集後の時点での発生頻度は（３／１２０）×１００の計算により２．５％となる。図１２Ａの状態モデルにおいて、０％−２５％のデータを含む状態の発生頻度は８３％であり、Ｔ４のデータ収集後の発生頻度は８３％より低いため、正常と判定される。
【００７７】
また、Ｔ８のデータ収集後の時点で、７６％−１００％のデータを含む状態に属するデータはＴ３、Ｔ８であり、データ収集区間Ｔ１からＴ１２０において少なくとも２回発生したことになる。したがって、Ｔ８のデータ収集後の時点での発生頻度は（２／１２０）×１００の計算により約１．７％となる。図１２Ａの状態モデルにおいて、７６％−１００％のデータを含む状態の発生頻度は１％であり、Ｔ８のデータ収集後の発生頻度は１％以上となるため、異常と判定される。
【００７８】
さらに、Ｔ１２０のデータ収集後、すなわち状態モデル更新周期満了後の時点で、５１％−７５％のデータを含む状態の発生頻度は６％であったとする。図１２Ａの状態モデルにおいて、５１％−７５％のデータを含む状態の発生頻度は８％であり、状態モデル更新周期満了後の発生頻度は８％より低いため、異常と判定される。
【００７９】
検知された異常に関する情報は、データストア３に記憶される。データストア３に記憶された異常に関する情報は、所定の形式で出力装置１５に出力され、ユーザに通知される。図１５は、検知された異常に関する情報のデータ構成の例を示す図である。
【００８０】
図１５の例は、異常検知対象のシステムにおいてサーバ１およびサーバ２等のリソースごとに、検知された異常に関する情報を示す。サーバ１では、２０１５年７月３０日１時７分３０秒、２０１５年７月３０日１時３９分００秒、２０１５年７月３０日２時００分００秒に、ＣＰＵ使用率について異常が検知されたことが示される。また、サーバ１では、２０１５年７月３０日１時１２分３０秒に、メモリ使用率について異常が検知されたことが示される。
【００８１】
なお、検知された異常に関する情報のデータ構成は、これに限られない。検知された異常に関する情報のデータ構成は、異常検知時のＣＰＵ使用率、異常検知時の発生頻度、正常状態での発生頻度等の情報を含んでもよい。
【００８２】
＜処理の流れ＞
図１６は、状態モデルの生成処理の例を示すフローチャートである。状態モデルは、異常検知対象のシステム等の運用開始時または各種設定の変更時等においてユーザからの指示を受けた時等のタイミングで生成される。図１６に示される処理は、例えば、ユーザから状態モデル生成の指示があったときに開始される。したがって、本実施形態において状態モデルが生成されるタイミングに限定がある訳ではない。
【００８３】
ＯＰ２０では、異常検知部２は、現時点が状態モデル更新周期の満了時点であるか否かを判定する。状態モデル更新周期の長さは、あらかじめデータストア３に定義してもよく、図１６に示す処理の開始時にユーザにより指定されてもよい。また、状態モデル更新周期の満了時点は、図１６に示す処理の開始時点からの経過時間が、状態モデル更新周期の長さの整数倍となる時点である。現時点が状態モデル更新周期の満了時点である場合には（ＯＰ２０：はい）、処理がＯＰ２１に進む。現時点が状態モデル更新周期の満了時点でない場合には（ＯＰ２０：いいえ）、異常検知部２は、状態モデル更新周期の満了時点まで、所定の間隔でＯＰ２０を繰り返す。
【００８４】
ＯＰ２１では、異常検知部２は、データストア３から、満了した状態モデル更新周期における収集データを抽出する。データ収集部１は、処理装置４から、状態モデル更新周期を複数に分割したデータ収集区間ごとにリソースの設定または状態を示すデータを定期的に収集し、データストア３に格納している。異常検知部２は、満了した状態モデル更新周期における、異常検知対象である処理装置４の収集データをデータストア３から抽出すればよい。ＯＰ２２では、異常検知部２は、抽出したデータを分類し、複数の状態を生成する。
【００８５】
ＯＰ２３では、異常検知部２は、状態ごとの発生頻度を計算する。ＯＰ２４では、異常検知部２は、ＯＰ２２で生成した複数の状態を、１つの状態モデルとしてデータストア３に格納する。異常検知部２は、複数の状態とともに、ＯＰ２３で計算した状態ごとの発生頻度もデータストア３に格納する。さらに、異常検知部２は、当該状態モデル更新周期の開始および終了の日時および時刻等の情報も、データストア３に格納する。処理がＯＰ２０に戻り、状態モデル更新周期ごとに状態モデルの生成処理が繰り返される。状態モデル
の生成は、例えば、ユーザの指示により終了する。
【００８６】
ＯＰ２１の処理は、「処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに前記処理装置の所定の項目についてのデータを取得」する処理の一例である。ＯＰ２２の処理は、「前記一の周期の前記区間ごとに取得した前記所定の項目についてのデータを所定の分類基準で複数のグループに分類」する処理の一例である。ＯＰ２３およびＯＰ２４の処理は、「前記グループごとの前記一の周期におけるデータの発生頻度を記憶」する処理の一例である。
【００８７】
図１７は、実施形態１の異常判定処理の例を示すフローチャートである。図１７に示される処理は、例えば、ユーザから異常検知対象の処理装置４に対する異常検知の指示を受けたときに開始される。ＯＰ３０では、異常検知部２は、状態モデル更新周期の満了時点であるか否かを判定する。状態モデル更新周期の満了時点である場合には（ＯＰ３０：はい）、処理がＯＰ３１に進む。状態モデル更新周期の満了時点でない場合には（ＯＰ３０：いいえ）、処理がＯＰ３２に進む。
【００８８】
ＯＰ３１では、異常検知部２は、所定の条件を満たす状態モデルを、異常判定の基準となる状態モデルとしてデータストア３から抽出する。基準となる状態モデルは、判定対象の周期における異常判定処理において、判定対象の周期で収集されたデータの状態ごとの発生頻度と比較される正常パターンの状態モデルである。異常検知部２は、所定の条件を満たす状態モデルとして、例えば、判定対象の周期と同じ曜日の同じ時間の収集データから生成された状態モデルを抽出することができる。
【００８９】
ＯＰ３２では、異常検知部２は、現時点がデータ収集区間の満了時点であるか否かを判定する。現時点がデータ収集区間の満了時点である場合には（ＯＰ３２：はい）、処理がＯＰ３３に進む。現時点がデータ収集区間の満了時点でない場合には（ＯＰ３２：いいえ）、処理がＯＰ３４に進む。
【００９０】
ＯＰ３３では、異常検知部２は、発生頻度が、ＯＰ３１で抽出した状態モデルの対応する状態の発生頻度と比較して、過多であるか否かを判定する。発生頻度が過多であるとは、発生頻度が状態モデルの発生頻度よりも許容範囲を超えて高くなり、異常と判定される場合をいう。発生頻度が過多である場合には（ＯＰ３３：はい）、処理がＯＰ３７に進む。発生頻度が過多でない場合には（ＯＰ３３：いいえ）、処理がＯＰ３４に進む。
【００９１】
なお、発生頻度は、満了したデータ収集区間のデータを含む状態の発生頻度であり、異常検知部２により算出される。算出された発生頻度は、当該状態の現時点での発生頻度としてデータストア３に保持される。以降の処理においても、異常検知部２は、算出した発生頻度をデータストア３に保持するものとする。
【００９２】
ＯＰ３４では、異常検知部２は、現時点が状態モデル更新周期の満了時点であるか否かを判定する。現時点が状態モデル更新周期の満了時点である場合には（ＯＰ３４：はい）、処理がＯＰ３５に進む。現時点が状態モデル更新周期の満了時点でない場合には（ＯＰ３４：いいえ）、処理がＯＰ３６に進む。
【００９３】
ＯＰ３５では、異常検知部２は、ＯＰ３３の処理を実行していない場合、状態モデル更新周期の満了時点のデータ収集区間におけるデータを収集し、収集したデータを含む状態の発生頻度を算出する。異常検知部２は、各状態の発生頻度をＯＰ３１で抽出した状態モデルの対応する状態の発生頻度とそれぞれ比較して、過少であるか否かを判定する。発生頻度が過少であるとは、発生頻度が状態モデルの発生頻度よりも許容範囲を超えて低くなり、異常と判定される場合をいう。発生頻度が過少となる状態が１以上ある場合には（Ｏ
Ｐ３５：はい）、処理がＯＰ３７に進む。発生頻度が過少となる状態がない場合には（ＯＰ３５：いいえ）、処理がＯＰ３６に進む。
【００９４】
ＯＰ３６では、異常検知部２は正常と判定し、処理がＯＰ３０に戻る。ＯＰ３７では、異常検知部２は異常と判定し、処理がＯＰ３０に戻る。ＯＰ３６およびＯＰ３７による判定結果は、データストア３に保持される。処理がＯＰ３０に戻ると、異常判定処理が繰り返される。図１７に示される異常判定処理は、例えば、ユーザの指示により終了する。
【００９５】
ＯＰ３３およびＯＰ３５の処理は、「判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得し、前記グループごとの前記判定対象の周期におけるデータの発生頻度が、前記一の周期におけるデータの発生頻度に基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する」処理の一例である。
【００９６】
＜実施形態１の作用効果＞
異常検知装置１０は、状態モデル更新周期における収集データを、データの特性に応じて適切な数のグループに分類し、各グループに属するデータの発生頻度を算出することで、発生頻度に基づく状態モデルを生成する。算出された発生頻度を、異常か否かを判定する閾値とすることで、離散的な値を取る収集データに対しても、適切な状態モデルが生成される。異常検知装置１０は、判定対象の周期における各グループの発生頻度を、発生頻度に基づく状態モデルにおける発生頻度と比較する。したがって、異常検知装置１０は、平均値による正常モデルとの比較により異常を検知する場合よりも、処理を繰返して実行する処理装置４の異常を、より正確に検知することができる。
【００９７】
異常検知装置１０は、判定対象の周期における区間ごとに、グループごとの判定対象の周期におけるデータの発生頻度が、状態モデルにおける発生頻度の許容範囲の上限値を超えるか否かの異常判定を実施する。したがって、異常検知装置１０は、区間ごとにリアルタイムに異常を検知することができる。
【００９８】
異常検知装置１０は、判定対象の周期の満了時に、複数のグループのうち１以上のグループの判定対象の周期におけるデータの発生頻度が、状態モデルにおける発生頻度の許容範囲の下限値を下回るか否かの異常判定を実施する。したがって、異常検知装置１０は、発生頻度が過少となる場合の異常も検知することができる。
【００９９】
異常検知装置１０は、一つの周期で取得したデータを所定の数のグループに分類し、各グループに属するデータの平均値との差分に基づいて各データが属するグループを変更する。さらに、異常検知装置１０は、分割状態を評価する指標の値に基づいて、当該所定の数のグループのそれぞれをさらに分割するか否か判定し、分割すると判定されたグループについて、分割状態を評価する指標の値が所定の条件を充足するまで、分割を繰り返す。これにより、異常検知装置１０は、状態モデルの生成する際、収集データをデータの特性に応じた数のグループに分類することにより、データのばらつき等の特性を示す状態モデルを生成することができる。
【０１００】
〔実施形態２〕
実施形態１の異常判定処理において、異常検知装置１０は、予め定められた所定の条件を満たす状態モデルを、異常判定の基準となる状態モデルとする。一方、実施形態２では、異常判定処理において、過去の複数の状態モデルから、時間帯、曜日等が共通する状態モデル間の類似の程度に基づいて、基準となる状態モデルが選択される。
【０１０１】
類似の程度（以下、類似度ともいう）は、例えば、各状態モデルに対応する状態モデル更新周期で収集されたデータを、収集されたデータの観測値に基づいて昇順または降順に
並べ替え、状態モデル間の観測値の差の絶対値の合計に基づいて定義してもよい。以下、本実施形態では、差の絶対値の合計を単に「差の合計」と呼ぶ。この場合、差の合計が小さいほど類似度は高く、差の合計が大きいほど類似度は低くなる。また、類似度は、クラスタリングにより分類された状態の数や各状態に属するデータの範囲についての状態モデル間の差に基づいて定義してもよい。
【０１０２】
実施形態２における異常検知装置１０のハードウェア構成および各構成要素は、実施形態１と同じであるため、その説明は省略される。また、実施形態２における状態モデルの生成方法は、実施形態１と同じであるため、その説明は省略される。
【０１０３】
＜状態モデルの選択＞
図１８Ａおよび図１８Ｂは、状態モデルの選択の例を示す図である。ここでは、状態モデル更新周期は１時間とする。また、９時の周期に対して基準となる状態モデルが選択される例が説明される。状態モデルの選択方法は、図１８Ａおよび図１８Ｂに示される方法に限られない。状態モデルの選択方法は、図１８Ａおよび図１８Ｂのような時間帯に着目する方法ではなく、曜日や月の同一性に着目した選択方法とすることもできる。
【０１０４】
図１８Ａは、異常検知装置１０が直近の連続する周期の状態モデルから、基準となる状態モデルを選択する例を示す。ここでは、現在時刻を本日の９時と想定して、直近の連続する周期の状態モデルから、基準となる状態モデルが選択される。異常検知装置１０は、本日の８時の状態モデルと、本日の８時から遡って、１時間前の７時から１日前の９時までの各状態モデルとの類似度を求め、最も類似度が高い状態モデルを特定する。特定されたモデルとの類似度は、Ｓ１とする。異常検知装置１０は、８時と最も類似する周期の次の周期の状態モデルを、今後観測される９時の周期に対する状態モデルとして選択することができる。例えば、８時と最も類似する周期が１１時であるとすると、１２時のモデルが、９時の周期に対する状態モデルとして選択される。
【０１０５】
図１８Ｂは、異常検知装置１０が同じ時間帯の周期の状態モデルから、基準となる状態モデルを選択する例を示す。異常検知装置１０は、現在時刻から遡って、１日前の９時の状態モデルと、２日前の９時の状態モデルとの類似度Ｓ２を求める。図１８Ａで求めた類似度Ｓ１よりも類似度Ｓ２のほうが高い場合、異常検知装置１０は、１日前の９時の状態モデルを、９時の周期に対する状態モデルとして選択することができる。
【０１０６】
＜処理の流れ＞
実施形態２における状態モデルの生成処理の例は、実施形態１と同じであるため、その説明は省略される。図１９は、実施形態２の異常判定処理の例を示すフローチャートである。実施形態２の異常判定処理は、状態モデルを選択する処理以外は、実施形態１と同様である。具体的には、図１９のＯＰ４０、ＯＰ４２からＯＰ４７までの処理は、それぞれ図１７のＯＰ３０、ＯＰ３２からＯＰ３７までの処理と同じであるため、共通する部分の説明は省略される。
【０１０７】
ＯＰ４０において、状態モデル更新周期の満了時点である場合には（ＯＰ４０：はい）、処理がＯＰ４１１に進む。状態モデル更新周期の満了時点でない場合には（ＯＰ４０：いいえ）、処理がＯＰ４２に進む。
【０１０８】
ＯＰ４１１では、異常検知部２は、状態モデルの選択方法に応じて、複数の状態モデルをデータストア３から抽出する。ＯＰ４１２では、異常検知部２は、異常判定の基準となる状態モデルを選択する。処理がＯＰ４２に進む。以降の処理は実施形態１と同じである。
【０１０９】
ＯＰ４１２は、「記憶された複数の正常パターンから、所定の条件を満たす正常パターンを選択」する処理の一例である。ＯＰ４３およびＯＰ４５の処理は、「前記判定対象の周期において前記区間ごとに前記所定の項目についてのデータを取得し、前記グループごとの前記判定対象の周期におけるデータの発生頻度が、選択された前記正常パターンに基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する」処理の一例である。
【０１１０】
＜実施形態２の作用効果＞
異常検知装置１０は、実施形態１と同様に、状態モデル更新周期における収集データを、データの特性に応じた数のグループに分類し、状態モデルを生成する。実施形態２では、過去の複数の状態モデルから、所定の条件を満たす正常パターンを、基準となる状態モデルとして選択する。これにより、データの特性に応じた適切な状態モデルが選択され、異常検知装置１０は、特定の状態モデルとの比較により異常を検知する場合よりも、処理を繰り返して実行する処理装置４の異常を、より正確に検知することができる。
【０１１１】
また、異常検知装置１０は、所定の条件として、時間帯、曜日等が共通する状態モデル間の類似度に基づいて、基準となる状態モデルを選択する。この場合、周期的な値をとる収集データに対してより適切な状態モデルが選択され、異常検知装置１０は、時間帯、曜日等に応じた処理を繰り返して実行する処理装置４の異常を、より正確に検知することができる。
【０１１２】
例えば、異常検知装置１０は、複数の周期を含む所定期間前までのそれぞれの周期の正常パターンから、直近の周期の正常パターンに最も類似する正常パターンの次の周期の正常パターンを、基準となる状態モデルとして選択する。これにより、異常検知装置１０は、直近の周期から予測される適切な状態モデルを選択することができる。
【０１１３】
また、異常検知装置１０は、所定期間ごとに記憶された過去の正常パターンのうち、連続する２つの過去の正常パターン間の類似度（図１８ＢのＳ２）と、直近の周期の正常パターンと当該所定期間内の正常パターンのうち直近の周期の正常パターンに最も類似する正常パターンとの類似度（図１８ＡのＳ１）とを比較する。異常検知装置１０は、類似度Ｓ２が類似度Ｓ１より高い場合に、所定期間ごとに記憶された最新の正常パターンを選択することで、時間帯、曜日等が共通する適切な状態モデルを選択することができる。
【０１１４】
さらに、異常検知装置１０は、状態モデル更新周期で取得したデータを昇順または降順に並べ替え、データ収集区間ごとのデータの差分の合計が小さいほど類似度が高いと判定する。このため、異常検知装置１０は、状態モデル更新周期間におけるデータのばらつき等の特性に応じた類似度を算出し、より適切な状態モデルを選択することができる。
【０１１５】
〔実施形態３〕
実施形態１および実施形態２では、異常検知装置１０は、判定対象の周期における状態ごとの発生頻度を、状態モデルにおける発生頻度と比較することにより、異常か否かを判定する。実施形態３では、発生頻度に加えて、判定対象の周期における状態間の遷移率を、状態モデルにおける遷移率の許容範囲と比較することにより、異常か否かを判定する。
【０１１６】
実施形態３における異常検知装置１０のハードウェア構成および機能構成は、実施形態１と同じであるため、その説明は省略される。また、実施形態３における状態モデルを選択する処理は、実施形態２と同じであるため、その説明は省略される。
【０１１７】
＜状態モデルの生成＞
図２０Ａから図２１は、実施形態３における状態モデルの生成について説明するための
図である。実施形態３における状態モデルは、各状態の発生頻度の他、状態から状態への遷移率の情報を含む。
【０１１８】
図２０Ａは、遷移率を含む１０時の状態モデルの例を示す図である。以下の説明において、状態間の遷移率は、状態モデル更新周期における状態遷移の回数に対する、特定の状態間で発生する遷移回数の割合として算出される。以下、ＣＰＵ使用率が０−２５％の状態は、状態（０−２５％）と示される。
【０１１９】
図２０Ａの例は、状態（０−２５％）から状態（０−２５％）への遷移率が２５％であることを示す。同様に、状態（２６−５０％）から状態（０−２５％）、状態（５１−７５％）から状態（０−２５％）、状態（７６−１００％）から状態（０−２５％）の遷移率は、それぞれ３５％、３５％、５％である。なお、各状態の発生頻度は、図１２Ａと同じである。
【０１２０】
図２０Ｂは、遷移率を含む１１時の状態モデルの例を示す図である。図２０Ｂの例は、状態（０−３５％）から状態（０−３５％）への遷移率が２５％であることを示す。同様に、状態（０−３５％）から状態（３６−７０％）、状態（３６−７０％）から状態（０−３５％）、状態（７１−１００％）から状態（０−３５％）、状態（３６−７０％）から状態（７１−１００％）の遷移率は、それぞれ１５％、２５％、５％、３０％である。なお、各状態の発生頻度は、図１２Ｂと同じである。
【０１２１】
図２１は、実施形態３における状態モデルのデータ構成の例を示す図である。図２１は、図２０Ａおよび図２０Ｂの状態モデルのデータ構成を示す。発生頻度のデータ構成は、図１３と同じであるため、その説明は省略される。
【０１２２】
状態間の遷移率に対するデータ構成は、「（ｐ１−ｑ１％，ｐ２−ｑ２％）：（ｓ％，ｔ％）」の形式で示される。１番目の括弧で示される（ｐ１−ｑ１％，ｐ２−ｑ２％）は、状態（ｐ１−ｑ１％）から状態（ｐ２−ｑ２％）への状態遷移を示す。２番目の括弧内の１つ目の構成要素であるｓ％は、状態（ｐ１−ｑ１％）から状態（ｐ２−ｑ２％）への遷移率である。２番目の括弧内の２つ目の構成要素であるｔ％は、異常判定時に使用される遷移率のカウンタである。判定対象の周期において、データ収集区間ごとに、区間の前後における状態間の遷移率が算出され、算出された遷移率はカウンタｔ％に設定される。カウンタｔ％は、状態モデル生成時には０％に初期化される。具体的には、図２１において、１０時の状態モデルにおける状態（０−２５％）から状態（０−２５％）への遷移は、遷移率が２５％であり、「（０−２５％，０−２５％）：（２５％，０％）」と示される。
【０１２３】
＜異常判定＞
図２２は、実施形態３の状態モデル更新周期における異常判定の例を示す図である。図２２では、図２０Ｂに示す１１時の状態モデルとの比較により、異常が発生したか否かが判定される。
【０１２４】
図２２において、状態モデル更新周期は、Ｔ１からＴ１２０の１２０のデータ収集区間に等分される。異常検知部２は、データ収集区間ごとに、遷移前後の状態間の遷移率を算出し異常が発生した否かを判定する。異常検知部２は、算出された遷移率が、状態モデルにおいて対応する状態間の遷移率を超えた場合に異常と判定することができる。
【０１２５】
異常か否かの判定は、状態モデルにおいて対応する状態間の遷移率を超えたか否かによる判定に限られない。異常検知部２は、例えば、所定の閾値ｘに対し、（状態モデルの遷移率＋ｘ）％以上となった場合に異常と判定してもよい。また、異常検知部２は、所定の
閾値ｙに対し、｛（状態モデルにおいて対応する状態間の遷移率）×（１＋ｙ／１００）｝％以上となった場合に異常と判定してもよい。閾値ｘ、ｙは、例えば、データ収集区間の数、または収集データの変化の度合い等の特性を考慮して設定することができる。
【０１２６】
異常が発生したか否かは、状態モデル更新周期の満了時点においても判定される。遷移率が許容範囲を下回るか否かは、状態モデル更新周期の満了時点に判定されるためである。状態モデル更新周期の満了時点において、異常検知部２は、各状態間の遷移率を、状態モデルにおいて各々に対応する状態間の遷移率と比較する。異常検知部２は、状態モデル更新周期の満了時点における各状態間の遷移率が、状態モデルにおいて各々に対応する状態間の遷移率より低い状態が１以上ある場合に異常と判定することができる。
【０１２７】
状態間の遷移率が状態モデルにおいて対応する状態間の遷移率より低いか否かは、例えば、所定の閾値ｘに対し、（状態モデルにおいて対応する状態間の遷移率−ｘ）％以下であるか否かにより判定してもよい。また、状態間の遷移率が状態モデルにおいて対応する状態間の遷移率より低いか否かは、所定の閾値ｙに対し、状態間の遷移率が｛（状態モデルにおいて対応する状態間の遷移率）×（１−ｙ／１００）｝％以下であるか否かにより判定してもよい。閾値ｘ、ｙは、例えば、データ収集区間の数、または収集データの変化の度合い等の特性を考慮して設定することができる。
【０１２８】
以下、図２２における異常判定の具体例が説明される。Ｔ１からＴ２のデータ収集区間になった時点で、状態（０％−３５％）から状態（０％−３５％）への遷移が少なくとも１回発生したことになる。したがって、Ｔ１からＴ２のデータ収集区間になった時点での遷移率は（１／１２０）×１００の計算により約０．８％となる。図２０Ｂの状態モデルにおいて、状態（０％−３５％）から状態（０％−３５％）への遷移率は８３％であり、Ｔ１からＴ２のデータ収集区間になった時点の遷移率は８３％より低いため、正常と判定される。
【０１２９】
また、Ｔ２からＴ３のデータ収集区間になった時点で、状態（０％−３５％）から状態（７１％−１００％）への遷移が少なくとも１回発生したことになる。したがって、Ｔ２からＴ３のデータ収集区間になった時点での遷移率は（１／１２０）×１００の計算により約０．８％となる。図２０Ｂの状態モデルにおいて、状態（０％−３５％）から状態（７１％−１００％）への遷移率は０％であり、Ｔ２からＴ３のデータ収集区間になった時点の遷移率は０％以上となるため、異常と判定される。
【０１３０】
さらに、Ｔ１２０のデータ収集後、すなわち状態モデル更新周期満了後の時点で、状態（０％−３５％）から状態（０％−３５％）への遷移率は１５％であったとする。図２０Ｂの状態モデルにおいて、状態（０％−３５％）から状態（０％−３５％）への遷移率は２５％であり、状態モデル更新周期満了後の遷移率は２５％より低いため、異常と判定される。
【０１３１】
＜処理の流れ＞
図２３は、実施形態３の状態モデルの生成処理の例を示すフローチャートである。図２３は、実施形態３の状態モデルの生成処理の例を示すフローチャートである。実施形態３の状態モデルの生成処理は、遷移率を計算する処理以外は、実施形態１と同様である。具体的には、図２３のＯＰ５０からＯＰ５３の処理は、それぞれ図１６のＯＰ２０からＯＰ２３までの処理と同じであるため、共通する部分の説明は省略される。
【０１３２】
ＯＰ５３において、状態ごとの発生頻度が計算されると、処理がＯＰ５４に進む。ＯＰ５４では、異常検知部２は、各状態間の遷移率を計算する。
【０１３３】
ＯＰ５５では、異常検知部２は、ＯＰ５１からＯＰ５４までの処理で生成した状態モデルを、データストア３へ保存する。処理がＯＰ５０に戻り、状態モデルの生成処理が繰り返される。状態モデルの生成は、例えば、ユーザの指示により終了する。
【０１３４】
ＯＰ５１の処理は、「処理を繰り返して実行する処理装置から、一の周期を複数に分割した区間ごとに前記処理装置の所定の項目についてのデータを取得」する処理の一例である。ＯＰ５２の処理は、「前記一の周期の前記区間ごとに取得した前記所定の項目についてのデータを所定の分類基準で複数のグループに分類」する処理の一例である。ＯＰ５４の処理は、「前記正常パターンにおける前記複数のグループ間の遷移率をさらに記憶」する処理の一例である。
【０１３５】
図２４は、実施形態３の異常判定処理の例を示すフローチャートである。図２４に示される処理は、例えば、ユーザから異常検知対象の処理装置４に対する異常検知の指示があったときに開始される。
【０１３６】
ＯＰ６０では、異常検知部２は、現時点が状態モデル更新周期の満了時点であるか否かを判定する。現時点が状態モデル更新周期の満了時点である場合には（ＯＰ６０：はい）、処理がＯＰ６１に進む。現時点が状態モデル更新周期の満了時点でない場合には（ＯＰ６０：いいえ）、処理がＯＰ６３に進む。
【０１３７】
ＯＰ６１では、異常検知部２は、状態モデルの選択方法に応じて、複数の状態モデルをデータストア３から抽出する。ＯＰ６２では、異常検知部２は、異常判定の基準となる状態モデルを選択する。
【０１３８】
ＯＰ６３では、異常検知部２は、現時点がデータ収集区間の満了時点であるか否かを判定する。現時点がデータ収集区間の満了時点である場合には（ＯＰ６３：はい）、処理がＯＰ６４に進む。現時点がデータ収集区間の満了時点でない場合には（ＯＰ６３：いいえ）、処理がＯＰ６６に進む。
【０１３９】
ＯＰ６４では、異常検知部２は、満了したデータ収集区間のデータを収集し、収集したデータを含む状態の発生頻度を算出する。異常検知部２は、算出された発生頻度が、ＯＰ６２で選択した状態モデルの対応する状態の発生頻度と比較して、過多であるか否かを判定する。算出された発生頻度が過多である場合には（ＯＰ６４：はい）、処理がＯＰ７０に進む。算出された発生頻度が過多でない場合には（ＯＰ６４：いいえ）、処理がＯＰ６５に進む。
【０１４０】
ＯＰ６５では、異常検知部２は、ＯＰ６３のデータ収集区間後に生じる状態間遷移についての遷移率を算出する。算出された遷移率は、当該状態 間遷移の現時点での遷移率と
してデータストア３に保持される。以降の処理においても、異常検知部２は、算出された遷移率をデータストア３に保持するものとする。
【０１４１】
異常検知部２は、算出された遷移率が、ＯＰ６２で選択した状態モデルの対応する状態間遷移の遷移率と比較して、過多であるか否かを判定する。算出された遷移率が過多である場合には（ＯＰ６５：はい）、処理がＯＰ７０に進む。算出された遷移率が過多でない場合には（ＯＰ６５：いいえ）、処理がＯＰ６６に進む。
【０１４２】
ＯＰ６６では、異常検知部２は、現時点が状態モデル更新周期の満了時点であるか否かを判定する。現時点が状態モデル更新周期の満了時点である場合には（ＯＰ６６：はい）、処理がＯＰ６７に進む。現時点が状態モデル更新周期の満了時点でない場合には（ＯＰ６６：いいえ）、処理がＯＰ６９に進む。
【０１４３】
ＯＰ６７では、異常検知部２は、ＯＰ６３のデータ収集区間で収集したデータを含む状態の発生頻度を算出する。異常検知部２は、各状態の発生頻度を、ＯＰ６２で選択した状態モデルの対応する状態の発生頻度とそれぞれ比較して、過少であるか否かを判定する。発生頻度が過少となる状態が１以上ある場合には（ＯＰ６７：はい）、処理がＯＰ７０に進む。発生頻度が過少となる状態がない場合には（ＯＰ６７：いいえ）、処理がＯＰ６８に進む。
【０１４４】
ＯＰ６８では、異常検知部２は、ＯＰ６３のデータ収集区間後に生じる状態間の遷移についての遷移率を算出する。異常検知部２は、各状態間の遷移率を、ＯＰ６２で選択した状態モデルの対応する状態間の遷移率とそれぞれ比較して、過少であるか否かを判定する。遷移率が過少となる状態間の遷移が１以上ある場合には（ＯＰ６８：はい）、処理がＯＰ７０に進む。遷移率が過少となる状態間の遷移がない場合には（ＯＰ６８：いいえ）、処理がＯＰ６９に進む。
【０１４５】
ＯＰ６９では、異常検知部２は正常と判定し、処理がＯＰ６０に戻る。ＯＰ７０では、異常検知部２は異常と判定し、処理がＯＰ６０に戻る。処理がＯＰ６０に戻ると、異常判定処理が繰り返される。図２４に示される異常判定処理は、例えば、ユーザの指示により終了する。
【０１４６】
ＯＰ６５およびＯＰ６８は、「判定対象の周期における前記複数のグループ間の遷移率が、前記一の周期で取得されたデータにおける対応するグループ間の遷移率に基づく許容範囲を逸脱した場合に、前記処理装置に異常があると判定する」処理の一例である。
【０１４７】
＜実施形態３の作用効果＞
異常検知装置１０は、実施形態１および２と同様に発生頻度に基づいて異常を判定するとともに、状態間の遷移率に基づく異常判定も実施する。これにより、発生頻度に関する異常の他、状態遷移に関する異常を、より正確に検知することができる。状態遷移に関する異常は、例えば収集データの観測値の変化のパターンまたは変化の度合い等である。
【０１４８】
＜変形例＞
実施形態３では、異常検知装置１０は、発生頻度および遷移率のそれぞれに基づいて異常か否かを判定するが、発生頻度については異常判定をせずに、遷移率に基づいて異常か否かを判定することで異常を検知してもよい。
【０１４９】
遷移率に基づいて異常判定を実施する場合、異常検知装置１０は、実施形態３と同様に、収集データが分類された状態間の遷移率を含む状態モデルを生成する。異常検知装置１０は、例えば、図２３に示されるＯＰ５０〜ＯＰ５２、ＯＰ５４およびＯＰ５５の処理により、状態間の遷移率を含む状態モデルを生成することができる。
【０１５０】
異常検知装置１０は、判定対象の周期において、データ収集区間ごとに処理装置４から所定の項目についてのデータを収集し、収集データを分類して生成された各状態間の遷移率を含む状態モデルとの比較により、異常判定を行う。異常検知装置１０は、例えば、図２４に示されるＯＰ６０〜ＯＰ６３、ＯＰ６５、ＯＰ６６およびＯＰ６８〜ＯＰ７０の処理により、判定対象の周期において、異常判定を実施することができる。
【０１５１】
また、異常検知装置１０は、ＯＰ６２の状態モデルを選択する処理において、状態間の遷移率の類似度により、複数の正常パターンから異常判定の基準となる状態モデルを選択してもよい。状態間の遷移率に着目することにより、異常検知装置１０は、状態遷移に関する異常を、より正確に検知することができる。
【０１５２】
なお、実施形態において、異常検知の対象となる処理装置４は、ネットワークインタフェース１６を介して異常検知装置１０に接続される装置等として説明されるが、異常検知装置１０自身であってもよい。この場合、異常検知装置１０は、自身の設定・状態を示すデータを収集し、異常判定を実施すればよい。以上説明した実施形態の構成は、適宜組み合わせることができる。
【０１５３】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１５４】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。さらに、ＳＳＤはコンピュータ等から取り外し可能な記録媒体としても、コンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【０１５５】
１        データ収集部
２        異常検知部
３        データストア
４        処理装置
１０      異常検知装置
１１      プロセッサ
１２      主記憶装置
１３      補助記憶装置
１４      入力装置
１５      出力装置
１６      ネットワークインタフェース
１７      バス
【図１】
2017129917.tif 000003
【図２】
2017129917.tif 000004
【図３】
2017129917.tif 000005
【図４】
2017129917.tif 000006
【図５】
2017129917.tif 000007
【図６】
2017129917.tif 000008
【図７】
2017129917.tif 000009
【図８】
2017129917.tif 000010
【図９】
2017129917.tif 000011
【図１０】
2017129917.tif 000012
【図１１Ａ】
2017129917.tif 000013
【図１１Ｂ】
2017129917.tif 000014
【図１２Ａ】
2017129917.tif 000015
【図１２Ｂ】
2017129917.tif 000016
【図１３】
2017129917.tif 000017
【図１４】
2017129917.tif 000018
【図１５】
2017129917.tif 000019
【図１６】
2017129917.tif 000020
【図１７】
2017129917.tif 000021
【図１８Ａ】
2017129917.tif 000022
【図１８Ｂ】
2017129917.tif 000023
【図１９】
2017129917.tif 000024
【図２０Ａ】
2017129917.tif 000025
【図２０Ｂ】
2017129917.tif 000026
【図２１】
2017129917.tif 000027
【図２２】
2017129917.tif 000028
【図２３】
2017129917.tif 000029
【図２４】
2017129917.tif 000030