(57)【要約】【課題】障害に関連するログデータをもれなく効率的に蓄積する。【解決手段】ログ受信部１１１は、対象システム２００からログデータを受信する。一時記録部１１２は、受信したログデータを主記憶装置１２０に構成されたリングバッファ１２１に遂次記録する。記録部１１５は、対象システム２００に障害が発生したことを示すトリガを受信したときに、リングバッファ１２１が記憶するログデータに関連する情報を補助記憶装置１３０に記録する。【選択図】図１
2013206147.tif 000002
【特許請求の範囲】
【請求項１】
対象システムのログデータを記録するロギング装置であって、
対象システムからログデータを受信するログ受信部と、
前記ログ受信部が受信したログデータを、主記憶装置に構成されたリングバッファに遂次記録する一時記録部と、
前記対象システムに障害が発生したことを示すトリガを受信するトリガ受信部と、
前記トリガ受信部がトリガを受信したときに、前記リングバッファが記憶するログデータに関連する情報を補助記憶装置に記録する記録部と
を備えることを特徴とするロギング装置。
【請求項２】
前記トリガ受信部がトリガを受信したときに、リングバッファが記憶するログデータの解析を行う解析部を備え、
前記記録部は、前記解析部の解析結果を前記補助記憶装置に記録する
ことを特徴とする請求項１に記載のロギング装置。
【請求項３】
前記解析部は、前記リングバッファが記憶するログデータのうち前記トリガ受信部が受信したトリガが示す障害に関連するログデータを抽出し、
前記記録部は、前記解析部が抽出したログデータを前記補助記憶装置に記録する
ことを特徴とする請求項２に記載のロギング装置。
【請求項４】
前記記録部は、前記解析部による解析が失敗した場合に、前記リングバッファが記憶する全てのログデータを前記補助記憶装置に記録する
ことを特徴とする請求項２または請求項３に記載のロギング装置。
【請求項５】
前記記録部は、前記トリガ受信部がトリガを受信したときに、前記リングバッファが記憶する全てのログデータを前記補助記憶装置に記録する
ことを特徴とする請求項１に記載のロギング装置。
【請求項６】
前記リングバッファの領域のうち読み取りが予定されているログデータが記録されている領域をブロッキングするブロック部を備え、
前記一時記録部は、前記リングバッファのうちブロッキングされていない領域に前記ログデータを記録する
ことを特徴とする請求項１から請求項５の何れか１項に記載のロギング装置。
【請求項７】
対象システムのログデータを記録するロギング方法であって、
対象システムからログデータを受信するステップと、
受信したログデータを主記憶装置に構成されたリングバッファに遂次記録するステップと、
前記対象システムに障害が発生したことを示すトリガを受信したときに、前記リングバッファが記憶するログデータに関連する情報を補助記憶装置に記録するステップと
を有することを特徴とするロギング方法。
【請求項８】
対象システムのログデータを記録するロギング装置を、
対象システムからログデータを受信するログ受信部、
前記ログ受信部が受信したログデータを主記憶装置に構成されたリングバッファに遂次記録する一時記録部、
前記対象システムに障害が発生したことを示すトリガを受信するトリガ受信部、
前記トリガ受信部がトリガを受信したときに、前記リングバッファが記憶するログデータに関連する情報を補助記憶装置に記録する記録部
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象システムのログデータを記録するロギング装置、ロギング方法及びプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムは、その利用過程において様々な障害が発生し得る。そこで、コンピュータシステムの動作のログデータを遂次記録し、当該コンピュータシステムに障害が発生したときにログデータを解析することで、障害の原因を追究することが行われている。
【０００３】
通常、ログデータは多量に蓄積されるため、ハードディスク等の補助記憶装置に記録される。しかしながら、コンピュータシステムは、補助記憶装置への書き込み速度より速い速度でログデータを出力することがしばしばある。そのため、全てのログデータを補助記憶装置に蓄積することは困難であるという問題がある。また、全てのログデータを補助記憶装置に蓄積しようとした場合、補助記憶装置の容量がすぐに一杯になってしまうという問題がある。
【０００４】
そこで、コンピュータシステムが出力するログデータに重要度を示すタグ（例えば、重要な順に、ｆａｔａｌ、ｅｒｒｏｒ、ｗａｒｎ、ｉｎｆｏ、ｄｅｂｕｇ、ｔｒａｃｅなど）を付し、所定の重要度以上のログデータのみを補助記憶装置に記録するような工夫が用いられている（例えば、特許文献１、２を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４１５４０号公報
【特許文献２】特開２００９−１５１６８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、所定の重要度以上のログデータのみを記録する場合、障害の原因が、重要度の低いログデータに関連するものであったときに、その原因を突き止めることができなくなってしまうという問題がある。
本発明の目的は、障害に関連するログデータをもれなく効率的に蓄積することができるロギング装置、ロギング方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は上記の課題を解決するためになされたものであり、対象システムのログデータを記録するロギング装置であって、対象システムからログデータを受信するログ受信部と、前記ログ受信部が受信したログデータを、主記憶装置に構成されたリングバッファに遂次記録する一時記録部と、前記対象システムに障害が発生したことを示すトリガを受信するトリガ受信部と、前記トリガ受信部がトリガを受信したときに、前記リングバッファが記憶するログデータに関連する情報を補助記憶装置に記録する記録部とを備えることを特徴とする。
【０００８】
また、本発明においては、前記トリガ受信部がトリガを受信したときに、リングバッファが記憶するログデータの解析を行う解析部を備え、前記記録部は、前記解析部の解析結果を前記補助記憶装置に記録することが好ましい。
【０００９】
また、本発明においては、前記解析部は、前記リングバッファが記憶するログデータのうち前記トリガ受信部が受信したトリガが示す障害に関連するログデータを抽出し、前記記録部は、前記解析部が抽出したログデータを前記補助記憶装置に記録することが好ましい。
【００１０】
また、本発明においては、前記記録部は、前記解析部による解析が失敗した場合に、前記リングバッファが記憶する全てのログデータを前記補助記憶装置に記録することが好ましい。
【００１１】
また、本発明においては、前記記録部は、前記トリガ受信部がトリガを受信したときに、前記リングバッファが記憶する全てのログデータを前記補助記憶装置に記録することが好ましい。
【００１２】
また、本発明においては、前記リングバッファの領域のうち読み取りが予定されているログデータが記録されている領域をブロッキングするブロック部を備え、前記一時記録部は、前記リングバッファのうちブロッキングされていない領域に前記ログデータを記録することが好ましい。
【００１３】
また、本発明は、対象システムのログデータを記録するロギング方法であって、対象システムからログデータを受信するステップと、受信したログデータを主記憶装置に構成されたリングバッファに遂次記録するステップと、前記対象システムに障害が発生したことを示すトリガを受信したときに、前記リングバッファが記憶するログデータに関連する情報を補助記憶装置に記録するステップとを有することを特徴とする。
【００１４】
また、本発明は、対象システムのログデータを記録するロギング装置を、対象システムからログデータを受信するログ受信部、前記ログ受信部が受信したログデータを主記憶装置に構成されたリングバッファに遂次記録する一時記録部、前記対象システムに障害が発生したことを示すトリガを受信するトリガ受信部、前記トリガ受信部がトリガを受信したときに、前記リングバッファが記憶するログデータに関連する情報を補助記憶装置に記録する記録部として機能させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、記録部は、トリガを受信したときに、リングバッファが記憶するログデータに関連する情報を補助記憶装置に記録する。リングバッファには、そのデータ構造により、トリガを受信した時刻の直近に出力された所定数のログデータが記録されている。そのため、記録部は、障害発生の直近に出力されたログデータに関連する情報のみを、補助記憶装置に記録する。これにより、ロギング装置は、障害に関連するログデータをもれなく効率的に蓄積することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態によるロギング装置の構成を示す概略ブロック図である。
【図２】本発明の一実施形態によるロギング装置によるログ収集動作を示すフローチャートである。
【図３】本発明の一実施形態によるロギング装置によるログ解析動作を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
図１は、本発明の一実施形態によるロギング装置１００の構成を示す概略ブロック図である。
ロギング装置１００は、障害の解析対象たるコンピュータシステムである対象システム２００（例えば、サーバシステム）から受信したログデータを蓄積する装置であって、ＣＰＵ１１０、主記憶装置１２０、補助記憶装置１３０を備える。
【００１８】
ロギング装置１００のＣＰＵ１１０は、所定のロギングプログラムを実行することで、ログ受信部１１１、一時記録部１１２、トリガ受信部１１３、解析部１１４、記録部１１５、ブロック部１１６を備える。なお、このとき主記憶装置１２０にはリングバッファ１２１が構成される。リングバッファ１２１とは、情報を記録する毎に書き込みインデックスをインクリメントし、書き込みインデックス位置がリングバッファ１２１の領域の末尾に達したときに、書き込みインデックス位置をリングバッファ１２１の領域の先頭に移動させるデータ構造である。つまり、リングバッファ１２１は、その容量が一杯になったときに、新たに記録すべき情報を最も古い情報が記録された領域に上書きする。
なお、本実施形態においてリングバッファ１２１には、障害の解析に用いるのに充分な量のログデータを記録させるため、障害の解析に必要な量のログデータを蓄積できる領域（例えば、５１２ギガバイト）を確保しておく必要がある。
【００１９】
ログ受信部１１１は、対象システム２００から出力されたログデータを受信する。
一時記録部１１２は、ログ受信部１１１が受信した全てのログデータを遂次リングバッファ１２１に記録する。
トリガ受信部１１３は、対象システム２００を監視するモニタ３００またはログ受信部１１１から、対象システム２００に障害が発生したことを示すトリガを受信する。なお、モニタ３００は、自動的に対象システム２００の障害の発生を検知するものであっても良いし、対象システム２００の利用者の入力によってトリガを送信するものであっても良い。
解析部１１４は、トリガ受信部１１３がトリガを受信した際に、リングバッファ１２１が記憶するログデータの解析を行う。なお、解析部１１４は、管理者などから解析プログラムの入力を受け付け、当該解析プログラムを実行することで、ログデータの解析を行う。
記録部１１５は、解析部１１４の解析結果またはリングバッファ１２１が記憶するログデータを補助記憶装置１３０に記録する。
ブロック部１１６は、解析部１１４が解析しているログデータ、または記録部１１５が補助記憶装置１３０に記録しているログデータが記憶されているリングバッファ１２１の領域をブロッキングする。
【００２０】
次に、ロギング装置１００の動作について説明する。
図２は、本発明の一実施形態によるロギング装置１００によるログ収集動作を示すフローチャートである。
ロギング装置１００のログ受信部１１１は、対象システム２００から送信されるログデータを遂次受信する（ステップＳ１）。このとき、ログ受信部１１１は、受信したログデータの重要度が所定の重要度（例えば、ｅｒｒｏｒレベル）以上であるか否かを判定する（ステップＳ２）。
【００２１】
ログ受信部１１１は、受信したログデータの重要度が所定の重要度以上であると判定した場合（ステップＳ２：ＹＥＳ）、トリガ受信部１１３に対してトリガを出力する（ステップＳ３）。重要度が高いログデータは、障害の発生を通知するものである可能性が高いため、ここでトリガを出力することで、ロギング装置１００は、当該障害の解析を行うことができる。
【００２２】
ログ受信部１１１がログデータの重要度が所定の重要度未満であると判定し（ステップＳ２：ＮＯ）、またはトリガを出力すると、一時記録部１１２は、主記憶装置１２０に構成されたリングバッファ１２１のうち、書き込みインデックスが設定されている位置がブロッキングされているか否かを判定する（ステップＳ４）。一時記録部１１２は、リングバッファ１２１の書き込み位置がブロッキングされていると判定した場合（ステップＳ４：ＹＥＳ）、リングバッファ１２１への書き込みを行わずに処理を終了し、次のログデータの受信を待機する。他方、一時記録部１１２は、リングバッファ１２１の書き込み位置がブロッキングされていないと判定した場合（ステップＳ４：ＮＯ）、リングバッファ１２１へログデータを書き込み（ステップＳ５）、リングバッファ１２１の書き込みインデックスをインクリメントする（ステップＳ６）。
【００２３】
これにより、ロギング装置１００のリングバッファ１２１には、常に、対象システム２００が出力したログデータのうち直近に出力されたものが記録される。
【００２４】
図３は、本発明の一実施形態によるロギング装置１００によるログ解析動作を示すフローチャートである。
ロギング装置１００のトリガ受信部１１３が、モニタ３００またはログ受信部１１１からトリガを受信すると（ステップＳ１１）、解析部１１４は、リングバッファ１２１が記憶するログデータの解析を行う（ステップＳ１２）。解析部１１４による解析の具体例としては、例えば、組み込まれたロジックに従って、トリガ受信部１１３が受信したトリガが示す障害に関連するログデータをリングバッファ１２１から抽出することが挙げられる。障害に関連するログデータとは、例えば、あるセグメントにおいて障害が発生した場合、当該セグメントについてのログデータや、障害が発生したプログラムに依存関係がある場合、当該プログラムと依存関係にある他のプログラムのログデータなどが挙げられる。
【００２５】
このときブロック部１１６は、リングバッファ１２１のうち解析部１１４の解析対象となっているログデータが記録されている領域をブロッキングする（ステップＳ１３）。これにより、解析中のログデータが一時記録部１１２によって上書きされてしまうことを防止することができる。
【００２６】
次に、解析部１１４は、ログデータの解析が成功したか否かを判定する（ステップＳ１４）。
解析部１１４が、ログデータの解析に成功したと判定した場合（ステップＳ１４：ＹＥＳ）、ブロック部１１６は、リングバッファ１２１のブロッキングを解除する（ステップＳ１５）。また、記録部１１５は、解析部１１４の解析結果を、補助記憶装置１３０に記録する（ステップＳ１６）。つまり、解析部１１４が障害に関連するログデータを抽出する解析を行った場合、記録部１１５は、解析部１１４が抽出したログデータを補助記憶装置１３０に記録する。
【００２７】
他方、解析部１１４が、ログデータの解析に失敗したと判定した場合（ステップＳ１４：ＮＯ）、記録部１１５は、リングバッファ１２１が記憶する全てのログデータを補助記憶装置１３０に記録する（ステップＳ１７）。このとき、ブロック部１１６は、ログデータ毎に、補助記憶装置１３０への記録が完了し次第、当該ログデータが記録されているリングバッファ１２１の領域のブロッキングを解除していく（ステップＳ１８）。これにより、未記録のログデータが一時記録部１１２によって上書きされてしまうことを防止することができる。
【００２８】
このように、本実施形態によれば、ロギング装置１００は、対象システム２００のログデータを、リングバッファ１２１に遂次記録し、対象システム２００に障害が発生したときに、リングバッファ１２１が記憶するログデータに関連する情報を補助記憶装置１３０に記録する。これにより、補助記憶装置１３０には、障害が発生する直前の対象システム２００の挙動を示すログデータが記録される。一般的に、障害の解析には、障害が発生する直前の挙動を解析することが好ましいため、本発明によれば、障害に関連するログデータをもれなく効率的に蓄積することができる。また、主記憶装置１２０は、補助記憶装置１３０と比較して情報の書き込みに要する時間が短いことが知られている。そのため、本実施形態のようにログデータを主記憶装置１２０に記録しておくことで、オーバーヘッドを気にすることなく、対象システム２００が出力するログデータを蓄積することができる。
【００２９】
また、本実施形態によれば、ロギング装置１００は、対象システム２００に障害が発生したときに、リングバッファ１２１が記憶するログデータに関連する情報を解析し、解析に成功した場合、当該解析結果を補助記憶装置１３０に記録する。これにより、ロギング装置１００は、補助記憶装置１３０に記録するデータ量を小さくすることができる。特に、本実施形態ではロギング装置１００による解析の一例として、トリガが示す障害に関連するログデータを抽出する手法を挙げた。本手法によれば、補助記憶装置１３０に蓄積されたログデータを用いて後に改めて解析をする際に用いられることが予測されるログデータのみを、補助記憶装置１３０に記録することができる。
【００３０】
また、本実施形態によれば、ロギング装置１００は、解析に失敗した場合、リングバッファ１２１が記憶する全てのログデータを補助記憶装置１３０に記録する。これにより、後の障害解析に用いることができるログデータをもれなく補助記憶装置１３０に記録することができる。
【００３１】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。
例えば、本実施形態では、解析部１１４がリングバッファ１２１に蓄積されたログデータの解析に失敗した場合に、記録部１１５が全てのログデータを補助記憶装置１３０に記録する場合について説明したが、これに限られない。例えば、解析部１１４による解析を行わず、または解析結果の如何に関わらず、記録部１１５がトリガ受信時に全てのログデータを補助記憶装置１３０に記録するようにしても良い。
【００３２】
また、本実施形態では、ブロック部１１６が、解析前のログデータ及び記録前のログデータが記憶されたリングバッファ１２１の領域をブロッキングすることで、解析前のログデータ及び記録前のログデータの上書きを防止する場合について説明したが、これに限られない。例えば、トリガ受信部１１３がトリガを受信したときに、リングバッファ１２１が記憶する全てのログデータを、別のバッファにコピーし、解析部１１４及び記録部１１５が、当該コピーしたログデータの解析・記録を行うことで、解析前のログデータ及び記録前のログデータの上書きを防止するようにしても良い。その他に、主記憶装置１２０にリングバッファ１２１を２つ構成しておき、トリガ受信部１１３がトリガを受信する度に、一時記録部１１２の記録対象となるリングバッファ１２１と解析部１１４及び記録部１１５による解析・記録の対象となるリングバッファ１２１を切り替えるようにしても良い。
【００３３】
また、本実施形態では、ロギング装置１００が１台で構成される場合について説明したが、これに限られず、複数のロギング装置１００によって分散構成されていても良い。また、リングバッファ１２１を分散共有メモリとして構成し、解析部１１４及び記録部１１５が複数の装置に構成されたリングバッファ１２１内のログデータに対して収集・記録処理を行うようにしても良い。
【００３４】
なお、本実施形態におけるログデータの収集対象たる対象システム２００は、サーバシステムなどの大規模システムに限られず、例えばＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やスマートフォンなどの端末装置であっても良い。この場合、ロギング装置１００、対象システム２００及びモニタ３００を同一のコンピュータ上で動作させるようにしても良い。
【００３５】
上述のロギング装置１００の各処理部の動作は、ロギングプログラムとしてコンピュータ読み取り可能な記録媒体に記憶されており、このロギングプログラムをＣＰＵ１１０が読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００３６】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００３７】
１００…ロギング装置  １１０…ＣＰＵ  １１１…ログ受信部  １１２…一時記録部  １１３…トリガ受信部  １１４…解析部  １１５…記録部  １１６…ブロック部  １２０…主記憶装置  １２１…リングバッファ  １３０…補助記憶装置  ２００…対象システム  ３００…モニタ
【図１】
2013206147.tif 000003
【図２】
2013206147.tif 000004
【図３】
2013206147.tif 000005