(57)【要約】【課題】  ログの時刻情報を正確に把握できるログ管理装置、システム、方法、及びプログラムを提供する。【解決手段】    本発明のログ管理装置は、時刻情報を含むログが収集される少なくとも一つの収集対象から該ログを受信する収集手段と、収集対象毎に設定されたログフォーマット情報を管理する管理手段と、ログフォーマット情報を参照してログを変換し、時刻情報を抽出する変換手段とを含む。【選択図】      図１
2010073123.tif 000002
【特許請求の範囲】
【請求項１】
時刻情報を含むログが収集される少なくとも一つの収集対象から該ログを受信する収集手段と、
前記収集対象毎に設定されたログフォーマット情報を管理する管理手段と、
前記ログフォーマット情報を参照して前記ログを変換し、時刻情報を抽出する変換手段と
を含むログ管理装置。
【請求項２】
前記ログフォーマット情報は文字コードの情報を含み、
前記変換手段は当該文字コードに基づいて前記ログを読み込む
請求項１に記載のログ管理装置。
【請求項３】
前記ログフォーマット情報は時刻情報の位置の情報を含み、
前記変換手段は当該時刻情報の位置の情報を基に、前記ログから時刻情報を取得する
請求項１又は２に記載のログ管理装置。
【請求項４】
前記ログフォーマット情報はタイムゾーンの情報を含み、
前記変換手段は当該タイムゾーンの情報を基に、前記ログから取得された時刻情報を所定のタイムゾーンの時刻情報に変換する
請求項１乃至３のいずれかに記載のログ管理装置。
【請求項５】
前記ログフォーマット情報は、前記収集対象を特定する識別情報、当該収集対象内のログの格納場所を示す情報およびログの種別を示す情報のうちの少なくとも一つを含む
請求項１乃至４のいずれかに記載のログ管理装置。
【請求項６】
前記ログフォーマット情報は、ログレコード区切りの情報と、前記ログレコードを正規化する正規表現の情報とを含み、
前記変換手段は、正規化するログレコードに対応した前記正規表現の情報を用いて、当該ログレコードを正規化する
請求項１乃至５のいずれかに記載のログ管理装置。
【請求項７】
前記変換手段は、
前記収集対象から複数のログレコードを含むログファイルをログとして受信し、当該ログレコードの時刻情報の少なくとも一部が不足している場合に、補完情報を基に前記受信したログファイルのログレコードの時刻情報を補完し、該補完された時刻情報を基に、当該ログレコードの前のログレコードの時刻情報を補完する
請求項１乃至６のいずれかに記載のログ管理装置。
【請求項８】
前記時刻情報における不足している部分がある時刻単位の情報である場合、
前記変換手段は、
前記補完情報の示す時刻が前記時刻単位の前半である場合には、前記補完情報の前記時刻単位の情報、または、前記補完情報の示す前記時刻単位の情報から１を減じた情報を前記ログレコードの時刻情報に付加し、前記時刻単位の情報が付加された時刻情報がより前記補完情報に近くなる方の時刻情報を採用し、
前記補完情報の示す時刻が前記時刻単位の後半である場合には、前記補完情報の前記時刻単位の情報、または、前記補完情報の示す前記時刻単位の情報に１を加えた情報を前記ログレコードの時刻情報に付加し、前記時刻単位の情報が付加された時刻情報がより前記補完情報に近くなる方の時刻情報を採用する
請求項７に記載のログ管理装置。
【請求項９】
前記時刻情報が補完されたログレコードの時刻情報を基に、その前のログレコードの時刻情報を補完する場合、
前記変換手段は、
前後のログレコードの時刻情報の差の絶対値が前記時刻単位の半分以下の場合には、後のログレコードの時刻情報の前記時刻単位の情報を前のログレコードの時刻情報に付加し、
前後のログレコードの時刻情報の差の絶対値が前記時刻単位の半分より大きく、前記後のログレコードの時刻情報から前のログレコードの時刻情報を減じた値が正の場合は、前記後のログレコードの時刻情報の前記時刻単位の情報に１を加えた情報を前記前のログレコードの時刻情報に付加し、
前後のログレコードの時刻情報の差の絶対値が前記時刻単位の半分より大きく、前記後のログレコードの時刻情報から前記前のログレコードの時刻情報を減じた値が負の場合は、前記後のログレコードの時刻情報の前記時刻単位の情報から１を減じた情報を前記前のログレコードの時刻情報に付加する
請求項８に記載のログ管理装置。
【請求項１０】
前記補完情報は、前記ログファイルの更新時刻である
請求項８又は９に記載のログ管理装置。
【請求項１１】
前記収集手段は、前記収集対象から随時転送されるログレコードを受信し、当該ログレコードと補完情報とを関連付け、当該ログレコードの時刻情報の少なくとも一部が不足している場合に、前記補完情報を基に不足している時刻情報を補完する
請求項１乃至６のいずれかに記載のログ管理装置。
【請求項１２】
前記時刻情報における不足している部分がある時刻単位の情報である場合、
前記変換手段は、
前記補完情報の示す時刻が前記時刻単位の前半である場合には、前記補完情報の前記時刻単位の情報、または、前記補完情報の示す前記時刻単位の情報から１を減じた情報を前記ログレコードの時刻情報に付加し、前記時刻単位の情報が付加された時刻情報がより前記補完情報に近くなる方の時刻情報を採用し、
前記補完情報の示す時刻が前記時刻単位の後半である場合には、前記補完情報の前記時刻単位の情報、または、前記補完情報の示す前記時刻単位の情報に１を加えた情報を前記ログレコードの時刻情報に付加し、前記時刻単位の情報が付加された時刻情報がより前記補完情報に近くなる方の時刻情報を採用する
請求項１１に記載のログ管理装置。
【請求項１３】
前記補完情報は、前記ログレコードの受信時刻である
請求項１１又は１２に記載のログ管理装置。
【請求項１４】
前記時刻単位は、年、月、日、時、分、及び秒の少なくとも一つである
請求項８乃至１３のいずれかに記載のログ管理装置。
【請求項１５】
時刻情報を含むログを取得し、ログ管理装置に転送する転送手段
を含む少なくとも一つのログの収集対象と、
前記収集対象から該ログを受信する収集手段と、
前記収集対象毎に設定されたログフォーマット情報を管理する管理手段と、
前記ログフォーマット情報を参照して前記ログを変換し、時刻情報を抽出する変換手段と
を含むログ管理装置と
を含むログ管理システム。
【請求項１６】
時刻情報を含むログが収集される少なくとも一つの収集対象から該ログを受信し、
前記収集対象毎に設定されたログフォーマット情報を管理し、
前記ログフォーマット情報を参照して前記ログを変換し、時刻情報を抽出する
ログ管理方法。
【請求項１７】
コンピュータに、
時刻情報を含むログが収集される少なくとも一つの収集対象から該ログを受信する収集手段、
前記収集対象毎に設定されたログフォーマット情報を管理する管理手段、
前記ログフォーマット情報を参照して前記ログを変換し、時刻情報を抽出する変換手段
として機能させるためのログ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はログ管理装置、システム、方法、及びプログラムに関し、特に、時刻情報を管理するログ管理装置、システム、方法、及びプログラムに関する。
【背景技術】
【０００２】
複数の国やタイムゾーンに分散されたコンピュータからなるシステムにおいて障害発生時のログの収集と分析を容易にするログ収集装置が特許文献１に開示されている。しかしながら、このログ収集装置は、マシンごとに設定されたタイムゾーン、文字コードで時刻補正を行った後にＵｎｉｃｏｄｅへの変換を行っている。そのため、ログの時刻情報部分のバイト列が文字コードによって異なるような場合、ログの時刻情報を正確に読み取れないことがあるという問題があった。また、ログに時刻情報がなかったり、時刻情報があったとしても一部しかない場合には、それを補完することができないため、他のログと同等に管理できないという問題もあった。すなわち、文献１記載の装置には、時刻情報に基づいたログ管理が正しく行えないという問題があった。
【０００３】
このような問題点を解決する技術の一例が、取引情報の集約方法に関連するシステムとして特許文献２に開示されている。このシステムでは、先ず、ユーザシステムが取引情報の文字コード変換を行い、次に、集約システムが取引日時を自国の時間帯に変換する。
【０００４】
又、特許文献３は、ログ情報にジョブ生成時刻が含まれていない場合に、ログ受信時刻をジョブ生成時刻として設定するログ情報管理装置を開示している。
【０００５】
又、特許文献４は、日時分秒しかない日付時刻情報に最適と思われる年月を付加する日付処理装置を開示している。
【０００６】
【特許文献１】特開２００５−２８４５２０号公報
【特許文献２】特開２００４−３３４６６４号公報（段落００７９，０１２２）
【特許文献３】特開２００５−３２７０５３号公報（段落００３７）
【特許文献４】特開平５−０７３１６８号公報（段落００１２）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した特許文献２に開示されたシステムにおいても、ログの時刻情報を正確に読み取れないことがあるという問題があった。その理由は、ログの収集対象ごとに時刻情報の位置、文字コード、タイムゾーン等が異なる場合があるためである。
【０００８】
また、上述した特許文献３および４に開示された装置においても、文献１記載の装置と同様に、ログに時刻情報がなかったり、時刻情報の一部がない場合に、それを正確に補完することができないという問題があった。その理由は、例えば、長い期間のログを受信した場合に、どのログに対しても同じログ受信時刻を基に時刻情報を補完してしまうためである。
【０００９】
その結果、上述した特許文献２〜４に開示されたシステムや装置にも、時刻情報に基づいたログ管理を正しく行えないという問題があった。
【００１０】
本発明は、ログの時刻情報を正確に把握できるログ管理装置、システム、方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明のログ管理装置は、時刻情報を含むログが収集される少なくとも一つの収集対象から該ログを受信する収集手段と、収集対象毎に設定されたログフォーマット情報を管理する管理手段と、ログフォーマット情報を参照してログを変換し、時刻情報を抽出する変換手段とを含む。
【００１２】
本発明のログ管理システムは、時刻情報を含むログを取得し、ログ管理装置に転送する転送手段を含む少なくとも一つのログの収集対象と、収集対象から該ログを受信する収集手段と、収集対象毎に設定されたログフォーマット情報を管理する管理手段と、ログフォーマット情報を参照してログを変換し、時刻情報を抽出する変換手段とを含むログ管理装置とを含む。
【００１３】
本発明のログ管理方法は、時刻情報を含むログが収集される少なくとも一つの収集対象から該ログを受信し、収集対象毎に設定されたログフォーマット情報を管理し、ログフォーマット情報を参照してログを変換し、時刻情報を抽出する。
【００１４】
本発明のログ管理プログラムは、コンピュータに、時刻情報を含むログが収集される少なくとも一つの収集対象から該ログを受信する収集手段、収集対象毎に設定されたログフォーマット情報を管理する管理手段、ログフォーマット情報を参照してログを変換し、時刻情報を抽出する変換手段として機能させる。
【発明の効果】
【００１５】
本発明は、ログの時刻情報を正確に把握できるという効果を奏する。
【発明を実施するための最良の形態】
【００１６】
次に、本発明の概要を説明する。
【００１７】
図１は、本発明のログ管理システム００２の構成を示す図である。図において、ログ管理システム００２はログ管理装置２００と、収集対象２０６とを含む。
【００１８】
ログ管理装置２００は、収集手段２０２と、変換手段２０４と、管理手段２１２とを含む。
【００１９】
収集手段２０２は、時刻情報を含むログが収集される少なくとも一つの収集対象２０６から該ログを受信する。
【００２０】
管理手段２１２は、収集対象２０６毎に設定されたログフォーマットを管理する。
【００２１】
変換手段２０４は、ログフォーマット情報を参照してログを変換し、時刻情報を抽出する。
【００２２】
収集対象２０６は、転送手段２０９を含む。
【００２３】
転送手段２０９は、時刻情報を含むログを取得し、ログ管理装置２００に転送する。
【００２４】
次に、本発明のログ管理システム００１の第１の実施の形態について図面を参照して詳細に説明する。
【００２５】
図２は、ログ管理システム００１の構成を示す図である。
【００２６】
ログ管理システム００１は、ログ管理装置１００と、ネットワーク１０５と、ノード（１）１０６と、ノード（２）１０７と、ノード（３）１０８とを含む。
【００２７】
ログ管理装置１００は、ログ・ログファイル保管モジュール１０１と、ログファイル収集モジュール１０２と、ログ収集モジュール１０３と、ログ参照モジュール１０４と、ログフォーマット管理モジュール１１２とを含む。ログ管理装置１００は、プログラム制御に基づき動作する。
【００２８】
ログ・ログファイル保管モジュール１０１は、ログファイル収集モジュール１０２およびログ収集モジュール１０３で収集したログ・ログファイルを保管する機能を有する。図３は、ログ・ログファイル保管モジュール１０１による管理イメージを示す図である。ログ・ログファイル保管モジュール１０１は、データの格納先、ノード、ログ・ログファイルのログ収集対象ノード上でのファイルパス、サイズ、ログ・ログファイルのログ収集対象ノード上でのタイムスタンプ（更新時刻）などのログのプロパティを管理する機能を有する。
【００２９】
ログファイル収集モジュール１０２とログ収集モジュール１０３は、収集手段２０２の一例である。ログファイル収集モジュール１０２は、ログ転送モジュール（１）１０９および（２）１１０の少なくとも一つにより転送される時刻情報を含むログファイルを収集する機能、収集したログファイル、ログファイルのログ収集対象であるノード上でのファイルパス、ログファイルのタイムスタンプなどのプロパティをログ・ログファイル保管モジュール１０１に転送する機能を有する。ログファイル収集モジュール１０２の詳細なロジックは図６に示される。
【００３０】
ログ収集モジュール１０３は、例えば、Syslog（ログを取り、ログをリアルタイムに送受信する機能を持つプログラム）プロトコルを使用してリアルタイムにログを転送するログ転送モジュール（３）１１１からのログを収集し、取得したログの文字コードの変換、時刻情報の補完／補正を行い、ログ・ログファイル保管モジュール１０１に渡す機能を有する。ログ収集モジュール１０３の詳細なロジックは図６に示される。ログファイル収集モジュール１０２およびログ収集モジュール１０３は、図１に示した収集手２０２段の一例である。
【００３１】
ログ参照モジュール１０４は、ログ参照要求に応答して、ユーザにより設定されたログフォーマット（後述）を参照して、ログを変換し、時刻情報を抽出する変換手段２０４の一例である。具体的には、モジュール１０４は、ユーザが要求するログ・ログファイルをログ・ログファイル保管モジュール１０１から取得し、ユーザが設定した文字コード、タイムゾーン、時刻の形式で表示する機能を有する。ログ参照モジュール１０４の詳細なロジックは図８，９，１０および１１を参照して後述する。
【００３２】
図４は、ログフォーマット管理モジュール１１２の管理イメージを示す図である。ログフォーマット管理モジュール１１２は、収集対象を特定する識別情報（例、ノード）、収集対象内のログの格納場所を示す情報（例、ファイルパス）、ログの種別を示す情報ごとの文字コード、タイムゾーンおよび時刻情報の位置等を保持するためのログフォーマットを設定／管理する。ログフォーマット管理モジュール１１２は管理手段２１２の一例である。
【００３３】
ノード（１）１０６、ノード（２）１０７およびノード（３）１０８はログ管理装置１００のログ収集対象であり、図１に示した収集対象２０６の一例である。ノード（１）１０６、ノード（２）１０７及びノード（３）１０８はそれぞれログ転送モジュール（１）１０９、ログ転送モジュール（２）１１０およびログ転送モジュール（３）１１１を含み、それらを用いてログ・ログファイルをログ管理装置１００に転送する。
【００３４】
ログ転送モジュール（１）１０９およびログ転送モジュール（２）１１０は、転送手段２０９の一例である。収集対象のログファイルを取得し、ログファイルとログファイルのログ収集対象ノード上でのファイルパスおよびログファイルのログ収集対象ノード上でのタイムスタンプなどのファイルのプロパティとをログファイル収集モジュール１０２に転送する機能を含む。
【００３５】
ログ転送モジュール（３）１１１は、転送手段２０９の一例である。例えば、Syslogを使用してリアルタイムにログを転送する機能を有し、ログ収集モジュール１０３にログを転送する。
【００３６】
次に、本実施の形態の動作について図面を参照して説明する。
【００３７】
図６は、ログファイル収集モジュール１０２の動作を示すフローチャートである。まず、ログファイル収集モジュール１０２はログ収集対象であるノード（１）１０６のログ転送モジュール（１）１０９からログファイルとログファイルのプロパティとを受信する（Ｓ６００）。ここでは、ログファイルのプロパティとして、ノード（１）１０６を指定する情報「node1」、収集したログのノード（１）１０６上での格納場所を指定するファイルパス「/var/adm/syslog/syslog.log」、当該ログのファイルサイズ「10240」およびタイムスタンプ（更新時刻）「2008/01/01 12:00:00」（Greenwich Mean Time, GMT）を受信したものとする。
【００３８】
ログファイル収集モジュール１０２は、ログ・ログファイル保管モジュール１０１に受信したログファイルとログファイルのプロパティとを保管する(Ｓ６０１)。
【００３９】
次に、ログ・ログファイル保管モジュール１０１の動作を説明する。
【００４０】
図７は、ログ・ログファイル保管モジュール１０１の動作を示すフローチャートである。ログ・ログファイル保管モジュール１０１は、ログファイル収集モジュール１０２からログファイルとプロパティとを受信する（Ｓ７００）。そして、ログ・ログファイル保管モジュール１０１は、受信したログファイルのファイルデータとプロパティとを関連付けで保管する（Ｓ７０１）。ここでは、これらは、ファイルパス「/var/opt/logmg/node1/file0000001」で示された格納場所に保管されたものとする。
【００４１】
次に、ログ参照モジュール１０４にログ参照要求があった場合の動作について説明する。
【００４２】
図８は、ログ参照モジュール１０４の動作を説明するフローチャートである。ログ参照モジュール１０４にログ参照要求があると、ログ参照モジュール１０４は参照するログファイルのファイルデータとプロパティとをログ・ログファイル保管モジュール１０１から取得する（Ｓ８００）。ここでは、先に収集したノード（１）１０６のログ（ファイルパス「/var/adm/syslog/syslog.log」で指定されるログ）をタイムゾーン「Japan Standard Time, JST(GMT+9:00)」で参照する要求があったものとし、ファイルパス「/var/opt/logmg/node1/file0000001」で指定されるデータの格納先からログデータが渡される。
【００４３】
次に、ログ参照モジュール１０４はログフォーマット管理モジュール１１２からノード「node1」、ファイルパス「/var/adm/syslog/syslog.log」に対応するログフォーマットを取得する（Ｓ８０１）。
【００４４】
図５は、ログフォーマットの例を示す図である。ログ参照モジュール１０４はここではSyslogFileFormat01を取得したものとする。SyslogFileFormat01は文字コード「EUC-JP」、ログのタイムゾーン「GMT」、ログレコードの区切り「^$」、ログ正規化する正規表現「(([a-zA-Z]{3}[\s]{1,2}[0-9]{1,2}\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}))\s([^\s]*)\s([^\s][^:]*:){0,1}\s{0,1}(.*)」、時刻情報の位置「１」、時刻情報の形式「MMM dd HH:mm:ss」、変換後の時刻情報の形式「yyyy/mm/dd HH:mm:ss」を特定しているものとする。
【００４５】
次に、ログ参照モジュール１０４は、ログフォーマットに設定されている文字コードに基づきログファイルを読み込む（Ｓ８０２）。ここでは、先に収集したノード（１）１０６のログ（ファイルパス「/var/adm/syslog/syslog.log」で指定されるログ）を文字コード「EUC-JP」に基づき読み込む。文字コードを指定して読み込むことによって、プログラムが解釈可能なデータとして扱うことができる（ここではUnicodeに変換される）。
【００４６】
次に、ログ参照モジュール１０４は、読み込んだログファイルをログレコードごとにログの正規化を行い、ログの時刻情報を取得する（Ｓ８０３）。ログレコードの種類が複数ある場合には、ログフォーマットにそれぞれのログレコードに対応した正規表現を複数設定しておき、ログレコードを正規化する。
【００４７】
なお、ここでは、ログ参照モジュール１０４は、時刻情報の位置の情報を基に、ログファイルから時刻情報を取得する。即ち、ログレコード「Jan 1 12:00:00 node1 sshd(pam_unix)[30339]: session opened for user root by (uid=0)」からログの時刻情報として「Jan 1 12:00:00」（GMT）を取得することができる。
【００４８】
次に、ログ参照モジュール１０４は、ログの時刻情報の少なくとも一部が不足しているか判定する（Ｓ８０４）。ここでは、上述したログの時刻情報「Jan 1 12:00:00」（GMT）に年の情報が不足していることがわかる（Ｓ８０４，Ｎｏ）。また、ログレコードによって時刻情報のタイムゾーンが異なるような場合は、それぞれのログレコードにマッチする正規表現とタイムゾーンとの組を予めログフォーマットに設定しておき、それぞれのログレコードについてタイムゾーンの変換を行う（ここでは、GMTに変換するものとする）。
【００４９】
ログ参照モジュール１０４は、ログファイルのタイムスタンプ（更新時刻）からログの時刻情報を補完する（Ｓ８０５）。ここでは、年の情報が補完される。なお、タイムスタンプは補完情報の一例であり、ログファイルの受信時刻等を補完情報に用いてもよい。
【００５０】
図９は、Ｓ８０５の詳細を示すフローチャートである。まず、ログ参照モジュール１０４は、タイムスタンプを基に、最後のログレコードの時刻情報のうちの年情報の部分を補完する（Ｓ９０１）。
【００５１】
図１０は、Ｓ９０１の詳細を示すフローチャートである。例えば、ログファイルのタイムスタンプからの年情報の補完は、ログファイルのタイムスタンプが年の前半である場合は（Ｓ１００１，Ｙｅｓ）、そのタイムスタンプの年情報もしくは、そのタイムスタンプの年情報−１をログファイルの最後のログレコードの時刻情報に付加し（Ｓ１００２）、付加した時刻情報がよりログファイルのタイムスタンプに近くなる方の年情報を採用する（Ｓ１００３）。
【００５２】
ログファイルのタイムスタンプが年の後半である場合は（Ｓ１００１，Ｎｏ）、そのタイムスタンプの年情報もしくは、そのタイムスタンプの年情報＋１をログファイルの最後のログレコードの時刻情報に付加し（Ｓ１００４）、付加した時刻情報がよりログファイルのタイムスタンプに近くなる方の年情報を採用する（Ｓ１００５）。
【００５３】
次に、ログ参照モジュール１０４は、時刻情報が補完されたログレコードの時刻情報を基に、その前のログレコードの時刻情報のうちの年情報の部分を補完する（Ｓ９０２）。
【００５４】
図１１は、Ｓ９０２の詳細を示すフローチャートである。例えば、ログファイルの最後のレコードから遡りながら、年情報を付加する。ここで、前後のログレコードの時刻情報（後のログレコードの時刻情報とは、ログファイルの最後のログレコードに近い方(既に年情報を付加している方)のログレコードの時刻情報である。前のログレコード時刻情報とは、ログファイルの最後のログレコードから遠い方(年情報を付加する方)のログレコードの時刻情報である。）の差の絶対値が半年以下の場合（例えば、「Jan 1 01:00:00」から「Jan 1 23:00:00」になるような場合や「Jan 2 02:00:00」から「Jan 1 23:00:00」）は（Ｓ１１０１）、年をまたいでいないとみなして後のログレコードの時刻情報の年情報と同じ年情報を前のログレコードの時刻情報に付加する（Ｓ１１０２）。
【００５５】
ログ参照モジュール１０４は、前後の時刻情報の差の絶対値が半年より大きく（Ｓ１１０１，Ｎｏ）、（「後のログレコードの時刻情報」 −「 前のログレコードの時刻情報」）が正の場合（例えば、「Dec 31 23:59:58」から「Jan 1 1:00:00」）は（Ｓ１１０３，Ｙｅｓ）、年をまたいでいるとみなして「後のログレコードの時刻情報の年情報」＋１を年情報として前のログレコードの時刻情報に付加する（Ｓ１１０４ ）。
【００５６】
前後のログレコードの時刻情報の差の絶対値が半年より大きく（Ｓ１１０１，Ｎｏ）、（「後のログレコードの時刻情報」 −「 前のログレコードの時刻情報」）が負の場合（例えば、「Jan 1 2:00:00」から「Dec 31 23:00:00」になるような場合）は（Ｓ１１０３，Ｎｏ）、年をまたいだとみなして後のログレコードの時刻情報の年情報−１を年情報として前のログレコードの時刻情報に付加する（Ｓ１１０５）。
【００５７】
次に、ログ参照モジュール１０４は、先頭のログレコードまで補完したか判定する（Ｓ９０３）。先頭のログレコードまで補完した場合（Ｓ９０３，Ｙｅｓ）、ログファイルのタイムスタンプからログの時刻情報を補完する処理を終了する。先頭のログレコードまで補完していなかった場合（Ｓ９０３，Ｎｏ）、Ｓ９０１の処理に戻る。これにより、ログ参照モジュール１０４はログファイルのタイムスタンプからログの時刻情報を補完する処理をログファイルの先頭まで行う。
【００５８】
尚、ここでは、時刻情報の時刻単位（例、年、月、日、時、分、秒）の情報の内、年情報の部分を補完する処理を示したが、例えば、年情報と月情報がない場合は、ログ参照モジュール１０４は、半年以上かどうかの判定と半月以上かどうかの判定を行いタイムスタンプから年情報と月情報を補完すればよい。日情報以降も同様に補完すればよい。
【００５９】
又、ここでは、ログファイルには最後のレコードから順に時刻情報として「Jan 1 12:00:00」「Jan 1 01:00:00」「Dec 31 23:00:00」「Dec 31 11:00:00」…とあり、付加される年情報はそれぞれ最後のレコードから順に「2008」「2008」「2007」「2007」…となるものとする。
【００６０】
次に、Ｓ８０４でＮｏの場合、又は、Ｓ８０５処理を終了した場合、ログ参照モジュール１０４は、ログの時刻情報をログファーマットのタイムゾーンの設定を基に指定のタイムゾーンの時刻情報に変換する（Ｓ８０６）。なお、ここでは、タイムゾーン「GMT」からタイムゾーン「JST(GMT+9:00)」に変換し、上述の時刻情報は「Jan 1 2008 21:00:00」「Jan 1 2008 10:00:00」「Jan 1 2008 08:00:00」「Dec 31 2007 20:00:00」…となるものとする。
【００６１】
次に、ログ参照モジュール１０４はログの時刻情報の表示形式を指定の形式に変換する（Ｓ８０７）。なお、ここでは、「Jan 1 2008 21:00:00」「Jan 1 2008 10:00:00」「Jan 1 200808:00:00」「Dec 31 2007 20:00:00」…がそれぞれ、「2008/01/01 21:00:00」「2008/01/01 10:00:00」「2008/01/01 08:00:00」「2007/12/31 20:00:00」…となるものとする。
【００６２】
次に、ログ参照モジュール１０４は、生成したログレコードを要求元に出力する（Ｓ８０８）。ここでは、「Jan 1 12:00:00 node1 sshd(pam_unix)[30339]: session opened for user root by (uid=0)」は、「2008/01/01 21:00:00 node1 sshd(pam_unix)[30339]: session opened for user root by (uid=0)」として出力される。
【００６３】
以上で説明したように、本実施の形態には、ログの時刻情報を正確に読み取ることができるという効果がある。その理由は、ログの収集対象毎に設定されたログフォーマットを管理しているためである。このログフォーマットを、ログの収集対象ごとに時刻情報の位置、文字コード、タイムゾーン等が異なる場合でもログの時刻情報を正確に読み取ることができる。
【００６４】
又、本実施の形態には、ログの時刻情報を正確に補完することができるという効果もある。その理由は、ログの収集対象から複数のログレコードを含むログファイルを受信し、当該ログレコードの時刻情報の少なくとも一部が不足している場合には、補完情報（例、タイムスタンプ（更新時刻）又はログ受信時刻）を基に受信したログファイルの最後のログレコードの時刻情報を補完し、時刻情報が補完されたログレコードの時刻情報を基に、その前のログレコードの時刻情報を補完するためである。
【００６５】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００６６】
第１の実施の形態では、ログファイル収集モジュール１０２が、ログ転送モジュール（１）１０９および（２）１１０からログファイルを受信していたのに対し、第２の実施の形態では、ログ収集モジュール１０３が、ログ転送モジュール（３）１１１からログ（レコード）を受信する点が異なる。また、第１の実施の形態では、ログ参照モジュール１０４が、図１に示した変換手段２０４の機能を実行していたが、第２の実施の形態では、ログ収集モジュール１０３が、ログの収集機能だけでなく、変換手段２０４の機能を実行する。第２の実施の形態の構成は、図２に示した第１の実施の形態と同じである。以下、本発明の第２の実施の形態の動作について詳細に説明する。
【００６７】
図１２は、ログ収集モジュール１０３の動作を説明するフローチャートである。
【００６８】
ログ収集モジュール１０３はログ収集対象であるノード（３）１０８のログ転送モジュール（３）１１１からログを受信するにあったって、受信するログに対応するログフォーマットをログフォーマット管理モジュール１１２から取得する。ここでは、図５に示す、ログフォーマット「SyslogFormat02」を取得するものとする。SyslogFormat02は、文字コード「EUC-JP」、ログのタイムゾーン「JST」、ログレコードの区切り「^$」、ログ正規化する正規表現「<([0-9]{1,3})> (([a-zA-Z]{3}[\s]{1,2}[0-9]{1,2}\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}))\s([^\s]*)\s (.*)」、時刻情報有無「有」、ホスト名有無「有」、時刻情報の位置「2」、時刻情報の形式「MMM dd HH:mm:ss」、変換後の時刻情報の形式「yyyy/mm/dd HH:mm:ss」、保管するログ情報の位置「2,3,4」を指定している。
【００６９】
ログ収集モジュール１０３はログ収集対象であるノード（３）１０８のログ転送モジュール（３）１１１からログを受信する（Ｓ１２００）。なお、ここでは、ログ転送モジュール（３）１１１はSyslogプロトコルでログを随時転送するものとする。
【００７０】
次に、ログ収集モジュール１０３は、ログを受信した時刻とログのパケットとを関連付ける（Ｓ１２０１）。ここでは、ログ受信時刻「2008/01/02 03:00:00」(GMT)と受信したログのパケットとが関連付けされるものとする。
【００７１】
次に、ログ収集モジュール１０３は、受信したログのパケットをログフォーマットで指定された文字コードに基づき読み込む（Ｓ１２０２）。ここでは、受信したログのパケットを文字コード「EUC-JP」に基づき読み込み、プログラムが解釈可能な文字列として、「<38>Jan 2 12:00:01 node3 sshd(pam_unix)[30340]: session opened for user root by (uid=0)」を読み込んだものとする。
【００７２】
次に、ログ収集モジュール１０３は、ログレコードの正規化を行い、時刻情報を取得する（Ｓ１２０３）。そして、ログ収集モジュール１０３は、取得した時刻情報の少なくとも一部に不足がないか判定する（Ｓ１２０４）。ここでは、時刻情報として「Jan 2 12:00:01」(JST)→「Jan 2 03:00:01」(GMT)を取得し、変換後の時刻情報の形式「yyyy/mm/dd HH:mm:ss」と比較して年の情報が不足していることがわかる（Ｓ１２０４，Ｙｅｓ）。また、ログレコードによって時刻情報のタイムゾーンが異なるような場合は、それぞれのログレコードにマッチする正規表現とタイムゾーンとの組を設定し、タイムソーンの変換を行う（ここではGMTに変換するものとする）。
【００７３】
次に、ログ収集モジュール１０３は、補完情報から不足している時刻情報を補完する（Ｓ１２０５）。ここでは、一例として、ログ受信時刻から不足している時刻情報を補完するものとして説明するが、ログのタイムスタンプ（更新時刻）から不足している時刻情報を補完するようにしてもよい。
【００７４】
図１３は、Ｓ１２０５の詳細を示すフローチャートである。ログ受信時刻からの年情報の補完は、ログ受信時刻が年の前半である場合は（Ｓ１３０１，Ｙｅｓ）、そのログ受信時刻の年情報もしくは、そのログ受信時刻の年情報−１をログの時刻情報に付加し（Ｓ１３０２）、ログ受信時刻との時間が近くなる方の年情報を採用する（Ｓ１３０３）。
【００７５】
ログ受信時刻が年の後半である場合は（Ｓ１３０１，Ｎｏ）、そのログ受信時刻の年情報もしくは、そのログ受信時刻の年情報＋１をログの時刻情報に付加し（Ｓ１３０４）、ログ受信時刻との時間が近くなる方の年情報を採用する（Ｓ１３０５）。
【００７６】
本実施の形態においても、時刻情報の時刻単位（例、年、月、日、時、分、秒）の情報の内、年情報の部分を補完する処理を示したが、第１の実施の形態と同様、年情報と月情報がない場合は、ログ収集モジュール１０３は、月の前半かどうかで付加する年情報と月情報を絞り込み、ログ受信時刻により近くなる方の年情報と月情報を補完すればよい。日情報以降も同様に補完すればよい。また、時刻情報自体がない場合はログ受信時刻をそのまま付加してもよい。なお、ここではログ受信時刻「2008/01/02 03:00:00」(GMT)は年の前半であるため、「2008」もしくは「2007」を時刻情報「Jan 2 03:00:01」(GMT)に付加し、ログ受信時刻「2008/01/02 03:00:00(GMT)」と比較する。比較すると、「2008」を付加したほうがログ受信時刻と近くなるため、補完後の時刻情報は「2008/01/02 03:00:01」(GMT)となる。
【００７７】
次に、場所を入れ換えステップＳ１２０４でＮｏの場合、又は、ステップＳ１２０５の処理が終了した場合、ログ収集モジュール１０３は、受信したログをログ・ログファイル保管モジュール１０１にログを保管するための文字コード、タイムゾーン、ログの形式に変換する（Ｓ１２０６）。ここでは、文字コード「EUC-JP」、ログのタイムゾーン「JST」、時刻情報の形式「yyyy/mm/dd HH:mm:ss」として、受信したログを「2008/01/02 12:00:01 node3 sshd(pam_unix)[30340]: session opened for user root by (uid=0)」に変換する。
【００７８】
次に、ログ収集モジュール１０３は、変換したログをログ・ログファイル保管モジュール１０１に保管する（Ｓ１２０７）。ここでは、「2008/01/02 12:00:01 node3 sshd(pam_unix)[30340]: sessionopened for user root by (uid=0)」が保管される。
【００７９】
次に、上述のログ収集モジュール１０３の動作後のログ・ログファイル保管モジュール１０１の動作について説明する。
【００８０】
図１４は、ログ・ログファイル保管モジュール１０１の動作を説明するフローチャートである。ログ・ログファイル保管モジュール１０１は、ログ収集モジュール１０３から変換されたログを受け取ると（Ｓ１４００）、そのログをデータの格納先に保管し、プロパティを更新する（Ｓ１４０１）。ここでは、「2008/01/02 12:00:01 node3 sshd(pam_unix)[30340]: sessionopened for user root by (uid=0)」がファイルパス「/var/opt/logmg/node3/file0000002」で指定される格納先に保管され、サイズ（保管したログのサイズ分プラスされる）やタイムスタンプ（保管した時刻に更新される）が更新される。
【００８１】
本実施の形態も、ログの時刻情報を正確に把握できるという効果を奏する。
【００８２】
その理由は、ログの収集対象から随時転送されるログレコードを受信し、当該ログレコードと補完情報を関連付け、当該ログレコードの時刻情報の少なくとも一部が不足している場合に、補完情報を基に不足している時刻情報を補完するためである。
【００８３】
以上、各実施の形態において詳細に説明したように、本発明には、ログの時刻情報を正確に把握できるという効果がある。
【００８４】
その理由は、ログの時刻情報を正確に読み取ることができるためである。本発明では、ログの収集対象毎に設定されたログフォーマットが管理されて、このログフォーマットを基に、ログの収集対象ごとに時刻情報の位置、文字コード、タイムゾーン等が異なる場合でもログの時刻情報を正確に読み取ることができる。
【図面の簡単な説明】
【００８５】
【図１】ログ管理システム００２の構成を示す図である。
【図２】ログ管理システム００１の構成を示す図である。
【図３】ログ・ログファイル保管モジュール１０１の管理イメージを示す図である。
【図４】ログフォーマット管理モジュール１１２の管理イメージを示す図である。
【図５】ログフォーマットの例を示す図である。
【図６】ログファイル収集モジュール１０２の動作を示すフローチャートである。
【図７】ログ・ログファイル保管モジュール１０１の動作を示すフローチャートである。
【図８】ログ参照モジュール１０４の動作を説明するフローチャートである。
【図９】Ｓ８０５の詳細を示すフローチャートである。
【図１０】Ｓ９０１の詳細を示すフローチャートである。
【図１１】Ｓ９０２の詳細を示すフローチャートである。
【図１２】ログ収集モジュール１０３の動作を説明するフローチャートである。
【図１３】Ｓ１２０５の詳細を示すフローチャートである。
【図１４】ログ・ログファイル保管モジュール１０１の動作を説明するフローチャートである。
【符号の説明】
【００８６】
００１，００２    ログ管理システム
１００    ログ管理装置
１０１    ログ・ログファイル保管モジュール
１０２    ログファイル収集モジュール
１０３    ログ収集モジュール
１０４    ログ参照モジュール
１０５    ネットワーク
１０６    ノード（１)
１０７    ノード（２）
１０８    ノード（３）
１０９    ログ転送モジュール（１）
１１０    ログ転送モジュール（２）
１１１    ログ転送モジュール（３）
１１２    ログフォーマット管理モジュール
２０２    収集手段
２０４    変換手段
２０６    収集対象
２０９    転送手段
２１２    管理手段
【図１】
2010073123.tif 000003
【図２】
2010073123.tif 000004
【図３】
2010073123.tif 000005
【図４】
2010073123.tif 000006
【図５】
2010073123.tif 000007
【図６】
2010073123.tif 000008
【図７】
2010073123.tif 000009
【図８】
2010073123.tif 000010
【図９】
2010073123.tif 000011
【図１０】
2010073123.tif 000012
【図１１】
2010073123.tif 000013
【図１２】
2010073123.tif 000014
【図１３】
2010073123.tif 000015
【図１４】
2010073123.tif 000016