JP2017033329A - 構造化ログ生成装置、構造化ログ生成方法、及びプログラム - Google Patents

構造化ログ生成装置、構造化ログ生成方法、及びプログラム Download PDF

Info

Publication number
JP2017033329A
JP2017033329A JP2015153147A JP2015153147A JP2017033329A JP 2017033329 A JP2017033329 A JP 2017033329A JP 2015153147 A JP2015153147 A JP 2015153147A JP 2015153147 A JP2015153147 A JP 2015153147A JP 2017033329 A JP2017033329 A JP 2017033329A
Authority
JP
Japan
Prior art keywords
array
log
sequence
template
pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015153147A
Other languages
English (en)
Other versions
JP6353816B2 (ja
Inventor
達明 木村
Tatsuaki Kimura
達明 木村
暁 渡邉
Akira Watanabe
暁 渡邉
敬志郎 渡辺
Keishiro Watanabe
敬志郎 渡辺
剛 豊野
Takeshi Toyono
剛 豊野
圭介 石橋
Keisuke Ishibashi
圭介 石橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015153147A priority Critical patent/JP6353816B2/ja
Publication of JP2017033329A publication Critical patent/JP2017033329A/ja
Application granted granted Critical
Publication of JP6353816B2 publication Critical patent/JP6353816B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】機器が出力する複数行から成るログを利用者にとって扱いやすい形式へ変換すること。【解決手段】構造化ログ生成装置は、コマンドの入力に応じて機器から出力される複数行の記述を含むログの各行を、構文が共通する記述ごとの識別子に変換して、前記識別子の第1の配列を生成する生成部と、前記第1の配列の複数の部分に出現する、前記識別子を2以上含む第2の配列を、前記第1の配列から抽出し、前記第1の配列において前記第2の配列に該当する部分を、前記第2の配列ごとの識別子に置換する抽出部と、を有する。【選択図】図5

Description

本発明は、構造化ログ生成装置、構造化ログ生成方法、及びプログラム
に関する。
IPネットワーク、Webサービス等で用いられるサーバやルータ等の機器は、機器の異常発生時の対応や状態確認を目的として、一般に、ハードウェアやソフトウェアに関するログを出力するコマンドを具備している。運用者・管理者等の利用者は必要に応じてこれらのコマンドを実施し、出力されたログを収集後、故障回復措置やベンダへの解析依頼の送付といった行動をとる。これらのコマンドによって出力されるログ(以下、「コマンド出力ログ」という。)は、一般に、Syslogやエラー情報では出力されない、機器の詳細な現在の状態が記述されたログであるため、まだルール化されていない未知の故障の検知や詳細な事象の原因究明に非常に有用である。
特開2015−36891号公報
Splunk,[online]、[平成27年7月8日検索]、インターネット〈URL:http://www.splunk.com/〉 Kasai, T.; Lee, G.; Arimura, H.; Arikawa, S.; Park, K. (2001). Linear-Time Longest-Common-Prefix Computation in Suffix Arrays and Its Applications. Proceedings of the 12th Annual Symposium on Combinatorial Pattern Matching. Lecture Notes in Computer Science 2089. pp. 181-192 G. H. Gonnet, R. Baeza-yates, T. Snider, New indices for text: Pat tree and Pat arrays. Information Retrieval, Prentice Hall (1992).
しかしながら、コマンド出力ログは、数値やステータス等の多岐に渡る情報が記述されたテキストフォーマットであり、一度の出力で数千から数万行に至るものがある。したがって、コマンド出力ログの実際の利用には、利用者の知識と経験に依存するところが多く、自動分析が難しいという課題がある。
Syslogやアプリケーションログなど、稼働中の機器で発生したイベントが契機で追記されていくログ(以下、コマンド出力ログと区別するため、「逐次型ログ」という。)については、近年において、特に故障監視の高度化を目的として、分析のニーズが高まったため、多くの研究や市中製品が存在する。例えば、Splunk(非特許文献1)は、逐次型ログの分析を簡略化するための分析基盤であり、蓄積されるデータの可視化や検索を高速に実施可能なツールである。
しかし、このツール利用するためには、個々の逐次型ログの意味やメッセージの内容に関しての事前知識が必要となる。また、コマンド出力ログのような、複数行に渡る、膨大で複雑なログに対しての適用は考慮されていない。
一方、特許文献1では、逐次型ログを対象とし、メッセージ内に含まれるIDやIPアドレス等のパラメータを除去した、テンプレートの自動的な抽出法が開示されている。この手法では、逐次型ログのメッセージフォーマットに関する事前知識を特に必要とせず、また、逐次的にテンプレートを抽出できるという利点があるが、上述したコマンド出力ログのような複数行に渡るログに対しての適用は困難である。
本発明は、上記の点に鑑みてなされたものであって、機器が出力する複数行から成るログを利用者にとって扱いやすい形式へ変換することを目的とする。
そこで上記課題を解決するため、構造化ログ生成装置は、コマンドの入力に応じて機器から出力される複数行の記述を含むログの各行を、構文が共通する記述ごとの識別子に変換して、前記識別子の第1の配列を生成する生成部と、前記第1の配列の複数の部分に出現する、前記識別子を2以上含む第2の配列を、前記第1の配列から抽出し、前記第1の配列において前記第2の配列に該当する部分を、前記第2の配列ごとの識別子に置換する抽出部と、を有する。
機器が出力する複数行から成るログを利用者にとって扱いやすい形式へ変換することができる。
第1の実施の形態におけるシステム構成例を示す図である。 コマンド出力ログの第1の例を示す図である。 コマンド出力ログの第2の例を示す図である。 第1の実施の形態における構造化ログ生成装置のハードウェア構成例を示す図である。 第1の実施の形態における構造化ログ生成装置の機能構成例を示す図である。 構造化ログ生成装置が実行する処理手順の一例を説明するためのフローチャートである。 頻出パターンの抽出法の一例を説明するためのフローチャートである。 文字列bananana$のsuffix arrayの例を示す図である。 改変した高さ配列HGT'の生成手順の一例を示す図である。 最もID削減率の高い頻出パターンの探索手順の一例を示す図である。 第2の実施の形態における構造化ログ生成装置の機能構成例を示す図である。 第3の実施の形態における構造化ログ生成装置の機能構成例を示す図である。
以下、図面に基づいて本発明の実施の形態を説明する。図1は、第1の実施の形態におけるシステム構成例を示す図である。図1において、構造化ログ生成装置10は、LAN(Local Area Network)又はインターネット等のネットワークを介して、機器20−1〜機器20−n等の1以上の機器20とネットワークを介して接続されている。
機器20は、その稼働状態等について監視対象とされている機器20である。各機器20は、コマンドの入力に応じて、当該機器20のハードウェア又はソフトウェアの状態等を示すログ情報(以下、「コマンド出力ログ」という。)を生成し、出力する。機器20の監視は、コマンド出力ログに基づいて行われる。1回のコマンドの入力によって出力されるコマンド出力ログは、例えば、図2又は図3に示されるように、複数行の記述を含む。なお、図2は、「http://www.alaxala.com/jp/techinfo/archive/manual/AX7800S/HTML/10_10_/COMREF/0103.HTM」から引用されたものである。図3は、「http://www.cisco.com/cisco/web/support/JP/100/1007/1007955_crashes_router_troubleshooting-j.html」から引用されたものである。
構造化ログ生成装置10は、各機器20等の機器から出力されるコマンド出力ログについて、利用者が当該コマンド出力ログの生成則を直接的に知らなくても、その利用者にとって扱いやすい形式へ変換する1以上のコンピュータである。例えば、構造化ログ生成装置10は、各機器20から出力されるコマンド出力ログを収集し、収集されたコマンド出力ログについて変換処理を行う。
図4は、第1の実施の形態における構造化ログ生成装置のハードウェア構成例を示す図である。図4の構造化ログ生成装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、CPU104、及びインタフェース装置105等を有する。
構造化ログ生成装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムに従って構造化ログ生成装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
図5は、第1の実施の形態における構造化ログ生成装置の機能構成例を示す図である。図5において、構造化ログ生成装置10は、UI部11、テンプレート抽出部12、及びパターン抽出部13等を有する。これら各部は、構造化ログ生成装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。構造化ログ生成装置10は、また、コマンド出力ログ記憶部121、テンプレート記憶部122、パターン情報記憶部123、及び構造化ログ記憶部124等を利用する。コマンド出力ログ記憶部121、テンプレート記憶部122、パターン情報記憶部123、及び構造化ログ記憶部124等は、例えば、図4の補助記憶装置102、又は構造化ログ生成装置10にネットワークを介して接続可能な記憶装置等を用いて実現可能である。なお、図5において「利用者」を示すブロックは、利用者が利用するPC(Personal Computer)、タブレッツ端末、又はスマートフォン等の端末であってもよい。
UI部11は、利用者からの指示の受け付けや、当該指示に応じた処理結果について、利用者に対する出力等を行う。第1の実施の形態において、UI部11は、利用者からの指示に応じ、各機器20によって出力されるコマンド出力ログを収集し、収集されたコマンド出力ログを、コマンド出力ログ記憶部121に記憶する。例えば、利用者は、或るコマンド(ログの出力コマンド)を、監視対象の1つ又は複数の機器20に対して実行する。UI部11は、実行されたコマンドによって出力されるコマンド出力ログを逐次的に収集して、コマンド出力ログ記憶部121に記憶する。なお、UI部11は、コマンドのリストの提示や、後述されるテンプレートの抽出に必要なパラメータの設定や、後述されるパターンの手動での入力の受け付け等を行ってもよい。
テンプレート抽出部12は、各コマンド出力ログの各行の記述(メッセージ)からテンプレートを抽出する。
テンプレートとは、各記述(メッセージ)をその形式又は構文の共通性に基づいて分類するための雛形情報であり、メッセージの種別を示す情報であるともいえる。テンプレートは、例えば、同じ事象を示す複数のメッセージに関して、値が一定である単語、パラメータ、又はメッセージ等の項目(以下、「固定部分」という。)については具体的な記述を含み、値が一定ではない項目(以下、「変動部分」という。)については、変数化された(例えば、*(アスタリスク)によって表現された)文字列である。テンプレートは、例えば、特許文献1に開示された技術を利用して、メッセージから自動的に抽出されてもよい。特許文献1の図3には、テンプレートの一例が示されている。なお、テンプレートの抽出方法は、ログの各行を分類できる方法であれば所定のものに限定されない。
テンプレート抽出部12は、コマンド出力ログの各行を、当該行から抽出されたテンプレートに対応するID(以下、「テンプレートID」という。)に置換する。その結果、コマンド出力ログは、テンプレートIDの配列(以下、「テンプレート系列」という。)に変換される。同一のテンプレートが抽出される各行は、同一のテンプレートIDに置換される。また、テンプレート抽出部12は、各行から抽出されたテンプレートを、当該テンプレートのテンプレートIDに対応付けてテンプレート記憶部122に記憶する。テンプレート抽出部12は、処理対象のコマンド出力ログと同一コマンドによって出力されたコマンド出力ログから抽出されたテンプレートがテンプレート記憶部122に記憶されている場合には、当該テンプレートを利用して、処理対象のコマンド出力ログのテンプレート化を行う。したがって、テンプレートは、同一コマンドに係る複数のコマンド出力ログに対して有効である。
パターン抽出部13は、テンプレート系列ごとに、当該テンプレート系列の複数の部分に出現する、2以上のIDを含むIDの配列(以下、「頻出パターン」という。)を抽出し、当該テンプレート系列において、頻出パターンに該当する部分を、頻出パターンごとのID(以下、「パターンID」という。)によって置換する。その結果、コマンド出力ログが構造化(ブロック化)される。パターン抽出部13は、各頻出パターンをそれぞれのパターンIDに対応付けてパターン情報記憶部123に記憶する。パターン抽出部13は、また、構造化されたコマンド出力ログ(以下、「構造化ログ」という。)を、構造化ログ記憶部124に記憶する。
以下、構造化ログ生成装置10が実行する処理手順について説明する。図6は、構造化ログ生成装置が実行する処理手順の一例を説明するためのフローチャートである。
図6では、或る1つのコマンドに対する、複数の機器20からの複数のコマンド出力ログ又は単一の機器20からの1以上のコマンド出力ログが処理対象とされる。或る1つのコマンドに対する結果であるコマンド出力ログ群をX(i=1,2,…,I)と表現する。異なるXは異なる機器20から取得された同一コマンドに基づくコマンド出力ログであってもよいし、同一機器20において別時刻に出力された同一コマンドに基づくコマンド出力ログであってもよく、その総回数がI(≧1)であるとする。
図6では、各コマンド出力ログXの各行のメッセージについてテンプレート抽出が行われ、得られたテンプレートの列から頻出パターンを列挙することで、コマンド出力ログの構造化が行われる。なお、各コマンド出力ログX内のn行目のログをxi,n(n=1,2,…,N)とする。但し、NはX内の総行数である。同一コマンドから出力されたコマンド出力ログであっても、Nが同じであるとは限らない。
ステップS101において、テンプレート抽出部12は、コマンド出力ログXの各行xi,nから、テンプレートを抽出し、各行xi,nを当該行に関して抽出されたテンプレートに対応するテンプレートIDによって置換する。
テンプレート抽出部12は、或る行に関して抽出されたテンプレートの当該テンプレートのテンプレートIDとの組を、テンプレート記憶部122に記憶し、当該行より後の行において、既にテンプレート記憶部122に記憶されているテンプレートに該当する行は、当該テンプレートのテンプレートIDに置換する。したがって、同様の構文を有する各行は、共通のテンプレートIDに置換される。
抽出されたテンプレートIDをti,n∈{1,2,…,T}で表現する。但し、Tは総テンプレート数である。コマンド出力ログXの各行xi,nが、テンプレートIDが置換されるとこで、テンプレートIDの配列t=(t1,i,t2,i,t3,i,…,tNi,i)が得られる。以下、コマンド出力ログXから得られる当該配列をテンプレート系列tという。ステップS101では、各コマンド出力ログXについて、テンプレート系列tが生成される。
続いて、テンプレート系列tごとに、ステップS102以降が実行される。ステップS102において、パターン抽出部13は、テンプレート系列tの中から、頻出パターンを探索する。頻出パターンが発見された場合(ステップS103でYes)、パターン抽出部13は、テンプレート系列t内において、当該頻出パターンに該当する部分を、当該頻出パターンに対応するパターンIDに置換することで、テンプレート系列tの構造化を行う(ステップS104)。
頻出パターンの発見と置換えには様々な方法が考えられるが、本実施の形態では、一例として、以下の2つの条件を満たすパターンが発見対象とされる。
(1)2回以上出現している、連続する2以上のID列(但し、同一のIDの連続であることは要されない。)を頻出パターンとみなし、テンプレート系列tを先頭から順に参照して発見された頻出パターンを、逐次、テンプレートIDとは別の1つのパターンIDで置き換えるという操作を行った時に、元のテンプレート系列tの総ID数と比較して総ID数が最も減少するもの。ここで、総ID数とは、テンプレート系列tの長さをいい、重複するIDであっても、それぞれ個別にカウントされることで得られる値である。
例えば、[1,2,3,4,1,2,3,4]を、5=(1,2,3,4)というパターンで置き換え[5,5]とする。パターン6=(1,2,3)でも置き換えが可能であるが、その場合の置換結果は[6,4,6,4]となるため、条件(1)より、総ID数が相対的に減少する前者のパターンが採用される。
(2)但し、置き換えを行う連続するID列の内部に繰り返し構造は存在しない(ID列の繰り返しを含まない)とする。
例えば、[1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4]列に対して、パターン7=[1,2,3,4,1,2,3,4]とすると、[7,7]への置換えが可能であり、パターン5=(1,2,3,4)で置換としたときの[5,5,5,5]と比較するとID数が削減できるが、(1,2,3,4)を一つのパターンと捉えたほうが、構造化された後のログの意味を見出す上で都合がよいため、(1,2,3,4)をパターンとして捉える。
なお、上記の(1)及び(2)の条件を満たす頻出パターンの発見法の詳細については後述される。以下、テンプレート系列tの一部又は全部が、パターンIDによって置き換えられることにより得られるテンプレートID又はパターンIDによって構成されるIDの配列を、「ID系列t'」という。
ステップS102は、ID系列t'において頻出パターンが発見されなくなるまで繰り返される。なお、一つのテンプレート系列tについて2回目以降に実行されるステップS102においては、パターンIDを含むID列も、頻出パターンの対象となる。すなわち、一つのテンプレート系列tからの頻出パターンの抽出は、再帰的に実行される。パターン抽出部13は、頻出パターンが発見されるたびに、当該頻出パターンと、当該頻出パターンのパターンIDとの組を、パターン情報記憶部123に記憶する。
なお、或るテンプレート系列tに関して抽出された頻出パターンとパターンIDとの対応は、当該テンプレート系列tに関してのみ有効である。例えば、テンプレート系列tに関して抽出された頻出パターンと、テンプレート系列ti+1に関して抽出された頻出パターンとが同じであっても、それぞれに対するパターンIDは、異なっていてもよい。
ID系列t'において頻出パターンが発見されなくなると(S103でNo)、パターン抽出部13は、ID系列t'において、連続するID列(同一IDが連続する部分)を当該IDと連続発生数(連続回数)とのタプル(組)で置き換える(ステップS105)。例えば、[1,2,2,2,3]は、[1,(2,3),3]に置き換えられる。但し、ステップS105は行われなくてもよい。
続いて、パターン抽出部13は、ステップS105によって得られる構造化ログを、構造化ログ記憶部124に記憶し、当該構造化ログと、パターン情報記憶部123に記憶されている情報とを出力する(ステップS106)。
続いて、上記の条件(1)及び条件(2)を満たす頻出パターンの発見法について説明する。
連続する文字列の頻出パターン発見法については、suffix array(接尾辞配列)を用いた効率的な手法が知られているが(非特許文献3)、これら手法では、通常、パターンの発生回数の計算時に、同一位置の文字(同一位置のID)の重複カウントを許して頻出パターンを発見する。例えば、[2,3,2,3,2]という列において、[2,3,2]というパターンは、位置1から開始するものと位置3から開始するものがある。したがって、この場合、同一位置のIDの重複カウントを許せば、当該パターンは2回発生しているといえる。ID列をパターンIDに置き換える場合には、同一位置のIDについて重複カウントを行うのは適切ではない。したがって、このようなパターン(同一位置のIDの重複カウントが許容されたパターン)が抽出されてしまうと、[2,3,2,3,2]という列は、先頭の[2,3,2]の部分しかパターンIDに置換することができない。そこで、本実施の形態では、同一位置のIDについての重複カウントを回避するため、suffix arrayを用いたパターンの発見方法に変更を加えた新たな手法を説明する。
以下では簡単のため、対象とするテンプレート系列t又はID系列t'を、ID系列t=[t,…,t]といい、添字iを省略して表記する。
図7は、頻出パターンの抽出法の一例を説明するためのフローチャートである。なお、任意のjに対して、ID系列tの部分系列[t,…,t]を、出現位置jにおけるtの接尾辞という。
ステップS201において、パターン抽出部13は、ID系列tのsuffix array(接尾辞配列)を構築する。
suffix array(接尾辞配列)とは、ID系列tの各接尾辞へのポインタを格納した配列であり、各ポインタは、それが示す接尾辞の辞書式順序(例えば、アルファベット順等)でソートされる。suffix arrayの生成には、O(nlogn)のアルゴリズムが一般的に用いられることが知られている(非特許文献3)。文字列bananana$($は終端文字)のsuffix arrayの例を図8に示す。図8において、「suffix array」の列は、suffix arrayの要素の値(すなわち、接尾辞へのポインタ)である。また、「接尾辞」の列は、「suffix array」の列によって示されるポインタを先頭とする接尾辞を示す。図8では、接尾辞が、辞書式順序でソートされた結果が示されている。したがって、「suffix array」の列の値を上から順に並べることで得られる配列が、bananana$のsuffix arrayに相当する。なお、「HGT'」の列については後述される。
以下では、suffix arrayを、Pos[1..n]で表現する。すなわち、任意の1≦j≦nに対し、Pos[j]は、辞書式順序でのj番目の接尾辞の、ID系列tにおける開始位置となる。
続いて、パターン抽出部13は、構築されたsuffix arrayに対して、改変した高さ配列HGT'を構築する(ステップS202)。
改変した高さ配列HGT'とは、suffix array上で隣接する接尾辞同士における、先頭から単語位置の重複なしに一致する文字数又はID数をカウントしたものであり、非特許文献3で述べられる高さ配列に対し、位置に関する重複なしの条件を加えたものである。
更に厳密に定義すると、改変した高さ配列HGT'とは、隣接する接尾辞tPos[j]とtpos[j+1]が、それぞれu=Pos[j]、v=Pos[j+1]、すなわちtPos[j]={t,tu+1,…,tu+h−1,…t}、tpos[j+1]={tv+1,…,tv+h−1,…t}のとき、
HGT'[j]=max{h;t=t,tu+1=tv+1,tu+h−1=tv+h−1,{u,…,u+h−1}∩{v,…,v+h−1}=φ}
と定義される(φは空集合を表す)。また、HGT'[n]=−1と定義する。ここで、max{h;・・・}は、「;」以降の条件を満たすhの中で最大のhを出力する関数である。「;」以降の条件のうち、「{u,…,u+h−1}∩{v,…,v+h−1}=φ」によって、同一位置に関する重複カウントが回避されている。例えば、図8において、j=3である場合、u=6、v=4である。すなわち、tPos[j]={ana$}であり、tpos[j+1]={anana$}である。これら2つの文字列について、先頭から一致する文字数は、3である。但し、hが3である場合について、「{u,…,u+h−1}∩{v,…,v+h−1}=φ」を評価すると、{6,7,8}∩{4,5,6}=6であり、空集合にならない。一方、hが2であれば、{6,7}∩{4,5}=φである。したがって、この場合の改変した高さ配列HGT'は、図8に示される通り、2となる。
より簡易に表現すれば、相互に隣接する或る接尾辞同士についての改変した高さ配列HGT'の値は、相互に隣接する他の接尾辞同士においてカウントされる一致部分はカウントされないということである。例えば、図8において、3番目の接尾辞「ana$」と4番目の接尾辞「anana$」とについて、3番目の「a」は、2番目の接尾辞「a$」と3番目の接尾辞「ana$」との改変した高さ配列HGT'においてカウントされる。したがって、当該3番目の「a」は、3番目の接尾辞「ana$」と4番目の接尾辞「anana$」に関する改変した高さ配列HGT'においてはカウントされないのである。
なお、図9は、改変した高さ配列HGT'の生成手順の一例を示す図である。図9では、まず、Pos[1..n]に対する逆関数(逆接尾辞)である配列Suf[1..n]が、Suf[Pos[j]]=jとなるよう計算される。すなわち、Suf[j]は、Pos[j]の順番である。
続いて、jを1〜nに変えながら、ステップa〜ステップeが実行される。ステップDbにおいて、vに代入される値は、suffix arreyにおいて、jに隣接するポインタである。すなわち、ステップc以降において呼び出されるLCP'(j,v,h)によって、隣接する接尾辞同士の改変した高さ配列HGT'が算出される。
ここで、LCP(s、t)を、文字列s、tにおいて共通する最長の接頭辞長を表すとする。非引用文献3で紹介されているように、通常の高さ配列の構築は、
LCP(tPos[j],tPos[j+1])−1≦LCP(tPos[j]+1,tPos[j+1]+1
という性質に着目し、隣接する接尾辞間で比較を行えば、全体O(N)で構築可能であることが知られている。これと同様に、LCP'(j,v,h)では、隣接する接尾辞間で、同時に{i,…,i+h−1}∩{j,…,j+h−1}=φという条件が満たされるようにすることで、文字の位置に関して重複がないように比較を行っている。すなわち、LCP'(t,t,h)は、接尾辞tとtとで同一位置の文字の重複カウントを許さない共通接頭辞の長さ(すなわち、改変した高さ配列HGT')である。
続いて、パターン抽出部13は、suffix arrayとHGT'とに基づいて、m回以上発生している、最もID削減率の高い頻出パターンを、ID系列tから探す(ステップS203)。なお、mの値は、例えば、予め設定される。
非特許文献2で述べられているとおり、suffix arrayと高さ配列とを使ってsuffix treeを模擬することができ、suffixt treeを巡回することで、最長の頻出パターンを探すことが可能である。しかし、前述の通り、通常のsuffixt treeの巡回では、パターンの発生回数を、位置の重複を許してカウントしてしまうという問題がある。また、改変した高さ配列HGT'は、隣接する接尾辞間で位置の重複カウントがないことを保証するが、例えば、suffix array上で2つ先の接尾辞と位置の重複がないことは保証されていない。これは、パターン列挙の条件が全順序関係を持たないことに起因する。
そこで、本実施の形態では、suffix arrayと改変した高さ配列HGT'とを用いつつsuffixt treeを巡回する際、パターンの出現する開始位置のリストを各葉及び節で保持しておくことにより、上記の条件(1)及び条件(2)を満たすようにする。
図10は、最もID削減率の高い頻出パターンの探索手順の一例を示す図である。図10において、スタックSは、葉の個数、高さ、及び出現位置のリストの3つの要素を一組とするデータのスタックである。sizeは、対象とするID系列tの総ID数である。Ckは、節の下の葉の個数を格納する変数である。Cposは、当該節の下の葉、すなわちID系列tの部分ID列のID系列tにおける出現位置(開始位置)の集合を格納する変数である。rCkは、節の出現位置の重複が解消された場合の節の下の葉の個数を格納する変数である。rCposは、当該節の下の葉、すなわちID系列tの部分ID列のID系列tにおける出現位置(開始位置)のうち、節の出現位置に重複がないものの集合を格納する変数である。また、top(S)は、スタックSの最上位のデータを示す。Pos(S)は、スタックSの最上位のデータを取り出して削除することを示す。Push(a,b,c,S)は、a、b、及びcの3つの要素を一組とするデータを、スタックSの最上位に格納することを示す。
以下に手順を簡単に説明する。各接尾辞をsuffixt treeにおける葉と見立て、各接尾辞間の共通接頭辞を節と見立て、これを順に巡回しつつ、最もID削減率の高い節を探す。この際、改変した高さ配列HGT'を用いることで所望のパターンを探す。例えば、k−1番目の葉、すなわち、接尾辞を考えると、HGT'[k]の値Hが0よりも大きければ、節(以下、当該節を「節A」という。)が存在することが分かる。スタック(S)を用いることで、葉の巡回の帰りがけに節Hkのチェックを行う。
まず、Hが0の場合は節が存在しないため、何もしない。
HGT'[k]の値HkがHよりも大きい場合、その節は、節Aの子となるため、スタックに節(Ck,H,Cpos)を積む(ステップg)。
HGT'[k]の値HkがHよりも短い場合、その節はスタックに格納されている節の祖先となる。すなわちroot方向へ戻ってきたことになるので、スタックを順に調べ、スタックに格納されている節のうち、Hkよりも長い節が見つかるまでスタックをpopする(ステップe)。
このとき、スタックを減らし、節をroot方向へ遡る過程において、PosCheck(Cpos,POS、H)を実行することで、節の出現位置に重複がないように調べつつ節の情報(rCk,rCpos)を更新する。PosCheck関数は、Cpos、Pos内に格納された開始位置から始まるHの長さを持つパターンが、出現位置に関して重複がないかを調べ、もし重複があればこれを除去する関数である(ステップe−ii)。
また、葉、すなわち、部分ID列の開始位置の集合rCposの調査と同時に条件rCk≧mandmin_IDs>(size−length(rCpos)×H)をチェックし、m回以上出現しており、かつ、最もID削減率の高い節、パターンであるかを調べていく(ステップe−iii)。
HGT'[k]の値HkがHと一致する場合、節Aに戻ったことになるので、スタックの最上位に格納されている値、すわなち、節Aの葉に関する情報を更新する(ステップf)。
以上により、m回以上出現する、最もID削減率の高いパターンの出現位置および出現回数を得ることができる(ステップS204)。
上述したように、第1の実施の形態によれば、複数行を含むコマンド出力ログは、テンプレート系列に変換された後、構造化(ブロック化)される。その結果、機器20が出力する複数行から成るコマンド出力ログを、利用者が機器のログの生成則を直接的に知ることなく、その利用者にとって扱いやすい形式へ変換することができる。
例えば、利用者は、機器20が正常に動作している状態において、或るコマンド(以下、「コマンドA」という)を実行することで得られるコマンド出力ログについて、構造化ログを予め獲得しておく。機器20に異常が発生した場合、利用者は、コマンドAを実行することで得られるコマンド出力ログについて構造化ログを獲得し、当該構造化ログと正常時の構造化ログとを比較することで、頻出パターン単位で、相違点を把握することができ、異常箇所の絞り込みの効率化を期待することができる。
また、利用者は、或る状態における機器20に対してコマンドBを実行することで獲得された構造化ログを監視対象のフィルタとして設定しておき、機器20に対してコマンドBが実行されるたびに、コマンド出力ログが構造化されるようにすることで、機器20における当該或る状態の発生を容易に検知することもできる。
なお、採用されるパターンの性質を決定する条件(1)及び条件(2)のうち、条件(1)における「元のテンプレート系列tの総ID数と比較して総ID数が最も減少する」という条件は、以下のような条件に置き換えられても良い。
・最も出現頻度が高い。
・i回以上発生しているパターンのうち最もID長の長い。
このように条件が変更される場合、図10に示したパターンの抽出手順が、所望の条件に即した内容に適宜変更されればよい。
次に,第2の実施の形態について説明する。第2の実施の形態では第1の実施の形態と異なる点について説明する。第2の実施の形態において特に言及されない点については,第1の実施の形態と同様でもよい。
図11は、第2の実施の形態における構造化ログ生成装置の機能構成例を示す図である。図11中、図5と同一又は対応する部分には同一符号を付し、その説明は適宜省略する。
図11において、構造化ログ生成装置10は、更に、ログ収集部14を有する。ログ収集部14は、構造化ログ生成装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
ログ収集部14は、例えば、自動的に(予め設定された時期に)、予め設定された1以上のコマンドを、予め設定された機器20に対して実行して、当該機器20からコマンド出力ログを収集する。ログ収集部14は、収集されたコマンド出力ログをコマンド出力ログ記憶部121に記憶する。
テンプレート抽出部12及びパターン抽出部13は、自動的に(例えば、定期的に)処理を実行する。その結果、構造化ログが自動的に生成される。但し、テンプレート抽出部12及びパターン抽出部13は、利用者による指示に応じて処理を実行してもよい。利用者は、定期的、又は任意のタイミングで、構造化ログ等を利用することができる。
次に,第3の実施の形態について説明する。第3の実施の形態では第2の実施の形態と異なる点について説明する。第3の実施の形態において特に言及されない点については,第2の実施の形態と同様でもよい。
図12は、第3の実施の形態における構造化ログ生成装置の機能構成例を示す図である。図12中、図11と同一又は対応する部分には同一符号を付し、その説明は適宜省略する。
図12において、構造化ログ生成装置10は、更に、可視化部15を有する。可視化部15は、構造化ログ生成装置10にインストールされた1以上のプログラムが、CPU104に実行させる処理により実現される。
可視化部15は、UI部11を経由して入力される利用者からの指示に応じ、例えば、構造化ログを、利用者が見易いように加工して出力する。例えば、以下のような加工が行われてもよい。
・特定のパターンをハイライト表示する。
・コマンド出力ログを表示する際に、各頻出パターンに対応する部分をパターンの階層に従って階層的に(例えば、ツリー形式で)表示することにより、効果的な可視化を行う。
・或るパターンに注目したパラメータ群の変化量のグラフ化や、パターンの出現数の可視化を行う。ここでのパラメータ群とは、頻出パターンに含まれる各テンプレートにおける変動部分に該当する部分の値である。
・2つの異なる時点のブロックID列間の差分抽出を行う。例えば、過去に取得したブロックID列と現時点で取得したブロックID列に対して、曖昧性を考慮した比較を行う系列アライメントと呼ばれる手法を用いることで、ブロック構造としてどの部分が変化したかを抽出することができる。
なお、上記各実施の形態において、テンプレート抽出部12は、生成部の一例である。パターン抽出部13は、抽出部の一例である。テンプレートIDは、構文が共通する記述ごとの識別子の一例である。テンプレート系列は、第1の配列の一例である。頻出パターンは、第2の配列の一例である。パターンIDは、第2の配列ごとの識別子の一例である。
以上,本発明の実施例について詳述したが,本発明は斯かる特定の実施形態に限定されるものではなく,特許請求の範囲に記載された本発明の要旨の範囲内において,種々の変形・変更が可能である。
10 構造化ログ生成装置
11 UI部
12 テンプレート抽出部
13 パターン抽出部
14 ログ収集部
15 可視化部
20 機器
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
121 コマンド出力ログ記憶部
122 テンプレート記憶部
123 パターン情報記憶部
124 構造化ログ記憶部
B バス

Claims (7)

  1. コマンドの入力に応じて機器から出力される複数行の記述を含むログの各行を、構文が共通する記述ごとの識別子に変換して、前記識別子の第1の配列を生成する生成部と、
    前記第1の配列の複数の部分に出現する、前記識別子を2以上含む第2の配列を、前記第1の配列から抽出し、前記第1の配列において前記第2の配列に該当する部分を、前記第2の配列ごとの識別子に置換する抽出部と、
    を有することを特徴とする構造化ログ生成装置。
  2. 前記抽出部は、前記第1の配列から前記第2の配列を再帰的に抽出する、
    ことを特徴とする請求項1記載の構造化ログ生成装置。
  3. 前記第2の配列は、当該第2の配列によって置換する前の配列の複数の部分に出現する、前記識別子を2以上含む配列の中で、当該第2の配列の前によって置換する前の配列の長さを最も減少させる配列である、
    ことを特徴とする請求項1又は2記載の構造化ログ生成装置。
  4. 前記第2の配列は、当該第2の配列の内部に前記識別子の繰り返しを含まない、
    ことを特徴とする請求項1乃至3いずれか一項記載の構造化ログ生成装置。
  5. 前記抽出部は、更に、前記第1の配列において前記第2の配列に該当する部分が前記第2の配列ごとの識別子に置換することで得られる識別子の配列において、同一の識別子が連続する部分を、当該識別子と当該連続の回数との組によって置換する、
    ことを特徴とする請求項1乃至4いずれか一項記載の構造化ログ生成装置。
  6. コンピュータが、
    コマンドの入力に応じて機器から出力される複数行の記述を含むログの各行を、構文が共通する記述ごとの識別子に変換して、前記識別子の第1の配列を生成する生成手順と、
    前記第1の配列の複数の部分に出現する、前記識別子を2以上含む第2の配列を、前記第1の配列から抽出し、前記第1の配列において前記第2の配列に該当する部分を、前記第2の配列ごとの識別子に置換する抽出手順と、
    を実行することを特徴とする構造化ログ生成方法。
  7. 請求項1乃至5いずれか一項記載の各部としてコンピュータを機能させるためのプログラム。
JP2015153147A 2015-08-03 2015-08-03 構造化ログ生成装置、構造化ログ生成方法、及びプログラム Active JP6353816B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015153147A JP6353816B2 (ja) 2015-08-03 2015-08-03 構造化ログ生成装置、構造化ログ生成方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015153147A JP6353816B2 (ja) 2015-08-03 2015-08-03 構造化ログ生成装置、構造化ログ生成方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2017033329A true JP2017033329A (ja) 2017-02-09
JP6353816B2 JP6353816B2 (ja) 2018-07-04

Family

ID=57988219

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015153147A Active JP6353816B2 (ja) 2015-08-03 2015-08-03 構造化ログ生成装置、構造化ログ生成方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP6353816B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002175201A (ja) * 2000-12-06 2002-06-21 Nec Corp コンピュータシステム及びそれに用いるトレース情報制御方式
JP2006048332A (ja) * 2004-08-04 2006-02-16 Ricoh Co Ltd ログ管理装置、ログ管理方法、ログ管理プログラム及び記憶媒体
JP2010079343A (ja) * 2008-09-24 2010-04-08 Nec Corp トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法
JP2014010666A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd 情報出力装置、方法及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002175201A (ja) * 2000-12-06 2002-06-21 Nec Corp コンピュータシステム及びそれに用いるトレース情報制御方式
JP2006048332A (ja) * 2004-08-04 2006-02-16 Ricoh Co Ltd ログ管理装置、ログ管理方法、ログ管理プログラム及び記憶媒体
JP2010079343A (ja) * 2008-09-24 2010-04-08 Nec Corp トレース情報取得装置、トレース情報取得プログラム、および、トレース情報取得方法
JP2014010666A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd 情報出力装置、方法及びプログラム

Also Published As

Publication number Publication date
JP6353816B2 (ja) 2018-07-04

Similar Documents

Publication Publication Date Title
He et al. Drain: An online log parsing approach with fixed depth tree
US9582585B2 (en) Discovering fields to filter data returned in response to a search
JP5946423B2 (ja) システム・ログの分類方法、プログラム及びシステム
Moh et al. Detecting web attacks using multi-stage log analysis
Makanju et al. A lightweight algorithm for message type extraction in system application logs
Mizutani Incremental mining of system log format
JP6233411B2 (ja) 障害分析装置、障害分析方法、および、コンピュータ・プログラム
US20120124047A1 (en) Managing log entries
Meng et al. Logparse: Making log parsing adaptive through word classification
JP5933463B2 (ja) ログ生起異常検知装置及び方法
Baseman et al. Relational synthesis of text and numeric data for anomaly detection on computing system logs
JP2010277322A (ja) 共通クエリグラフパターン生成装置、共通クエリグラフパターン生成方法、および共通クエリグラフパターン生成用プログラム
Shevertalov et al. A reverse engineering tool for extracting protocols of networked applications
JP5988447B2 (ja) ログメッセージのフォーマットを推定する方法、並びに、その為のコンピュータ及びコンピュータ・プログラム
Yu et al. Brain: Log parsing with bidirectional parallel tree
Makanju et al. Fast entropy based alert detection in super computer logs
De La Torre-Abaitua et al. On the application of compression-based metrics to identifying anomalous behaviour in web traffic
Zhao et al. Extracting log patterns from system logs in large
JP6353816B2 (ja) 構造化ログ生成装置、構造化ログ生成方法、及びプログラム
Rastogi et al. Design and development of generic web based framework for log analysis
Yayah et al. The automated machine learning classification approach on telco trouble ticket dataset
WO2018225115A1 (ja) 運用支援システム及び方法
Makanju et al. Interactive learning of alert signatures in high performance cluster system logs
WO2014117296A1 (en) Generating a hint for a query
Harding et al. Sequence-RTG: efficient and production-ready pattern mining in system log messages

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180611

R150 Certificate of patent or registration of utility model

Ref document number: 6353816

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150