実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「AAAテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「AAAテーブル」を「AAA情報」と呼ぶことができる。
また、以下の説明では、データコンテキスト諸元は、分析の対象となる性能データのデータセット内のいくつかの列の形で定義される問題コンテキストである。
また、適用データコンテキスト諸元は、異常検出を行う処理で使用するために選択され、性能データをデータインスタンスに分割する際に使用(適用)するデータコンテキスト諸元である。
また、データインスタンスは、性能データのデータセットを適用データコンテキスト諸元の構成に従ってより小さなエンティティに分割したものを意味する。
図1は、一実施形態に係る異常検出装置を含む異常検出システムの全体構成図である。
異常検出システムは、性能分析装置の一例としての異常検出装置100と、性能データデータベース(DB)200と、コンソール300と、ディスプレイ400とを備える。
性能データDB200は、異常検出装置100によって解析される性能データのデータセット(性能データセット)を含むデータセットテーブル202(図2参照)と、各性能データセットのそれぞれの属性についての情報を定義するデータコンテキスト201a(データコンテキストテーブル210のエントリ)を含むデータコンテキストテーブル201とを格納する。本実施形態では、性能データDB200は、異常検出装置100の外部に設けられ、例えば、図示しないネットワークを介して接続された装置内に設けられていることを想定しているが、異常検出装置100内に備えるようにしてもよい。性能データDB200の詳細については、図2を用いて後述する。
異常検出装置100は、データコンテキスト201aに従って、性能データDB200の性能データセットをデータインスタンス120(120-1~N)に分割することによって、性能データDB200の性能データセットにおける異常を識別し、各データインスタンス120についてデータ(データ要素)毎にイベントラベルを割り当てる。また、異常検出装置100は、データインスタンスラベルDB160内のラベル付けされたデータ及びデータコンテキストに基づいて、異常スコアを計算し、各イベントラベルの異常を特定する。
コンソール300は、異常検出装置100に接続された入力デバイスである。コンソール300は、異常検出装置100の管理者による管理タスクを可能にする。具体的には、コンソール300は、管理者から異常検出装置100の設定の入力を受け付けたり、異常検出装置100のユーザからディスプレイ400上の可視化されたコンテンツ(画面)の変更を受け付けたりする。
ディスプレイ400は、GUIを用いて異常検出装置100の結果を可視化することができる出力装置である。本実施形態では、ディスプレイ400は、例えば、異常検出結果、例えば、異常スコア等をGUIにより表示する。ディスプレイ400でのGUIの表示例については、図13を用いて後述する。
異常検出装置100は、データインスタンス生成部110と、ラベル付部の一例としてのデータインスタンスラベル付部130と、再帰的原因特定部140と、方法プール150と、データインスタンスラベルデータベース(DB)160と、コンテキストスコアデータベース(DB)170と、を備える。
本実施形態では、異常検出装置100において、或るデータコンテキストテーブル201の1つのデータコンテキスト(1つのエントリ:対象エントリという。この例では、1行目のエントリ)と、これに対応する1つの性能データセット(エントリに対応する性能データテーブル202)とを処理対象として取得(受信)した場合について説明する。
異常検出装置100は、データインスタンス生成部110において、データコンテキスト201aと共に受信した性能データセットに対して前処理をしている。データインスタンス生成部110は、選択部の一例としてのデータコンテキスト選択部111を有する。
この前処理ステップは、データコンテキスト選択部111におけるデータコンテキスト諸元の選択と、データコンテキスト諸元のデータのフォーマッティングとを含む。データのフォーマッティングに関する情報は、方法プール150を参照して使用することができる。
データコンテキスト選択部111で選択された適用データコンテキスト諸元は、性能データDB200に格納される。適用データコンテキスト諸元は、以降において、性能データをいくつかのデータインスタンス120に分割するために使用される。これらの詳細については、図3、図4、及び図5を参照して後述する。
取得されたデータインスタンス120は、次に、方法プール150から最良の方法を選択することによって、各データインスタンスにイベントラベルを割り当てるタスクを有するデータインスタンスラベル付部130においてさらに処理され、その後、ラベル付けされたデータインスタンスがデータインスタンスラベルDB160に格納される。これらの詳細については、図6、図7、及び図8を参照して後述する。
データインスタンスラベルDB160からのラベル付けされたデータインスタンスは、再帰的原因特定部140においてさらに処理される。再帰的原因特定部140は、採点部の一例としてのラベルデータ採点部141と、可視化処理部142とを含む。再帰的原因特定部140は、集約のためにデータコンテキスト選択部111から受信した適用データコンテキスト諸元の情報を使用して、各イベントラベルについてラベルデータ採点部141で異常に関するスコアを計算し、コンテキストスコアDB170にスコア情報を保存するタスクを有する。さらに、コンテキストスコアDB170からの集約およびスコア結果の可視化は、ディスプレイ400上で表示するために可視化処理部142で準備される。コンソール300を介して異常検出装置100のユーザから新しい入力を受け取ると、可視化処理部142での新しい可視化またはラベルデータ採点部141でのスコアの再計算がトリガされる。これらのさらなる詳細は、図9、図10、及び図11を参照して後述する。
次に、性能データDB200について説明する。
図2は、一実施形態に係る性能データデータベースの構成図である。
性能データDB200は、2つの種類のテーブル、すなわち、データコンテキストテーブル201と、性能データテーブル202(202-1~n)とを含む。
データコンテキストテーブル201は、データコンテキスト毎のエントリを含む。データコンテキストテーブル201のエントリは、データID D20101、性能データテーブルID D20102、データコンテキスト諸元D20103、適用データコンテキスト諸元D20104、フォーマット辞書D20105、及びラベリング目標D20106のカラムを含む。
データID D20101には、性能データセット(性能データテーブル202の1つのテーブルが格納しているデータセット)に関連付けられた一意の値であるデータIDが格納される。性能データテーブルID D20102には、性能データセットを格納する性能データテーブル202-1~nのいずれかへのポインタが格納される。データコンテキスト諸元D20103には、データコンテキストの情報とみなす性能データセットを格納する性能データテーブルの列(諸元:項目)の名前が格納される。
適用データコンテキスト諸元D20104には、データコンテキスト選択部111によって選択された適用データコンテキスト諸元の情報とする性能データセットを格納する性能データテーブルの列(諸元)の名前を格納する。フォーマット辞書D20105には、オプションとするフォーマットを行う変換プログラム名と、適用する性能データテーブルの列(諸元)の名前とが対応付けられた辞書が格納される。この辞書は、例えば、異常検出装置100のユーザによって定義される。ラベリング目標D20106には、データインスタンスラベル付部130で正確なラベリング方法を選択するための情報として必要とされる、性能データセットのラベリングの目標(ラベリング目標)が格納される。
性能データテーブル202(202-1~n)は、それぞれ性能データセットを格納する。性能データテーブル202は、格納する性能データセットの種類によって異なる構成となっている。性能データテーブル202は、性能データセットにおける性能データごとのエントリ(行:データ要素)を格納する。ここで、このテーブルの以下の説明においては、性能データが、いくつかのウェブサイトへのアクセスに関する性能データである場合を例に説明する。
性能データテーブル202のエントリ(データ要素)は、例えば、時刻D20201、URI D20202、ソースIP D20203、HTTPmethod D20204、性能指標1~N D20205~D202Nのカラムを含む。この例では、URI D20202、ソースIP D20203、HTTPmethod D20204の情報が諸元情報の一例であり、性能指標1~N D20205~D202Nが性能情報の一例である。
時刻D20201には、性能データセットの各エントリのデータについての時刻情報(例えば、年月日時分秒:時間情報の一例)が格納される。URI D20202には、エントリに対応する性能データが示す通信先のウェブサイトのURI(Uniform Resource Identifier:ウェブアドレス)が格納される。本実施形態では、このURIは、データコンテキストの諸元の1つの例である。ソースIP D20203には、エントリに対応する性能データが示す通信の送信元のIPアドレス(ソースIP)が格納される。このIPアドレスは、データコンテキストの諸元の1つの例である。
HTTPmethod D20204には、性能データが示すウェブサイトへのアクセス時のhttp形式の要求方法が格納される。この要求方法は、データコンテキストの諸元の1つの一例である。性能指標1~N D20205~D202Nには、性能データにおける性能指標(メトリック値という、一般的には数値)が格納される。なお、性能指標の種類の数は任意でよく、その種類の数に応じたカラムが用意されて使用されることとなる。
次に、データインスタンス生成部110によるデータインスタンス生成処理について説明する。
図3は、一実施形態に係るデータインスタンス生成部によるデータインスタンス生成処理のフローチャートである。
データインスタンス生成部110は、処理対象のデータコンテキスト情報(データコンテキストテーブル201のエントリ)を有する性能データセット(性能データテーブルの1つ)を性能データDB200から受信する(S11001)。
次いで、データインスタンス生成部110は、データコンテキスト選択部111から適用データコンテキスト諸元を取得する(S11002)。データコンテキスト選択部111では、図4に示すデータコンテキスト選択処理により、適用データコンテキスト諸元が選択されて、データインスタンス生成部110に適用データコンテキスト諸元が送信される。データコンテキスト選択処理は、図4を用いて後述する。
次いで、データインスタンス生成部110は、適用データコンテキスト諸元における各一意値の組合せを含むリストを作成する(ステップS11003)。例えば、適用データコンテキスト諸元に含まれる諸元「URI」における一意の値として、「URI1」,「URI2」があり、適用データコンテキスト諸元に含まれる諸元「ソースID」における一意の値として、「10.0.*。*」がある場合には、データインスタンス生成部110は、これらの値を組み合わせた2つの組合せ「(URI1,10.0.*.*),(URI2,10.0.*.*)」を含むリストを作成する。
次いで、データインスタンス生成部110は、リストに含まれる各組合せ毎にループ1の処理(ステップS11004,S11005)を実行する。この処理において処理対象の組合せを対象組合せという。
ループ1の処理においては、データインスタンス生成部110は、性能データDB200の適用データコンテキスト諸元に対応する性能データテーブル200(性能データセット)から、対象組合せに対応する値を含むエントリ(行)を抽出して、対象組合せに対応するデータインスタンスを生成する(ステップS11004)。
次いで、データインスタンス生成部110は、時間に関するデータインスタンスの疎性を考慮することによってステップS11004で取得されたデータインスタンスについての理想の時間窓サイズを決定する(ステップS11005)。ここで、疎性が高い(非常に疎である:例えば、所定の閾値よりも疎性が高い)データインスタンスに対しては、より正確なラベル付けを達成するために、疎性が所定以下となるように、大きな時間窓サイズに決定される。これにより、データインスタンスにおけるエントリの数を処理に適した数に調整することができる。
データインスタンス生成部110は、1つの対象組合せに対してループ1の処理を行った後には、未処理の他の組合せを次の処理対象としてループ1の処理を行い、リストの全ての組合せを対象にループ1の処理を行った場合には、ループ1を抜けて、データインスタンス生成処理を終了する。
次に、データコンテキスト選択処理(S11002)について説明する。
図4は、一実施形態に係るデータコンテキスト選択部によるデータコンテキスト選択処理のフローチャートである。
データコンテキスト選択部111は、処理対象としているデータコンテキスト諸元の各諸元ごとにループ2の処理(ステップS11101~S11105)を実行する。ここで、処理対象としているデータコンテキスト諸元を対象データコンテキスト諸元といい、対象データコンテキスト諸元におけるループ2の処理対象としている諸元を対象諸元という。
ループ2においては、データコンテキスト選択部111は、性能データDB200のデータコンテキストテーブル201の対象データコンテキスト諸元に対応するエントリのフォーマット辞書D20105から対象諸元の値のフォーマットを変更するためのフォーマットルールを取得する(S11101)。本実施形態では、フォーマットルールは、諸元の名称に対して、適用可能なプログラムへのポインタが対応付けられた辞書形式となっている。
次いで、データコンテキスト選択部111は、ステップS11101で取得したルールが、対象諸元に対して利用可能であるか否かを判定する(S11102)。
この結果、対象諸元に対してフォーマットルールが利用可能である場合(S11102:Yes)には、データコンテキスト選択部111は、処理をステップS11105に進める。
一方、対象データコンテキスト諸元に対してフォーマットルールが利用可能でない場合(S11102:No)には、データコンテキスト選択部111は、処理をステップS11103に進める。
ステップS11103では、データコンテキスト選択部111は、方法プール150のコンテキストフォーマッティングテーブル152(図7参照)で定義されている対象諸元に対応するフォーマットルール(ここでは、エントリ)を取得する。
次いで、データコンテキスト選択部111は、コンテキストフォーマッティングテーブル152の期待正規表現フォーマットD15202の期待正規表現フォーマットに従って、対象諸元の値(データ)が期待正規表現か否かを判定することにより、対象諸元の値に対してフォーマットルールを適用するか否かを判定する(S11104)。
この結果、対象諸元の値が期待正規表現である場合(S11104:No)には、データフォーマットを変更しなくてもよいことを意味しているので、データコンテキスト選択部111は、処理をループ2の終わりに進める。
一方、対象諸元が期待正規表現でない場合(S11104:Yes)には、データフォーマットを変更する必要があることを意味しているので、データコンテキスト選択部111は、取得したエントリのフォーマット処理D15203からフォーマットを実行するプログラム(スクリプト)のポインタを取得し、処理をステップS11105に進める。
ステップS11105では、データコンテキスト選択部111は、ステップS11102で取得されたフォーマットルール又はステップS11104で取得されたプログラムに従って、対象諸元の値をフォーマットする。
データコンテキスト選択部111は、1つの対応諸元に対してループ2の処理を終えた後には、他の諸元を新たな処理対象としてループ2の処理を実行し、全ての諸元を処理対象とした後に、ループ2を抜けて、処理をステップS11106に進める。
ステップS11106では、データコンテキスト選択部111は、性能データDB200のデータコンテキストテーブル201の対象データコンテキスト諸元に対応するエントリにおけるデータコンテキスト諸元D20103のすべてのデータコンテキスト諸元(諸元のリスト)を、このエントリの適用データコンテキスト諸元D20104にコピーする。
次いで、データコンテキスト選択部111は、現在、適用データコンテキスト諸元とされているすべての諸元に基づいて、性能データセットのデータを分割し、分割によって得たデータインスタンスの疎性を評価する(S11107)。
次いで、データコンテキスト選択部111は、データインスタンスについてのデータの分割が疎すぎる(例えば、或る量のデータ行を超えるデータインスタンスがない)か否かを判定する(S11108)。
この結果、データ分割が疎すぎる場合(S11108:Yes)には、データコンテキスト選択部111は、処理をステップS11109に進める。一方、データ分割が疎すぎない場合(S11108:No)には、データ分割が適切に行われたことを意味しているので、データコンテキスト選択部111は、処理をステップS11110に進める。
ステップS11109では、データコンテキスト選択部111は、適用データコンテキスト諸元の中から最も不均一な分布を有する諸元を検出し、検出した諸元を適用データコンテキスト諸元から落とし(削除し)、処理をステップS11107に進める。例えば、データコンテキストテーブル201の1行目のエントリを処理対象としている場合には、データコンテキスト諸元のうちの諸元「HTTPmethod」は、ほとんどの値が方法タイプ「connect」である不均一な分布を有する傾向がある。この場合には、このステップにおいては、諸元「HTTPmethod」が適用データコンテキスト諸元のリストから落とされることとなる。これにより、分析処理に適していない諸元を適切にのぞくことができる。
上記したステップS11107~S11109の処理を繰り返し実行することにより、疎すぎないデータインスタンスを生成することができる適用データコンテキスト諸元を特定することができる。
ステップS11110では、データコンテキスト選択部111は、データ分割が疎すぎない場合(S11108:No)、すなわち、データ分割が適切に行われている場合における適用データコンテキスト諸元を、データコンテキストテーブル201の対応するエントリの適用データコンテキスト諸元D20104に格納する。
上記したデータコンテキスト選択処理によると、データ分割が適切に行われるデータコンテキストの諸元(適用データコンテキスト諸元)を適切に選択することができる。
次に、データインスタンス120について説明する。
図5は、一実施形態に係るデータインスタンスのデータ構成図である。
データインスタンス120(120-1~n)は、データインスタンス生成部110から得られる。データインスタンス生成部110から得られるデータインスタンスの数は、適用データコンテキスト諸元によって変わる。
データインスタンス120は、同一のデータコンテキスト(すなわち、適用データコンテキスト諸元の各諸元の値が同一であるもの)についての所定の時間区間ごとのエントリ(行:データ要素)を格納する。データインスタンス120のエントリは、時刻D12001、時間窓サイズD12002、URI D12003、ソースIP D12004、性能指標1~N D12005~D120Nのカラムを含む。
時刻D12001には、データインスタンスのエントリに対応する時間窓の代表時刻に対応する時刻情報(例えば、年月日時分秒)が格納される。時間窓サイズD12002には、データインスタンスのラベル付けに使用されるべき時間窓サイズ(推奨時間窓サイズ)に関する時間差情報を格納する。URI D12003には、エントリに対応するデータコンテキストの諸元の1つである通信先のウェブサイトのURIが格納される。ソースIP D12004には、エントリに対応するデータコンテキストの諸元の1つである通信の送信元のIPアドレスが格納される。
性能指標1~N D12005~D120Nには、エントリに対応するデータインスタンスについての性能指標(メトリック値という、一般的には数値)が格納される。なお、性能指標の種類の数は任意でよく、その種類の数に応じたカラムが使用されることとなる。
次に、データインスタンスラベル付部130によるデータインスタンスラベル付処理について、説明する。
図6は、一実施形態に係るデータインスタンスラベル付部のデータインスタンスラベル付処理のフローチャートである。
まず、データインスタンスラベル付部130は、性能データDB200のデータコンテキストテーブル201の対象エントリのラベリング目標D20106からラベリング目標を取得する(S13001)。
次いで、データインスタンスラベル付部130は、データインスタンス生成部110で生成されたデータインスタンス120を受信する(S13002)。
次いで、データインスタンスラベル付部130は、各データインスタンス120に対してループ3の処理(S13003~S13006)を実行する。ここで、処理対象のデータインスタンスを対象データインスタンスという。
ループ3の処理において、データインスタンスラベル付部130は、対象データインスタンスについて統計的特性を算出する(S13003)。例えば、データインスタンスラベル付部130が算出する統計的特性は、データインスタンスに含まれるエントリの性能指標の最大値及び最小値、性能指標についてのパーセンタイル、標準偏差、又はエントリの件数の少なくとも一つを含んでもよい。
次いで、データインスタンスラベル付部130は、S13003で算出した統計的特性と、S13001で取得したラベリング目標とに基づいて、対象データインスタンスに対してラベリングするために適用すべきラベリング方法を方法プール150から選択する(S13004)。具体的には、データインスタンスラベル付部130は、方法プール150から、ラベリング目標がラベリング目標D151N+1に設定され、統計的特性の値が、データ属性1~N D15102~D151Nの条件を満たすエントリを特定し、そのエントリのラベリング方法D15101に設定されているラベリング方法を選択する。
次いで、データインスタンスラベル付部130は、データインスタンス120の各データ行(エントリ)に対して、S13004で選択したラベリング方法に従ってイベントラベルを割り当てる(S13005)。例えば、ラベリング目標が外れ値検出(Outlier Identification)である場合には、データインスタンスラベル付部130は、ラベリング方法によって、データインスタンス120の各データ行に対して、イベントラベルとして、外れ値又は非外れ値を示すイベントラベルを割り当てる。ここで、最良のラベリング方法は、データインスタンス120の統計的特性に依存して異なる傾向がある。そこで、本実施形態では、使用するラベリング方法を、方法プール150における統計的特性に対する条件に従って選択するようにしている。ラベリング方法を選択するための統計的特性は、データインスタンスの時間、時間窓サイズ、および性能値に基づいて生成することができる。
次いで、データインスタンスラベル付部130は、データインスタンス120について、各データ行の割り当てられたイベントラベルと共に、データインスタンスラベルDB160のデータインスタンステーブル162として格納する。
次に、方法プール150について説明する。
図7は、一実施形態に係る方法プールの構成図である。
方法プール150は、2つの種類のテーブル、すなわち、ラベリング方法属性テーブル151と、コンテキストフォーマッティングテーブル152とを含む。
ラベリング方法属性テーブル151は、ラベリング方法毎のエントリを格納する。ラベリング方法属性テーブル151のエントリは、ラベリング方法D15101と、1以上のデータ属性1~N D15102~D151Nと、ラベリング目標D151N+1とのカラムを含む。
ラベリング方法D15101には、エントリに対応するラベリング方法の名称と、そのラベリング方法を実行するプログラムへのポインタとが格納される。データ属性1~N D15102~D151Nには、最良のラベリング方法を選択するために考慮すべき可能性のある統計的特性(属性)についての条件が格納される。ラベリング目標D151N+1には、エントリに対応するラベリング方法を使用することができる1または複数のラベリング目標が格納される。ラベリング目標D151N+1には、例えば、性能分析のうちの異常検出(外れ値検出)を行う場合には、「Outlier Identification」が格納される。
コンテキストフォーマッティングテーブル152は、データコンテキスト諸元のタイプ(データコンテキストタイプ)ごとのエントリを格納する。コンテキストフォーマッティングテーブル152のエントリは、データコンテキスト諸元タイプD15201、期待正規表現フォーマットD15202、フォーマット処理D15203のカラムを含む。
データコンテキスト諸元タイプD15201には、エントリに対応するフォーマットルールが提供されるデータコンテキスト諸元のタイプ(種類)の名前が格納される。期待正規表現フォーマットD15202には、エントリに対応するデータコンテキスト諸元のタイプに適合するすべてのデータコンテキスト諸元の値を抽出可能とする正規表現が格納される。フォーマット処理D15203には、プログラム(スクリプトも含む)で定義されたルールに従ってデータコンテキスト諸元のデータを正規表現に再フォーマットするためのプログラムへのポインタが格納される。
次に、データインスタンスDB160について説明する。
図8は、一実施形態に係るデータインスタンスラベルデータベースの構成図である。
データインスタンスラベルデータDB160は、2つの種類のテーブル、すなわち、データインスタンス管理テーブル161と、データインスタンステーブル162(162-1~N)とを含む。
データインスタンス管理テーブル161は、データインスタンス毎のエントリを格納する。データインスタンス管理テーブル161のエントリは、データインスタンスID D16101、URI D16102、ソースIP D16103、データインスタンステーブルD16104のカラムを含む。
データインスタンスID D16101には、エントリに対応するデータインスタンスを識別する値(データインスタンスID)が格納される。URI D16102及びソースIP D16103は、適用データコンテキスト諸元に対応するカラムであり、適用データコンテキスト諸元に含まれる諸元によって、異なるカラムとなる。URI D16102には、エントリに対応するデータインスタンスについての適用データコンテキスト諸元であるURIの値、すなわち、通信先のウェブサイトのURI(ウェブアドレス)が格納される。ソースIP D16103には、エントリに対応するデータインスタンスについての適用データコンテキスト諸元であるソースIPの値、すなわち、通信の送信元のIPアドレス(ソースIP)が格納される。データインスタンステーブルD16104には、エントリに対応するデータインスタンスに対応するデータインスタンステーブル162(162-1~Nのいずれか)へのポインタが格納される。
データインスタンステーブル162-1~Nのそれぞれは、データインスタンス毎に設けられ、各データインスタンスに対応するエントリ(データ要素)を格納する。データインスタンステーブル162のエントリは、時刻D16201、性能指標1~N D16202~D162N、イベントラベルD162N+1のカラムを含む。
時刻D16201には、エントリに対応するデータについての時刻情報(例えば、年月日時分秒)が格納される。性能指1~N D16202~D162Nには、エントリに対応するデータについての性能指標(メトリック値という、一般的には数値)が格納される。イベントラベルD162N+1には、エントリのデータに対して、データインスタンスラベル付部130によって割り当てられたイベントラベルが格納される。イベントラベルD162N+1には、例えば、異常検出の対象のデータインスタンスについては、エントリのデータが正常である場合には、正常を示す「-1」が格納され、異常である場合には、異常を示す「1」が格納される。
次に、ラベルデータ採点部141によるラベルデータ採点処理について説明する。
図9は、一実施形態に係るラベルデータ採点部によるラベルデータ採点処理のフローチャートである。
ラベルデータ採点部141は、データインスタンスラベルDB160からラベル付けされたデータインスタンス(データインスタンステーブル162)を取得し、一意のイベントラベルの値(ラベル値)をすべての抽出する(S14101)。
次いで、ラベルデータ採点部141は、データインスタンスの生成に使用したデータコンテキストの適用データコンテキスト諸元の各諸元についての全ての可能な組合せ(諸元組合せ)を含むリストを作成する(S14102)。例えば、適用データコンテキスト諸元が、「URI」,「ソースIP」である場合には、ラベルデータ採点部141は、(「URI」,「ソースIP」),(「URI」),(「ソースIP」)の3つの諸元組合せを含むリストを生成する。
必要に応じて、ラベルデータ採点部141は、現在与えられている集約時間窓(例えば、デフォルトとして、又は、後述する表示画面を介して与えられている集約時間窓)に再サンプリングする(S14103)。例えば、集約時間窓のサイズが1時間である場合には、ラベルデータ採点部141は、1分間の時間窓のデータを、加算し、又はカウントすることによって、1時間の時間窓のデータに再サンプリングする。
次いで、ラベルデータ採点部141は、ステップS14101で抽出した各ラベル値についてループ4の処理(S14104~S14108)を実行する。ここで、処理の対象となっているラベル値を対象ラベル値という。
ループ4の処理においては、ラベルデータ採点部141は、ステップS14102で取得された各諸元組合せについてループ5の処理(S14104~S14106)を実行する。ここで、処理対象となっている諸元組合せを対象諸元組合せという。
ループ5の処理では、ラベルデータ採点部141は、データインスタンスについて、対象諸元組合せ、対象ラベル値、及び与えられている集約時間窓の集合に従ってデータを集約する(S14104)。例えば、対象諸元組合せが「URI」である場合には、適用データコンテキスト諸元の他の諸元については考慮せずに、対象諸元組合せの諸元の値(同じURIの値)及び対象ラベル値を有するデータ行について、対象ラベル値の加算またはデータ行の数をカウントすることにより、データの集約を行う。
次いで、ラベルデータ採点部141は、集約されたデータ(集約データ)に対する性能評価結果(ここでは、異常)についてのスコアを、現在の時間窓内のデータと、同様のデータについての過去(所定の時間前、例えば、1週間前)の時間窓内のデータとを比較することによって計算する(S14105)。例えば、ラベルデータ採点部141は、過去からの集約データの変化量に基づいて、ランク付けし、例えば、最大の変化を有する集約データに対して最高のスコアを与える。具体的には、例えば、ランク付けは、変化量が小さいほど低いランク(数値が小さいランク)とし、変化量とランクとを乗算した結果をスコアとする。本実施形態では、スコアが大きいほど異常が発生している可能性が高いことを示す。
次いで、ラベルデータ採点部141は、ステップS14104での集約データと、ステップS14105で計算したスコアとを、コンテキストスコアDB170に格納する(S14106)。
ラベルデータ採点部141は、ループ5の処理を全ての諸元組合せを対象に実行し、すべての諸元組合せに対してループ5の処理を終了した場合には、ループ5を抜ける。
ループ5を抜けると、ラベルデータ採点部141は、ループ5の処理において得られた各諸元組合せの集約データに対して得られたスコアに基づいて、対応するデータコンテキストに対する総合スコアを算出する(S14107)。本実施形態では、総合スコアは、例えば、各スコアを合計した値としている。
次いで、ラベルデータ採点部141は、ステップS14107で算出した総合スコアをコンテキストスコアDB170のデータコンテキストスコアテーブル172の総合スコアD17210に格納する(S14108)。
ラベルデータ採点部141は、ループ4の処理を全てのラベル値を対象に実行し、すべてのラベル値に対してループ4の処理を終了した場合には、ループ4を抜け、ラベルデータ採点処理を終了する。
次に、コンテキストスコアDB170について説明する。
図10は、一実施形態に係るコンテキストスコアデータベースの構成図である。
コンテキストスコアDB160は、2つの種類のテーブル、すなわち、データコンテキスト集約テーブル171と、データコンテキストスコアテーブル172とを含む。
データコンテキスト集約テーブル171は、適用データコンテキスト諸元の値毎に所定の集約時間で集約した集約データセット毎のエントリ(データ要素)を格納する。データコンテキスト集約テーブル171のエントリは、時刻D17101、データコンテキスト(URI D17102、ソースIP D17103)、及びデータコンテキストベースの集約(集約URI D17104、集約ソースIP D17105、集約URI×ソースIP D17106)のカラムを含む。
時刻D17101には、エントリに対応する集約データセットの集約時間の基準となる代表時刻(例えば、集約時間の最初の時刻)についての時刻情報(例えば、年月日時分秒)が格納される。
データコンテキスト(URI D17102、ソースIP D17103)には、エントリに対応する集約データセットにおける適用データコンテキスト諸元ごとの値(データコンテキスト値)が格納される。URI D17102には、エントリに対応する集約データセットについてのURIの値、すなわち、通信先のウェブサイトのURI(ウェブアドレス)が格納される。ソースIP D17103には、エントリに対応する集約データセットについてのソースIPの値、すなわち、通信の送信元のIPアドレス(ソースIP)が格納される。
データコンテキストベースの集約(集約URI D17104、集約ソースIP D17105、集約URI×ソースIP D17106)には、所定の集約時間に対応するデータセットにおける適用データコンテキスト諸元についての諸元の組合せごとのデータの集約値が格納される。集約URI D17104には、エントリに対応するデータセットにおけるURIの値が共通するデータの数が格納される。集約ソースIP D17105には、エントリに対応するデータセットにおけるソースIPの値が共通するデータの数が格納される。集約URI×ソースIP D17106には、エントリに対応するデータセットにおけるURIの値及びソースIPの値が共通するデータの数が格納される。
データコンテキストスコアテーブル172は、適用データコンテキスト諸元の値毎に所定の集約時間で集約した集約データセット毎のエントリを格納する。データコンテキストスコアテーブル172のエントリは、時刻D17201、URI D17202、ソースIP D17203、URI差(ランク)D17204、ソースIP差(ランク)D17205、URI×ソースIP差(ランク)D17206、URIスコアD17207、ソースIPスコアD17208、URI×ソースIPスコアD17209、及び総合スコアD17210のカラムを含む。
時刻D17201には、エントリに対応する集約データセットの集約時間の基準となる代表時刻(例えば、集約時間の最初の時刻)についての時刻情報(例えば、年月日時分秒)が格納される。URI D17202、ソースIP D17203には、エントリに対応する集約データセットの適用データコンテキスト諸元の各諸元の値が格納される。
URI差(ランク)D17204、ソースIP差(ランク)D17205、URI×ソースIP差(ランク)D17206には、集約データセットにおける各諸元組合せについての現在(例えば、今週)の値と過去(例えば、先週)の値との絶対値の差と、集約データセット間での各諸元組合せの絶対値差のランクとが格納される。これらのカラムの情報は、スコアを計算するために用いることができ、例えば、絶対値差、絶対値差のランク、現在の値と過去の値とのランクの絶対値の差等を用いることができる。
URIスコアD17207、ソーススコアD17208、URI×ソースIPスコアD17209には、適用データコンテキスト諸元の各諸元組合せについてのスコアが格納される。総合スコアD17210には、カラムD17207~D17209のスコアを用いて、所定の計算式(例えば、スコアの加算)を実行することにより得られる総合スコアが格納される。
次に、可視化処理部142による可視化処理について説明する。
図11は、一実施形態に係る可視化処理部による可視化処理のフローチャートである。
可視化処理部142は、コンテキストスコアDB170から集約データとスコア情報を取得する(S14201)。
次いで、可視化処理部142は、集約データに対応する各スコアについて、各スコアに対して予め定義されている閾値よりも大きいスコアがあるか否かを判定する(S14202)。
この結果、閾値よりも大きいスコアがある場合(S14202:Yes)には、可視化処理部142は、オペレータに警報を送信し(S14203)、処理をステップS14204に進める。一方、閾値よりも大きいスコアがない場合(S14202:No)には、処理をステップS14204に進める。
ステップS14204では、可視化処理部142は、ステップS14201で取得した集計データ及びスコア情報を可視化する。具体的には、可視化処理部142は、集計データ及びスコア情報により表示画面のデータを生成して、表示画面(図13参照)をディスプレイ400に表示させる。
次いで、可視化処理部142は、異常検出装置100のユーザによるコンソール300からの入力を待つ(S14205)。コンソール300に対する入力としては、集約期間の変更や、表示させない諸元の値の設定等の表示内容の変更指示の入力がある。
次いで、可視化処理部142は、ステップS14205で入力された変更指示に対応する画面の表示に必要なデータがコンテキストスコアDB170において使用可能であるか否かを判定する(S14206)。
この結果、必要なデータがコンテキストスコアDB170において使用可能である場合(S14206:Yes)には、可視化処理部142は、コンテキストスコアDB170から必要な集約データとスコア情報とを取得し(S14207)、処理をステップS14204に進める。
一方、必要なデータがコンテキストスコアDB170において使用可能でない場合(S14206:No)には、可視化処理部142は、ユーザからの入力に基づいて、集約及びスコア付けに関連するパラメータ(例えば、時間窓サイズ、特定のデータコンテキスト諸元の値の表示除外等)を更新する(S14208)。
次いで、可視化処理部142は、集約及びスコア付けに関連するパラメータをラベルデータ採点部141に送信し、ラベルデータ採点部141による新たなパラメータを使用してのラベルデータ採点処理を実行させ(S14209)、可視化処理を終了する。なお、新たなパラメータを使用してのラベルデータ採点処理が実行された後には、新たに、可視化処理が実行されて表示画面が表示されることとなる。
次に、異常検出装置100のハードウェア構成について説明する。
図12は、一実施形態に係る異常検出装置のハードウェア構成図である。
異常検出装置100は、例えば、汎用コンピュータであり、CPU(Central Processing Unit)601と、メモリ602と、補助記憶装置603と、通信インタフェース604と、媒体インタフェース605と、入出力インタフェース606とを含む。
CPU601は、メモリ602又は補助記憶装置603に格納されたプログラムを実行し、メモリ602又は補助記憶装置603に格納されたデータを使用することにより各種処理を実行する。メモリ602は、例えば、RAM(Random Access Memory)であり、CPU601によって実行されるプログラムや、データ等を記憶する。補助記憶装置603は、例えば、ハードディスクドライブ、フラッシュメモリ、RAM等であり、CPU601により実行されるプログラムや、CPU601によって使用されるデータを記憶する。
通信インタフェース604は、ネットワーク608を介して、他の装置と通信するためのインタフェースである。媒体インタフェース605は、外部記憶媒体607を着脱可能であり、外部記憶媒体607とのデータの入出力を仲介する。入出力インタフェース606は、異常検出装置100の管理者やユーザによって操作されるコンソール300やディスプレイ400と接続可能であり、コンソール300との情報の入出力を実行したり、ディスプレイ400への表示を実行する。
図1における異常検出装置100の各機能部は、例えば、CPU601がメモリ602又は補助記憶装置603に格納されたプログラム(性能分析プログラム)を実行することにより実現される。また、機能部(方法プール150、データインスタンスラベルDB160、コンテキストスコアDB170)で管理される情報は、記憶部の一例であるメモリ602又は補助記憶装置603に格納される。
CPU601が実行するプログラムは、必要に応じて通信インタフェース604を介して他の装置から取得してもよいし、媒体インタフェース605を介して利用可能な記憶媒体から読み出して取得してもよい。記憶媒体は、例えば、媒体インタフェース605に着脱可能な通信媒体(すなわち、有線、無線、光ネットワーク、ネットワークを伝搬するキャリアやデジタル信号)や外部記憶媒体607である。
次に、GUIの画面例を説明する。
図13は、一実施形態に係るGUIの画面例を示す図である。なお、図13の画面は、後述するコンテキスト1(URI)のコンテキストタブ401-1が選択されている場合の例を示している。
ディスプレイ400に表示される画面1300は、コンテキストタブ401(401-1~401-7)、ヒートマップ402(図13では、402-1)、上位外れ値リスト403(図13では、403-1)、閾値表示領域404(図13では、404-1)を含む。画面1300における表示内容は、可視化処理部142から送信される情報に基づいて、適宜更新される。
コンテキストタブ401は、適用データコンテキスト諸元における各諸元組合せについての可視化コンテンツを含めるためのコンテナであり、諸元組合せの個数分のタブが備えられる。例えば、適用データコンテキスト諸元が3つの諸元を含む場合には、コンテキストタブ401は、コンテキストタブ401-1~401-7の7個となる。図13の例では、コンテキストタブ401-1が選択されているので、コンテキストタブ401-1が強調表示されている。
ヒートマップ402は、適用データコンテキスト諸元の選択されている諸元組合せ(すなわち、選択されているコンテキストタブ401に対応する諸元組合せにおける、いくつかの諸元の値についてのスコアのマップである。図13の例では、ヒートマップ402-1は、諸元組合せをURIとした場合における、いくつかのURIの値に対するスコアのマップとなっている。ヒートマップによると、諸元組合せのいずれの値において、最大の異常が発生したかを容易に把握することができる。
上位外れ値リスト403は、スコアが上位の所定数の諸元組合せにおける値を可視化したリストである。図13の例では、上位外れ値リスト403は、諸元組合せをURIとした場合のスコアが上位のURIとして、URI1、URI2、URI3・・・の順番で並んでいるリストとなっている。なお、図13の上位外れ値リスト403においては、高いスコアを有するが可視化する必要がない諸元の値を、リストから除外するためのチェックボックス4031-1等が用意されている。また、上位外れ値リスト403には、考慮対象とする開始時間および終了時間や、可視化のための集約時間窓サイズ(Aggregation)を表示し、設定可能な領域がある。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、異常を検出する異常検出装置を例にしていたが、本発明はこれに限られず、各種装置の性能を分析する装置にも適用することができる。
また、上記実施形態において、CPUが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
また、上記実施形態においては、ITシステムの運用管理での利用を想定した性能検出装置について説明したが、本発明はこれに限られず、データコンテキストに基づいてデータを分割してデータインスタンスを生成するケースにおいても性能分析装置を使用してもよく、例えば、OT(Operational Technology)においても性能分析装置を使用してもよい。