(57)【要約】      （修正有）【課題】ログ間のラグ変動が可変的であることを考慮したログ間の因果推定技術等を提供する。【解決手段】監視対象システム群２００から取得された複数リソースの時系列ログに基づいて、ログ間の因果関係を推定するログ分析装置１００において、２つのログ間のスパイク発生時刻のラグを測定し、２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、２つのログ間の因果の方向と因果の強さを推定するログ間因果推定部１２０と、推定されたログ間の因果に基づいてシステム全体の異常を検知する因果に基づくシステム異常検知部１３０と、を備える。【選択図】図１
2016045556.tif 000002
【特許請求の範囲】
【請求項１】
監視対象システムから取得された複数リソースの時系列ログに基づいて、ログ間の因果を推定するログ間因果推定装置であって、
２つのログ間のスパイク発生時刻のラグを時系列で抽出するラグ抽出手段と、
前記ラグ抽出手段により抽出されたラグにおいて、前記２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、前記２つのログ間の因果の方向と因果の強さを推定する因果推定手段と
を備えることを特徴とするログ間因果推定装置。
【請求項２】
前記ラグ抽出手段は、予め検索ウィンドウ閾値ΔＴを保持し、前記２つのログを時系列に走査し、いずれかのログにおいて時刻ｔに第１のスパイクを検知した場合に、他方のログにおいて時刻ｔ±ΔＴにスパイクが存在するか否かを判定し、該当するスパイクが存在する場合に、最も時刻ｔに近いスパイクを第２のスパイクとして選択し、第１のスパイクと第２のスパイクの発生時刻の時間差を時刻ｔにおける２つのログ間のラグとする
ことを特徴とする請求項１に記載のログ間因果推定装置。
【請求項３】
前記ラグ抽出手段で抽出されたラグの正負の方向が反転している期間が所定閾値よりも大きい場合、ある時刻を境にラグの方向が大きく変化すること、又はある時刻を境にラグの方向が不安定になることが継続することを検知した場合に、当該時刻を異常発生時刻として検出するログ間異常検知手段
を更に備えることを特徴とする請求項１又は２に記載のログ間因果推定装置。
【請求項４】
監視対象システムから取得された複数リソースの時系列ログから得られたログ間の因果を表す因果グラフに基づいて、当該システムの異常を検知するシステム異常検知装置であって、
第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフとを比較し、因果が追加、削除、又は反転された箇所を抽出する因果変化抽出手段と、
前記因果変化抽出手段により抽出された、第１の因果グラフと第２の因果グラフとの間の因果の変化に基づいて、前記システムにおける異常の要因を検出する異常要因検出手段と
を備えることを特徴とするシステム異常検知装置。
【請求項５】
前記異常要因検出手段は、前記因果が変化した箇所についての因果を逆に辿ることで異常の要因を検出する
ことを特徴とする請求項４に記載のシステム異常検知装置。
【請求項６】
前記異常要因検出手段は、
既知の異常箇所の情報に基づいて、第１の因果グラフと第２の因果グラフとの間の因果の変化パターンと、異常箇所との対応関係を因果変化パターンデータベースに記録する学習手段と、
異常箇所が未知の因果の変化パターンと前記因果変化パターンデータベースとを照合することにより、当該因果の変化パターンにおける異常箇所を判定する判定手段と
を備えることを特徴とする請求項４に記載のシステム異常検知装置。
【請求項７】
監視対象システムから取得された複数リソースの時系列ログに基づいて、ログ間の因果を推定して、当該システムの異常を検出するログ分析システムであって、
２つのログ間のスパイク発生時刻のラグを時系列で抽出するラグ抽出手段と、
前記ラグ抽出手段により抽出されたラグにおいて、前記２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、前記２つのログ間の因果の方向と因果の強さを推定する因果推定手段と、
前記因果推定手段により推定される因果の方向と因果の強さに基づいて、第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフを推定するグラフ推定手段と、
第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフとを比較し、因果が追加、削除、又は反転された箇所を抽出する因果変化抽出手段と、
前記因果変化抽出手段により抽出された、第１の因果グラフと第２の因果グラフとの間の因果の変化に基づいて、前記システムにおける異常の要因を検出する異常要因検出手段と
を備えることを特徴とするログ分析システム。
【請求項８】
監視対象システムから取得された複数リソースの時系列ログに基づいて、ログ間の因果を推定して、当該システムの異常を検出するログ分析システムが実行するログ分析方法であって、
２つのログ間のスパイク発生時刻のラグを時系列で抽出するラグ抽出ステップと、
前記ラグ抽出ステップにより抽出されたラグにおいて、前記２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、前記２つのログ間の因果の方向と因果の強さを推定する因果推定ステップと、
前記因果推定ステップにより推定される因果の方向と因果の強さに基づいて、第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフを推定するグラフ推定ステップと、
第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフとを比較し、因果が追加、削除、又は反転された箇所を抽出する因果変化抽出ステップと、
前記因果変化抽出ステップにより抽出された、第１の因果グラフと第２の因果グラフとの間の因果の変化に基づいて、前記システムにおける異常の要因を検出する異常要因検出ステップと
を備えることを特徴とするログ分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムから得られる時系列ログデータからログ間の関係性を抽出し、更にその関係性の変化からシステムの異常検知及び異常箇所特定を行う技術に関連するものである。
【背景技術】
【０００２】
データセンタの拡大やシステムの仮想化を背景に、システムから収集されるログの種類や数が急激に増加している。これら大量のログ（以下、大規模ログ）をオペレータが逐次監視することは難しく、障害の発生要因となるログの異常を早期かつ自動的に検知することが課題の一つである。一方で、システムに障害が発生後、そのシステムが複雑に構成されている場合は障害要因の特定も容易ではなく、システム復旧までの時間が長引くことが多い。従って、大規模ログに基づく障害要因特定も大きな課題である。
【０００３】
上記課題を解決するアプローチの一つに、システムのログ間もしくはサーバリソースの依存関係の方向に着目した研究がある。例えば非特許文献１、２には、ある２つの時系列ログ（Ｘ，Ｙ）が与えられた時に、その時刻のズレ幅が固定的であり、時刻によって変化しないことを仮定したアルゴリズムを用いて、それら２つの時系列ログの関係性を抽出する技術が開示されている。
【０００４】
具体的には、非特許文献１では、時系列ログのＧｒａｎｇｅｒ因果テストを用いてＸとＹの因果の向きを判定する仮定で、ＸとＹのラグ係数（ラグ：時系列変動のズレ）を計算する。そのラグ係数はＸ、Ｙに対して固定値である。同様に非特許文献２には、ＸとＹに対して、それらの相関係数が最も大きくなるラグ係数を選択し、その値の正負に基づいて、ＸとＹの因果を判定することが開示されている。そのラグ係数はＸ、Ｙ毎に固定値である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】ARNOLD, Andrew; LIU, Yan; ABE, Naoki. Temporal causal modeling with graphical granger methods. In: Proceedings of the 13th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2007. p. 66-75.
【非特許文献２】Pengfei Chen, Yong Qi, Pengfei Zheng, Di Hou, "CauseInfer Automatic and Distributed Performance Diagnosis with Hierarchical Causality Graph in Large Distributed Systems", proceedings of IEEE/INFOCOM 2014, pp1887-1895, 2014.
【非特許文献３】SAKOE, Hiroaki; CHIBA, Seibi. Dynamic programming algorithm optimization for spoken word recognition. Acoustics, Speech and Signal Processing, IEEE Transactions on, 1978, 26.1: 43-49.
【非特許文献４】RFC1157 "SNMP", http://www.ietf.org/rfc/rfc1157.txt
【非特許文献５】DSTAT: Versatile Resource Statistics Tool, http://dag.wiee.rs/home-made/dstat/
【非特許文献６】P . Spirtes, C. Glymour, and R. Scheines. Causation, Prediction, and Search. The MIT Press, 2ndedition, 2000.
【非特許文献７】YAN, Xifeng; YU, Philip S.; HAN, Jiawei. Substructure similarity search in graph databases. In: Proceedings of the 2005 ACM SIGMOD international conference on Management of data. ACM, 2005. p. 766-777.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のように、従来技術では、ラグ係数が固定値である。しかしながら、現実のシステムでは、ログ間のラグが動的に変化する場合がある。ラグが動的に変化するケースに対して、ラグ係数が固定値である方式を用いる非特許文献１、２の技術では、ラグが変化する頻度が大きい場合に、そのラグの変化を考慮して因果を判定することは難しい。一方で、時系列ログを観測する最中に、特定リソースに大きな負荷が生じた場合に、そのリソースに関わる因果に関して、因果の方向が不安定化もしくは反転する事象も観測されている。従来技術では時系列データの途中における因果の変化は想定していない。
【０００７】
また、上記従来技術は、ある２つのリソース間の因果を推定する手法である。しかし、システムの障害要因を特定する場合は、システム全体の因果の繋がりを考慮する必要がある。
【０００８】
本発明は上記の点に鑑みてなされたものであり、ログ間のラグ変動が可変的であることを考慮したログ間の因果推定技術を提供することを目的とする。また、本発明は、システム全体の因果の繋がりを考慮して、従来よりも高精度にシステムの障害要因の特定を行うことを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の実施の形態によれば、監視対象システムから取得された複数リソースの時系列ログに基づいて、ログ間の因果を推定するログ間因果推定装置であって、
２つのログ間のスパイク発生時刻のラグを時系列で抽出するラグ抽出手段と、
前記ラグ抽出手段により抽出されたラグにおいて、前記２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、前記２つのログ間の因果の方向と因果の強さを推定する因果推定手段とを備えることを特徴とするログ間因果推定装置が提供される。
【００１０】
また、本発明の実施の形態によれば、監視対象システムから取得された複数リソースの時系列ログから得られたログ間の因果を表す因果グラフに基づいて、当該システムの異常を検知するシステム異常検知装置であって、
第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフとを比較し、因果が追加、削除、又は反転された箇所を抽出する因果変化抽出手段と、
前記因果変化抽出手段により抽出された、第１の因果グラフと第２の因果グラフとの間の因果の変化に基づいて、前記システムにおける異常の要因を検出する異常要因検出手段とを備えることを特徴とするシステム異常検知装置が提供される。
【００１１】
また、本発明の実施の形態によれば、監視対象システムから取得された複数リソースの時系列ログに基づいて、ログ間の因果を推定して、当該システムの異常を検出するログ分析システムであって、
２つのログ間のスパイク発生時刻のラグを時系列で抽出するラグ抽出手段と、
前記ラグ抽出手段により抽出されたラグにおいて、前記２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、前記２つのログ間の因果の方向と因果の強さを推定する因果推定手段と、
前記因果推定手段により推定される因果の方向と因果の強さに基づいて、第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフを推定するグラフ推定手段と、
第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフとを比較し、因果が追加、削除、又は反転された箇所を抽出する因果変化抽出手段と、
前記因果変化抽出手段により抽出された、第１の因果グラフと第２の因果グラフとの間の因果の変化に基づいて、前記システムにおける異常の要因を検出する異常要因検出手段とを備えることを特徴とするログ分析システムが提供される。
【発明の効果】
【００１２】
本発明の実施の形態により、ログ間のラグ変動が可変的であることを考慮したログ間の因果推定技術を提供することができる。また、システム全体の因果の繋がりを考慮して、従来よりも高精度にシステムの障害要因の特定を行うことを可能とする技術が提供される。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係るシステム構成図である。
【図２】２つのリソースログを比較した際に、スパイク観測時間の時刻のラグが可変である事例を示す図である。
【図３】時系列のラグ抽出手順において使用される検索ウィンドウ閾値を説明するための図である。
【図４】時系列のラグ抽出手順を示すフローチャートである。
【図５】因果の推定及び異常検知の手順を示すフローチャートである。
【図６】因果の推定の具体例を示す図である。
【図７】異常要因推定のための手順を示すフローチャートである。
【図８】図７に示す手順における具体的な分析例を示す図である。
【図９】因果の変化パターンの学習に基づく異常要因箇所推定方法を説明するための図である。
【図１０】因果の変化パターンの学習に基づく異常要因箇所推定方法の具体例を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。本発明は、時系列ログデータを計測可能なあらゆるシステムに適用可能である。
【００１５】
（システム構成、手順概要）
図１に、本発明の実施の形態におけるシステムの構成例を示す。図１に示すように、本実施の形態のシステムは、ログ分析装置１００と監視対象システム群２００を有し、ログ分析装置１００と監視対象システム群２００とは、通信ネットワークにより通信可能に接続されている。なお、ログ分析装置１００は監視対象システム群２００から通信ネットワークを介してログを取得することの他、オフラインでログを取得することとしてもよい。
【００１６】
図１に例示されるように、監視対象システム群２００には、種々のリソースを含むサーバ、ネットワーク機器等の時系列ログデータが得られるあらゆる機器が含まれる。本実施の形態は、サーバ、ネットワーク機器、プロセス、サービス等から得られるログを対象とし、当該ログの例としてＣＰＵ使用率（ＣＰＵ負荷）、ネットワーク帯域使用率、ストレージ負荷、サービスに対するクエリ数、ユーザからシステムへの要求受付数、システムからユーザへの応答数、システムを構成するプロセス間の通信発生数等がある。また、本実施の形態における「リソース」は、特定のものに限定されないが、例えば、ＣＰＵ、メモリ、ネットワーク、ストレージ等である。
【００１７】
ログ分析装置１００は、監視対象システム群２００から時系列のログを取得し、当該ログを分析することにより、ログ間の因果関係の推定や異常検知等を行う装置である。
【００１８】
図１に示すように、ログ分析装置１００は、時系列ログ収集部１１０、ログ間因果推定部１２０、因果に基づくシステム異常検知部１３０を有する。ログ間因果推定部１２０は、ログ間因果判定部１２１とログ間異常検知部１２２を有し、因果に基づくシステム異常検知部１３０は、システム因果推定部１３１とシステム異常検知部１３２を有する。以下、ログ分析装置１００における各機能部の機能概要を説明する。
【００１９】
＜時系列ログ収集部１１０＞
時系列ログ収集部１１０は、監視対象システム群２００から一定時間間隔でログ（ログデータ）を収集する。ログの収集方法は特定の方法に限定されないが、既存手法が適用可能であり、例えばＳｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ＳＮＭＰ）（非特許文献４）を利用したリモートからのログ収集や、監視対象のサーバ側においてｄｓｔａｔ（非特許文献５）のツールを利用したログ収集方式を利用できる。最終的に蓄積される情報が時系列ログデータであれば、ログの収集方式は問わない。ただし、本実施の形態における技術を適用する場合の制約条件として、ログの収集時刻は、複数ログ間で共通かつ厳密に合わせる必要がある。
【００２０】
＜ログ間因果推定部１２０＞
ログ間因果推定部１２０は、ログ間（リソース間）の因果推定を行う機能部である。ログ間因果推定部１２０が実行する手順を手順Ａと呼び、後述するフローチャートにおいて、ログ間因果推定部１２０が実行するステップ番号には「Ａ」が付されている。
【００２１】
ログ間因果推定部１２０におけるログ間因果判定部１２１は、時系列ログ収集部１１０で収集した時系列ログデータから、任意の２つのログ（例：１つのログは１つのリソースに対応）を選択して、当該２ログ間の因果を推定する（手順Ａ１）。また、ログ間異常検知部１２２は、因果の変化に基づき異常を検出する（手順Ａ２）。
【００２２】
より具体的には、ログ間因果判定部１２１は、手順Ａ１において、比較対象の２つのログにおけるスパイクの発生時刻のラグ（時刻のずれ幅）を考慮して、ログ間の因果を推定する。なお、スパイクとは時系列ログデータにおいて値が急激に上昇する地点であり、スパイクの検出は、例えば、非特許文献７等に記載の既存アルゴリズムを適用できる。
【００２３】
参考として、図２に、実システムの２つリソースで観測されたログと、両者で発生したスパイクの時刻のラグの例を示す。図２に示すように、２つのログ間スパイクのラグは時間によって異なるため、ログ間因果判定部１２１により、この特徴を捉えることとしている。
【００２４】
図１におけるログ間異常検知部１２２は、手順Ａ２において、ログ間の因果が、ある時刻において急激に変化した場合に、それを異常として検知することで、当該２ログ間の関係において異常が発生したことを検知する。
【００２５】
＜因果に基づくシステム異常検知部１３０＞
因果に基づくシステム異常検知部１３０は、因果に基づいて、システム全体の異常を検知する機能部である。因果に基づくシステム異常検知部１３０が実行する手順を手順Ｂと呼び、後述するフローチャートにおいて、因果に基づくシステム異常検知部１３０が実行するステップ番号には「Ｂ」が付されている。
【００２６】
因果に基づくシステム異常検知部１３０におけるシステム因果推定部１３１は、手順Ａで推定したログ間の因果関係からシステム全体の因果構造を構築する（手順Ｂ１）。また、システム異常検知部１３２は、手順Ａで観測された因果の方向の急激な変化や逆転に基づいて、システムの異常を引き起こすきっかけとなったログを推定する（手順Ｂ２）。
【００２７】
システム因果推定部１３１により実行される手順Ｂ１は、手順Ａの結果を元にシステム全体の因果構造を推定する手順であり、本実施の形態ではこの手順の実行に、既存方式であるＰＣ−ａｌｇｏｒｉｔｈｍ（非特許文献６）等の因果推定アルゴリズムを適用することを想定する。なお、ＰＣ−ａｌｇｏｒｉｔｈｍを適用することは一例に過ぎない。手順Ｂ２の詳細は後述する。
【００２８】
以上、各機能部の概要を説明したが、ログ分析装置１００における機能の区分は上記に限られるわけではなく、手順Ａ、手順Ｂを実行できるのであれば、上記の機能区分以外の機能区分を持つ装置であってもよい。
【００２９】
また、ログ間因果推定部１２０と、因果に基づくシステム異常検知部１３０は、それぞれ単独でログ分析装置１００に備えられていてもよい。つまり、ログ間因果推定部１２０により実行された手順Ａの結果は、因果に基づくシステム異常検知部１３０により利用されることは必須ではない。また、因果に基づくシステム異常検知部１３０は、ログ間因果推定部１２０により実行された手順Ａの結果を入力とすることの他、既存方式により得られた因果グラフを入力として手順Ｂを実行することもできる。
【００３０】
なお、因果に基づくシステム異常検知部１３０を備えずにログ間因果推定部１２０を備える装置をログ間因果推定装置と呼び、ログ間因果推定部１２０を備えずに因果に基づくシステム異常検知部１３０を備える装置をシステム異常検知装置と呼んでもよい。また、ログ分析装置１００は、ログ分析システムと呼んでもよい。また、図１に示すログ分析装置（ログ分析システム）は、ログ間因果推定装置の例であるとともに、システム異常検知装置の例でもある。
【００３１】
本実施の形態に係るログ分析装置１００は、例えば、１つ又は複数のコンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、ログ分析装置１００が有する機能は、当該コンピュータに内蔵されるＣＰＵやメモリ、ハードディスクなどのハードウェア資源を用いて、ログ分析装置１００で実施される処理に対応するプログラムを実行することによって実現することが可能である。より詳細には、例えば、ログ、ラグ、グラフ等のデータは、メモリ等の記憶手段に記憶されるとともに、プログラムに従って適宜読み出されてＣＰＵで処理され、処理後のデータが記憶手段に記憶される。
【００３２】
上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【００３３】
上記のようにコンピュータとプログラムで実現できる点は、ログ間因果推定装置、システム異常検知装置についても同様である。
【００３４】
（手順の詳細）
以下、各手順について、より詳細に説明する。
【００３５】
＜ログ間因果判定部１２１：手順Ａ１のラグ変化抽出処理＞
まず、ログ間因果判定部１２１が実行する手順Ａ１におけるラグ変化抽出処理について説明する。手順Ａ１におけるラグ変化抽出処理では、図２で示したように比較対象の２つの時系列ログデータ間のラグが動的に変化する場合において、両者の時系列において短時間内に同時に発生したスパイク同士のラグを測定することで、両者の時系列間の動的なラグの変化を抽出する。
【００３６】
手順Ａ１の内容を図３、図４を参照して説明する。手順Ａ１におけるラグ変化抽出処理では、図３に示すように、事前に検索ウィンドウ閾値ΔＴを定めておく。このΔＴは適用対象のログや測定時間の幅によって調整が必要である。すなわち、ΔＴが大きい場合、より大きい時間幅のラグを検出できる一方で、スパイクが頻繁に発生するログにおいては、因果関係が存在しないスパイクと紐付けられる可能性が高くなり、推定される因果の方向が逆に誤検知される可能性がある。一方でΔＴを小さくした場合、短い時間におけるスパイク同士が紐付けられるため、因果関係の誤検知は少なくなる一方で、過負荷等によりラグの大幅な変化の検知が難しくなる。ΔＴは上記を踏まえて、比較対象のスパイクの発生頻度やログの測定間隔を考慮して、設定する。
【００３７】
図４のフローチャートに沿って、手順Ａ１の内容を説明する。まず、ステップＡ１１において、基準時刻ｔ´から時間経過の方向に２つの時系列ログ（例：図２に示す２つのリソースのログ）を同時に走査していき、どちらか一方のログにおけるスパイクを検知する。この時、スパイクが観測されたログをＸ、他方のログをＹとし、スパイクの観測時刻をｔとおく。スパイクを検知したときにステップＡ１２へ移行する。
【００３８】
ステップＡ１２において、ステップＡ１１でスパイクを検知したログ（Ｘ）に対し、他方のログ（Ｙ）において、時刻ｔ±ΔＴの範囲にスパイクが存在するかを検索する。該当するスパイクが存在した場合はステップＡ１３に移行し、最もｔに近いスパイクを選択してＸとＹのスパイク同士を紐付ける。その際のＸのスパイク発生時刻ｔとＹのスパイクの発生時刻との時間差Δｔが時刻ｔにおけるＸとＹのラグとし、その値を当該時刻ｔとともに記録する。
【００３９】
ステップＡ１３の後、もしくは、ステップＡ１２で該当のスパイクが存在しなかった場合、時刻ｔ＋１をステップＡ１１のｔ´に代入し、以後、ステップＡ１１からステップＡ１３を入力時系列ログのどちらか一方の終端に達するまで繰り返す。
【００４０】
＜ログ間因果判定部１２１：手順Ａ１の因果判定処理＞
次に、手順Ａ１における因果判定処理について、図５のフローチャートを参照して説明する。
【００４１】
図５のフローチャートにおいて、ステップＡ１４〜Ａ１６は、手順Ａ１において、図４の手順で記録した複数のラグの情報（Δｔ）を入力として、ラグの方向を元に因果の方向を判定する処理を示す。ステップＡ２１は、比較対象の２つの時系列ログ間における異常検知を行うための手順（手順Ａ２）である。まず、手順Ａ１の因果判定処理を説明する。
【００４２】
図５に示すように、図４のステップＡ１１〜Ａ１３で求めた紐付け情報（紐付けがあった時刻ｔと、スパイク時間ずれ量Δｔを含む）が入力情報として使用される。
【００４３】
ステップＡ１４では、ログの測定期間中において、入力の２つのログのどちらに多くラグが偏るか否かを集計する。例えば測定サンプル数が１００、入力ログをそれぞれＸ、Ｙとした場合に、Ｘを基準にΔｔが正であった割合が３０サンプル、負であった割合が５サンプルである場合は、Ｘ−−＞Ｙ：３０％、Ｙ−−＞Ｘ：５％となる。ここで、「Ｘ−−＞Ｙ」はＸが原因、Ｙが結果の因果を示す。「Ｙ−−＞Ｘ」はＹが原因、Ｘが結果の因果を示す。
【００４４】
次に、ステップＡ１５において、測定期間全体にわたり、ラグの方向が反転している期間が全体のＮ％以上か否かを判定する。例えばＮ＝２０％の時、５％／３０％＝約１６％となり、ステップＡ１５はＮｏとなることから、ステップＡ１６に進む。
【００４５】
ステップＡ１６では、Ｘ−−＞ＹとＹ−−＞Ｘの比較により、Ｘ−Ｙ間の因果及び因果の強さを判定する。上述の例の場合、Ｘ−−＞Ｙの割合が高いので、Ｘ−Ｙ間の因果は、Ｘが原因、Ｙが結果であり、Ｘ−−＞Ｙの因果が生じていると推定できる。このとき、因果の強さＣは、推定した因果の方向を正の因果とした時、
Ｃ＝１−＜逆の因果の割合＞／＜正の因果の割合＞
で求める。上記の例では、Ｃ＝１−５％／３０％＝約０．８４と計算できる。以上より、上記の例においてはＸとＹの因果はＸ−−＞Ｙの方向であり、その強さは０．８４であると推測できる。ここで得られた因果の方向と強さは、手順Ｂ１においてシステムの因果グラフを推定する際に活用できる。例えば因果の方向は有向グラフのエッジの向き、因果の強さはグラフにおけるエッジの重みとして利用できる。
【００４６】
図６に、上記のステップＡ１４〜Ａ１６（ステップＡ１５がＮｏとなる場合）の処理の実システムに基づく具体例を示す。
【００４７】
図６に示すように、時系列ログ収集部１１０からのデータに基づいて、図４のステップＡ１１〜Ａ１３の処理を行うことで、左下に示すような紐付け情報（ログＸとログＹのラグの方向を時間ごとに図示したもの）が得られる。図５のステップＡ１４の処理を行うことで、Ｘ−−＞Ｙの割合が８％、Ｙ−−＞Ｘの割合が５６％となり、ログＹからログＸへの因果が認められる結果が得られている。そして、図５のステップＡ１６の処理を行うことで、図６に示されるように、因果の方向が、ログＹからログＸの向きとして判定される。
【００４８】
＜ログ間異常検知部１２２：手順Ａ２＞
図５に示す因果の推定手順の過程で、ステップＡ１５がＹｅｓとなる場合、ステップＡ２１（手順Ａ２）に移行し、ラグの方向が継続的に大きく変化する時間を検出する。大きく変化するとは、例えば、ある閾値よりも大きく変化することである（例：−Ａから＋Ｂに変化した場合、Ａ＋Ｂが閾値より大きい）。具体的には、時刻毎に因果の方向及び大きさを判定し、ある時刻を境にラグの方向が大きく変化している場合、又はある時刻を境にラグの方向が不安定になっている場合を検出し、更にそれが一時ではなく継続している時、その時刻の境目を異常発生時刻として記録する。なお、ラグの急激な変化が一時的な場合はノイズの影響が疑われるため、ここでは継続という条件を付加している。継続の判定を行うための継続時間は予め定めておく。異常発生時刻は一度の比較において２回以上出現する場合もある。
【００４９】
続いて、異常発生の分類を容易にするために、記録した異常発生時刻の前後で入力データを分割し、それぞれに対して因果の推定及び因果の強さの算出（ステップＡ１４〜Ａ１６）を行って、結果を記録する。これにより、比較対象の２つの時系列において、異常が発生した時刻に加えて、因果の方向や強さがどう変化したかの情報を加味することにより、異常の分類を行う上でサポートとなる情報となり得る。また、この異常発生時刻の前後で入力データを分割し、それぞれに対して因果を判定するという手法は、手順Ｂの入力データの一つとしても利用できる。
【００５０】
＜システム異常検知部１３２：手順Ｂ２＞
次に、システム因果グラフの変化に基づく異常検知の手順である手順Ｂ２を図７、図８を参照して説明する。なお、手順Ｂ２において用いるシステム因果グラフについては、システム因果推定部１３１による手順Ｂ１により生成される（図７のステップＢ２１）。
【００５１】
すなわち、図７は、システムの正常時（時間帯Ｚ）及び検査対象時刻（時間帯Ｗ）のそれぞれに対して、手順Ｂ１を適用して推定したシステム全体のログの因果グラフにおいて、両者のグラフに因果の変化が生じている箇所に着目して、異常要因を特定する手順を示す。ただし、入力データの一方は必ずしも正常時である必要はなく、ある時間帯を基準にした異常の検知という観点においては、任意の時間帯のログを入力可能である。以下、各ステップについて説明する。
【００５２】
図７のステップＢ２１において、手順Ｂ１を適用し、システム因果推定部１３１が、正常時（Ｚ）及び検査対象時刻（Ｚ）それぞれのリソースログに基づくシステム因果グラフ（グラフＺ，グラフＷ）を生成する。
【００５３】
上記システム因果グラフは、例えば、手順Ａもしくは他の方式で推定した因果の方向に基づき、ＰＣ−ａｌｇｏｒｉｔｈｍ（非特許文献２）などの因果グラフ推定手法を適用して推定される。手順Ａの結果を利用する場合は、すべてのリソースのペアに対して手順Ａを再帰的に適用し、因果の強さが一定以上の因果のペアを抽出した上で、それらの因果のペアに基づいて因果グラフ推定手法を適用する。更に手順Ａの入力データを利用する場合は、他の手法と異なり、因果の強さをグラフのエッジ（枝）の重みとして割り当てることが可能である。
【００５４】
例えば、図８に示す例では、ステップＢ２１において、時間帯Ｚ、Ｗそれぞれにおける因果のペアの集合に対して、因果グラフ推定手法を適用して、Ｚに対してグラフＺ（図８の上）、Ｗに対してグラフＷ（図８の下）を生成する。
【００５５】
なお、入力となる正常時の時間帯Ｚと検査対象の時間帯Ｗは連続した時間である必要はなく、例えばＺとＷは数日や１ヶ月の時間が空いていても適用可能であり、あるいは手順Ａ２において因果が逆転した前の時間帯をＺ、後の時間帯をＷとして入力することが可能である。一方で、正常時と比較した異常箇所ではなく、リソース状況の変化のみ検知することが目的である場合は、Ｚは必ずしもシステム正常時の時間帯のものである必要はない。
【００５６】
ステップＢ２２では、システム異常検知部１３２が、２つのシステム因果グラフ間の差分の抽出する。すなわち、ステップＢ２１で得られたグラフＺとグラフＷを比較し、両者で因果の変化が生じている箇所を抽出する。ここでは因果の変化として、Ｚに対してＷで因果が新たに発生した箇所、因果が消失した箇所、因果の方向が逆転した箇所を対象とする。因果の重みの情報が存在する場合は、因果の重みの変化も抽出対象である。図８の例では、グラフＷにおいて点線で示されている変化箇所が抽出される。
【００５７】
ステップＢ２３では、システム異常検知部１３２が、因果の変化に基づく異常発生箇所の推定を行う。すなわち、ステップＢ２２で抽出した２つのグラフ間の因果の変化に着目し、変化を引き起こした要因となるログ（リソース）を推定する。ステップＢ２３における推定手法として複数の方法を適用することができ、それぞれについて下記に説明する。
【００５８】
＜システム異常検知部１３２：ステップＢ２３の異常発生箇所推定方法例１＞
異常発生箇所推定方法の一つとして、異常ログを基点に因果を遡る方式（従来手法）の拡張を利用することができる。この方法は非特許文献２において採用されている方法である。具体的には、別の方法（閾値等）で、あるログに異常を検知した場合に、そのログを起点にシステム因果グラフの矢印を、結果から原因の方向へ辿ることで、異常の検知（異常の原因の検知）を試みる方式である。非特許文献２では、因果グラフを辿る際にある結果に対して複数の原因が存在する場合は、最も変動が大きい原因を選択する方式も取り入れている。この非特許文献２の手法がステップＢ２３においても適用可能である。
【００５９】
ここで、非特許文献２は、正常時のグラフのみを用いて要因を推定しているのに対し、本実施の形態では正常時のグラフに加えて、異常時（検査対象）のグラフの因果も同時に考慮し、更に非特許文献２では考慮していない因果の変化と重みを考慮することで、要因の検知範囲の拡大や、複数の要因の候補が存在する場合の絞り込みによる要因検知精度の向上が期待できる。例えば、正常時の因果グラフではある結果Ａに対して原因が｛Ｃ１，Ｃ２，Ｃ３｝しか抽出されず、いずれも根本要因ではないケースがある。このとき、異常時のみに発生する因果グラフを考慮すると、結果Ａに対して原因が｛Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５｝のように原因の候補を拡充することが可能であり、原因検知の幅を広げることができる。更に本実施の形態特有のメリットとして、非特許文献２の手法は特定のログの異常を起点としてシステムに入力する必要があるが、本実施の形態の手順Ｂ２はステップＢ２２の手順を踏まえて、正常時と比較した場合の異常時の変化を網羅的に抽出することができるため、特定ログで異常を検知する前に、本手法が可能である。すなわち手順Ｂ２により、特定ログの異常として表出する前の、システム上の初期段階の異常である予兆を捉えることができる。
【００６０】
＜システム異常検知部１３２：ステップＢ２３の異常発生箇所推定方法例２＞
異常発生箇所推定方法例２では、因果グラフの変化を学習することによる異常要因検出を行う。異常発生箇所推定方法例２は、本実施の形態における独自の方法である。
【００６１】
システムに異常が発生した場合に、それが因果グラフに対してどのように影響を与えるかを事前に把握することは難しい。すなわち、システム上で異常が発生した際に、それがステップＢ２２における、因果グラフ上の因果の発生／削除／反転という変化事象に結びつくルールを人力で定義することは難しい。
【００６２】
そこで、異常発生箇所推定方法例２では因果グラフを抽象化してパターン化し、事前に教師データとして異常要因を与えてパターンと異常箇所の関係を学習することで、未知の異常を検知することとしている。従って、本例では、因果に基づくシステム異常検知部１３０内に、因果変化パターンＤＢ（データベース）１３３が備えられる。なお、因果変化パターンＤＢ１３３は、ログ分析装置１００内の備えられていなくてもよい。例えば、外部のデータベースサーバに備え、当該データベースサーバに通信ネットワークを介してアクセスすることとしてもよい。
【００６３】
本例が機能するには一定量の学習が必要であることから、学習を用いない前者の手法（異常発生箇所推定方法例１）と比較して即応性には劣るものの、十分な学習データを蓄積することで、前者の手法を上回る精度を得ることが期待できる。
【００６４】
異常発生箇所推定方法例２における、システム異常検知部１３２の処理手順を図９に示し、その具体例を図１０に示す。
【００６５】
図９、図１０に示す処理では、因果の構造変化をパターンとして抽出し、すでに自明である故障箇所と対応させて学習しておくことで、未知の因果の変化パターンに対して、最も可能性の高い故障箇所を推定可能とする。つまり、学習フェーズと判定フェーズを有する。
【００６６】
図９に示すように、学習フェーズと判定フェーズのいずれも入力は手順Ｂ２のステップＢ２２で抽出した因果の変化箇所のサブグラフであるが、事前に当該グラフの各ノード（ログ）の名前を取り除き、抽象化したグラフに変換をする。具体例は、図１０の左側に示される。
【００６７】
図９、図１０に示す学習フェーズ（ステップＢ３１）において、システム異常検知部１３２は、抽象化したグラフパターンに対して、既に判明済みの故障箇所の情報を与えることで、グラフパターンに対応する異常箇所の関係性を抽出し、因果の変化パターンと異常箇所の対応関係を因果変化パターンＤＢ１３３に格納する。図１０の例では、故障箇所がマークされていることが示される。
【００６８】
図９、図１０に示す判定フェーズ（ステップＢ３２）において、システム異常検知部１３２は、故障箇所が未知の場合において、抽象化したグラフパターンと因果変化パターンＤＢ１３３を照合することにより、最も可能性の高い異常箇所を推定する。因果変化パターンＤＢ１３３への照合方法としては、グラフのパターンが厳密に一致していなくとも、類似のグラフパターンを検索可能である既存方式（例えば、非特許文献７）を適用する。
【００６９】
異常発生箇所推定方法例２は事前にパターンを蓄積する必要があるものの、すでに判明している因果変化及び類似のパターンに対しては、より精度の高い故障要因箇所の推定を実現する。
【００７０】
（実施の形態のまとめ）
以上、説明したように、本実施の形態では、監視対象システムから取得された複数リソースの時系列ログに基づいて、ログ間の因果を推定するログ間因果推定装置であって、２つのログ間のスパイク発生時刻のラグを時系列で抽出するラグ抽出手段と、前記ラグ抽出手段により抽出されたラグにおいて、前記２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、前記２つのログ間の因果の方向と因果の強さを推定する因果推定手段とを備えるログ間因果推定装置が提供される。
【００７１】
前記ラグ抽出手段は、予め検索ウィンドウ閾値ΔＴを保持し、前記２つのログを時系列に走査し、いずれかのログにおいて時刻ｔに第１のスパイクを検知した場合に、他方のログにおいて時刻ｔ±ΔＴにスパイクが存在するか否かを判定し、該当するスパイクが存在する場合に、最も時刻ｔに近いスパイクを第２のスパイクとして選択し、第１のスパイクと第２のスパイクの発生時刻の時間差を時刻ｔにおける２つのログ間のラグとすることができる。
【００７２】
前記ログ間因果推定装置は、前記ラグ抽出手段で抽出されたラグの正負の方向が反転している期間が所定閾値よりも大きい場合、ある時刻を境にラグの方向が大きく変化すること、又はある時刻を境にラグの方向が不安定になることが継続することを検知した場合に、当該時刻を異常発生時刻として検出するログ間異常検知手段を更に備えることとしてもよい。
【００７３】
また、本発明の実施の形態によれば、監視対象システムから取得された複数リソースの時系列ログから得られたログ間の因果を表す因果グラフに基づいて、当該システムの異常を検知するシステム異常検知装置であって、第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフとを比較し、因果が追加、削除、又は反転された箇所を抽出する因果変化抽出手段と、前記因果変化抽出手段により抽出された、第１の因果グラフと第２の因果グラフとの間の因果の変化に基づいて、前記システムにおける異常の要因を検出する異常要因検出手段とを備えるシステム異常検知装置が提供される。
【００７４】
前記異常要因検出手段は、例えば、前記因果が変化した箇所についての因果を逆に辿ることで異常の要因を検出する。
【００７５】
また、前記異常要因検出手段は、既知の異常箇所の情報に基づいて、第１の因果グラフと第２の因果グラフとの間の因果の変化パターンと、異常箇所との対応関係を因果変化パターンデータベースに記録する学習手段と、異常箇所が未知の因果の変化パターンと前記因果変化パターンデータベースとを照合することにより、当該因果の変化パターンにおける異常箇所を判定する判定手段とを備えることとしてもよい。
【００７６】
また、本実施の形態によれば、監視対象システムから取得された複数リソースの時系列ログに基づいて、ログ間の因果を推定して、当該システムの異常を検出するログ分析システムであって、２つのログ間のスパイク発生時刻のラグを時系列で抽出するラグ抽出手段と、前記ラグ抽出手段により抽出されたラグにおいて、前記２つのログのうちの一方のログを基準とした正のラグの数と負のラグの数に基づいて、前記２つのログ間の因果の方向と因果の強さを推定する因果推定手段と、前記因果推定手段により推定される因果の方向と因果の強さに基づいて、第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフを推定するグラフ推定手段と、第１の時間帯におけるログに基づく第１の因果グラフと、第２の時間帯におけるログに基づく第２の因果グラフとを比較し、因果が追加、削除、又は反転された箇所を抽出する因果変化抽出手段と、前記因果変化抽出手段により抽出された、第１の因果グラフと第２の因果グラフとの間の因果の変化に基づいて、前記システムにおける異常の要因を検出する異常要因検出手段とを備えるログ分析システムが提供される。
【００７７】
（実施の形態の効果等）
上記のように、本実施の形態では、ログ間のラグ変動が可変的であることに着目し、更にラグの変動が時間経過によって変動することを考慮したログ間の因果推定技術が提供される。本実施の形態では、因果推定結果を元に構築したシステム全体の因果グラフを元に、因果の方向が時間によって変化もしくは反転する特徴を用いた障害要因推定技術が提供される。
【００７８】
ログ間の因果推定において、非特許文献１、２では、ログ間のラグ変動が可変的であることや、ラグの変動が時間経過によって変動することが考慮されていない。また、因果グラフ構築後の異常要因検知方法に関して、前述したように、非特許文献２では異常を検知したログを起点に因果グラフの結果から原因に向けて辿ることで故障要因を推定する。しかし、非特許文献２では「サービス数が多い」、「収集データサンプル数が少ない」、「障害箇所が複数」の状況下で検知精度が悪化することが述べられており、仮にこれらの条件が理想状態である場合も検知精度は９０％に及ばない。それに対し、本実施の形態に係る技術は、リソース間の因果関係の判定方法を高度化（手順Ａ）し、例えば異常発生前と後の異なる時間帯における因果グラフを構築し、ログの因果関係が時間経過により新規に追加／削除／反転する特徴を利用（手順Ｂ２）して、従来方式よりも高い精度の異常検知が可能である。
【００７９】
なお、本実施の形態における図４の方式（手順Ａ１）を実装するにあたり、時系列比較アルゴリズムの一つであるＤｙｎａｍｉｃ  Ｔｉｍｅ  Ｗａｒｐｉｎｇ（ＤＴＷ）にＷｉｎｄｏｗ制約（非特許文献３）を設けた方式が、スパイク間のラグを比較するためのアルゴリズムが近似的に適用できることを確認している。ＤＴＷは比較対象の２つのデータ系列においてズレが存在する場合に、そのズレの変化を検出可能なアルゴリズムである。ＤＴＷアルゴリズムは一般に音声認識や文字列認識、画像認識等の分野で利用されている。一方で、本実施の形態のようなサーバリソース等におけるログ間のラグの検出と変化にＤＴＷを適用する例は見当たらない。
【００８０】
以上、説明したように、本発明の実施の形態によれば、システムの異常発生時もしくは性能劣化時の迅速な要因の特定が可能となり、更には従来のログ分析手法やオペレータの判断では検知が困難であったシステムの特異な振る舞いを検知し、故障や異常の早期の検知が可能となる。
【００８１】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００８２】
１００  ログ分析装置
１１０  時系列ログ収集部
１２０  ログ間因果推定部
１２１  ログ間因果判定部
１２２  ログ間異常検知部
１３０  因果に基づくシステム異常検知部
１３１  システム因果推定部
１３２  システム異常検知部
【図１】
2016045556.tif 000003
【図２】
2016045556.tif 000004
【図３】
2016045556.tif 000005
【図４】
2016045556.tif 000006
【図５】
2016045556.tif 000007
【図６】
2016045556.tif 000008
【図７】
2016045556.tif 000009
【図８】
2016045556.tif 000010
【図９】
2016045556.tif 000011
【図１０】
2016045556.tif 000012