(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023127893
(43)【公開日】2023-09-14
(54)【発明の名称】学習装置、学習方法、およびプログラム
(51)【国際特許分類】
G06F 11/34 20060101AFI20230907BHJP
G06N 20/00 20190101ALI20230907BHJP
【FI】
G06F11/34 147
G06F11/34 176
G06N20/00 160
【審査請求】有
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022031846
(22)【出願日】2022-03-02
(11)【特許番号】
(45)【特許公報発行日】2023-08-29
(71)【出願人】
【識別番号】397065480
【氏名又は名称】エヌ・ティ・ティ・コムウェア株式会社
(74)【代理人】
【識別番号】100161207
【弁理士】
【氏名又は名称】西澤 和純
(74)【代理人】
【識別番号】100126664
【弁理士】
【氏名又は名称】鈴木 慎吾
(74)【代理人】
【識別番号】100181124
【弁理士】
【氏名又は名称】沖田 壮男
(72)【発明者】
【氏名】小杉 晃範
(72)【発明者】
【氏名】寺澤 啓司
(72)【発明者】
【氏名】青木 桂子
(72)【発明者】
【氏名】山本 寛悟
(72)【発明者】
【氏名】石井 泰登
(72)【発明者】
【氏名】金澤 宇蘭
(72)【発明者】
【氏名】橋本 賢
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042MA08
5B042MA13
5B042MA14
5B042MC40
(57)【要約】
【課題】ログメッセージが時間的に高密度に発生しても学習データを取得すること。
【解決手段】本発明の一態様は、監視対象システムからログメッセージを収集する収集部と、収集部により収集したログメッセージのうち相関が高いログメッセージの集合を取得する集合取得部と、集合取得部により取得されたログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得する学習データ取得部と、学習データ取得部により取得された学習データを用いて、収集部により収集したログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させる学習部と、を備える、学習装置である。
【選択図】
図2
【特許請求の範囲】
【請求項1】
監視対象システムからログメッセージを収集する収集部と、
前記収集部により収集したログメッセージのうち相関が高いログメッセージの集合を取得する集合取得部と、
前記集合取得部により取得された前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得する学習データ取得部と
前記学習データ取得部により取得された学習データを用いて、前記収集部により収集したログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させる学習部と、
を備える、学習装置。
【請求項2】
前記複数のログメッセージをクラスタリングし、クラスタリングされたログメッセージを識別する識別子を設定するクラスタリング部を備え、
前記集合取得部は、前記クラスタリング部により同じ識別子が設定された複数のログメッセージを、前記ログメッセージの集合として取得する、請求項1に記載の学習装置。
【請求項3】
前記学習データ取得部は、
前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生していない場合には、前記ログメッセージの集合の発生時刻に基づいて学習データを取得し、
前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生している場合には、前記ログメッセージの集合からサンプリングしたログメッセージの集合におけるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得する、請求項1または2に記載の学習装置。
【請求項4】
前記学習データ取得部は、
前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生している場合において、
前記ログメッセージ集合における対象となるログメッセージと他のログメッセージ間の時間差分を算出し、確率密度が最大となる時間差分を算出し、
確率密度が最大となる時間差分をソートすることで前記ログメッセージのシーケンスを推定し、
前記シーケンスに含まれるログメッセージを学習データとして収集する、
請求項1から3のうち何れか1項に記載の学習装置。
【請求項5】
監視対象システムからログメッセージを収集するステップと、
前記ログメッセージのうち相関が高いログメッセージの集合を取得するステップと、
前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得するステップと、
前記学習データを用いて、前記ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させるステップと、
を含む、学習方法。
【請求項6】
コンピュータに、
監視対象システムからログメッセージを収集するステップと、
前記ログメッセージのうち相関が高いログメッセージの集合を取得するステップと、
前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得するステップと、
前記学習データを用いて、前記ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させるステップと、
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、学習装置、学習方法、およびプログラムに関する。
【背景技術】
【0002】
従来より、各種のシステムから出力されたログを監視し、システムの異常を検知する技術が知られている。例えば、特許文献1に記載された保守管理装置が知られている。この保守管理装置は、ログ情報を収集する収集部と、ログ情報を識別するログ識別子とログ情報の時刻情報とを関連付けて記憶する記憶部と、複数のログ識別子を時刻情報に基づいてまとめたログシーケンスを作成し、ログシーケンスの開始時刻と終了時刻との差分からシーケンス時間を算出し、ログシーケンスとシーケンス時間とを関連付けたシーケンスグループにグループ化する分析部と、を備え、分析部は、シーケンスグループが予め登録された正常シーケンスグループ及び異常シーケンスグループと一致しない場合、予め登録されたインシデント予兆グループのうち、シーケンスグループと最も適合率の高いシーケンスグループに基づいてインシデント発生までのインシデント発生見込み時間を算出する。これにより、保守管理装置は、インシデントの発生を予測することが可能であるとしている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、ログメッセージが時間的に高密度で発生している場合、学習データを取得することができないため、シーケンスの推定をすることができないという課題があった。例えば、ログメッセージを取得しようとする期間の全ての日付および時刻においてログメッセージが高密度で発生している場合、疎な期間でも学習データを取得することができない。
【0005】
本発明は、上記の課題に鑑みてなされたものであって、ログメッセージが時間的に高密度に発生しても学習データを取得することができる学習装置、学習方法、およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
(1)本発明の一態様は、監視対象システムからログメッセージを収集する収集部と、前記収集部により収集したログメッセージのうち相関が高いログメッセージの集合を取得する集合取得部と、前記集合取得部により取得された前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得する学習データ取得部と、前記学習データ取得部により取得された学習データを用いて、前記収集部により収集したログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させる学習部と、を備える、学習装置である。
【0007】
(2)本発明の一態様は、上記の学習装置であって、前記複数のログメッセージをクラスタリングし、クラスタリングされたログメッセージを識別する識別子を設定するクラスタリング部を備え、前記集合取得部は、前記クラスタリング部により同じ識別子が設定された複数のログメッセージを、前記ログメッセージの集合として取得してよい。
【0008】
(3)本発明の一態様は、上記の学習装置であって、前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生していない場合には、前記ログメッセージの集合の発生時刻に基づいて学習データを取得し、前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生している場合には、前記ログメッセージの集合からサンプリングしたログメッセージの集合におけるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得してよい。
【0009】
(4)本発明の一態様は、上記の学習装置であって、前記学習データ取得部は、前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生している場合において、前記ログメッセージ集合における対象となるログメッセージと他のログメッセージ間の時間差分を算出し、確率密度が最大となる時間差分を算出し、確率密度が最大となる時間差分をソートすることで前記ログメッセージのシーケンスを推定し、前記シーケンスに含まれるログメッセージを学習データとして収集してよい。
【0010】
(5)本発明の一態様は、監視対象システムからログメッセージを収集するステップと、前記ログメッセージのうち相関が高いログメッセージの集合を取得するステップと、前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得するステップと、前記学習データを用いて、前記ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させるステップと、を含む、学習方法である。
【0011】
(6)本発明の一態様は、コンピュータに、監視対象システムからログメッセージを収集するステップと、前記ログメッセージのうち相関が高いログメッセージの集合を取得するステップと、前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得するステップと、前記学習データを用いて、前記ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させるステップと、を実行させる、プログラムである。
【発明の効果】
【0012】
本発明の一態様によれば、ログメッセージが時間的に高密度に発生しても学習データを取得することができる。
【図面の簡単な説明】
【0013】
【
図2】実施形態のシーケンス推定システム1の機能的な構成の一例を示すブロック図である。
【
図3】実施形態におけるシーケンス推定システム1の全体の処理手順を示すフローチャートである。
【
図4】ベクトル化処理の一例を説明するための図であり、(A)は、ベクトル化処理のうち単語を抽出処理の一例を示す図であり、(B)は、ベクトル化処理のうち単語の出現位置を考慮する処理の一例を示す図であり、(C)は、ベクトル化処理のうち単語に重み係数を設定する処理の一例を示す図である。
【
図6】AICの算出式およびBICの算出式を示す図である。
【
図7】コンフィグレーションを作成する処理の一例を示すフローチャートを示す図である。
【
図8】コンフィグレーションを設定する処理の一例を示すフローチャートである。
【
図9】ログメッセージを登録する処理の一例を示すフローチャートである。
【
図10】メッセージ集合推定処理の処理手順の一例を示すフローチャートである。
【
図11】相関係数を計算する処理の一例を説明するための図である。
【
図12】メッセージ集合推定処理における自動推定処理を説明するための図である。
【
図13】包含関係にあるログメッセージの集合の一例を示す図である。
【
図14】同時発生関係にあるログメッセージの集合の一例を示す図である。
【
図15】モデル作成処理の全体を示すフローチャートである。
【
図16】学習データの収集処理の処理手順の一例を示すフローチャートである。
【
図17】カーネル密度推定による学習データ収集処理の一例を示すフローチャートである。
【
図18】カーネル密度推定による学習データを収集する処理の一例を示す図である。
【
図19】通常マルコフモデルおよび優先マルコフモデルの作成処理の処理手順の一例を示すフローチャートである。
【
図20】通常マルコフモデルおよび優先マルコフモデルの作成処理の一例を示す図である。
【
図22】一つの学習データおよび複数の学習データを示す図である。
【
図23】優先モデルを作成する処理の処理手順の一例を示すフローチャートである。
【
図24】デュレーション値の算出処理の処理手順の一例を示すフローチャートである。
【
図25】デュレーション値のクラスタリング処理を処理手順の一例を示すフローチャートである。
【
図26】デュレーション値のクラスタリング処理の一例を示す図である。
【
図27】異常値を考慮したデュレーション値のクラスタリングを説明するための図である。
【
図28】優先マルコフモデルを高次化する処理を説明するための図である。
【
図29】シーケンス推定処理の一例を示すシーケンス図である。
【
図30】シーケンス推定処理の処理手順の一例を示すシーケンス図である。
【
図31】競合調整済みマルコフモデルの作成処理の処理手順の一例を示すフローチャートである。
【
図32】競合調整済みの優先マルコフモデルの作成処理の一例を説明するための図である。
【
図33】ログメッセージについてのシーケンス推定処理の処理手順の一例を示すフローチャートである。
【
図34】優先マルコフモデルおよび通常マルコフモデルを用いたシーケンス推定処理を説明するための図である。
【
図35】シーケンス推定処理の他の一例を示すフローチャートである。
【
図36】シーケンスを決定する処理を説明するための図である。
【
図37】異常判定処理の処理手順の一例を示すフローチャートである。
【
図38】異常判定処理の処理内容の一例を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、本発明を適用した学習装置、学習方法、およびプログラムを、図面を参照して説明する。
【0015】
<実施形態の概要>
本発明を適用したメッセージ分類装置、メッセージ分類方法、およびプログラム、学習システム、および学習方法は、実施形態のシーケンス推定システムにより実現される。実施形態のシーケンス推定システムは、監視対象システムからログメッセージを収集し、複数のログメッセージからなるシーケンスを抽出するシステムである。シーケンス推定システムは、一または複数の監視対象システムから出力される多数のログメッセージのうち関係性の高いログメッセージを一つの集合として抽出し、抽出結果を、異常の検知や異常箇所の特定等のオペレーションで利用できるようにする。また、シーケンス推定システムは、集合におけるログメッセージ間の順列の誤りを明確にして、オペレーションで利用できるようにする。これにより、シーケンス推定システムは、未知の異常や、複数の監視対象システムに跨る複雑な異常などが発生した場合、異常箇所の特定精度の向上や、異常箇所の特定に必要なログトレースの時間を短縮することができる。
【0016】
図1は、ログメッセージの一例を示す図である。例えば、任意の監視対象システムやシステム内の構成要素から、数日に亘り収集したログメッセージ群1、ログメッセージ群2およびログメッセージ群3が存在するものとする。シーケンス推定システムに実装された推定モデルは、12月21日から28日に亘り、ログメッセージ群1~3間で関連性の高い「正常なシーケンス」を学習しているものとする。この正常なシーケンスは、ログメッセージ群1に含まれるログメッセージ「aaaaa」、ログメッセージ群2に含まれるログメッセージ「bbbbb」、およびログメッセージ群3に含まれるログメッセージ「ccccc」が時系列的な順列で発生するというシーケンスである。例えば、12月29日においてログメッセージ群1に含まれるログメッセージ「aaaaa」、ログメッセージ群2に含まれるログメッセージ「xxxxx」、およびログメッセージ群3に含まれるログメッセージ「ccccc」が時系列的な順列で発生した場合、シーケンス推定システムは、当該シーケンスが正常ではない「エラーシーケンス」であると検知することができる。このように、シーケンス推定システムは、例えば、「正常なシーケンス」を学習しておくことにより、未知の異常なシーケンスを検知することができる。
以下、このようなシーケンス推定システムについて説明する。
【0017】
<シーケンス推定システム1の構成>
図2は、実施形態のシーケンス推定システム1の機能的な構成の一例を示すブロック図である。シーケンス推定システム1は、例えば、一又は複数の監視対象システム100と、データ処理装置200と、異常検知装置300と、ユーザ端末装置400と、を備える。監視対象システム100、データ処理装置200、異常検知装置300、およびユーザ端末装置400は、例えば、通信ネットワークに接続される。通信ネットワークに接続される各装置は、NIC(Network Interface Card)や無線通信モジュールなどの通信インターフェースを備えている(
図2では不図示)。通信ネットワークは、例えば、インターネット、WAN(Wide Area Network)、LAN(Local Area Network)、セルラー網などを含む。
【0018】
監視対象システム100は、データ処理装置200および異常検知装置300によってログメッセージが監視される情報処理システムである。監視対象システム100は、例えば、各種のサービスを提供するサービスサーバ装置や、ネットワーク網に含まれる多数のネットワークノードの動作状態を管理するネットワーク管理装置等である。ネットワークノードは、例えば、OS(Operation System)、VM(Virtual Machine)、HW(Hardware)、DC(Data Center)などである。監視対象システム100は、所定のトリガに従ってログメッセージをデータ処理装置200に提供する。また、監視対象システム100は、単独で動作するサーバ装置であってよいが、他のサーバ装置と連携して動作する複数のサーバ装置群であってよい。
【0019】
データ処理装置200は、例えば、ログ運用のためのOSS(オープンソースソフトウェア)を実装したコンピュータである。OSSは、例えば、Elasticsearch、Logstash、およびKibanaと称される要素により構成される。データ処理装置200は、例えば、Logstashにより構成されるフォーマット変換部202と、Elasticsearchにより構成されるデータ処理部204と、ログデータ蓄積部206と、検知結果蓄積部208と、Kibanaにより構成される可視化部210とを備える。データ処理装置200は、監視対象システム100からログメッセージを収集する収集部の一例である。
【0020】
フォーマット変換部202、データ処理部204、および可視化部210といった機能部は、例えばCPU(Central Processing Unit)等のプロセッサがプログラムメモリに格納されたプログラムを実行することにより実現される。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、またはFPGA(Field-Programmable Gate Array)等のハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。プログラムは、予めデータ処理装置200のHDDやフラッシュメモリなどの記憶装置(非一過性の記憶媒体を備える記憶装置)に格納されていてもよいし、DVDやCD-ROMなどの着脱可能な記憶媒体に格納されており、記憶媒体(非一過性の記憶媒体)がドライブ装置に装着されることでデータ処理装置200のHDDやフラッシュメモリにインストールされてもよい。ログデータ蓄積部206および検知結果蓄積部208は、例えば、HDD(Hard Disc Drive)、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)などの記憶装置により実現される。
【0021】
フォーマット変換部202は、異常検知装置300により供給されたコンフィグレーション情報に基づいて、監視対象システム100から収集したログメッセージにメッセージIDを追加する。コンフィグレーション情報は、ログメッセージにメッセージIDを付与するルールを示す情報である。メッセージIDは、ログメッセージを登録するために参照される情報であって、例えばログメッセージの種類を識別する情報である。データ処理部204は、フォーマット変換部202によりメッセージIDが追加されたログメッセージをログデータ蓄積部206に記憶する。データ処理部204は、異常検知装置300の要求に応じてログデータ蓄積部206から所望のログメッセージを検索し、検索したログメッセージを異常検知装置300に提供する。データ処理部204は、異常検知装置300から提供されたシーケンス推定結果や異常判定結果を検知結果蓄積部208に記憶する。可視化部210は、シーケンス推定結果や異常判定結果をユーザが閲覧可能な可視化データに変換して、ユーザ端末装置400に提供する。
【0022】
ユーザ端末装置400は、例えばパーソナルコンピュータや、スマートフォンやタブレット端末などの端末装置である。ユーザ端末装置400は、例えば監視対象システム100の管理者の操作を受け付け、監視対象システム100の状態や異常に関する情報をデータ処理装置200から取得し、表示処理等を行う。
【0023】
異常検知装置300は、データ処理装置200から取得したログメッセージを分析し、分析結果に基づく情報をデータ処理装置200に提供する情報処理装置である。異常検知装置300は、例えば、コンフィグレーション作成部310と、メッセージ登録部320と、学習部330と、推定部340とを備える。コンフィグレーション作成部310、メッセージ登録部320、学習部330、および推定部340といった機能部は、例えばCPU等のプロセッサがプログラムメモリに格納されたプログラムを実行することにより実現される。なお、本実施形態はコンフィグレーション作成部310およびメッセージ登録部320を異常検知装置300に搭載する一例について説明するが、コンフィグレーション作成部310およびメッセージ登録部320の機能は、異常検知装置300に代えてデータ処理装置200に搭載してよく、データ処理装置200以外の別装置に搭載してよい。
【0024】
コンフィグレーション作成部310は、例えば、AIOps(Artificial Intelligence for IT Operations)を利用する。コンフィグレーション作成部310は、例えばログデータ蓄積部206に蓄積されたログメッセージを用いてログメッセージにメッセージIDを付与するルールを作成し、コンフィグレーション情報(図中ではID付与ルール)をフォーマット変換部202に供給する。これによりコンフィグレーション作成部310は、フォーマット変換部202によりログメッセージにメッセージIDを追加させる。メッセージIDを付与するルールは、ログメッセージを分類するルールに相当し、コンフィグレーション作成部310は、データ処理装置200にログメッセージを分類する機能を持たせる。
【0025】
メッセージ登録部320は、ログデータ蓄積部206に蓄積されたログメッセージを学習処理および推定処理に用いる情報として登録する。学習部330は、例えばメッセージ集合推定部332と、モデル作成部334とを備える。メッセージ集合推定部332は、ログメッセージの集合を推定する。モデル作成部334は、シーケンスを推定するためのモデルを作成する。推定部340は、例えば、シーケンス推定部342と、異常判定部344とを備える。シーケンス推定部342は、一連のログメッセージを含むシーケンスを推定する。一連のログメッセージは、例えば、時系列的に関連した複数のログメッセージである。異常判定部344は、シーケンス推定部342により推定された結果に基づいて異常を判定する。異常検知装置300は、シーケンス推定結果や異常判定結果を、異常検知装置300の分析結果に基づく情報としてデータ処理装置200に提供する。
【0026】
<シーケンス推定システム1の全体処理>
図3は、実施形態におけるシーケンス推定システム1の全体の処理手順を示すフローチャートである。シーケンス推定システム1は、先ず、監視対象システム100から収集したログメッセージを仮登録する(ステップS100)。次にシーケンス推定システム1は、仮登録したログメッセージを用いてコンフィグレーション情報を作成することで、ログメッセージを分類する(ステップS110)。シーケンス推定システム1は、監視対象システム100から収集したログメッセージを登録する(ステップS200)。このときシーケンス推定システム1は、ログメッセージにメッセージIDおよびタイムスタンプを付加して登録する。タイムスタンプはログメッセージの発生時刻を示す情報である。次にシーケンス推定システム1は、ログメッセージの集合を推定する(ステップS300)。次にシーケンス推定システム1は、推定モデルを作成する(ステップS400)。ステップS200からステップS400までの処理が、学習フェーズに相当する。
【0027】
次にシーケンス推定システム1は、シーケンスを推定する(ステップS500)。シーケンスの推定処理は、定期的なタイミングやログメッセージが所定量だけ蓄積したタイミングなどの所定の条件が成立した場合に開始してよい。次にシーケンス推定システム1は、異常を判定する(ステップS600)。ステップS500およびステップS600は、推定・検知フェーズに属する。なお、シーケンス推定システム1は、シーケンスの異常を判定することなく、シーケンス抽出結果だけをデータ処理装置200に提供してもよい。また、シーケンス推定システム1は、シーケンス推定タイミング、異常判定タイミングや、異常のレベルなどを監視対象システム100に応じて変更してもよい。また、シーケンス推定システム1は、監視対象システム100から随時供給されるログメッセージを用いて、学習フェーズと推定・検知フェーズを並行して実行してよい。
以下、ステップS100からステップS600までの各処理を詳細に説明する。
【0028】
[メッセージ分類処理]
以下、メッセージ分類処理について説明する。メッセージ分類処理は、仮登録されたログメッセージのそれぞれをベクトル化するベクトル化処理と、ベクトル化されたログメッセージを分類するための閾値を設定する閾値設定処理と、閾値を用いて複数のログメッセージを分類し、分類されたログメッセージ群を識別するメッセージID(識別子)を設定するID設定処理と、データ処理装置200により新たなログメッセージを取得した場合に、取得した新たなログメッセージにメッセージIDを付与する分類処理とを含む。メッセージ分類処理は、コンフィグレーション作成部310により実行される。これによりコンフィグレーション作成部310は、ベクトル化部、閾値設定部、ID(識別子)設定部、分類部といった機能部を実現する。
【0029】
図4は、ベクトル化処理の一例を説明するための図であり、
図4(A)は、ベクトル化処理のうち単語を抽出処理の一例を示す図である。コンフィグレーション作成部310は、例えばログデータ蓄積部206からログメッセージを取り出し、ログメッセージに含まれる単語を抽出する。コンフィグレーション作成部310は、例えば、スペース等を区切り文字とした文字を単語として抽出する。例えば、「今日は、10day.」というログメッセージがある場合、コンフィグレーション作成部310は、「今日は」、「10」、「day.」という3個の単語を抽出する。
【0030】
比較例としてn-shingles(n-gram)と称される重み付き処理がある。このn-shinglesは、「今日は、」というログメッセージに対し、「今日は」という要素1と、「日は、」という要素2と、「は、f」という要素3とに分割し、要素1に「1.0」の重みを付与し、要素2に「0.5」の重みを付与し、要素3に「0.3」の重みを付与する。このようなn-shinglesでは、データ処理装置200において利用されるアプリケーションと連携することが困難であること、ログメッセージの可変部分と固定部分の区別が難しいこと、単語の出現位置を考慮したベクトル化を行うことが困難であること、単語数が増えやすいという不都合がある。これに対し、
図4を参照して説明した処理によれば、これらの不都合を回避することができる。
【0031】
図4(B)は、ベクトル化処理のうち単語の出現位置を考慮する処理の一例を示す図である。コンフィグレーション作成部310は、抽出した単語の出現したログメッセージ中の位置も考慮してベクトルを作成する。ログメッセージにおいて同じ単語が複数回出現する場合がある。ただし、ログメッセージは予め設定されたテンプレートに従って単語が配置されている場合が多い。したがって、同じテンプレートに従った複数のログメッセージにおいては、ログメッセージ中の同じ位置に同じ単語が出現する可能性が高い。そこでコンフィグレーション作成部310は、単語に加えて、当該単語の出現した位置を考慮してベクトルを作成する。コンフィグレーション作成部310は、単語の出現位置を表す情報を一次元情報に変換してベクトルを作成する。コンフィグレーション作成部310は、例えば、「今日は」、「10」、「day.」という3個の単語を、「1_今日は」、「2_10」、「3_day.」という3個の情報に変換する。単語の出現位置を考慮すると次元が増えて、2次元のベクトル(マトリクス)になってしまうが、数学的に扱いにくいという問題点がある。2次元のベクトルを次元圧縮することもできるが、情報の損失を避けるため、実施形態のコンフィグレーション作成部310は、単語の出現位置を単語にマージすることで1次元情報に変換する。
【0032】
図4(C)は、ベクトル化処理のうち単語に重み係数を設定する処理の一例を示す図である。コンフィグレーション作成部310は、単語をベクトル化するときに単語に重み係数を導入してよい。重みは、単語の出現位置をnとしたとき1/nであってよい。すなわち重みは、単語の出現位置の先頭から末尾に向かって反比例的に減じてよい。例えば、「今日は」に1.0の重みを付与し、「10」に0.5の重みを付与し、「day.」に0.3の重みを付与する。ログメッセージは、ログメッセージの先頭に近い単語ほど重要性が高い傾向があるため、当該傾向を重みに反映することができる。数字を含む単語についての重みを小さくしてよい。例えば「10」という単語の重みを0.005に減じてよい。ログメッセージにおける日付部分などは数字で表現されることが多く、数字を含む単語の重要性が低い傾向があるため、当該傾向を重みに反映することができる。重みは、単語の出現位置を示すパラメータと単語に数字を含むか否かを示すパラメータの双方を含む関数を用いて導出されてよい。
図4に示したベクトル化処理を行うことにより、コンフィグレーション作成部310は、「今日は、10day.」というログメッセージを、(1.0,0.005,0.3)という数値化されたベクトルに変換することができる。
【0033】
図5は、分類処理の一例を示す図である。コンフィグレーション作成部310は、サンプリングを利用したクラスタリングを行う。コンフィグレーション作成部310は、例えば、サンプリングのアルゴリズムはアンサンブルのboosting方式を利用する。具体的には以下の通りである。まず、コンフィグレーション作成部310は、ログデータ蓄積部206からメッセージ集合を取得する。コンフィグレーション作成部310は、1回目のサンプリング(Phase.1またはPh.1と記載する)においてメッセージ集合から複数のメッセージをサンプリングする。コンフィグレーション作成部310は、サンプリングした複数のログメッセージに対してクラスタリングを行う。コンフィグレーション作成部310は、例えば、メッセージ分類処理における教師なし学習であるクラスタリング法としてDBSCAN(Density-Based Spatial Clustering of Applications with Noise)によりクラスタリングを行う。次にコンフィグレーション作成部310は、Phase.1で縮退したクラスタと重複しないログメッセージをサンプリングし(Phase.2)、サンプリングしたログメッセージに対してクラスタリングを行う。次にコンフィグレーション作成部310は、Phase.1およびPhase.2で縮退したクラスタと重複しないログメッセージをサンプリングし(Phase.3)、サンプリングしたログメッセージに対してクラスタリングを行う。このようにコンフィグレーション作成部310は、Phase.1~Phase.x-1で縮退したクラスタと重複しないログメッセージをサンプリングし(Phase.x)、サンプリングしたログメッセージに対してクラスタリングを行う。これによりコンフィグレーション作成部310は、X個のクラスタを集合させることで最終的なクラスタ集合を取得する。コンフィグレーション作成部310は、メッセージ集合に対して1度でクラスタリングを行うのではなく、複数回のサンプリングのそれぞれでクラスタリングを行う。これにより、メッセージ集合に偏りがある場合でも、少ないサンプリング量、すなわち少ないメモリでメッセージ分類を行うことができる。
【0034】
コンフィグレーション作成部310は、クラスタリングの閾値を調整する。閾値は、DBSCANなどのクラスタリングにおいて対象となるログメッセージをクラスタに含めるか否かを判定するための値である。コンフィグレーション作成部310は、AIC(Akaike information criterion, 赤池情報量規準)、BIC(Bayesian information criterion, ベイズ情報量規準)の何れかを用いて閾値を算出する。
図6は、AICの算出式およびBICの算出式を示す図である。コンフィグレーション作成部310は、ログメッセージのデータ数、パラメータ数、および偏差に基づいてAICまたはBICを算出する。ログメッセージのデータ数は、サンプリング数に相当し、パラメータ数はDBSCANによるクラスタ数に相当する。コンフィグレーション作成部310は、複数の閾値候補の値(vth-1, vth-2, …)で複数のメッセージ分類を行った後、各メッセージ分類についてAICまたはBICを算出し、AICまたはBICが最小となる閾値候補(vth-min)を閾値として採用する。
【0035】
図7は、コンフィグレーションを作成する処理の一例を示すフローチャートを示す図である。コンフィグレーション作成部310は、先ず所定のフェーズ数だけステップS120からステップS126の処理を繰り返す。ステップS120においてコンフィグレーション作成部310は、ログメッセージ集合からログメッセージをサンプリングする(ステップS120)。コンフィグレーション作成部310は、2回目以降のフェースにおいては、前回までのフェーズでクラスタに属するログメッセージを除くログメッセージをサンプリングする。次にコンフィグレーション作成部310は、サンプリングしたログメッセージを単語列に変換し、各単語のログメッセージにおける出現位置を認識する(ステップS122)。次にコンフィグレーション作成部310は、各単語の重みを用いてログメッセージをベクトル化する(ステップS124)。次にコンフィグレーション作成部310は、DBSCANによりログメッセージをクラスタリングする(ステップS126)。
【0036】
次にコンフィグレーション作成部310は、閾値候補数だけステップS129およびステップS130を繰り返す。コンフィグレーション作成部310は、所定のフェーズ分のクラスタに対して閾値候補(vth-x)を用いたDBSCANによりクラスタリングを行い(ステップS129)、クラスタリングの結果からAICまたはBICを算出する(ステップS130)。これによりコンフィグレーション作成部310は、閾値候補数だけAICまたはBICを算出する。次にコンフィグレーション作成部310は、AICまたはBICが最小となったクラスタリング結果を採用する(ステップS132)。次にコンフィグレーション作成部310は、クラスタリングの結果として得られたクラスタに属するログメッセージを識別するためのルールおよびメッセージIDを含むコンフィグレーション情報を生成する。ログメッセージを識別するためのルールは、例えば、ログメッセージにどのような単語が出現するかを特定する情報であり、例えば、単語A、単語B、および単語Cが含まれる場合に、当該ログメッセージにログメッセージID:aを付与することを表す。
【0037】
図8は、コンフィグレーションを設定する処理の一例を示すフローチャートである。異常検知装置300は、コンフィグレーション作成部310により作成したコンフィグレーション情報をデータ処理装置200に送信し(ステップS140)、データ処理装置200は、異常検知装置300から受信したコンフィグレーション情報を更新する(ステップS142)。また、異常検知装置300は、仮登録されたログメッセージにメッセージ種別としてメッセージIDを書き込む(ステップS144)。
【0038】
図9は、ログメッセージを登録する処理の一例を示すフローチャートである。監視対象システム100は、新たなログメッセージをデータ処理装置200に送信したとき、データ処理装置200は、コンフィグレーション情報に含まれるルールに基づいてログメッセージを解析し、ログメッセージにメッセージIDを追加する(ステップS150)。データ処理装置200は、異常検知装置300にメッセージIDが追加されたログメッセージを異常検知装置300に送信する。シーケンス推定システム1は、コンフィグレーション情報に従って自動的にログメッセージにメッセージIDを追加することで、ログメッセージを分類するためのコンフィグレーション作業の手間を省くことができる。
【0039】
[メッセージ集合推定処理]
メッセージ集合推定処理は、ログメッセージIDに含まれるログメッセージの集合を特定する処理である。同じログメッセージIDは、一連の動作や異常といった同じ機会で出現するものが多いため、同じ機会で出現するログメッセージが集合を形成するものとする。なお、実施形態において、「ログメッセージの集合」を、「ログメッセージのシーケンス」と読み替えてよい。メッセージ集合推定処理は、ログメッセージの集合のキーとなるログメッセージIDを指定するID指定処理と、キーを指定しない処理である自動推定処理の少なくとも一方を含む。
【0040】
図10は、メッセージ集合推定処理の処理手順の一例を示すフローチャートである。先ず、異常検知装置300は、対象とするログメッセージXを決定する(ステップS302)。異常検知装置300は、ID指定処理を行う場合、予め指定された2つのログメッセージIDに属するログメッセージXを、処理対象として決定する。異常検知装置300は、自動推定処理を行う場合、全てのログメッセージIDにおけるログメッセージXを、処理対象として決定する。異常検知装置300は、決定されたログメッセージXの数分だけ、ステップS304からステップS320までの処理を繰り返す。
【0041】
先ず異常検知装置300は、データ処理装置200から、決定したログメッセージXの発生時刻のリストを取得する(ステップS304)。次に異常検知装置300は、ステップS306からステップS316までのブートストラップ法を、規定回数だけ繰り返す。規定回数は、ブートストラップ法により作成する疑似データの数に相当する。
図11は、相関係数を計算する処理の一例を説明するための図である。異常検知装置300は、ログメッセージXをオリジナルデータとして用いて、例えば3個の疑似データ(1)~(3)を含む疑似データセットを生成する。本例において、規定回数は「3」であり、疑似データごとに相関係数を計算する。
【0042】
異常検知装置300は、発生時刻リストから所定数の発生時刻Tを取得し(ステップS306)、相関係数の計算用の行列Mを作成する(ステップS308)。次に異常検知装置300は、取得した全ての発生時刻Tについて、ステップS310からステップS314までの処理を繰り返す。異常検知装置300は、発生時刻Tから所定期間内に出現するログメッセージYを取得し(ステップS310)、行列Mの発生時刻Tの行とログメッセージY’の各列との対応箇所に1をマークし(ステップS312)、行列Mの発生時刻Tの行とログメッセージY以外の各列との対応箇所に0をマークする(ステップS314)。
【0043】
次に異常検知装置300は、行列Mを用いて、ログメッセージXとログメッセージYの相互の時系列的な相関度合いを表す相関係数Cを計算する(ステップS316)。異常検知装置300は、疑似データ(1)~(3)のそれぞれについて、下記の式により相関係数C(1)~C(3)を計算する。下記式においてx、yは疑似データにおける所定期間内の2つのログメッセージX,Yであり、nはデータ数であり、xバーはxの相加平均であり、yバーはyの相加平均であり、相関係数は、標本共分散を標本標準偏差で除算することにより算出される。
【数1】
【0044】
次に異常検知装置300は、相関係数Cの平均値C’を計算し(ステップS318)、相関係数Cの平均値C’が所定値以上のログメッセージIDZを取り出す(ステップS320)。これにより、異常検知装置300は、ログメッセージXのそれぞれについて、当該ログメッセージXと時系列的な相関が高いログメッセージID(Z)を取得する。
【0045】
次に異常検知装置300は、ステップS302から自動推定処理を実行しているか否かを判定する(ステップS322)。異常検知装置300は、自動推定処理を実行していない場合(ステップS322:NO)、本処理を終了する。異常検知装置300は、自動推定処理を実行している場合(ステップS322:YES)、ログメッセージID(Z)と包含関係にある他のログメッセージIDを統合する処理を、全てのログメッセージID(Z)について実行する(ステップS324)。次に異常検知装置300は、ログメッセージID(Z)と同時発生関係にある他のログメッセージIDを統合する処理を、全てのログメッセージID(Z)について実行する(ステップS326)。
【0046】
図12は、メッセージ集合推定処理における自動推定処理を説明するための図である。異常検知装置300は、ログメッセージIDに含まれるログメッセージを用いてブートストラップ法を利用した疑似データセットの作成、およびアンサンブル法を利用した相関係数の算出処理を行う。これにより、異常検知装置300は、行数がログメッセージID数であり且つ列数がログメッセージID数である、相関係数のマトリクスを作成する。
【0047】
異常検知装置300は、時系列的に相関係数が高いログメッセージの集合であっても、実質的に重複するログメッセージの集合が含まれるために、補正を行う。異常検知装置300は、包含関係にあるログメッセージの集合同士を、同じログメッセージIDに補正する。
図13は、包含関係にあるログメッセージの集合の一例を示す図である。例えば、メッセージNo.406のログメッセージの集合と、メッセージNo.418のログメッセージの集合とはログメッセージの番号(405,404,407)が包含関係にある。包含関係とは、一方のログメッセージの集合が他方のログメッセージの集合を含む関係である。異常検知装置300は、包含関係にあるログメッセージの集合同士を同じログメッセージIDとして補正(統合)する。
【0048】
異常検知装置300は、同時発生関係にあるログメッセージの集合同士を同じログメッセージIDに補正する。
図14は、同時発生関係にあるログメッセージの集合の一例を示す図である。例えば、メッセージNo.406のログメッセージの集合と、メッセージNo.418のログメッセージの集合とは同じ時刻に発生している。同時発生関係とは、時間的に同じタイミングで発生するログメッセージ集合同士の関係である。異常検知装置300は、同時発生関係にあるログメッセージの集合同士を同じログメッセージIDとして補正(統合)する。
【0049】
[モデル作成処理]
図15は、モデル作成処理の全体を示すフローチャートであり、
図16は、学習データの収集処理の処理手順の一例を示すフローチャートであり、
図17は、カーネル密度推定による学習データ収集処理の一例を示すフローチャートである。
【0050】
異常検知装置300は、
図15に示すように、先ず、学習データを収集し(ステップS400)、学習データを用いてモデルを作成する(ステップS402)。
【0051】
異常検知装置300は、
図16に示すように、学習データの収集において、ステップS410からステップS420までの処理を、メッセージ集合数分繰り返す。
異常検知装置300は、先ず、対象のログメッセージの集合XとログメッセージIDが重複するメッセージの集合Yを算出する(ステップS410)。次に異常検知装置300は、データ処理装置200からログメッセージの集合Xの発生時刻およびログメッセージの集合Yの発生時刻を取得する(ステップS412)。次に異常検知装置300は、ステップS412において取得した発生時刻のうち、前後に所定間隔の空きがある発生時刻Tを抜き出す(ステップS414)。次に異常検知装置300は、メッセージの集合Xに属するログメッセージIDをインデックスとして、ステップS414において抜き出した発生時刻Tから所定時間内にあるログメッセージLを取り出す(ステップS416)。次に異常検知装置300は、ステップS416において発生時刻Tから所定時間内にあるログメッセージL、すなわち学習データがあるか否かを判定する(ステップS418)。異常検知装置300は、学習データがあるときには(ステップS418:YES)、ステップS410以降の処理を繰り返し、学習データがないときには(ステップS418:NO)、カーネル密度推定によるデータ収集を行って(ステップS420)、ステップS410以降の処理を繰り返す。これにより異常検知装置300は、メッセージの集合ごとに学習データ(L)を収集する。
【0052】
例えば、メッセージの集合を含む期間(全ての日付け・時刻)において高密度にログメッセージが発生している場合、学習データが取得できない(ステップS418:NO)。高密度にログメッセージが発生するとは、例えばログメッセージ同士の間隔が短く連続的にログメッセージが発生しているために、ステップS414において発生時刻Tが特定できない場合などである。この場合、異常検知装置300は、
図17に示すカーネル密度推定による学習データ収集(ステップS420)において、
図18に示すステップS4200~ステップS4203の処理を規定回数繰り返す。
図18はカーネル密度推定による学習データを収集する処理の一例を示す図である。
【0053】
まず異常検知装置300は、対象となるログメッセージと、当該対象となるログメッセージと相関性の高いログメッセージとを含むログメッセージ集合をサンプリングする(ステップS4200)。異常検知装置300は、例えば、メッセージIDが同じ(mid=A)である複数のログメッセージを、ログメッセージ集合(sampling001、sampling002、・・・)をサンプリングする。
【0054】
次に異常検知装置300は、サンプリングしたログメッセージ集合におけるログメッセージ間の時間差分を算出する(ステップS4202)。異常検知装置300は、例えば、あるログメッセージ(mid-A)を取得し、当該ログメッセージと時間的に近傍にあるmid-A1、mid-A2との時間差分(tA1-1, ,tA2,… )を算出する。次に異常検知装置300は、時間差分(tA1, tA2,… )ごとに、カーネル密度推定を行うことで確率が最大となる時間差分(tA1-max, tA2-max,… )を算出する(ステップS4204)。次に異常検知装置300は、確率が最大となる時間差分(tA1-max, tA2-max,… )をソートし、シーケンスを推定する(ステップS4203)。異常検知装置300は、例えば、ログメッセージのメッセージIDごとに、規定回数だけステップS4200~ステップS4203の処理を繰り返す。次に、異常検知装置300は、ソートした結果、上位から所定数割の時間差分(tA1-max, tA2-max,… )に出現するログメッセージを、メッセージIDがmid-Aのログメッセージの順序(シーケンス)であると推定する(ステップS4204)。次に異常検知装置300は、メッセージIDが同じ順序で配列したシーケンスと同じ順序となる複数のログメッセージを、学習データとして収集する(ステップS4205)。
【0055】
例えば、
図18に示すように、複数のサンプリング001~100について、mid-Aに関連するログメッセージとしてmid-A2、mid-A1、…をサンプリングしたとき、mid-Aとmid-A2との差分(tA2)、mid-Aとmid-A1との差分(tA1)、…を算出し、差分(tA2)の分布において確率密度が最大となる差分(tA2-max)、差分(tA1)の分布において確率密度が最大となる差分(tA1-max)、…を算出し、ソートしたとする。ソートした結果、mid-A、mid-A2、mid-A1、…の順序のシーケンスが91個であり、mid-A、mid-A1、mid-A2、…の順序のシーケンスが9個であったとする。異常検知装置300は、mid-A、mid-A2、mid-A1、…の順序のシーケンスを採用し、当該シーケンスと同じシーケンスを学習データとして取得することができる。これにより異常検知装置300は、複数のログメッセージが高密度で隔たっていても、学習データを取得することができる。
【0056】
異常検知装置300は、
図19に示すように、モデル作成処理において、ステップS420からステップS424までの処理をメッセージ集合数分だけ繰り返す。
図20は、通常マルコフモデルおよび優先マルコフモデルの作成処理の一例を示す図である。
異常検知装置300は、先ず、ログメッセージLの集合を学習データとして通常マルコフモデルMを作成する(ステップS430)。通常マルコフモデルMは、例えば、シーケンスを構成するログメッセージと、当該ログメッセージ間の遷移確率を表す情報とを含む。異常検知装置300は、学習データをマルコフモデルの機械学習アルゴリズムに入力し、機械学習アルゴリズムの出力誤差を最小にするように機械学習アルゴリズムのパラメータを調整する。次に異常検知装置300は、作成した通常マルコフモデルMに含まれる各ログメッセージのデュレーション値を算出する(ステップS432)。デュレーション値とは、ログメッセージ間の時間差を表す情報である。
図21は、デュレーション値の一例を示す図である。次に異常検知装置300は、ログメッセージLのうち優先メッセージを学習データとして優先モデルを作成する(ステップS434)。
【0057】
図22は、一つの学習データおよび複数の学習データを示す図である。優先メッセージは、一シーケンス当たりの発生数は少ないが、一シーケンス当たりの発生確率が高いログメッセージの集合である。「一シーケンス当たりの発生数は少ないログメッセージ」とは、一つの学習データの中でそれほど繰り替えして発生しないログメッセージである。優先メッセージは、例えば、任意のログメッセージの発生数よりも少ない発生数のログメッセージである。「一シーケンス当たりの発生確率が高いログメッセージ」とは、どの学習データ(L1、L2、・・・Ln)でも出現するログメッセージである。
【0058】
異常検知装置300は、
図20に示すように、メッセージ群A,B,C・・・を含むログメッセージLを用いて通常マルコフモデルMを作成し、ログメッセージLのうちメッセージ群A,Cを含む優先メッセージを用いて優先マルコフモデルを作成する。また、異常検知装置300は、メッセージ集合数分だけステップS420からステップS424までの処理を繰り返すことで、メッセージの集合数分の通常マルコフモデルおよび優先マルコフモデルの作成を行う。
【0059】
(優先モデルの作成)
図23は、優先モデルを作成する処理の処理手順の一例を示すフローチャートである。
異常検知装置300は、ステップS440からステップS442までのブートストラップ法を、所定数だけ繰り返す。先ず異常検知装置300は、対象となるメッセージの集合Xの学習データLから所定数の学習データL’を抜き出し(ステップS440)、学習データL’の中でそれほど繰り替えして発生しないログメッセージIDのメッセージL’’を抜き出す(ステップS441)。異常検知装置300は、例えば学習データL’のうち出現数が最小のログメッセージIDのメッセージL’’を抜き出してよい。これにより異常検知装置300は、所定数の学習データL’のセットごとにメッセージL’’を含む疑似データを作成することで、複数の疑似データを含む疑似データセットを作成する(ブートストラップ法)。次に異常検知装置300は、学習データL’’の1回の学習データあたりの各ログメッセージIDの出現確率Cを算出する(ステップS442)。これにより異常検知装置300は、疑似データごとに出現確率Cを取得する。
【0060】
次に異常検知装置300は、出現確率Cの平均値C’を算出し(ステップS443)、出現確率平均値C’が所定値以上のログメッセージID(Z)を取り出し(ステップS444)、対象のログメッセージの集合Xの学習データLからログメッセージID(Z)のメッセージL’’’を抜き出す(ステップS445)。次に異常検知装置300は、学習データL’’’からAICを算出し(ステップS446)、学習データL’’’からn次マルコフモデルM’を作成する(ステップS447)。次に異常検知装置300は、作成したマルコフモデルM’に含まれる各ログメッセージのデュレーション値を算出する(ステップS448)。
【0061】
(デュレーション値の算出)
図24は、デュレーション値の算出処理の処理手順の一例を示すフローチャートである。異常検知装置300は、ステップS450~ステップS462のデュレーション値の算出処理をマルコフモデルM’の状態遷移数分だけ繰り返して行う。
【0062】
先ず異常検知装置300は、ブートストラップ法およびアンサンブル法によって所定数だけ、ステップS450~ステップS458の処理を繰り返す。異常検知装置300は、日単位でデュレーション値を集計する処理として学習期間の日数分、ステップS450~ステップS454を繰り返す。まず、異常検知装置300は、対象とする状態遷移における対象とする日のデュレーション値を、学習データから抜き出し(ステップS450)、デュレーション値のクラスタリングを行う(ステップS452)。次に異常検知装置300は、デュレーション値の各クラスタから所定数のデュレーション値Cを取り出す(ステップS454)。次に異常検知装置300は、デュレーション値Cの集合をクラスタリングする(ステップS456)。次に異常検知装置300は、デュレーション値Cのクラスタのうちデュレーション値が所定数以下のクラスタを破棄する(ステップS458)。
【0063】
次に異常検知装置300は、デュレーション値C’の集合をクラスタリングし(ステップS460)、デュレーション値C’のクラスタの平均および偏差を算出する(ステップS462)。
【0064】
(デュレーション値のクラスタリング)
図25は、デュレーション値のクラスタリング処理を処理手順の一例を示すフローチャートである。先ず異常検知装置300は、停止条件が成立したか否かを判定し、成立した場合には本フローチャートの処理を終了し、成立していない場合にはk-meansを用いてデュレーション値の集合を、2つのデュレーション値の集合(D1およびD2)に分割する(ステップS472)。次に異常検知装置300は、分割されたデュレーション値の集合のそれぞれを、デュレーション値を再帰的にクラスタリングする(ステップS474)。異常検知装置300は、停止条件が成立するまでにデュレーション値の集合の2分割、および分割された各デュレーション値の集合の再帰的なクラスタリングを繰り返す。これにより、異常検知装置300は、複数のデュレーション値のクラスタを生成することができる。
【0065】
図26は、デュレーション値のクラスタリング処理の一例を示す図である。例えば1~1010[μsec]まで複数のデュレーション値が存在するものとし、停止条件はCV<0.5且つZ<1であるものする。CVは変動係数であり、変動係数は偏差σ/平均μであり、Zは平均から最大乖離度(max|x-μ|/σ)である。異常検知装置300は、複数のデュレーション値を、2つのデュレーション値の集合(D1,D2)に分割し、デュレーション値の集合D1をさらに、2つのデュレーション値の集合(D11,D12)に分割し、デュレーション値の集合D11をさらに2つのデュレーション値の集合(D111,D112)に分割し、デュレーション値の集合D12をさらに2つのデュレーション値の集合(D121,D122)に分割する。この結果、異常検知装置300は、5個のデュレーション値のクラスタに分割することができる。これにより異常検知装置300は、処理前にクラスタ数を設定していなくても、停止条件を満たすクラスタを生成することができる。
【0066】
なお、デュレーション値のクラスタリング処理は、デュレーション値の大きさおよびバラツキという複数の条件に基づいてクラスタリングを行えれば、上述したk-meansを利用したクラスタリング処理以外の処理を行ってもよい。例えば、デュレーション値が1000msecと1010msecとを同じクラスタとし、1msecと10msecとで別のクラスタを生成できればよい。
【0067】
(デュレーション値の異常の排除)
図27は、異常値を考慮したデュレーション値のクラスタリングを説明するための図である。異常検知装置300は、デュレーション値の異常値を排除する処理を行うことが望ましい。異常検知装置300は、上述したように日単位で集計したデュレーション値をクラスタリングした後、全学習期間における各クラスタのサンプル数を、ブートストラップ法により所定数に補正する。次に異常検知装置300は日単位の各クラスタのサンプル数を結合すると、学習期間に多く発生しているデュレーション値は多く積み上がり、学習期間における発生数が少ないデュレーション値は積み上がりが少ない。異常検知装置300は、結合後のデュレーション値のうち所定の閾値よりも積み上がりが少ないデュレーション値を切り捨てることを決定する。これにより異常検知装置300は、日単位のデュレーション値から、切り捨て対象のデュレーション値を排除することができる。この結果、異常検知装置300は、学習期間に亘って発生回数が少ないデュレーション値を異常値として排除し、正常値からなるデュレーション値のクラスタを作成することができる。異常検知装置300は、デュレーション値から高い精度で異常値を排除するために、複数回に亘り、日単位のデュレーション値を所定数に補正する処理、学習期間でデュレーション値を積み上げる処理、および所定の閾値よりも少ないデュレーション値を切り捨てる処理を行うことが望ましい。
【0068】
デュレーション値の異常値はバースト的に発生する場合があるので、学習期間の合計回数ではなく、日単位の発生回数に基づいてデュレーション値が異常であるか否かを判定することが望ましい。しかし、デュレーション値は連続値であるため、デュレーション値に閾値を設けて異常値を判定しようとしても正確に異常値を排除することはできない。そこで、上述したように、日単位でクラスタリングしたデュレーション値の発生回数を学習期間において比較することで、日単位で発生回数が少ないデュレーション値を異常値として排除することができる。また、異常検知装置300は、上述した処理を複数回繰り返すことでデュレーション値の精度を向上させることができる。
【0069】
(マルコフモデルの高次化)
図28は、優先マルコフモデルを高次化する処理を説明するための図である。
既知の単純マルコフモデルは1つ前のログメッセージを考慮して次のログメッセージを推定するが、異常検知装置300は、推定精度を向上させるために、2つ前以上のログメッセージを考慮してログメッセージを推定する高次マルコフモデルを作成してよい。しかし、単純マルコフモデルに代えて高次マルコムモデルを適用すると推定精度が落ちてしまう場合がある。特に、メッセージ集合から推定されるシーケンスの長さがかなり長い場合、推定精度の劣化が起きやすい。そこで、異常検知装置300は、高次化する範囲を制限し、優先マルコフモデルのみ高次化する部分高次化処理を行う。
【0070】
異常検知装置300は、優先メッセージを用いて高次マルコフモデル作成処理を行う。異常検知装置300は、下記式のAIC(赤池情報量基準)を用いて次数kを選択し、k次マルコフモデルを作成する。下記の式において、kηmは尤度比統計量(likelihood ratio statistics)であり「-2×(LLk-LLm)」と表現され、LLk(log likelihood for k-order markov chain)は、k次マルコフチェーンの対数尤度であり、LLm(log likelihood for m-order markov chain)は、m次マルコフチェーンの対数尤度であり、S
m-S
k(S-1)は、尤度比検定統計量(likelihood ratio test statistics)であり、Sは、もともとの状態数(original number of states)である。。これにより、異常検知装置300は、シーケンスの長さが長くても安定的に高い推定精度を得ることができる。
【数2】
【0071】
[シーケンス推定処理]
図29は、シーケンス推定処理の一例を示すシーケンス図である。
監視対象システム100は、データ処理装置200にログメッセージを送信し、データ処理装置200は、上述したように、コンフィグレーション情報に基づいてログメッセージを解析し(ステップS502)、ログメッセージにメッセージIDを追加する(ステップS504)。データ処理装置200は、メッセージIDが追加されたログメッセージを異常検知装置300に送信し、異常検知装置300は、メッセージIDを用いてシーケンスを推定し(ステップS506)、シーケンスを示すシーケンス値をデータ処理装置200に送信する。これにより、データ処理装置200は、シーケンス値を表す情報や、当該シーケンスに関する情報をユーザ端末装置400に提供することができる。
【0072】
図30は、シーケンス推定処理の処理手順の一例を示すシーケンス図である。異常検知装置300は、先ずログメッセージを取り出し(ステップS510)、シーケンスを推定する。シーケンスの推定は、競合調整済である優先マルコフモデルもしくは競合調整済みでない優先マルコフモデルのいずれか、通常マルコフモデルの順で、マルコフモデルを用いて行う。競合調整済みであるマルコフモデルについては後述する。
【0073】
まず、異常検知装置300は、競合調整済である優先マルコフモデルもしくは競合調整済みでない優先マルコフモデルのいずれかの作成を行い(ステップS512)、ログメッセージの推定を行う(ステップS513)。異常検知装置300は、競合調整済みである優先マルコフモデルの作成およびログメッセージの推定を、ステップS510で取り出したログメッセージの数分を繰り返して行う。なお、競合調整済みである優先マルコフモデルを用いない場合、競合調整済みである優先マルコフモデルの作成を行わなくてよい。異常検知装置300は、競合調整済である優先マルコフモデルもしくは競合調整済みでない優先マルコフモデルのいずれかを用いてログメッセージの数分を繰り返してシーケンスの推定を行い、通常マルコフモデルを用いてログメッセージの数分を繰り返してシーケンスの推定を行う。
【0074】
図31は、競合調整済みマルコフモデルの作成処理の処理手順の一例を示すフローチャートである。先ず異常検知装置300は、通常マルコフモデルの学習データと優先マルコフモデルの学習データとの間に、時間的に近いログメッセージである共通メッセージが存在するか否かを判定する(ステップS520)。異常検知装置300は、共通メッセージがない場合(ステップS520:NO)、本フローチャートの処理を終了し、共通メッセージがある場合(ステップS520:YES)、ステップS522の処理を行う。ステップS522において、異常検知装置300は、学習データから共通メッセージを除く。次に異常検知装置300は、共通データを除いた学習データを用いて優先マルコフモデルを作成する(ステップS524)。
【0075】
図32は、競合調整済みの優先マルコフモデルの作成処理の一例を説明するための図である。例えば、優先マルコフモデルがログメッセージの集合Xに含まれる優先メッセージにより学習され、通常マルコフモデルがログメッセージの集合Yにより学習されたものとする。上述したように、異常検知装置300は、優先マルコフモデルによりシーケンスを推定した後、通常マルコフモデルによりシーケンスを推定する。
【0076】
しかし、
図32に示すようにログメッセージの集合Xとログメッセージの集合Yとが時間的に重複している場合、ログメッセージの集合Xの優先メッセージX’に含まれるが、ログメッセージの集合Yの優先メッセージY’に含まれないログメッセージMが存在する。この場合、ログメッセージMは、ログメッセージの集合Xに偏っていることになる。そこで、異常検知装置300は、ログメッセージの集合Xおよびログメッセージの集合Yについて優先メッセージから共通メッセージMを除外して優先マルコフモデルの作成を行う。すなわち、異常検知装置300は、メッセージの集合Xに含まれる優先メッセージX’から共通メッセージMを除いた共通メッセージM’を用いて競合調整済みの優先マルコフモデルを作成する。共通メッセージM’は、ログメッセージの集合Xに含まれる優先メッセージX’から、ログメッセージの集合Yとログメッセージの集合Yに含まれる優先メッセージY’との差分に含まれる共通ログメッセージMを除いたログメッセージである。以上のように、異常検知装置300によれば、時間的に近いログメッセージが一方のログメッセージの集合の優先メッセージに偏ることを回避することができる。
【0077】
なお、マルコフモデルの作成時に競合調整済みの優先マルコフモデルを作成せずに、シーケンスの推定時に競合調整済みの優先マルコフモデルを作成することが望ましい。マルコフモデルの作成時には、ログメッセージの集合同士が時間的に近いタイミングで発生するか否かを判定する処理を行っていないためである。仮に、マルコフモデルの作成時に、他のマルコフモデルを作成するために用いたログメッセージと時間的に近いことを判定すると、優先メッセージが減少して優先マルコフモデルのシーケンス推定精度が低下するためである。
【0078】
図33は、ログメッセージについてのシーケンス推定処理の処理手順の一例を示すフローチャートである。まず異常検知装置300は、対象のログメッセージについてシーケンスが推定済であるか否かを判定し(ステップS530)、対象のログメッセージについてシーケンスが推定済である場合には本フローチャートの処理を終了する(ステップS530:YES)。異常検知装置300は、ログメッセージについてのシーケンスが推定済でない場合には(ステップS530:NO)、対象のログメッセージxについてマルコフモデルの状態遷移に合致する、ログメッセージxよりも時系列的に前のログメッセージyを抜き出す(ステップS532)。次に異常検知装置300は、ステップS532においてログメッセージyの候補が存在するか否かを判定する(ステップS534)。異常検知装置300は、ログメッセージyの候補が存在する場合(ステップS534:YES)、ログメッセージxにログメッセージyと同じシーケンス値を付与する(ステップS536)。異常検知装置300は、ログメッセージyの候補が存在しない場合(ステップS534:NO)、ログメッセージxに時間的に最も近いログメッセージを抜き出し、ログメッセージxに、当該抜き出したログメッセージと同じシーケンス値を付与する(ステップS538)。
【0079】
図34は、優先マルコフモデルおよび通常マルコフモデルを用いたシーケンス推定処理を説明するための図である。
異常検知装置300は、取り出したログメッセージの集合を、優先メッセージと優先メッセージ以外のログメッセージとに分割する。異常検知装置300は、優先メッセージを優先マルコフモデルのみに入力して、優先メッセージに含まれるシーケンスを推定する。次に異常検知装置300は、優先メッセージ以外のログメッセージを通常マルコフモデルに入力して、優先メッセージ以外のログメッセージに含まれるシーケンスを推定する。これにより、異常検知装置300は、優先マルコフモデルによるシーケンス推定結果と、通常マルコフモデルによるシーケンス推定結果とを取得することができる。
【0080】
図35は、シーケンス推定処理の他の一例を示すフローチャートである。異常検知装置300は、デュレーション値を利用して補助的なシーケンス推定を行ってよい。異常検知装置300は、シーケンス推定結果を参照し、複数のシーケンス値が付与されているログメッセージを検索し、シーケンス候補が複数存在するログメッセージが存在するか否かを判定する(ステップS540)。異常検知装置300は、複数のシーケンス値が付与されたログメッセージがない場合は(ステップS540:NO)、シーケンス推定処理を終了する。
【0081】
異常検知装置300は、複数のシーケンス値が付与されたログメッセージがある場合(ステップS540:YES)、ログメッセージのデュレーション値と、マルコフモデルのデュレーション値とを比較する(ステップS542)。異常検知装置300は、推定されたシーケンスに含まれるログメッセージ間の状態遷移分のデュレーション値を計算し、計算したデュレーション値と、推定された複数のシーケンス値それぞれに対応する複数のマルコフモデルにおけるデュレーション値とを比較する。異常検知装置300は、ログメッセージのシーケンス値と最も近いデュレーション値を持つマルコフモデルに対応するシーケンス値に決定する(ステップS544)。
【0082】
図36は、シーケンスを決定する処理を説明するための図である。例えば、ログメッセージm11、m12、およびm13の順に並ぶメッセージ群(シーケンスS1)が、シーケンスS2およびシーケンスS3であると推定されたとする。この場合、異常検知装置300は、シーケンスS1のデュレーション値d11およびd12を計算し、計算したd11およびd12とシーケンスS2のデュレーション値d21およびd22との差が、計算したd11およびd12とシーケンスS3のデュレーション値d31およびd32との差よりも大きいと判定する。この結果、異常検知装置300は、メッセージ群(シーケンスS1)がシーケンスS3であることを推定することができる。
【0083】
[異常判定処理]
図37は、異常判定処理の処理手順の一例を示すフローチャートである。異常検知装置300は、シーケンス推定処理によりシーケンス値が付与されたログメッセージXの数分を、異常判定処理(ステップS610)を繰り返して行う。異常検知装置300は、異常判定処理により異常であることが判定されたログメッセージXに対応づけて、異常フラグを検知結果蓄積部208に書き込む(ステップS612)。
【0084】
図38は、異常判定処理の処理内容の一例を示すフローチャートである。異常検知装置300は、対象とするログメッセージXについて優先マルコフモデルおよび通常マルコフモデルの何れか一つのマルコフモデルに一致するか否かを判定し(ステップS610)、何れか一つのマルコフモデルに一致する場合(ステップS610:YES)、デュレーション値に一致するか否かを判定する(ステップS612)。
【0085】
異常検知装置300は、優先マルコフモデルおよび通常マルコフモデルの何れか一つのマルコフモデルに一致しない場合(ステップS610:NO)、対象とするログメッセージXについての異常フラグをONに設定する(ステップS614)。異常検知装置300は、一致したマルコフモデルにおけるデュレーション値に、対象とするログメッセージXと同じシーケンス値のログメッセージ間のデュレーション値が一致しない場合(ステップS612:NO)、対象とするログメッセージXについての異常フラグをONに設定する(ステップS614)。
【0086】
<実施形態の効果>
以上説明したように、実施形態のシーケンス推定システム1によれば、監視対象システム100からログメッセージを収集し、収集したログメッセージのうち相関が高いログメッセージの集合を取得し、ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得し、学習データを用いて、ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させることができる。これによりシーケンス推定システム1によれば、ログメッセージが時間的に高密度に発生しても学習データを取得することができる。
【0087】
なお、各実施形態および変形例について説明したが、一例であってこれらに限られず、例えば、各実施形態や各変形例のうちのいずれかや、各実施形態の一部や各変形例の一部を、他の1または複数の実施形態や他の1または複数の変形例と組み合わせて本発明の一態様を実現させてもよい。
【0088】
なお、本実施形態におけるデータ処理装置200や異常検知装置300の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムを、コンピュータシステムに読み込ませ、実行することにより、データ処理装置200や異常検知装置300に係る上述した種々の処理を行ってもよい。
【0089】
なお、ここでいう「コンピュータシステム」とは、OSや周辺機器などのハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリなどの書き込み可能な不揮発性メモリ、CD-ROMなどの可搬媒体、コンピュータシステムに内蔵されるハードディスクなどの記憶装置のことをいう。
【0090】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネットなどのネットワークや電話回線などの通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic
Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置などに格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。
【0091】
ここで、プログラムを伝送する「伝送媒体」は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【符号の説明】
【0092】
1 シーケンス推定システム
100 監視対象システム
200 データ処理装置
202 フォーマット変換部
204 データ処理部
206 ログデータ蓄積部
208 検知結果蓄積部
210 可視化部
300 異常検知装置
310 コンフィグレーション作成部
320 メッセージ登録部
330 学習部
332 メッセージ集合推定部
334 モデル作成部
340 推定部
342 シーケンス推定部
344 異常判定部
400 ユーザ端末装置
【手続補正書】
【提出日】2023-07-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
監視対象システムからログメッセージを収集する収集部と、
前記収集部により収集したログメッセージのうち相関が高いログメッセージの集合を取得する集合取得部と、
前記集合取得部により取得された前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得する学習データ取得部と
前記学習データ取得部により取得された学習データを用いて、前記収集部により収集したログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させる学習部と、
を備える、学習装置。
【請求項2】
前記複数のログメッセージをクラスタリングし、クラスタリングされたログメッセージを識別する識別子を設定するクラスタリング部を備え、
前記集合取得部は、前記クラスタリング部により同じ識別子が設定された複数のログメッセージを、前記ログメッセージの集合として取得する、請求項1に記載の学習装置。
【請求項3】
前記学習データ取得部は、
前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生していない場合には、前記ログメッセージの集合の発生時刻に基づいて学習データを取得し、
前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生している場合には、前記ログメッセージの集合からサンプリングしたログメッセージの集合におけるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得する、請求項1または2に記載の学習装置。
【請求項4】
前記学習データ取得部は、
前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生している場合において、
前記ログメッセージの集合における対象となるログメッセージと他のログメッセージ間の時間差分を算出し、確率密度が最大となる時間差分を算出し、
確率密度が最大となる時間差分をソートすることで前記ログメッセージのシーケンスを推定し、
前記シーケンスに含まれるログメッセージを学習データとして収集する、
請求項1から3のうち何れか1項に記載の学習装置。
【請求項5】
情報処理装置が、監視対象システムからログメッセージを収集するステップと、
前記情報処理装置が、前記ログメッセージのうち相関が高いログメッセージの集合を取得するステップと、
前記情報処理装置が、前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得するステップと、
前記情報処理装置が、前記学習データを用いて、前記ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させるステップと、
を含む、学習方法。
【請求項6】
コンピュータに、
監視対象システムからログメッセージを収集するステップと、
前記ログメッセージのうち相関が高いログメッセージの集合を取得するステップと、 前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得するステップと、
前記学習データを用いて、前記ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させるステップと、
を実行させる、プログラム。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】
(4)本発明の一態様は、上記の学習装置であって、前記学習データ取得部は、前記集合取得部により取得された前記ログメッセージの集合において連続的にログメッセージが発生している場合において、前記ログメッセージの集合における対象となるログメッセージと他のログメッセージ間の時間差分を算出し、確率密度が最大となる時間差分を算出し、確率密度が最大となる時間差分をソートすることで前記ログメッセージのシーケンスを推定し、前記シーケンスに含まれるログメッセージを学習データとして収集してよい。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】
(5)本発明の一態様は、情報処理装置が、監視対象システムからログメッセージを収集するステップと、前記情報処理装置が、前記ログメッセージのうち相関が高いログメッセージの集合を取得するステップと、前記情報処理装置が、前記ログメッセージの集合に含まれるログメッセージ間の時間差に基づいてログメッセージの順序を推定し、推定した順序で配列した複数のログメッセージを含むシーケンスを学習データとして取得するステップと、前記情報処理装置が、前記学習データを用いて、前記ログメッセージを入力とし複数のログメッセージを含むシーケンスを推定した結果を出力する推定モデルを学習させるステップと、を含む、学習方法である。