(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
以下、本発明の一実施形態にかかるログメッセージグループ化システムについて、図面を用いて説明する。
【0014】
図1は、本実施形態に係るログメッセージグループ化システムの構成例を示す説明図である。
図2は、ログおよびログに記録されたログメッセージの一例を示す図である。
【0015】
ログメッセージグループ化システム100は、ログ200を出力する1または複数の情報システム130と、情報システム130が出力したログ200を集約するログシステム131と、ログシステム131からログ200を収集し、関連するログメッセージ201をグループとして関連付けるログメッセージグループ化装置101と、ログメッセージグループ化装置101からグループとして関連付けられたログメッセージに関する情報を取得する管理端末132と、を備えている。
【0016】
情報システム130は、1または複数のソフトウェアをコンピュータ上で実行することにより1または複数のログ200を出力する。ログ200の出力形式は、たとえば、Syslog等の公知のログの形式でもよいし、独自のログの形式でもよい。
【0017】
ログシステム131は、情報システム130によって出力されたログ200を集約する。本実施形態おいて、ログシステム131は、ログメッセージグループ化装置101から独立しているが、ログメッセージグループ化装置101に組み込まれてもよい。情報システム130とログメッセージグループ化装置101とが一対一で設けられている構成などでは、ログシステム131を省略してもよい。
【0018】
管理端末132は、ログメッセージグループ化装置101に接続される。管理端末132は、運用者から入力された情報を受け付け、受け付けた情報をログメッセージグループ化装置101に送信する。また、管理端末132は、ログメッセージグループ化装置101から情報を取得し、取得した情報を表示する。本実施形態において、管理端末132は、ログメッセージグループ化装置101から独立しているが、ログメッセージグループ化装置101に組み込まれていてもよい。
【0019】
図2は、ログ200およびログ200に記録されたログメッセージ201の一例を示す。ログ200は、1以上のログメッセージ201で構成されており、ログメッセージ201は、少なくとも1以上の単語が含まれている。単語とは、例えば、ログレベル、時刻、ソフトウェア名、固有の識別子などである。
【0020】
図3は、ログメッセージグループ化装置101のハードウェア構成の一例を示すブロック図である。本実施形態では、ログメッセージグループ化装置101が物理マシンである場合について説明する。ログメッセージグループ化装置101は、プロセッサ401と、記憶デバイス402と、入力デバイス403と、出力デバイス404と、通信インタフェース405と、を有している。ログメッセージグループ化装置101の各部はデータバス406を介して互いに接続される。ログメッセージグループ化装置101は仮想マシンであってもよいし、ソフトウェアであってもよい。記憶デバイス402は、ネットワーククラウド上にあってもよい。
【0021】
プロセッサ401は、ログメッセージグループ化装置101を制御する。
【0022】
記憶デバイス402は、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリで構成されている。
【0023】
記憶デバイス402は、プロセッサ401により実行される収集プログラム102と、分割プログラム103と、単語出現回数算出プログラム104と、単語出現回数参照プログラム105と、単語抽出プログラム106と、単語関連度算出プログラム107と、分類値算出プログラム108と、ログ関連度算出プログラム109と、グループ化算出プログラム110と、を記憶する。
【0024】
また、記憶デバイス402は、単語−出現回数関連付け管理テーブル120と、ログ−単語関連付け管理テーブル121と、分類値−出現回数関連付け管理テーブル122と、ログ−グループ関連付け管理テーブル123と、を記憶する。
【0025】
記憶デバイス402は、永続的なまたは一時的な記録媒体であり、プロセッサ401の作業エリアでもある。上記プログラム102〜110はいずれも、記憶デバイス402にあらかじめ格納されていてもよいし、必要に応じて他の記憶デバイスや外部記憶装置、ネットワーククラウドから導入されてもよい。
【0026】
入力デバイス403は、情報入力に用いられ、たとえば、キーボード、マウス、タッチパネル、テンキーまたはスキャナなどである。出力デバイス404は、図形や各種データを表示する、たとえば、ディスプレイである。通信インタフェース405は、データを送受信する。
【0027】
プロセッサ401は、上記プログラム102〜110を実行することで、記憶デバイス402及び通信インタフェース405を用いながら、以下に説明する各種処理を実現する。以下の説明では、上記プログラム102〜110を実行主体として説明する。なお、プロセッサ401が上記プログラム102〜110を実行することで実現する機能の一部または全部は専用ハードウェアで実現してもよい。
【0028】
プロセッサ401は、上記プログラム102〜110を実行することにより、
(a) 複数のログメッセージ201が記録されたログ200を収集する、
(b) ログ200から複数のログメッセージ201を取得する、
(c) ログメッセージ201(第1のログメッセージ)を構成する単語の出現回数を、ログ200に含まれる複数のログメッセージ201に基づいて作成され、複数のログメッセージ201に含まれる単語と当該単語の出現回数とを関連付けて格納した学習後の単語−出現回数関連付け管理テーブル120から取得する、
(d) ログメッセージ201と、当該ログメッセージ201を構成する単語のうちその出現回数が所定の出現回数判定閾値未満である単語を少数単語として関連付けてログ−単語関連付け管理テーブル121に格納する、
(e) ログメッセージ201より過去のログメッセージ201(第2のログメッセージ)に含まれる少数単語をログ−単語関連付け管理テーブル121から取得する、
(f) ログメッセージ201の少数単語と過去のログメッセージ201の少数単語との一致度を示す一致度評価値E1を算出する、
(g) ログメッセージ201を構成する単語の出現回数に基づいて定まるログメッセージ201の識別情報である分類値を算出する、
(h) ログメッセージ201とログメッセージ201の分類値とを関連付けてログ−単語関連付け管理テーブル121に格納する、
(i) 過去を構成する単語の出現回数に基づいて定まるログメッセージ201の分類値をログ−単語関連付け管理テーブル121から取得する、
(j) ログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせの出現回数を、ログ200に含まれる複数のログメッセージ201に基づいて作成され、各ログメッセージを構成する単語の出現回数に基づいて定まる各ログメッセージ201の分類値の組み合わせとその出現回数とを関連付けて格納した学習後の分類値−出現回数関連付け管理テーブル122から取得する、
(k) 分類値−出現回数関連付け管理テーブル122から取得した分類値の組み合わせの出現回数に基づいてログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせの出現度を示す出現度評価値E2を算出する、
(l) 一致度評価値E1および出現度評価値E2に基づきログメッセージ201と過去のログメッセージ201との関連度を示す関連度評価値E3を算出する、
(m) 複数のログメッセージ201に含まれる単語と当該単語の出現回数とを関連付けて格納した単語−出現回数関連付け管理テーブル120を作成する、
(n) ログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせと、当該組み合わせの出現回数とを関連付けて格納した分類値−出現回数関連付け管理テーブル122を作成する、
(o) 一致度評価値E1、出現度評価値E2及び関連度評価値E3のいずれかに基づいてログメッセージ201と過去のログメッセージ201とをグループとして関連付けてログ−グループ関連付け管理テーブル123に格納する、
(p) グループとして関連付けられたログメッセージ201に関する情報のリクエストメッセージ受け付けると、当該リクエストに含まれるログメッセージ201とグループとして関連付けられた他のログメッセージ201をログ−グループ関連付け管理テーブル123から取得して当該リクエストメッセージに対するレスポンスメッセージに含めて出力する、
(p’) 前記リクエストに含まれるログメッセージとグループとして関連付けられかつ評価値を満足する他のログメッセージをログ−グループ関連付け管理テーブル123から取得して当該リクエストメッセージに対するレスポンスメッセージに含めて出力する。
【0029】
次に、上記プログラム102〜110について説明する。
【0030】
収集プログラム102は、ログシステム131において集約された、ログメッセージが記録されたログ200を収集する。収集プログラム102は、収集したログ200を分割プログラム103に転送する。ログ200の収集方法は、収集プログラム102からログシステム131のログ200を受け取りにいってもよいし、ログシステム131から収集プログラム102にログ200を転送してもよい。また、ログシステム131を省略した構成では、情報システム130から直接ログ200を受け取りまたは転送してもよい。
【0031】
分割プログラム103は、収集プログラム102からログ200を受け付ける。分割プログラム103は、ログ200から記録された順に処理対象のログメッセージ201を取得し、分割ルールに基づいて、ログメッセージ201を構成する単語に分割する。分割ルールとは、たとえば、ログメッセージ201に含まれるスペースを区切り文字として単語に分割する、ログメッセージに含まれるカンマを区切り文字として単語に分割する、などである。分割ルールは、分割プログラム103にあらかじめ設定されていてもよく、または、運用者によって入力されたりしてもよい。分割プログラム103は、ログメッセージ201およびそれを構成する単語のリストを単語出現回数算出プログラム104および単語出現回数参照プログラム105に転送する。
【0032】
単語出現回数算出プログラム104は、分割プログラム103から処理対象のログメッセージ201を構成する単語のリストを受け付ける。単語出現回数算出プログラム104は、単語のリストに含まれる単語を検索キーとして、作成途中の単語−出現回数関連付け管理テーブル120(
図5)から検索する。単語出現回数算出プログラム104は、検索の結果、単語を格納したレコードが見つかるとその出現回数に1を加算して更新し、単語を格納したレコードが見つからないとその単語についての新たなレコードを追加(すなわち更新)してその出現回数を1に設定する。また、単語出現回数算出プログラム104は、レコードを更新した日を登録日として格納する。単語出現回数算出プログラム104は、このような処理を繰り返すことで、ログ200に含まれる単語と当該単語の出現回数とを関連付けて格納した単語−出現回数関連付け管理テーブル120を作成していき、収集したログ200について上記処理を終えると学習後の単語−出現回数関連付け管理テーブル120が完成する。学習後の単語−出現回数関連付け管理テーブル120は、上記収集プログラム102で収集された現在の処理対象のログ200より前の過去のログ200に基づいて作成されている。このようにすることで、ログメッセージ201をグループとして関連付けながら、ログ200に含まれる単語と当該単語の出現回数とを関連付けて格納した単語−出現回数関連付け管理テーブル120を作成することができ、処理効率を高めることができる。
【0033】
単語出現回数算出プログラム104は、たとえば、運用者によって指定された算出期間(前日や過去1週間以内など)にログ200に記録されたログメッセージ201に基づいて、単語−出現回数関連付け管理テーブル120を作成してもよい。または、単語出現回数算出プログラム104が、単語−出現回数関連付け管理テーブル120を継続的に作成するとともに、この単語−出現回数関連付け管理テーブル120から運用者によって指定された参照期間に含まれる登録日が設定されたレコードのみを抽出・複製して学習後の単語−出現回数関連付け管理テーブルとしてもよい。
【0034】
単語出現回数参照プログラム105は、分割プログラム103から処理対象のログメッセージ201およびそれを構成する単語のリストを受け付ける。単語出現回数参照プログラム105は、学習後の単語−出現回数関連付け管理テーブル120から単語のリストに含まれる各単語の出現回数を取得する。単語−出現回数関連付け管理テーブル120に単語のレコードが存在しないとき、当該単語の出現回数を0とする。そして、単語出現回数参照プログラム105は、単語のリストに含まれる各単語にその出現回数をひも付けして、ログメッセージ201とともに単語抽出プログラム106および分類値算出プログラム108に転送する。
【0035】
単語抽出プログラム106は、単語出現回数参照プログラム105から処理対象のログメッセージ201と出現回数がひも付けられた単語のリストを受け付ける。単語抽出プログラム106は、単語のリストから出現回数判定閾値未満の出現回数の単語である少数単語を抽出して少数単語のリストを作成する。少数単語は1または複数個抽出される。出現回数判定閾値の値は、運用者によって設定された値でもよいし、たとえば出現回数について偏差値や出現確率など独自の手法を用いて決定した値でもよい。単語抽出プログラム106は、ログメッセージ201について少数単語のリストを作成すると、ログメッセージ201の発生時刻と、ログメッセージ201と、その少数単語のリストとを関連付けて格納した新たなレコードをログ−単語関連付け管理テーブル121(
図6)に追加する。
【0036】
図4(a)、(b)に、ログメッセージ201に含まれる単語のうち、出現回数が比較的多い単語の一例300と、出現回数が比較的少ない単語の一例310を示す。出現回数が多い単語とは、たとえば、ログレベル(INFO、WARNING、ERRORなど)やソフトウェア名(authentication)、日付(2016−09−21、Sep 20)などの単語である。出現回数が少ない単語とは、たとえば、リクエストIDやユーザID、インスタンスIDなどの単語である。
図4(a)、(b)に記載されている出現回数が多い単語の例300と出現回数が少ない単語の例310は一例であり、これらにより本実施形態の構成や効果が制限されるものではない。
【0037】
さらに、単語抽出プログラム106は、ログ−単語関連付け管理テーブル121から、処理対象のログメッセージ201より前に記録されかつ発生時刻が取得対象期間に含まれる1または複数の過去のログメッセージ201、その少数単語のリストおよびその分類値(後述)を取得する。取得対象期間は、運用者によって指定された期間でもよいし、予め設定された期間でもよいし、独自の手法を用いて決定した期間でもよい。取得対象期間は、たとえば、1時間前以降(すなわち1時間前から現在まで)などである。単語抽出プログラム106は、処理対象のログメッセージ201およびその少数単語のリストと、ログ−単語関連付け管理テーブル121から取得した過去のログメッセージ201、その少数単語のリストおよびその分類値と、を単語関連度算出プログラム107に転送する。
【0038】
単語関連度算出プログラム107は、単語抽出プログラム106から処理対象のログメッセージ201およびその少数単語のリストと、過去のログメッセージ201、その少数単語のリストおよび分類値を受け付ける。単語関連度算出プログラム107は、処理対象のログメッセージ201の少数単語および過去のログメッセージ201の少数単語が一致するかどうかを判定する。このとき、処理対象のログメッセージ201と過去のログメッセージ201とを1対1で比較する。例えば、単語抽出プログラム106から50個の過去のログメッセージ201を受け付けたときは、単語関連度算出プログラム107は、処理対象のログメッセージ201(第1のログメッセージ)と50個の過去のログメッセージ201(第2のログメッセージ)とをそれぞれ比較、判定する。単語関連度算出プログラム107は、一致する少数単語の数および比較した少数単語の数に基づいて一致度を示す一致度評価値E1を算出する。従って、上記例では50個の一致度評価値E1が算出される。一致度評価値E1は、ログメッセージ間において少数単語の一致度を示す指標である。
【0039】
本実施形態において、たとえば、処理対象のログメッセージ201の少数単語数が3、過去のログメッセージ201の少数単語数が3の場合に、全ての少数単語が一致したとき、一致度評価値E1は1(=3/3)となる。処理対象のログメッセージ201の少数単語数が3、過去のログメッセージ201の少数単語数が5の場合に、2つの少数単語が一致したとき、一致度評価値E1は0.4(=2/5)となる。処理対象のログメッセージ201の少数単語数が6、過去のログメッセージ201の少数単語数が4の場合に、3つの少数単語が一致したとき、一致度評価値E1は0.5(=3/6)となる。すなわち、分母はいずれかのログメッセージ201のうち多い方の少数単語数となる。ここに示す一致度評価値E1の算出方法は、一例であって、これらにより本実施形態の構成や効果が制限されるものではなく、本発明の目的に反しない限り、少数単語の一致度評価値E1の算出方法は任意である。
【0040】
単語関連度算出プログラム107は、処理対象のログメッセージ201と、処理対象のログメッセージ201と比較された過去のログメッセージ201及びその一致度評価値E1と、をグループ化算出プログラム110に転送する。さらに、単語関連度算出プログラム107は、一致度評価値E1が算出された処理対象のログメッセージ201及び過去のログメッセージ201の組み合わせと、過去のログメッセージ201およびその分類値とをログ関連度算出プログラム109に転送する。
【0041】
分類値算出プログラム108は、単語出現回数参照プログラム105から処理対象のログメッセージ201および出現回数がひも付けられた単語のリストを受け付ける。分類値算出プログラム108は、単語の出現回数に基づいて分類値を算出する。分類値は、ログメッセージ201を、当該ログメッセージ201を構成する単語の出現回数に基づき分類するための値であり、ログメッセージ201の識別情報として扱うことができる。分類値が近いほどログメッセージ201の構成が類似すると考えられる。本実施形態において、処理対象のログメッセージ201について、各単語の出現回数の総和を算出し、この算出結果を分類値とする。分類値算出プログラム108は、ログメッセージ201と当該ログメッセージ201について算出した分類値とを関連付けて、ログ−単語関連付け管理テーブル121に格納する。なお、ログメッセージ201とその分類値とを関連付けて、ログ−単語関連付け管理テーブル121とは別の管理テーブルに格納してもよい。さらに、分類値算出プログラム108は、ログメッセージ201とその分類値をログ関連度算出プログラム109に転送する。
【0042】
ログ関連度算出プログラム109は、分類値算出プログラム108から処理対象のログメッセージ201およびその分類値を受け付ける。また、ログ関連度算出プログラム109は、単語関連度算出プログラム107から一致度評価値E1が算出された過去のログメッセージ201およびその分類値を受け付ける。ログ関連度算出プログラム109は、処理対象のログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせを検索キーとして、分類値−出現回数関連付け管理テーブル122(
図7)から検索する。ログ関連度算出プログラム109は、検索の結果、これら分類値の組み合わせを格納したレコードが見つかるとその出現回数に1を加算して更新してもよいし、これら分類値の組み合わせを格納したレコードが見つからないとその組み合わせについて新たなレコードを追加するとともに出現回数を1に設定してもよい。ログ関連度算出プログラム109は、このような処理を繰り返すことで、処理対象のログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせと、当該組み合わせの出現回数とを関連付けて格納した分類値−出現回数関連付け管理テーブル122を作成していき、収集したログ200について上記処理を終えると学習後の分類値−出現回数関連付け管理テーブル122が完成する。学習後の分類値−出現回数関連付け管理テーブル122は、上記収集プログラム102で収集された現在の処理対象のログ200より前の過去のログ200に基づいて作成されている。このようにすることで、ログメッセージ201をグループとして関連付けながら、処理対象のログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせと、当該組み合わせの出現回数とを関連付けて格納した分類値−出現回数関連付け管理テーブル122を作成することができ、処理効率を高めることができる。一方で、分類値−出現回数関連付け管理テーブル122は単語−出現回数関連付け管理テーブル120のように過去のログ200で予め学習させておいてもよい。ログ関連度算出プログラム109は学習後の分類値−出現回数関連付け管理テーブル122を用いて、分類値の組み合わせの出現回数を取得してもよい。
【0043】
さらに、ログ関連度算出プログラム109は、分類値−出現回数関連付け管理テーブル122から処理対象のログメッセージ201(第1のログメッセージ)の分類値と過去のログメッセージ201(第2のログメッセージ)の分類値との組み合わせの出現回数を取得する。そして、取得した分類値の組み合わせの出現回数に基づいて出現度評価値E2を算出する。すなわち、処理対象のログメッセージ201に対して一致度評価値E1が算出された過去のログメッセージ201について、出現度評価値E2が算出される。
【0044】
出現度評価値E2は、ログメッセージ201のある組み合わせの出現度を示す評価値であって、本実施形態では以下の式を用いて算出する。
【0046】
ただし、xは分類値の組み合わせの出現回数、σは定数である。σは、たとえば、運用者によって設定された値でもよいし、出現回数について偏差値や出現確率など独自の手法を用いて決定した値でもよい。ここに示す出現度評価値E2の算出方法は、一例であって、これらにより本実施形態の構成や効果が制限されるものではなく、本発明の目的に反しない限り、分類値の組み合わせの出現度評価値E2の算出方法は任意である。出現度評価値E2は、一致度評価値E1を重み付けする値としての意味を持ち、具体的には、定数σに対して出現回数が極端に少ない分類値の組み合わせは、すなわち出現が希なログメッセージの組み合わせは重要性が低いものとして重み付けとしての出現度評価値E2を小さくする。
【0047】
ログ関連度算出プログラム109は、処理対象のログメッセージ201と、処理対象のログメッセージ201と比較された過去のログメッセージ201及びその出現度評価値E2と、をグループ化算出プログラム110に転送する。
【0048】
グループ化算出プログラム110は、単語関連度算出プログラム107から処理対象のログメッセージ201、過去のログメッセージ201及びその一致度評価値E1を受け付ける。さらに、グループ化算出プログラム110は、ログ関連度算出プログラム109から処理対象のログメッセージ201、過去のログメッセージ201及びその出現度評価値E2を受け付ける。そして、グループ化算出プログラム110は、過去のログメッセージ201ごとに、一致度評価値E1と出現度評価値E2を乗じて関連度評価値E3を算出する。グループ化算出プログラム110は、関連度評価値E3に対応する処理対象のログメッセージ201と過去のログメッセージ201とを一つのグループとし、グループを一意に識別するグループIDを生成する。グループ化算出プログラム110は、このグループIDと、関連度評価値E3を算出した2つのログメッセージ201と、関連度評価値E3とを関連付けて格納した新たなレコードをログ−グループ関連付け管理テーブル123(
図8)に追加する。処理対象のログメッセージ201に対して複数の過去のログメッセージ201が存在する場合、関連度評価値E3が上位の所定数のログメッセージ201の組み合わせのみをログ−グループ関連付け管理テーブル123にレコードとして追加するようにしてもよい。このようにすることで、ログメッセージ201をより精度よくグループとして関連付けることができる。
【0049】
次に、管理テーブル120〜123について、
図5〜
図8を参照して説明する。
【0050】
図5は、単語−出現回数関連情報としての単語−出現回数関連付け管理テーブル120の構成例を示す。単語−出現回数関連付け管理テーブル120は、登録日500と、単語501と、単語出現回数カウント502とを含む1または複数のレコードを有する管理情報である。単語−出現回数関連付け管理テーブル120は、ログメッセージグループ化装置101がログ200を受け付けるたびに、単語出現回数算出プログラム104によって、逐次的に更新される。単語−出現回数関連付け管理テーブル120は、運用者により指示された算出期間について一から作成してもよい。または、継続的に単語−出現回数関連付け管理テーブル120を作成し、運用者によって指定された参照期間に含まれる登録日が格納されたレコードのみ抽出・複製して学習後の単語−出現回数関連付け管理テーブル120を作成してもよい。
【0051】
登録日500は、値として、レコードが新規作成された日付またはレコードが更新された日付を格納する。登録日500は、単語出現回数参照プログラム105が参照期間を指定された際に使用されるものであり。あらかじめ算出期間が指定されて単語−出現回数関連付け管理テーブル120が作成される構成では、本カラムは不要である。単語501は、値として、ログ200に記録されたログメッセージ201に含まれる単語を格納する。単語出現回数カウント502は、値として、所定期間(たとえば上記算出期間)中に単語が出現した回数を格納する。これにより、単語出現回数参照プログラム105は、所定期間中に単語501に格納された単語がログ200に出現した回数についての情報を取得できる。
【0052】
図6は、ログ−単語関連情報としてのログ−単語関連付け管理テーブル121の構成例を示す。ログ−単語関連付け管理テーブル121は、発生時刻600と、ログメッセージストア601と、分類値ストア602と、少数単語リスト603とを含む1または複数のレコードを有する管理情報である。ログ−単語関連付け管理テーブル121は、ログメッセージグループ化装置101がログ200を受け付けるたびに、単語抽出プログラム106および分類値算出プログラム108によって、逐次的に更新される。ログ−単語関連付け管理テーブル121は、単語抽出プログラム106によって、発生時刻600、ログメッセージストア601および少数単語リスト603に値が格納され、分類値算出プログラム108によって、分類値ストア602に値が格納される。
【0053】
発生時刻600は、値としてログメッセージ201が発生した時刻を格納する。ログメッセージストア601は、値としてログメッセージ201を格納する。分類値ストア602は、値として、分類値算出プログラム108によって算出された分類値を格納する。少数単語リスト603は、値として、ログメッセージストア601に格納されたログメッセージ201について出現回数が少ない(出現回数判定閾値未満)と判定された単語である少数単語のリストが格納される。これにより、処理対象のログメッセージ201より前に記録された過去のログメッセージ201について、少数単語のリストおよび分類値を取得できる。
【0054】
図7は、分類値−出現回数関連情報としての分類値−出現回数関連付け管理テーブル122の構成例を示す。分類値−出現回数関連付け管理テーブル122は、分類値の組み合わせ700と、組み合わせ出現回数カウント701とを含む1または複数のレコードを有する管理情報である。分類値−出現回数関連付け管理テーブル122は、ログメッセージグループ化装置101がログ200を受け付けるたびに、ログ関連度算出プログラム109によって、逐次的に更新される。分類値−出現回数関連付け管理テーブル122は、ログ関連度算出プログラム109によって、分類値の組み合わせ700および組み合わせ出現回数カウント701に値が格納される。
【0055】
分類値の組み合わせ700は、値として、処理対象のログメッセージ201と過去のログメッセージ201との2つのログメッセージ201の分類値の組み合わせを格納する。組み合わせ出現回数カウント701は、値として、分類値の組み合わせ700に格納された2つのログメッセージ201の分類値の組み合わせの出現回数を格納する。これにより、処理対象のログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせの出現回数を取得できる。
【0056】
図8は、ログ−グループ関連情報であるログ−グループ関連付け管理テーブル123の構成例を示す。ログ−グループ関連付け管理テーブル123は、グループIDストア800とログメッセージグループ801と関連度802とを含む1または複数のレコードを有する管理情報である。ログ−グループ関連付け管理テーブル123は、グループ化算出プログラム110によって、逐次的に更新される。ログ−グループ関連付け管理テーブル123は、グループ化算出プログラム110によって、グループIDストア800、ログメッセージグループ801および関連度802に値が格納される。
【0057】
グループIDストア800は、値として、他に同じ値が存在しないユニークな値のグループIDを格納する。グループIDはグループ化算出プログラム110により生成される。ログメッセージグループ801は、値として、グループとして関連付けられた2つのログメッセージ201を格納する。関連度802は、値として、グループ化算出プログラム110で算出された関連度評価値E3を格納する。これにより、運用者は関連性の高いログメッセージ201を取得できる。なお、関連度802には、一致度評価値E1または出現度評価値E2が格納されてもよい。
【0058】
上記説明では、「×××テーブル」の表現にて各情報を説明しているが、情報はどのようなデータ構造で表現されてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。また、上記説明における各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
【0059】
図9は、管理端末132の画面表示の一例を示す図であり、(a)はグループ化前のログメッセージを表示している状態を示し、(b)はグループ化後のログメッセージを表示している状態を示す。管理端末132は、画面901において、ログメッセージ表示領域902と、ログメッセージ表示領域902に表示されたログメッセージM101、M102、・・・をスクロール表示するためのスクロールバー903と、関連度評価値E3の下限値(すなわち評価値の条件)が入力される入力ボックス905と、グループ化後のログメッセージを表示する処理の開始を指示するグループ表示ボタン904と、を有している。入力ボックス905を省略してもよいし、あるいは、入力ボックス905には一致度評価値E1または出現度評価値E2の下限値が入力されるようにしてもよい。画面901には、図示しないマウスによって操作されるカーソルCが表示されており、このカーソルCを操作して、ログメッセージ表示領域902に表示されているログメッセージM101、M102、・・・の選択、入力ボックス905へのフォーカス移動、グループ表示ボタン904の押下などを行う。
図9の画面表示は一例であり、これらにより本実施形態の構成や効果が制限されるものではない。
【0060】
次に、単語の出現回数を算出する処理について、
図10を参照して説明する。
図10は、単語の出現回数を算出する処理の一例を示すシーケンス図である。
【0061】
本実施形態において、管理端末132のCLI(Command Line Interface)やGUI(Graphical User Interface)の操作に応じて、管理端末132は、ログメッセージグループ化装置101へリクエストメッセージを送信する。送信時のプロトコルは、SSH(Secure Shell)、HTTP(Hypertext Transfer Protocol)等の公知の手法でも独自の手法でもよい。上記リクエストメッセージに対する応答としてログメッセージグループ化装置101から管理端末132送信されたレスポンスメッセージは、管理端末132において処理され、処理結果がGUI等により表示される。管理端末132は、ログメッセージグループ化装置101の一部であってもよい。
【0062】
ログメッセージグループ化システム100の構築時に、分割プログラム103は、運用者により操作された管理端末132から分割ルールの登録要求を受け付ける(S1001)と、分割プログラム103は当該分割ルールに基づいてログメッセージ201を分割する。分割ルールとは、たとえば、「ログメッセージをスペース区切りで単語に分割する」である。分割ルールは、各情報システム130について共通の分割ルールを定義してもよく、個々の情報システム130に応じた分割ルールを定義してもよい。また、分割ルールは、ログメッセージグループ化システム100の構築後に変更してもよい。
【0063】
その後、収集プログラム102がSyslog等のログ200を受け付ける(S1002)と、分割プログラム103に当該ログ200を転送する(S1003)。分割プログラム103は収集プログラム102からログ200を受け付けると、ステップS1001にて登録した分割ルールに基づいて、ログを単語に分割する(S1004)。これにより、ログは1以上の単語に分割される。分割プログラム103は分割した単語のリストを単語出現回数算出プログラム104に転送する(S1005)。単語出現回数算出プログラム104は単語のリストを受け付けると、単語−出現回数関連付け管理テーブル120を参照し、単語のリストに含まれる単語の出現回数を更新する。単語出現回数算出プログラム104は、ステップS1005により受け付けた単語の数と同じ数だけ、ステップS1006〜ステップS1007を繰り返す。
【0064】
次に、一致度評価値E1を算出する処理について、
図11を参照して説明する。
図11は、一致度評価値E1を算出する処理の一例を示すシーケンス図である。
【0065】
ログメッセージグループ化システム100の構築時あるいは運用開始後に、単語抽出プログラム106は、運用者により操作された管理端末132から出現回数に関する閾値(出現回数判定閾値)を受け付ける(S1101)と、以降、単語抽出プログラム106はステップS1101で受け付けた出現回数判定閾値を用いて処理を行う。出現回数判定閾値は、たとえば、「出現回数が100回以下の単語を出現回数が少ない単語(少数単語)とする」などの判定基準として使用される。また、本実施形態においては出現回数判定閾値について運用者からの指定により設定するが、独自の手法により設定してもよい。出現回数判定閾値は、各情報システム130について共通の値を設定してもよく、個々の情報システム130に応じた値を設定してもよい。出現回数判定閾値は、運用開始後に変更してもよい。
【0066】
また、単語関連度算出プログラム107は、運用者により操作された管理端末132から時間に関する閾値(処理対象期間)を受け付ける(S1102)。処理対象期間は、たとえば、「現在の処理対象のログメッセージの発生時刻より前に記録された過去のログメッセージを評価値の算出対象(すなわち、処理対象のログメッセージにグループとして関連付ける対象)とする」ための対象期間として用いられる。単語抽出プログラム106は、ログ−単語関連付け管理テーブル121から、発生時刻が処理対象期間に含まれる過去のログメッセージを取得する。また、本実施形態においては処理対象期間について運用者からの指定により設定するが、独自の手法により設定してもよい。処理対象期間は、各情報システム130について共通の値を設定してもよく、個々の情報システム130に応じた値を設定してもよい。処理対象期間は、運用開始後に変更してもよい。
【0067】
そして、収集プログラム102が、Syslog等のログ200を収集し(S1103)、分割プログラム103に当該ログ200を転送する(S1104)。分割プログラム103は、収集プログラム102からログ200を受け付けると、ログ200に記録された処理対象のログメッセージ201を順次取得して、ステップS1001にて登録した分割ルールに基づいて単語に分割し(S1105)、単語のリストを単語出現回数参照プログラム105に転送する(S1106)。単語出現回数参照プログラム105は、分割プログラム103から処理対象のログメッセージ201および単語のリストを受け付けると、学習後の単語−出現回数関連付け管理テーブル120から単語のリストに含まれる単語の出現回数を取得して(S1107)、単語にひも付けし、単語抽出プログラム106と分類値算出プログラム108にログメッセージ201と出現回数をひも付けした単語のリストとを転送する(S1108、S1109)。ステップS1109については後述する。
【0068】
単語抽出プログラム106は、処理対象のログメッセージ201および出現回数をひも付けした単語のリストを受け付けると、ステップS1101にて設定された閾値(出現回数判定閾値)に基づいて、出現回数が少ない単語である少数単語を抽出する(S1110)。単語抽出プログラム106は、ログメッセージ201および少数単語のリストを単語関連度算出プログラム107に転送する(S1111)。単語関連度算出プログラム107は、ログ−単語関連付け管理テーブル121から、ステップS1102にて登録された閾値(処理対象期間)に発生した過去のログメッセージ201、その少数単語のリストおよびその分類値を取得する(S1112)。
【0069】
単語関連度算出プログラム107は、ステップS1111にて取得した処理対象のログメッセージ201の少数単語のリストとステップS1112にて取得した過去のログメッセージ201の少数単語のリストから一致度評価値E1を算出する(S1113)。単語関連度算出プログラム107は、処理対象のログメッセージ201および過去のログメッセージ201と、これらログメッセージ201の一致度評価値E1とをグループ化算出プログラム110に転送する(S1114)。さらに、単語関連度算出プログラム107は、処理対象のログメッセージ201および過去のログメッセージ201と、過去のログメッセージ201およびその分類値とをログ関連度算出プログラム109に転送する(S1115)。
【0070】
次に、出現度評価値E2と関連度評価値E3とを算出する処理について、
図12を参照して説明する。
図12は、出現度評価値E2と関連度評価値E3とを算出する処理の一例を示すシーケンス図である。
【0071】
分類値算出プログラム108は、単語出現回数参照プログラム105から処理対象のログメッセージ201および出現回数がひも付けされた単語のリストを受け付けると、出現回数に基づいて分類値を算出する(S1201)。分類値算出プログラム108は、ログ関連度算出プログラム109にログメッセージ201およびその分類値を転送する(1202)。ログ関連度算出プログラム109は、処理対象のログメッセージ201およびその分類値を受け付けると、この分類値とステップS1115にて取得した過去のログメッセージ201の分類値との組み合わせについて、学習済の分類値−出現回数関連付け管理テーブル122を参照して、これら分類値の組み合わせの出現回数を取得する(S1203)。ログ関連度算出プログラム109は、これら分類値の組み合わせの出現回数に基づいて、出現度評価値E2を算出する(S1204)。ログ関連度算出プログラム109は、処理対象のログメッセージ201および過去のログメッセージ201と、これらログメッセージ201の出現度評価値E2を、グループ化算出プログラム110に転送する(S1205)。
【0072】
グループ化算出プログラム110は、ステップS1114にて単語関連度算出プログラム107から取得した一致度評価値E1と、ステップS1205にてログ関連度算出プログラム109から取得した出現度評価値E2とに基づいて関連度評価値E3を算出する(S1206)。グループ化算出プログラム110は、グループIDを生成し、関連度評価値E3(複数ある場合は最も大きい関連度評価値E3)とその算出に用いたログメッセージ201の組み合わせを関連付けて、ログ−グループ関連付け管理テーブル123に格納する(S1207)。
【0073】
次に、分類値の算出方法について、
図13を参照して説明する。
図13は、分類値の算出方法の一例を説明する図である。
【0074】
分割プログラム103は、上記ステップS1001によって登録された分割ルール1300に基づいて、ログメッセージ201を単語のリスト1301にする。単語出現回数参照プログラム105は、単語−出現回数関連付け管理テーブル120を参照し、各単語の出現回数を取得して、分類値算出プログラム108に転送する。分類値算出プログラム108は、各単語の出現回数に基づいてその総和を算出し、算出結果を分類値1302とする。
【0075】
次に、単語の出現回数を算出する処理について、
図14を参照して説明する。
図14は、単語の出現回数を算出する処理の一例を示すフローチャートである。本フローチャートは、
図10のステップS1002〜S1007の処理に相当する。
【0076】
収集プログラム102がログ200を収集すると分割プログラム103に転送し(S1401)、分割プログラム103がログ200に記録されたログメッセージ201を取得し、分割ルールに基づいて単語に分割して、単語出現回数算出プログラム104に転送する(S1402)。単語出現回数算出プログラム104は、分割された単語のリストに含まれる全ての単語について、ステップS1404〜ステップS1407を繰り返す(S1403)。単語出現回数算出プログラム104は、単語−出現回数関連付け管理テーブル120を参照し、単語の出現回数を取得する(S1404)。単語出現回数算出プログラム104は、単語−出現回数関連付け管理テーブル120に単語のレコードが存在すると判定した場合(S1405:Yes)は、単語−出現回数関連付け管理テーブル120の該当する単語の出現回数を更新し(S1406)、レコードが存在しないと判定した場合(S1405:No)は、単語−出現回数関連付け管理テーブル120に単語のレコードを追加する(S1407)。
【0077】
次に、一致度評価値E1を算出する処理について、
図15を参照して説明する。
図15は、一致度評価値E1を算出する処理の一例を示すフローチャートである。本フローチャートは、
図11のステップS1103〜S1113の処理に相当する。
【0078】
収集プログラム102がログ200を収集すると分割プログラム103に転送し(S1501)、分割プログラム103がログ200に記録されたログメッセージ201を分割ルールに基づいて単語に分割して、単語出現回数参照プログラム105に転送する(S1502)。単語出現回数参照プログラム105は、学習後の単語−出現回数関連付け管理テーブル120を参照し、単語のリストに含まれる全ての単語について出現回数を取得して、単語抽出プログラムに転送する(S1503)。単語抽出プログラム106は、単語のリストに含まれる全ての単語について、ステップS1505〜ステップS1506を繰り返す(S1504)。単語抽出プログラム106は、単語の出現回数が閾値(出現回数判定閾値)未満であると(S1505:Yes)、出現回数が少ない単語(少数単語)と判定して少数単語のリストに含めて(S1506)、次の繰り返し処理を継続する。単語抽出プログラム106は、単語の出現回数が閾値(出現回数判定閾値)未満でないと(S1505:No)、少数単語でないと判定して、次の繰り返し処理を継続する。
【0079】
そして、単語抽出プログラム106は、繰り返し処理が終了すると少数単語のリストを単語関連度算出プログラム107に転送する(S1507)。単語関連度算出プログラム107は、ログ−単語関連付け管理テーブル121から時間に関する閾値(処理対象期間)内に発生した過去のログメッセージ201およびその少数単語を取得する(S1508)。単語関連度算出プログラム107は、処理対象のログメッセージおよび過去のログメッセージの全てについて、ステップS1510〜S1511を繰り返す(S1509)。単語関連度算出プログラム107は、ステップS1507にて取得した処理対象のログメッセージ201の少数単語のリストと、ステップS1508にて取得した過去のログメッセージ201における少数単語のリストと、を比較して、一致する単語が存在する場合(S1510:Yes)、一致度評価値E1を算出して(S1511)、次の繰り返し処理を継続する。単語関連度算出プログラム107は、一致する単語が存在しない場合(S1510:No)、次の繰り返し処理を継続する。
【0080】
次に、出現度評価値E2を算出する処理について、
図16を参照して説明する。
図16は、出現度評価値E2を算出する処理の一例を示すフローチャートである。ステップS1201〜S1204の処理に相当する。
【0081】
分類値算出プログラム108は、単語出現回数参照プログラム105からログメッセージを分割した単語のリストを取得すると、処理対象のログメッセージ201の分類値を算出して、ログ関連度算出プログラム109に転送する(S1601)。ログ関連度算出プログラム109は、単語関連度算出プログラム107から過去のログメッセージの分類値を取得する(S1602)。ログ関連度算出プログラム109は、ステップS1601で取得した処理対象のログメッセージ201の分類値と、ステップS1602で取得した過去のログメッセージの分類値との組み合わせについて、分類値−出現回数関連付け管理テーブル122を参照し、これら分類値の組み合わせの出現回数を取得する(S1603)。ログ関連度算出プログラム109は、ステップS1603にて取得した出現回数に基づいて出現度評価値E2を算出する(S1604)。
【0082】
次に、ログメッセージグループ化装置101が、グループ化されたログメッセージのリストを出力する処理について、
図17を参照して説明する。
図17は、グループ化されたログメッセージのリストを管理端末132に出力する処理の一例を示すフローチャートである。
【0083】
ログメッセージグループ化装置101(具体的にはプロセッサ401)が、管理端末132から送信されたリクエストメッセージを受け付けると(S1701)、ログ−グループ化関連付け管理テーブル123を参照して、リクエストメッセージに含まれるログメッセージ201を含むログメッセージグループ801を検索する(S1702)。ログメッセージグループ化装置101は、検索ヒットした全てのログメッセージグループ801について、ステップS1704の処理を繰り返す(S1703)。なお、リクエストメッセージに関連度評価値E3の下限値が含まれている場合は、この下限値も検索条件に含め、関連度802に格納されている関連度評価値E3が当該下限値以上となるレコードのログメッセージグループ801を検索する。ログメッセージグループ化装置101は、ログメッセージグループ801に格納されているログメッセージ201を取得し、取得したログメッセージ201から重複しているものを削除して、グループとなるログメッセージのリストを作成する(S1704)。ログメッセージグループ化装置101は、管理端末132へのレスポンスメッセージにこのログメッセージのリストを含めて送信する(S1705)。これにより、運用者は管理端末132を通じて、グループとして関連付けられたログメッセージのリストを取得できる。なお、リクエストメッセージには関連度評価値E3の下限値の代わりに一致度評価値E1または出現度評価値E2の下限値が含まれていてもよく、これを検索条件に含めてもよい。
【0084】
図17の処理について、
図9を参照して管理端末132の表示操作の観点から説明する。運用者は、管理端末132によってログシステム131からログ200を取得して、
図9(a)に示すように、ログメッセージ表示領域902にログメッセージM101、M102、・・・を表示する。運用者は管理端末132を操作して、入力ボックス905に関連度評価値E3の下限値を入力する。下限値に0が入力された場合、この下限値は無視されてリクエストメッセージに含まれない。そして、運用者は、ログメッセージ表示領域902に表示されているログメッセージM101、M102、・・・の中から1つのログメッセージ(
図9の例ではログメッセージM105)をクリックして選択する。そして、運用者が、グループ表示ボタン904を押下すると、選択されたログメッセージおよび関連度評価値E3の下限値を含むリクエストメッセージが生成されて、ログメッセージグループ化装置101に送信される。
【0085】
そして、ログメッセージグループ化装置101において、リクエストメッセージが受け付けられると、リクエストメッセージに含めたログメッセージと関連性の高いログメッセージがグループ化されて、ログメッセージのリストとしてレスポンスメッセージに含められて送られてくる。管理端末132は、レスポンスメッセージを受信すると、
図9(b)に示すように、それに含まれるログメッセージのリストをログメッセージ表示領域902に表示する。
図9に示す例では、ログ−グループ化関連付け管理テーブル123に
図8に示す値が格納されている場合を想定している。そのため、ログメッセージM105を選択しかつ関連度評価値E3の下限値を0.60に設定すると、ログメッセージM105とそれに関連するログメッセージM101およびM103が表示される。または、ログメッセージM105を選択しかつ関連度評価値E3の下限値を、たとえば0.80に設定すると、グループIDがG2となるレコードが除外されるため、ログメッセージM105とそれに関連するログメッセージM101とが表示される。このようにすることで、関連度評価値E3の下限値を入力することにより、グループとして関連付けられたログメッセージ201をより絞り込んで精度を高めることができる。
【0086】
以上より、本実施形態によれば、ログメッセージグループ化装置101が、ログメッセージ201を構成する単語のうち出現回数の比較的少ない単語である少数単語の一致度を示す一致度評価値E1を算出する。このようにしたことから、ログ200に記録されたログメッセージ201は、関連度の高いログメッセージ201同士ほど共通の少数単語を含むものと考えられるので、ログメッセージ201間の少数単語の一致度を指標とすることにより、あらかじめログメッセージ201をグループとして関連付ける情報を用意することなく、関連するログメッセージ201をグループ化することができる。
【0087】
また、ログメッセージグループ化装置101が、分類値の組み合わせの出現回数に基づいてログメッセージ201の分類値と過去のログメッセージ201の分類値との組み合わせの出現度を示す出現度評価値E2を算出し、一致度評価値E1および出現度評価値E2に基づきログメッセージ201と過去のログメッセージ201との関連度を示す関連度評価値E3を算出する。このようにしたことから、2つのログメッセージ201の分類値の組み合わせの出現回数に基づく出現度評価値E2を指標とすることにより、出現が希な分類値の組み合わせ、すなわち、出現が希なログメッセージ201の組み合わせを除外することができる。そのため、関連するログメッセージ201をより精度よくグループ化することができる。
【0088】
したがって、あらかじめログメッセージをグループとして関連付ける情報を用意することなくログメッセージをグループ化することができるので、ログメッセージの出力形式が頻繁に変更される情報システムのログに記録されたログメッセージの分析を支援することができる。また、同様の処理を複数並行して行う情報システムにおいて、各処理に応じて出力されるログメッセージが入れ子になったときでも、精度よくログメッセージをグループ化することができる。
【0089】
上述した実施形態では、関連度評価値E3を用いて処理対象のログメッセージ201と過去のログメッセージ201との関連性を評価する構成であったが、これに限定されるものではない。これ以外にも、一致度評価値E1のみを用いてログメッセージ201の関連性を評価する構成としてもよい。
【0090】
以上、図面を用いて本発明の実施形態を詳述してきたが、具体的な構成はこの実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の構成に置き換える事が可能であり、また、ある実施形態の構成に他の構成を加えることも可能である。本発明の要旨を逸脱しない範囲における設計変更等があっても、それらは本発明に含まれるものである。