(57)【要約】  監視システムは、監視対象システムから出力され、時刻とメッセージを含むイベントの集合である第１のログに含まれるイベントの分散表現を生成し、２種類のイベントの集合の分散表現に関して、時刻が所定時間内のイベントペアの第１の相関値を算出し、所定値以上の第１の相関値に対応する第１のログペアを選定し、第１のログペアを構成する第１のログに含まれるイベント集合から監視対象イベントを抽出する関数を生成する監視対象選定部、および、稼働中の監視対象システムから出力される第２のログに含まれる、選定された第１のログペアに対応する第２のログペアに関して、第２のログペアを構成する第２ログに含まれるイベントの集合から、関数を用いて、監視対象イベントを抽出し、抽出したイベントのペアの第２の相関値を算出し、第１の相関値から第２の相関値への変化を検出する監視部を有する。
2017037801.tif 000002
【特許請求の範囲】
【請求項１】
監視対象システムから出力され、少なくとも時刻とメッセージを含むイベントの集合である第１のログに含まれる前記イベントの分散表現を生成し、２種類の前記イベントの集合の分散表現に関して、前記時刻が所定時間内の前記イベントのペアの第１の相関値を算出し、所定値以上の前記第１の相関値に対応する前記第１のログのペアを選定し、前記第１のログのペアを構成する前記第１のログに含まれる前記イベントの集合から監視対象とする前記イベントを抽出する関数を生成する監視対象選定部、および、
稼働中の前記監視対象システムから出力される第２のログに含まれる、選定された前記第１のログのペアに対応する前記第２のログのペアに関して、前記第２のログのペアを構成する前記第２ログに含まれる前記イベントの集合から、前記関数を用いて、監視対象とする前記イベントを抽出し、抽出した前記イベントのペアの第２の相関値を算出し、前記第１の相関値から前記第２の相関値への変化を検出する監視部を有することを特徴とする監視システム。
【請求項２】
前記分散表現は、前記メッセージに含まれる表現を用いた、前記メッセージを表す低次元密な実数ベクトルであることを特徴とする請求項１に記載の監視システム。
【請求項３】
前記低次元密な実数ベクトルは、前記イベントの前記時刻から前記所定時間内に他のイベントが存在しない場合、前記他のイベントが存在しないことを表す要素を含むことを特徴とする請求項２に記載の監視システム。
【請求項４】
前記監視対象選定部は、前記イベントの集合から前記イベントをサンプリングした集合の前記分散表現に関して、前記時刻が前記所定時間内の前記イベントのペアの前記第１の相関値を算出することを特徴とする請求項１に記載の監視システム。
【請求項５】
前記監視対象選定部は、前記イベントの集合の前記時刻が、最も古い前記イベントの時刻を下限とし、最も新しい前記イベントの時刻を上限として、ランダムに選択した時刻から前記所定時間内の前記イベントを抽出し、抽出した前記イベントの前記時刻の２乗の逆数に比例する確率分布で、前記イベントの集合から前記イベントをサンプリングすることを特徴とする請求項４に記載の監視システム。
【請求項６】
前記監視対象選定部は、前記第１のログのペアの中から、ランダムに選択した前記時刻でサンプリングできた場合を成功、サンプリングできなかった場合を失敗としてサンプリングの成功率を算出し、前記成功率が最大となる前記第１のログのペアを選定することを特徴とする請求項５に記載の監視システム。
【請求項７】
前記第１及び第２の相関値は、非線形な相関値であることを特徴とする請求項１に記載の監視システム。
【請求項８】
前記第１及び第２の相関値は、Maximal information coefficientおよびヒルベルト-シュミット独立基準の一方の独立性に基づくことを特徴とする請求項１に記載の監視システム。
【請求項９】
前記第１の相関値から前記第２の相関値への変化を表示する表示部をさらに有することを特徴とする請求項１に記載の監視システム。
【請求項１０】
前記表示部は、前記第１のログのペアの前記第１の相関値と、前記第１のログのペアを構成する、前記第１のログの内容及び前記第１のログに含まれる前記イベントの分散表現を圧縮したデータの一方とを時系列表示することを特徴とする請求項９に記載の監視システム。
【請求項１１】
前記表示部は、前記第１のログの内容を表示するとき、前記第１のログに含まれる前記イベントの集合を強調表示することを特徴とする請求項９に記載の監視システム。
【請求項１２】
監視システムによる監視方法であって、前記監視システムは、
監視対象システムから出力され、少なくとも時刻とメッセージを含むイベントの集合である第１のログに含まれる前記イベントの分散表現を生成し、
２種類の前記イベントの集合の分散表現に関して、前記時刻が所定時間内の前記イベントのペアの第１の相関値を算出し、
所定値以上の前記第１の相関値に対応する前記第１のログのペアを選定し、
前記第１のログのペアを構成する前記第１のログに含まれる前記イベントの集合から監視対象とする前記イベントを抽出する関数を生成し、
稼働中の前記監視対象システムから出力される第２のログに含まれる、選定された前記第１のログのペアに対応する前記第２のログのペアに関して、前記第２のログのペアを構成する前記第２ログに含まれる前記イベントの集合から、前記関数を用いて、監視対象とする前記イベントを抽出し、
抽出した前記イベントのペアの第２の相関値を算出し、
前記第１の相関値から前記第２の相関値への変化を検出することを特徴とする監視方法。
【請求項１３】
前記第１及び第２の相関値は、非線形な相関値であることを特徴とする請求項１２に記載の監視方法。
【請求項１４】
前記第１及び第２の相関値は、Maximal information coefficientおよびヒルベルト-シュミット独立基準の一方の独立性に基づくことを特徴とする請求項１３に記載の監視方法。
【請求項１５】
前記監視システムは、前記イベントの集合から前記イベントをサンプリングした集合の前記分散表現に関して、前記時刻が前記所定時間内の前記イベントのペアの前記第１の相関値を算出することを特徴とする請求項１２に記載の監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、種々のシステムを監視対象とした監視システムおよび監視方法に関する。
【背景技術】
【０００２】
様々な情報通信サービスや社会インフラサービスが、膨大な計算機、および、計算機を内蔵した各種の機器・設備を含むシステムに支えられている。昨今、このようなシステムは、より便利なサービスの提供、高度な最適化のために大規模化・複雑化が進んでいる。また、コスト低減の要請から、第三者が提供するハードウェアやソフトウェア、あるいはOSS(Open Source Software)などを組み合わせて、システムが構築されることが一般化している。このため、ブラックボックスな部分を含むシステムの運用監視が求められ、運用監視者に掛かる負荷は増大している。このため、システムの運用監視の省力化・自動化が強く求められている。【０００３】
一般的なシステム監視ソフトウェアは、ユーザの省力化を目的として柔軟な検索機能や予め登録したルール（データの閾値チェックや出現パターン）をチェックする機能を提供している。しかし、これらの機能を活用しても、運用監視者が監視のために見るべきデータは膨大にあり、またルールの登録作業なども負荷となっている。【０００４】
特許文献１では、複数の被管理装置から複数種の性能項目毎の性能情報を取得し、その性能情報の時系列変化を示す性能系列情報から相関モデルを生成し、新たに取得される性能情報に基づいて、相関モデルの変化を分析する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１９９５３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１記載の技術は、CPU(Central Processing Unit)やメモリの使用状況に代表される性能情報を対象としているため、計算機や計算機を内蔵した各種の機器・設備の一側面の状態しか監視できない。すなわち、syslogやミドルウェアのログ（Webサーバのログ、通信ログ等）のような、監視対象システムの多くの計算機の内部状態を含む情報を活用することができず、特に複数のメーカーの製品を組合せて構築された監視対象システムでは、監視に十分な情報が性能情報からだけでは得られない。【０００７】
一般にCPUやメモリの使用状況のような性能情報は、定常的に収集可能であり、時間軸に対して比較的滑らかに変化する。しかも、性能情報は、収集時点で1次元の実数もしくは低次元の実数ベクトルである。このため、一般的な相関（ピアソンの積率相関等）が有効に働く可能性が高い。また、低次の線形多項式などの統計モデルによくフィッティングできる可能性も高い。ところが、ログは日時とテキスト表現されたメッセージを少なくとも含むイベントの集合であって、各イベントの数値表現は自明ではない。しばしば単語ごとに個別のIDを割り当て、各IDを要素とする超高次元かつ疎なベクトルとして表現する方法がとられる。しかし、イベントは文書やWebページほど単語を含まない。そのため、例えば、ある単語に絞って観察した場合、その単語の発生はまばらで、低次の線形多項式でうまく表現することも難しい。また、そもそもイベントが発生するタイミングは非定常である。したがって、特許文献１記載の技術をそのままログに適用しようとしても適切な相関関係を見出せない可能性が高い。【０００８】
そこで、監視に十分な情報である、非定常かつ数値表現が自明でないログを活用できる監視システムが望まれる。
【課題を解決するための手段】
【０００９】
開示する監視システムは、監視対象システムから出力され、少なくとも時刻とメッセージを含むイベントの集合である第１のログに含まれるイベントの分散表現を生成し、２種類のイベントの集合の分散表現に関して、時刻が所定時間内のイベントのペアの第１の相関値を算出し、所定値以上の第１の相関値に対応する第１のログのペアを選定し、第１のログのペアを構成する第１のログに含まれるイベントの集合から監視対象とするイベントを抽出する関数を生成する監視対象選定部、および、稼働中の監視対象システムから出力される第２のログに含まれる、選定された第１のログのペアに対応する第２のログのペアに関して、第２のログのペアを構成する第２ログに含まれるイベントの集合から、関数を用いて、監視対象とするイベントを抽出し、抽出したイベントのペアの第２の相関値を算出し、第１の相関値から第２の相関値への変化を検出する監視部を有する。
【発明の効果】
【００１０】
開示する監視システムによれば、監視に十分な情報である、非定常かつ数値表現が自明でないログを活用できる。
【図面の簡単な説明】
【００１１】
【図１】監視システムの構成例である。
【図２】監視システムの各サブシステムを実現するサーバのハードウェア構成例である。
【図３】監視対象システムから収集するログの具体例である。
【図４】データ管理部で蓄積されるログデータの例である。
【図５】データ管理部で管理される監視対象データの例である。
【図６】分散表現生成モデルパラメータの例である。
【図７】データ管理部で管理される運用時相関値データの例である。
【図８】監視対象選定部の処理フローチャートである。
【図９】分散表現生成部の処理フローチャートである。
【図１０】Skipgramを拡張したモデルである。
【図１１】相関算出部の処理フローチャートである。
【図１２】相関算出部による相関値およびサンプリング成功率の算出の処理フローチャートである。
【図１３】監視部の処理フローチャートである。
【図１４】監視画面の例である。
【図１５】詳細監視画面の一例である。
【図１６】詳細監視画面の一例である。
【発明を実施するための形態】
【００１２】
本実施形態では、情報通信サービス、あるいは、社会インフラサービスを支える計算機システムや計算機を内蔵した各種の機器・設備により構成したシステム（監視対象システムと呼ぶ。）が出力するログの相関関係から、監視対象システムのシステム状態の変化が反映される相関関係の変化を監視・検出する監視システムを説明する。
【００１３】
監視システムの処理は、監視対象システムが出力した正常時のログから相関値が所定の値以上となるログのペア(組合わせ)を監視対象として選定し、各ログのイベント群から監視対象となるイベントのサブセットを抽出する関数を生成する監視対象選定フェーズと、監視対象システムが出力するログを監視し、相関関係に大きな変化がある場合には、運用監視者にその状況を提示する監視フェーズとに分けられる。
【００１４】
監視対象選定フェーズでは、監視システムは、監視対象システムを構成する各装置から収集したOSやミドルウェアのログを解析し、ログに含まれる単語や熟語等の連語（言語表現）、あるいは、IPアドレスなどの計算機固有の表現を抽出し、辞書に登録し、登録した表現にID付けする。次に、ID表現されたイベントのメッセージを使って低次元密な実数ベクトル（分散表現）を生成する。そして、ログの各組合せについて、イベント群のサブセットの相関値が所定の値以上となるログのペアを監視対象として選定する。この際、相関値には、MIC(Maximal information coefficient)やヒルベルト-シュミット独立基準などの独立性に基づく非線形な相関値を用いる。また、各ログのイベント群から監視対象となるイベントのサブセットを抽出する関数（監視イベント判別関数と呼ぶ）を生成する。
【００１５】
監視フェーズでは、監視システムは、監視対象選定フェーズで選定されたログのペアについて次の処理を実行する。まず、監視対象システムの稼働中のログから、監視イベント判別関数を用いて、監視対象となるログのイベント群のサブセットを抽出する。次に、サブセットに含まれるイベントについて、監視対象選定フェーズと同様の手順で分散表現を生成し、相関値を算出する。そして、算出した相関値に、監視対象選定フェーズで算出した相関値から大きな変化が検出された場合には運用監視者にその変化を通知する。このように、運用監視者は正常時のログのペアを監視対象として選定することによって、ログを自動的に監視できるようになる。
【００１６】
図１は、監視システムの構成例である。監視システム１は、監視対象となる高い相関が見られたログのペアを選定し、また、各ログのイベント群から監視対象となるイベントのサブセットを抽出する関数を生成する選定サーバ１１と、選定されたログのペアの相関値を監視する監視サーバ１２と、相関値に変化が検出された場合に、その状況を運用監視者に提示する表示端末１３とを備える。選定サーバ１１、監視サーバ１２、および表示端末１３は、LAN(Local Area Network)等のネットワークで接続される。また、監視サーバ１２は、後述の監視対象システム２の各サブシステムと、LAN等のネットワークで接続される。
【００１７】
監視対象システム２は、1つまたは複数の被監視装置２１を備える。各被監視装置２１はLAN等のネットワークで接続される。なお、本実施形態では監視システム１の選定サーバ１１等の各サブシステム、監視対象システム２の各被監視装置２１である各サブシステム、および、監視システム１と、監視対象システム２がLAN等のネットワークで接続されるが、各接続は、例えばWWW(World Wide Web)等の他のネットワークを介して接続されていても良い。また、上記各サブシステムは一例であって、サブシステムの数は増減してもよく、一つのネットワークで接続されていても、さらに階層分けされて接続されていてもよい。例えば、選定サーバ１１と監視サーバ１２が同一のサーバであってもよいし、選定サーバ１１や監視サーバ１２が複数台のサーバで分散的に構成されていてもよい。また、例えば、選定サーバ１１に含まれるデータ管理部１１４がデータ管理サーバなど、他の計算機であってもよい。
【００１８】
図２は、監視システム１の各サブシステムを実現するサーバ（計算機）のハードウェア構成例である。図１と図２を参照して、各サブシステムの構成とハードウェアの対応を説明する。
【００１９】
選定サーバ１１が備える分散表現生成部１１１、相関算出部１１２、監視対象選定部１１３、およびデータ管理部１１４の各処理部は、CPU（Central Processing Unit）１１０１が、ROM（Read Only Memory）１１０２もしくは外部記憶装置１１０４に格納されたプログラムをRAM（Read Access Memory）１１０３に読み込み、読み込んだプログラムを実行することにより、通信I/F（Interface）１１０５、マウスやキーボード等に代表される入力装置１１０６、ディスプレイなどに代表される出力装置１１０７を制御することで実現される。
【００２０】
監視サーバ１２が備える分散表現生成部１２１、相関算出部１２２、および監視部１２３の各処理部は、CPU１１０１が、ROM１１０２もしくは外部記憶装置１１０４に格納されたプログラムをRAM１１０３に読み込み、読み込んだプログラムを実行することにより、通信I/F１１０５、マウスやキーボード等に代表される入力装置１１０６、ディスプレイなどに代表される出力装置１１０７を制御することで実現される。
【００２１】
表示端末１３が備える表示部１３１は、CPU１１０１が、ROM１１０２もしくは外部記憶装置１１０４に格納されたプログラムをRAM１１０３に読み込み、読み込んだプログラムを実行することにより、通信I/F１１０５、マウスやキーボード等に代表される入力装置１１０６、ディスプレイなどに代表される出力装置１１０７を制御することで実現される。
【００２２】
被監視装置２１が備えるデータ管理サービスやリソース最適化などの処理（図示略）は、CPU１１０１が、ROM１１０２もしくは外部記憶装置１１０４に格納されたプログラムをRAM１１０３に読み込み、読み込んだプログラムを実行することにより、通信I/F１１０５、マウスやキーボード等に代表される入力装置１１０６、ディスプレイなどに代表される出力装置１１０７を制御することで実現される。
【００２３】
図３は、監視サーバ１２が監視対象システム２から収集するログの具体例１４０である。ログ１４０には通常１つ以上のイベントが含まれる。例えば、ログ１４０は、BSD（登録商標）あるいはLinux（登録商標）系OSで一般的なログの一つであるsyslogの例である。各イベントは、そのイベントが生成された日時（時刻）、発行したデータソース名、およびイベントの内容を表す短いテキストが記載されていることが多い。ログ１４０の１行目のイベントは、イベントが生成された日時が“May  1 10:00:00”であり、データソース名が“machine1 anacron[1055]”であり、イベントの内容が“Job `cron.daily' terminated”である。また、イベントの重要度(info, error等)が付与される場合もある。syslogやwebサーバログなどでは図３で示すように１行で、１つのイベントの情報が記載されるが、他の種別のログでは複数行にわたってより詳細に情報が記載されている場合もある。本実施形態ではこういった記載形式に係らず、日時、データソース名を除いた部分を総称して単にメッセージと呼ぶ。
【００２４】
図４は、監視サーバ１２が監視対象システム２から収集し、選定サーバ１１のデータ管理部１１４で蓄積されるログデータ１５０の例である。ログデータ１５０は、ログに含まれる各イベントをテーブルの１レコードに対応させたデータであって、ログＩＤ１５１と、日時１５２、データソース名１５３、およびメッセージ１５４の項目を備える。ログＩＤ１５１に対応する各項目の内容は基本的に元のログ１４０と同じである。ただし、日時１５２はフォーマットをＩＳＯ８６０１などに共通の形式に統一する。
【００２５】
図５は、選択サーバ１１のデータ管理部１１４で管理される監視対象データ１６０の例である。監視対象データ１６０は、選定サーバ１１の監視対象選定部１１３が選定したログのペア（ログ１、ログ２）と関連するパラメータに関するデータであって、監視単位を識別する監視ＩＤ１６１、ペアの期待されるログの相関の高さを表す相関値１６２、ペアの各ログの識別子を表すログ１−ＩＤ１６３、ログ２−ＩＤ１６４、ペアの各ログに含まれるイベントのどれが監視対象となるかを判別する関数のパラメータを表すログ１−イベント判別関数パラメータ１６５、ログ２−イベント判別関数パラメータ１６６、ペアの各ログに含まれるイベントがどのクラスタに所属するかを判別する関数のパラメータを表すログ１−クラスタ判別関数パラメータ１６７、ログ２−クラスタ判別関数パラメータ１６８を備える。
【００２６】
ここで、未知イベントの判別にＳＶＭ（Ｓｕｒｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ）、既知イベントのクラスタリングおよび未知イベントのクラスタ判別にＫ−ｍｅａｎｓを用いるため、イベント判別関数のパラメータはＳＶＭのパラメータを表す実数値列、クラスタ判別関数のパラメータは重心の位置を表す実数値列のクラスタ数分のリストとなる。
【００２７】
なお、本実施形態ではＳＶＭ、Ｋ−ｍｅａｎｓを用いるが、他の方法、例えば、イベント判別にロジスティック回帰やパーセプトロン、クラスタ判別にスペクトラルクラスタリングや情報量最大化クラスタリングなどを使っても良い。その場合は、用いる手法に応じたパラメータを各項目（１６５〜１６８）に設定する。
【００２８】
図６は、分散表現を生成するための分散表現生成モデルパラメータ１７０の例である。本実施形態では分散表現生成にＳｋｉｐｇｒａｍを拡張したモデルを用いる。このため、本質的にパラメータは重み行列である。重み行列の縦の要素数は、辞書に登録した語（表現）のIDの数、横の要素数は、システム設計者により設定された分散表現自体の数である。辞書に登録した語（表現）のIDは、監視対象システム２を構成する各装置２１から収集したOSやミドルウェアのログを解析し、含まれる単語や熟語等の連語（言語表現）、あるいは、IPアドレスなどの計算機固有の表現を抽出し、辞書に登録するために付した識別子である。従って、分散表現生成モデルパラメータ１７０は、ログを識別するログＩＤ１７１と、重み行列を表すパラメータ１７２を備える。なお、本実施形態ではＳｋｉｐｇｒａｍを拡張したモデルを用いるが、Ｒｅｃｕｒｅｎｔ  Ｎｅｕｒａｌｎｅｔｗｏｒｋを用いたニューラル言語モデル等他の方法を使っても良い。その場合は、用いる手法に応じてパラメータ１７２を設定する。
【００２９】
図７は、監視サーバ１２の監視部１２３で算出され、選定サーバ１１のデータ管理部１１４で管理される運用時相関値データ１８０の例である。運用時相関値データ１８０は、運用中（監視対象システム２が稼働中）のデータを使って監視部１２３が計算した監視ＩＤごとの相関値の時系列データであって、監視ＩＤ１８１（監視ＩＤ１６１に対応）、日時１２、および相関値１８３を備える。この運用時相関値データ１８０は、表示端末１３の表示部１３１に表示されるデータとなる。
【００３０】
図８は、監視対象選定部１１３の、ある２種類のログに対する監視対象選定処理の処理フローチャートである。なお、本処理の実行に先立って監視サーバ１２が監視対象システム２の正常時のログを収集し、選定サーバ１１のデータ管理部１１４にログデータ１５０を登録済みであるとする。
【００３１】
監視対象選定部１１３は、分散表現生成部１１１を用いて、データ管理部１１４のログデータ１５０から、各イベントの前後に発生するイベントに基づいて、イベントの低次元密な実数ベクトルである分散表現を生成する（Ｓ１０１）。分散表現生成部１１１による分散表現の生成方法については後述する。
【００３２】
監視対象選定部１１３は、生成した分散表現を用いて、ログデータ１５０のイベントをＫ個にクラスタリングする（Ｓ１０２）。本実施形態においてＫは１００とし、クラスタリングにはK-means法を用いる。なお、Ｋの値はログデータ１５０に含まれる語彙の複雑さと、選定サーバ１１や監視サーバ１２の計算機リソースを鑑みて他の値に設定することができる。また、他のクラスタリング手法を使っても良い。さらに、分散表現をクラスタリングする前に、オートエンコーダやRestricted Boltzmann Machine（ＲＢＭ）などの抽象化処理を１または複数回実行してもよい。
【００３３】
監視対象選定部１１３は、分散表現生成部１１１および相関算出部１１２を用いて、ある２つのログＩＤ１５１のログについて、それぞれクラスタを一つの要素としたときのべき集合の組合せから、相関値が所定値以上であり、かつ、相関算出が可能な範囲が大きいクラスタの組合せ（ペア）を選定する（Ｓ１０３）。分散表現生成部１１１および相関算出部１１２による、相関の算出方法、相関算出が可能な範囲の大きさの決め方、および、クラスタの組合せ（ペア）の選定方法については後述する。
【００３４】
監視対象選定部１１３は、選定されたログのペア（選定ペア）が存在するかを確認する（Ｓ１０４）。選定ペアが存在しない場合、処理を終了する。
【００３５】
選定ペアが存在する場合、監視対象選定部１１３は、選定ペアに含まれる各ログについて、相関算出に用いられたイベントを判別する監視イベント判別関数を学習（判別関数のパラメータを決定）する（Ｓ１０５）。監視イベント判別関数は、監視対象システム２の監視時に、運用時のイベント（未知イベント）を相関算出に用いるかどうかを判別するために用いられる。本実施形態では、判別関数のモデルにはＳＶＭを用い、その入力には分散表現をそのまま用いる。なお、ロジスティック回帰など他のモデルを用いても良い。また、入力に、データソース名１５３等の他の情報を追加してもよい。また、より単純に、Ｓ１０６で学習するクラスタを入力として、判別する関数を構成してもよい。
【００３６】
監視対象選定部１１３は、選定ペアに含まれる各ログについて、相関算出に用いられたイベントのクラスタを判別するクラスタ判別関数を学習する（Ｓ１０６）。クラスタ判別関数は、監視対象システム２の監視時に、未知イベントをどのクラスタに割り当てるかを判別するために用いられる。本実施形態では、Ｋ−ｍｅｎａｓでクラスタリングするので、クラスタ判別関数は、重心ベクトルを記憶しておき、最も近い重心を持つクラスタを割り当てる関数となる。なお、Self-taught learningの考えに基づき多値のＳＶＭやロジスティック回帰などでクラスタ判別関数を学習してもよい。
【００３７】
監視対象選定部１１３は、以上のように算出または学習した内容を、監視対象データ１６０として、監視ＩＤ１６１に対応させて、相関値１６２〜ログ２−クラスタ判別関数パラメータ１６８の各項目に登録する（Ｓ１０７）。なお、各項目は、算出または学習結果が得られた段階でその都度登録されてもよい。
【００３８】
図９および図１０を用いて、イベントの分散表現の生成処理（Ｓ１０１）を説明する。図９は、分散表現生成部１１１の処理フローチャートである。図１０は、Skipgramを拡張したモデルを表す図である。
【００３９】
分散表現生成部１１１は、ログデータ１５０の各イベントのメッセージ１５４を構文解析(パース)し、含まれる単語や熟語等の連語（言語表現）、あるいは、ＩＰアドレスなどの計算機固有の表現を抽出する（Ｓ２０１）。この際、分散表現生成部１１１は名詞や動詞などの機能語だけを抽出してもよい。
【００４０】
分散表現生成部１１１は、抽出した単語や熟語等の表現に固有の表現ＩＤをつけて辞書に登録する（Ｓ２０２）。ここで、表現ＩＤは自然数（０、１、２、…）とする。また、表現ＩＤ＝０は、イベントが存在しないことを表す特殊ＩＤとする。この使用方法は後述する。
【００４１】
分散表現生成部１１１は、ログデータ１５０の各イベントのメッセージ部１５４に対応する表現ＩＤのリストを作成する（Ｓ２０３）。
【００４２】
分散表現生成部１１１は、同じログＩＤ１５１に関して、図１０に示すSkipgramを拡張したモデルを用いて、前後で発生したイベントに基づいて各イベントの分散表現生成モデルを学習する。そして、分散表現生成モデルの学習結果（後述のWi）をログＩＤ１５１ごとにログＩＤ１７１に対応付けて、分散表現生成モデルパラメータ１７０のパラメータ１７２に登録する（Ｓ２０４）。
【００４３】
分散表現生成モデルの学習の手順を詳しく説明する。まず、e(t)を時刻tに発生したイベントとする。入力層１２１１および出力層１２１３の各ベクトルの次元は辞書の表現ＩＤの総数であり、ベクトルの各要素は各表現ＩＤの値に対応しているとする。また、中間層１２１２の次元は５００、出力層１２１３のコンテキスト数は１０（t-５、t-４、t-３、t-２、t-１、t＋１、t＋２、t＋３、t＋４、t＋５）とする。また、Wi（１２１４）およびWo（１２１５）は、それぞれ辞書の表現IDの総数×５００、５００×辞書の表現ＩＤの総数となるような行列であり、分散表現生成モデルのパラメータである。このとき、学習時の入力層１２１１には、イベントe(t)の表現ＩＤのリストに含まれる要素は１、それ以外は０となるような、x of K表現された疎なベクトルを与える。この結果、出力層１２１３の予測値には、中間層１２１２の値h=Wi e(t)を介してWo hが出力される。これが前後で発生したイベント(e(t-5)〜e(t+5))と近くなるようにWiおよびWoを学習する。このとき、前後で発生したイベント(e(t-5)〜e(t+5))は、イベントe(t)と同様にイベントの表現ＩＤのリストに含まれる要素は１、それ以外は０となるような、x of K表現された疎なベクトルである。なお、イベントe(t±k)の発生日時がe(t)の発生日時に対し所定時間５分以上離れた場合は、所定時間内でイベントが発生していないことを示すコンテキストを表すために、表現ＩＤ＝０（特殊ＩＤ）を与える。この分散表現生成モデルの学習には確率的勾配降下法等を用いることができる。学習された結果、Ｗｉが分散表現生成モデルの学習結果となる。つまり、あるイベントe(t)に対し、分散表現はＷｉ e(t)で与えられることとなる。なお、中間層１２１２の次元を５００、コンテキスト数を１０、表現ＩＤ＝０（特殊ＩＤ）を割り当てるイベントを所定時間５分以上離れたイベントとしたが、これらはログの傾向に応じて適宜変更することができる。
【００４４】
以上の手順により、前後で似たイベントが発生したイベントは同じような値をとる低次元密なベクトルを得ることができる。すなわち、近い意味の２つのイベントについて、コサイン距離などの距離が小さくなる。なお、Ｓｋｉｐｇｒａｍが一単語に関する分散表現を与えていたのに対し、Skipgramが拡張されたモデルでは次の２点が異なる。まず、イベント中の複数の単語や熟語に対する分散表現を与えるために、入力や出力が1 of K表現ではなくx of K表現となっている。ここで、xはメッセージ中の語数に対応し、通常Kに対して十分小さい。また、時間的に大きく離れた（本実施形態では５分以上離れた）イベントは、ログ中で連続して並んでいたとしても意味がなく、また、そのような箇所はある連続したイベントパターンの始点や終点であることが多いため、イベントがないことを表す表現ＩＤ＝０（特殊ＩＤ）を割り当てている。
【００４５】
分散表現生成部１１１は、各ログのイベントの分散表現を学習した分散表現生成モデルのパラメータ１７２を用いて生成し、処理を終了する（Ｓ２０５）。
【００４６】
図１１を用いて、ある２つのログについて、相関値が所定値以上で相関算出が可能な範囲が大きいイベント群のペアの選定処理（Ｓ１０３）を説明する。図１１は、相関算出部１１２の処理フローチャートである。
【００４７】
相関算出部１１２は、選定リストを空に初期化する（Ｓ３０１）。相関算出部１１２は、ログデータ１５０の各ログについて、ログデータ１５０のイベントをＫ個にクラスタリングしたクラスタのイベント群（クラスタの組合せ）に関する相関値とサンプリング成功率を算出する（Ｓ３０２）。例えば、ログ１にクラスタ｛Ａ、Ｂ、Ｃ｝、ログ２に｛Ｄ、Ｅ、Ｆ｝というクラスタがある場合、クラスタの組合せは、｛Ａ：Ｄ｝、｛Ａ：Ｅ｝、｛Ａ：Ｆ｝、｛Ｂ：Ｄ｝、｛Ｂ：Ｅ｝、｛Ｂ：Ｆ｝、｛Ｃ：Ｄ｝、｛Ｃ：Ｅ｝、｛Ｃ：Ｆ｝となる。ここで｛Ａ：Ｄ｝はログ１のクラスタＡとログ２のクラスタＤの組合せを表すものであり、他も同様である。これらの組合せについて、相関値とサンプリングの成功率を算出する。相関値とサンプリングの成功率の算出については後述する。
【００４８】
相関算出部１１２は、相関値が所定値以上のクラスタの組合せがあるかを確認する（Ｓ３０３）。所定値以上のクラスタの組合せが有る場合、Ｓ３０４に処理を移す。そうでない場合、Ｓ３０８に処理を移す。なお、本実施形態では、所定値を０．８５とし、相関値が０．８５以上の組合せかどうかを確認するが、ログに応じて適宜適切な値を所定値として設定できる。
【００４９】
相関値が所定値以上のクラスタの組合せがあった場合、相関算出部１１２は、相関値が所定値以上のクラスタの組合せとその相関値とサンプリング成功率を選定リストへ追加する（Ｓ３０４）。
【００５０】
相関算出部１１２は、クラスタの組み合わせが元のログ(前述した例の｛Ａ：Ｄ｝、｛Ａ：Ｅ｝、・・・、｛Ｃ：Ｆ｝)に一致しているかを確認する（Ｓ３０５）。一致している場合はＳ３０８に処理を移す。そうでない場合はＳ３０６に処理を移す。
【００５１】
クラスタの組み合わせが元のログに一致しない場合、相関算出部１１２は、相関値が所定値以上のクラスタの組合せについて、それらを統合した新たなクラスタの組合せを生成する（Ｓ３０６）。例えば、相関値が所定値以上のクラスタの組合せが、前述の例で｛Ａ、Ｄ｝、｛Ａ、Ｅ｝、｛Ｃ、Ｆ｝である場合、｛Ａ：（Ｄ、Ｅ）｝、｛（Ａ、Ｃ）：（Ｄ、Ｆ）｝、｛（Ａ、Ｃ）：（Ｅ、Ｆ）｝が新しいクラスタの組合せとなる。ここで、（Ｄ、Ｅ）はクラスタＤとＥに含まれるイベントを統合した新しいクラスタを表すものであり、他も同様である。
【００５２】
相関算出部１１２は、新しいクラスタの組合せに関して相関値とサンプリング成功率を算出し（Ｓ３０７）、Ｓ３０３に戻る。相関値とサンプリングの成功率の算出については後述する。
【００５３】
Ｓ３０３で所定値以上のクラスタの組合せがない場合、もしくはＳ３０５でクラスタの組合せが元のログに一致している場合、選定リストからサンプリング成功率が最も高いクラスタの組合せを相関算出が可能な範囲が大きいクラスタの組合せとして監視対象として選定し、処理を終了する（Ｓ３０８）。
【００５４】
以上の相関算出部１１２の処理により、相関値が小さいクラスタの組合せの計算を適宜省きながら網羅的にクラスタの組合せを探すことができる。なお、さらに高速化が必要な場合は、あらかじめ与えられたクラスタ数をさらに減らしておくなどしておいてもよい。また、そもそも多重系を構成する装置のログなどで分割処理をしなくても高い相関値が出ることが期待される場合には、サブセット（個々の装置）に分割せず全体（多重構成の装置）で相関値を算出してもかまわない。
【００５５】
図１２は、相関算出部１１２による相関値およびサンプリング成功率の算出（図１１のＳ３０２、Ｓ３０７）の処理フローチャートである。
【００５６】
相関算出部１１２は、サンプルリストを空に初期化し、変数ＣＮＴとＳＵＣＥＳＳを０に初期化する（Ｓ４０１）。
【００５７】
相関算出部１１２は、相関値算出の対象となっている２つのイベント群の最も古いイベントの時刻を下限、最も新しいイベントの時刻を上限とする範囲の時刻集合から時刻をランダムに選択する（Ｓ４０２）。選択した時刻を時刻tとする。
【００５８】
相関算出部１１２は、２つのイベント群について、時刻t-τ〜時刻t+τまでに含まれるイベントを抽出する（Ｓ４０３）。本実施形態ではτ(微小時間)は１分とする。なお、τ(微小時間)は、イベントがほぼ時刻tに発生したと見做すための時間であるので、対象とするログに応じてτは他の値でもよい。
【００５９】
相関算出部１１２は、Ｓ４０３で条件に合致するイベントが２つのイベント群の各々に１つ以上あるかどうかを確かめる（Ｓ４０４）。条件に合致するイベントがある場合、Ｓ４０５に処理を移す。そうでない場合、処理をＳ４０７に移す。
【００６０】
Ｓ４０４で合致するイベントがある場合、各イベント群について、抽出した１つ以上のイベントから、各イベントの時刻の２乗の逆数に比例する確率分布でそれぞれから１つずつサンプリングし、サンプルリストにサンプリングした２つのイベントを登録する（Ｓ４０５）。なお、本実施形態では時刻の２乗の逆数に比例する確率分布としたが、他の確率分布、例えば逆数に比例する確率分布等でもよい。
【００６１】
相関算出部１１２は、変数ＳＵＣＥＳＳを１インクリメントし（Ｓ４０６）、変数ＣＮＴをインクリメントする（Ｓ４０７）。
【００６２】
相関算出部１１２は、変数ＳＵＣＥＳＳが指定回数より小さいかを確認する（Ｓ４０７）。ここで、本実施形態における指定回数は１０００とする。指定回数より小さい場合は、Ｓ４０２に処理を移す。そうでない場合は、Ｓ４０９に処理を移す。
【００６３】
相関算出部１１２は、変数ＳＵＣＣＳＳを変数ＣＮＴで割った値を成功率（＝ＳＵＣＣＳＳ/ＣＮＴ）として算出する（Ｓ４０９）。
【００６４】
相関算出部１１２は、サンプルリストの１０００のサンプルを用いて、独立性に基づく相関値の一種であるＭＩＣを計算し処理を終了する（Ｓ４１０）。具体的には、サンプルリストの各サンプルに対応する各クラスタリング結果（クラスタ番号）を比較する。なお、相関値の算出のために前述のクラスタ数Kよりも大きなクラスタ数Mでクラスタリングした結果を用いてもよい。
【００６５】
なお、ヒルベルト-シュミット独立基準などのほかの非線形な相関値を用いても良い。また、ＭＩＣ等の独立性に基づく相関性を評価するのは、分散表現された結果、および、それをクラスタリングした結果（クラスタ番号）には、一般に時系列データとして滑らかさを有さないためである。なお、隣り合う時刻の値の差の和が最小となるようにクラスタ番号入れ替える等の処理（滑らかさの復元処理）を実行した上で、ピアソンの積率相関等を評価する等をしてもよい。この場合、イベント群が比例関係にある２つのセンサーに由来するログ、例えば、ある値以上は異常であるとして、ほとんどセンサーの値を言い換えたようなイベントが出力される場合について相関関係を見出すことができる。
【００６６】
以上が基本的な相関算出の手順であるが、２つのログの時刻をずらして相関計算を行い、最も高い相関値を採用するなどしてもよい。また、クラスタリングした結果の非線形な相関を算出するとしたが、例えば分散表現を主成分分析や独立成分分析した結果の非線形な相関を算出してもよい。また、同一種類のログを比較したり、２つのログのイベントを併せてクラスタリングしたりするなどによって、クラスタ番号が２つのログの間で共通となる場合には、サンプルリストに含まれる各ログのイベントについて、対応するクラスタの要素数などの分布を算出し、分布間のダイバージェンスを相関値に用いても良い。
【００６７】
図１３を用いて、監視対象選定部１１３により選定されたあるログのペアに関する運用時の監視処理を説明する。図１３は、監視部１２３の処理フローチャートである。
【００６８】
なお、本処理の実行に先立って監視サーバ１２が監視対象システム２から運用中のログを収集し、選定サーバ１１のデータ管理部１１４にログデータ１５０を登録済みであるとする。
【００６９】
監視部１２３は、監視対象選定処理で生成した、データ管理部１１４で管理されている各ログのイベント判別関数パラメータ（１６５、１６６）を読み込み、そのパラメータで表現される監視イベント判別関数を用いて、各ログから監視対象となるイベント群を判別する（Ｓ５０１）。
【００７０】
監視部１２３は、監視対象選定処理で生成した、データ管理部１１４で管理されている各ログのクラスタ判別関数パラメータ（１６７、１６８）を読み込み、そのパラメータで表現されるクラスタ判別関数を用いて、各ログの各イベントのクラスタ番号を判別する（Ｓ５０２）。
【００７１】
監視部１２３は、分散表現生成部１２１および相関算出部１２２を用いて、監視対象選定処理の説明と同様の手順により相関値を算出する（Ｓ５０３）。分散表現生成部１２１は分散表現生成部１１１と同様の処理であり、相関算出部１２２は相関算出部１１２と同様の処理である。
【００７２】
監視部１２３は、算出した相関値に、所定期間５分間にデータ管理部１１４で管理されている相関値１６２の値から所定値0.3（相関値の減少幅に関する所定値）以上減少した箇所がある場合、処理をＳ５０５に移す。そうでない場合、本処理を終了する（Ｓ５０４）。なお、本実施形態では、所期間に変動した箇所があるか否かで変化を定義したが、変化の積分値などを用いてもよい。また、監視対象選定処理フェーズで、相関値の分散等を求めておき、その分散に応じた閾値を設定するなどしてもよい。
【００７３】
Ｓ５０４で相関値が所定値以上減少した箇所がある場合、監視部１２３は表示端末１３の表示部１３１に通知し（Ｓ５０５）、本処理を終了する。その通知を受けて、表示部１３１はその状況や監視しているログの内容をユーザに提示する。
【００７４】
以上の監視対象選定処理ならびに監視処理は、相関を算出する対象がどちらもログの場合を説明したが、本手法はログと性能情報やセンサー値などとの組合せであっても有効である。その際には、性能情報やセンサー値が密な１次元もしくは低次元の密ベクトルとなっている点を踏まえて、それらの分散表現を生成する処理を省いて実行すればよい。
【００７５】
図１４は、表示端末１３の表示部１３１がユーザに提示するメイン画面としての監視画面１３１０の例である。監視画面１３１０は、監視対象リスト１３１１、急変した監視対象一覧１３１２、監視対象一覧１３１３を備える。
【００７６】
表示部１３１は、監視対象リスト１３１１に、監視対象を識別する監視ＩＤ（監視対象データ１６０の監視ＩＤ１６１）と、現在の相関値（監視部１２３がＳ５０３で算出した相関値）と、相関値を算出している２つのログＩＤ（監視ＩＤ１６１に対応するログＩＤ１６３、１６４）と、急変しているかどうか（監視部１２３による最近の監視処理の結果、Ｓ５０４でＹＥＳかとなっているかどうか）の一覧を表示する。
【００７７】
表示部１３１は、急変した監視対象一覧１３１２に、急変した監視対象の監視ＩＤ（監視対象データ１６０の監視ＩＤ１６１）と、最近の相関値（監視部１２３がＳ５０３で算出した相関値）の時系列変化を、横軸に時間、縦軸に相関値をとったグラフとして表示する。なお、グラフ上で急変を検出した区間はハッチングや表示色を変えるなどにより強調表示する。これによってユーザがすぐに異常が発生した箇所（監視ＩＤ１６１に対応するログＩＤ１６３、１６４のログを生成した箇所）を把握可能となる。
【００７８】
表示部１３１は、監視対象一覧１３１３に、急変した監視対象一覧１３１２と同様のグラフを全ての監視対象（監視ＩＤ１６１）について表示する。
【００７９】
ユーザは、監視画面１３１０のリストあるいはグラフをクリック・タップ等により選択することで、後述の詳細監視画面（タイプＡもしくはタイプＢ）を見ることができる。
【００８０】
図１５は、詳細監視画面（タイプＡ）１３２０の一例である。詳細監視画面（タイプＡ）１３２０は、監視画面１３１０からユーザがクリック・タップ等により選択することによって表示される監視項目単位の詳細画面の一つである。
【００８１】
詳細監視画面（タイプＡ）１３２０は、相関値（監視部１２３がＳ５０３で算出した相関値）の時系列変化を表すグラフ１３２１と、ログの比較表示１３２２を備える。
【００８２】
相関値の時系列変化を表すグラフ１３２１は、急変した監視対象一覧１３１２や監視対象一覧１３１３のグラフと同様である。
【００８３】
ログの比較表示１３２２は、時刻と、監視対象となっている２つのログ（監視ＩＤ１６１に対応するログＩＤ１６３、１６４）の内容が表示される。このとき、図に示すように同一時刻のイベントが並んで表示されるように行を調整して表示する。また、監視イベント判別関数で監視対象のイベントと判別されたイベントをハッチングや表示色を変えるなどにより強調表示する。これによって、ユーザはどのイベント群の相関関係が崩れたのかを把握しやすくする。
【００８４】
図１６は、詳細監視画面（タイプＢ）１３３０の一例である。詳細監視画面（タイプＢ）１３３０は、監視画面１３１０からユーザがクリック・タップ等により選択することによって表示される監視項目単位の詳細画面の一つである。
【００８５】
詳細監視画面（タイプＢ）１３３０は、相関値（監視部１２３がＳ５０３で算出した相関値）の時系列変化を表すグラフ１３３１と、監視対象となっている２つのログ（監視ＩＤ１６１に対応するログＩＤ１６３、１６４）の分散表現もしくはクラスタ番号の時系列変化を表すグラフ（１３３２、１３３３）を備える。
【００８６】
相関値の時系列変化を表すグラフ１３３１１は、急変した監視対象一覧１３１２や監視対象一覧１３１３のグラフと同様である。
【００８７】
分散表現もしくはクラスタ番号の時系列変化を表すグラフ（１３３２、１３３３）は、各ログ（監視ＩＤ１６１に対応するログＩＤ１６３、１６４のログ）の分散表現もしくはクラスタ番号の時系列変化が、縦軸を時間、横軸を分散表現の値もしくはクラスタ番号としたグラフとして表示される。ここで、分散表現を表示する場合、分散表現は一次元とはなっていないため、主成分分析した結果の第一主成分等、次元圧縮した後に表示する。また、クラスタ番号を表示する場合、できる限り表示がなだらかになるように、例えば時刻tのイベントのクラスタ番号をc(t)とするとき、Σ(c(t)-c(t+1))が最小となるように予めクラスタ番号を振りなおしてもよい。これによってユーザのログのパターンの視認性を向上することができる。
【００８８】
以上に説明したように、本実施形態によれば、監視に十分な情報である、非定常かつ数値表現が自明でないログを活用できる。
【００８９】
また、本実施形態によれば、非定常かつ数値表現が自明でないログの各種組合せから相関関係を導出し、監視できるので、システムの監視に掛かる運用監視者の負荷を削減できる。
【００９０】
また、本実施形態によれば、分散表現されたログをクラスタリング等して分割し、その組合せについて相関値を求めているので、syslogのように１つのログに実質的に複数種類のイベントが混じりこんでいるような場合でも相関関係を見出すことができる。
【００９１】
また、本実施形態によれば、分散表現されたログをクラスタリング等して1次元化することで、一般に日時とメッセージなどの文字列で表現されるログを時間変化するグラフとして視覚的に表示できる。これによって運用監視者は、わざわざログの内容を見なくてもログ全体の大まかなパターンをつかむことができるようになる。
【００９２】
なお、本実施形態では監視対象システムから出力するログを対象としたが、本質的に日時とメッセージを含む時系列データであれば、例えばマイクロブログ等であっても同様の方法で、相関関係を求めることも、変化を検出ことも可能である。
【符号の説明】
【００９３】
１：監視システム、２：監視対象システム、１１：選定サーバ、１２：監視サーバ、１３：表示端末、２１：被監視装置、１１１：分散表現生成部、１１２：相関算出部、１１３：監視対象選定部、１１４：データ管理部、１２１：分散表現生成部、１２２：相関算出部、１２３：監視部、１３１：表示部。
【図１】
2017037801.tif 000003
【図２】
2017037801.tif 000004
【図３】
2017037801.tif 000005
【図４】
2017037801.tif 000006
【図５】
2017037801.tif 000007
【図６】
2017037801.tif 000008
【図７】
2017037801.tif 000009
【図８】
2017037801.tif 000010
【図９】
2017037801.tif 000011
【図１０】
2017037801.tif 000012
【図１１】
2017037801.tif 000013
【図１２】
2017037801.tif 000014
【図１３】
2017037801.tif 000015
【図１４】
2017037801.tif 000016
【図１５】
2017037801.tif 000017
【図１６】
2017037801.tif 000018
【国際調査報告】
2017037801.tif 000019
2017037801.tif 000020