(57)【要約】【課題】ネットワークで接続されたノードからなるネットワークシステムにおけるイベントの発生順序の判定は、予期せぬタイミングで修正されるＯＳの時刻に依存したり、イベントが発生するたびにネットワーク上のタイムサーバにアクセスするなどの問題があった。本発明では、外部の時刻に依存せず、ノードが内蔵する、精度の高いカウンタを用いて各ノードで生成されるログの発生順序を判定することを目的とする。【解決手段】ノード１０でイベントが発生すると、ログレコード生成手段１４はログレコードを新規作成し、カウンタ１２の値を含める。また定期的に、基準カウンタであるノード２０のカウンタ２２の値を参照しログレコードに含める。カウンタ２２の値を参照しない場合は、カウンタ２２の値を参照するログレコードのカウンタ１２の値とカウンタ２２の値から、カウンタ１２の値の比率を使って、カウンタ２２の値を計算でもとめる。【選択図】  図１
2004187040.tif 000002
【特許請求の範囲】
【請求項１】
イベント検知手段、タイムカウンタ、およびイベント情報とタイムカウンタの値を含むログ情報の生成手段を有するノードがネットワークで接続されて成るネットワークシステムにおけるイベント発生順序判定方法であって、
任意のノード１台のタイムカウンタを前記ネットワークシステムにおける基準タイムカウンタとし、
各ノードにおいて、前記ネットワークシステムの基準タイムカウンタから取得した値と、各ノードのタイムカウンタの値とを比較することにより、前記ネットワークシステムで発生するイベントの発生順序を判定する
ことを特徴とするネットワークシステムのイベント発生順序判定方法。
【請求項２】
複数のノードがネットワークで接続されたネットワークシステムにおいて、各ノードで発生するイベントの発生順序を判定するイベント発生順序判定方法であって、
各ノードにおいて、イベントが発生したとき、該イベントに関する情報および自ノードが備えているタイムカウンタのカウンタ値を含むログレコードを生成し記憶するステップと、
任意のノード１台のタイムカウンタを前記ネットワークシステムにおける基準タイムカウンタとし、各ノードにおいて、前記イベントの発生に応じて生成するログレコードの所定数毎または所定時間毎に、前記基準タイムカウンタ値を取得して当該ログレコードに含めるステップと、
前記基準タイムカウンタ値を含むログレコードのデータと、各ノードで取得しログレコードに記憶したタイムカウンタ値とを用いて、各ノードのタイムカウンタ値に対応する基準カウンタ値を求め、求めた基準カウンタ値から前記ネットワークシステムで発生した各イベントの発生順序を判定するステップと
を備えたことを特徴とするネットワークシステムのイベント発生順序判定方法。
【請求項３】
請求項１または２に記載のネットワークシステムのイベント発生順序判定方法において、
ノード間の通信を行なうアプリケーションプログラム毎に、前記アプリケーションプログラムが動作するノードの集合の中で何れか１台のノードが有するタイムカウンタを前記アプリケーションプログラムの基準タイムカウンタとし、前記アプリケーションプログラムが動作する各ノードで発生するイベントの発生順序を判定することを特徴とするネットワークシステムのイベント発生順序判定方法。
【請求項４】
請求項１から３の何れか１つに記載のネットワークシステムのイベント発生順序判定方法において、
前記各ノードで生成するログレコードの所定数毎または所定時間毎に、時刻サーバから取得した時刻データを含め、前記ネットワークシステムで発生した各イベントの発生時刻を一定の間隔で把握することを特徴とするネットワークシステム。
【請求項５】
複数のノードがネットワークで接続されたネットワークシステムにおいて、
各ノードにおいて、イベントが発生したとき、該イベントに関する情報および自ノードが備えているタイムカウンタのカウンタ値を含むログレコードを生成し記憶する手段と、
任意のノード１台のタイムカウンタを前記ネットワークシステムにおける基準タイムカウンタとし、各ノードにおいて、前記イベントの発生に応じて生成するログレコードの所定数毎または所定時間毎に、前記基準タイムカウンタ値を取得して当該ログレコードに含める手段と、
前記基準タイムカウンタ値を含むログレコードのデータと、各ノードで取得しログレコードに記憶したタイムカウンタ値とを用いて、各ノードのタイムカウンタ値に対応する基準カウンタ値を求め、求めた基準カウンタ値から前記ネットワークシステムで発生した各イベントの発生順序を判定する手段と
を備えたことを特徴とするネットワークシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上に複数のノードが接続されてなるネットワークシステムにおいて、各ノードで発生するイベントの発生順序を正確に把握するイベント発生順序判定方法およびシステムに関する。
【０００２】
【従来の技術】
分散アプリケーションでは、ネットワーク上の複数のノードに処理を分散させ、各ノードが共働して動作する。したがって、そのデバッグでは、ネットワーク上の各ノードで発生するイベントのトレースが重要である。イベントトレースでは、各ノードで生成されるログ情報を時系列に解析するが、従来は、ログ情報として、各ノードのＯＳが提供する時刻やネットワーク上に存在するタイムサーバが提供する時刻を使っていた。
【０００３】
特許文献１の「ネットワーク時刻同期装置」には、ネットワーク上の任意の１台のコンピュータに時刻情報を管理させ、他のコンピュータにおいて時刻情報が必要な際には、その都度、要求を通知して時刻情報を得る方法が示されている。
【０００４】
さらに特許文献２の「ネットワークシステム及びその時刻同期方法」には、ネットワーク上の１台のノードにネットワークにおける基準時刻を管理させ、他のノードでイベントが発生したとき、ネットワークにおける基準時刻を求めるとともに、その基準時刻を取得するのに所要した時間を取得し、その時間を前記基準時刻から差し引いて求めた時刻を当該イベント発生時刻として使用する方法が示されている。
【０００５】
【特許文献１】特開平３−１４００３７号公報
【０００６】
【特許文献２】特開２０００−２４２６１８号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、上記従来技術は、以下に示す問題点を含んでいる。
【０００８】
特許文献１に記載の技術によれば、時刻情報を管理するコンピュータから時刻情報を取得しているが、コンピュータの提供する時刻は時とともに誤差を生じ、予期せぬタイミングで修正される性格のものである。したがって、時刻情報を管理するコンピュータから取得する時刻情報は信頼できるとは限らないという問題を含む。
【０００９】
特許文献２に記載の技術によれば、イベントが発生する毎に、ネットワーク上の基準タイマーから時刻を取得している。したがって、ネットワーク上の基準タイマーに狂いが生じた場合、ログ情報に含める時刻が狂ってしまうという問題がある。
【００１０】
本発明は、電圧などの要因に左右されるために誤差が生じる可能性の高いコンピュータが管理する時刻の代わりに、水晶の振動を利用した水晶発振器の出力による精度が高いコンピュータ内蔵のタイムカウンタの値を使ってログ情報の発生順序を判断することにより、高精度にイベントの発生順序を判定する技術を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明は、上記目的を達成するため、ネットワーク上で接続された各ノードで生成するログ情報に、各ノードのＣＰＵが提供するタイムカウンタの値を含め、また、定期的に各ノードのタイムカウンタの値と基準ノードのタイムカウンタ（基準タイムカウンタ）の値を比較することで、ログ情報の発生時刻と順序を計算により決定することを特徴とする。
【００１２】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。図１から図４に、本発明によるネットワーク上のログ情報の発生順序判定方法の実施の形態を示す。
【００１３】
図１は、本発明の実施形態であるネットワークシステムの構成を示す。まず、このネットワークシステムにおいて、任意のノード１台のタイムカウンタをネットワークにおける基準タイムカウンタとする場合について説明する。ここでは、ノード２０のタイムカウンタ２２を基準タイムカウンタとして説明する。
【００１４】
図１において、ネットワークシステム１００は、ネットワーク９０で接続された複数のノードで構成されている。ノード１０は、該ノード１０で発生するイベントを検知するイベント検知手段１１と、該ノード１０に内蔵される水晶発振器の出力に基づいてインクリメントされるタイムカウンタ１２と、他ノードのタイムカウンタの値を参照する手段である他ノードカウンタ参照手段１３と、ログレコードを組み立てるログレコード生成手段１４と、ログレコードを格納するログレコードファイル１５とを備える。
【００１５】
ノード１０で発生したイベントは、イベント検知手段１１により検知され、イベントに固有な情報がログレコード生成手段１４に通知される。ログレコード生成手段１４は、新規のログレコードを生成し、イベントに固有な情報をそのログレコードに保持する。また、カウンタ１２の値を参照し、前記ログレコードに保持する。さらに、ノード１０における最初のログレコード、およびあらかじめ決められた数のログレコードが発生する毎（例えば５０個毎）に、ログレコード生成手段１４は、他ノードカウンタ参照手段１３を通してノード２０のタイムカウンタ２１（基準タイムカウンタ）の値を取得し、前記ログレコードに含める。この際、他ノードカウンタ参照手段１３は、公知の技術を用いてノード２０との通信にかかる時間を補正する。作成されたログレコードはログレコードファイル２５へ追加挿入される。
【００１６】
ノード２０以下の他のノードは、ノード１０と同じ構成を備える。ノード２０以外のノードは、ノード１０と同様、ノードにおける最初のログレコード、およびあらかじめ決められた数のログレコードが発生する毎に、そのノード内の他ノードカウンタ参照手段を通してノード２０のタイマの値を取得し、ログレコードに含める。
【００１７】
図２は、本実施形態で用いるログレコードのデータ形式とログレコードファイルの形式を示す。図２（ａ）に示すように、ログレコードは、各ノード（自ノード）のカウンタの値２０１、基準カウンタ値２０２、時刻の値２０３、および各ノードで発生するイベント固有の情報２０４を備える。基準カウンタ値２０２は、当該ノードにおける最初のログレコード、およびあらかじめ決められた数のログレコードが発生する毎に、ネットワークにおいて基準タイムカウンタと定義されているノードのタイムカウンタから取得して格納する。時刻の値２０３も、同様にして、所定数のログレコードが発生する毎に決められたノード（時刻サーバ）の時刻を取得して格納する。時刻サーバは、基準タイムカウンタを持つノードである必要はなく、正確な時刻のデータを供給できるサーバであればどのようなものでもよい。
【００１８】
図２（ｂ）は、各ノードで発生したログレコードを格納したログレコードファイルの内容例を示す。各ノードで発生したログレコードが、２１１，２１２，２１３，…のように発生順にログレコードファイルに格納されている。最初のログレコード２１１、および所定数の後のログレコード２１５には、基準カウンタ値２０２が格納されている。それ以外のログレコード２１２，２１３，２１４，２１６の基準カウンタ値２０２の欄は空白である。時刻２０３も同様である。基準カウンタ値２０２のデータを持つログレコード２１１，２１５を基準ログレコードと呼ぶ。
【００１９】
なお、本実施形態では、基準カウンタ値２０２を格納するログレコードのときに、時刻２０３を取得して格納するようにしているが、それには限らない。時刻２０３は、基準カウンタ２０２とは全く独立に、適当な位置で時刻サーバから取得して格納するようにしてもよい。
【００２０】
図３は、本実施形態における、各ノードで発生する最初とＣ個目のログレコード（基準ログレコード）を元に、その他のログレコードの発生順序を計算で決定する方法を説明するための図である。左から右に向かう矢印は、時間の経過を示す。ノード１０の矢印中に記載された太い縦線は、そのタイミングでイベントが発生したことを示す。ノード１０において、Ｔ１は最初に発生したイベントのタイミング、Ｔ３はＣ個目に発生したイベントのタイミングを示す。ここでは、最初のイベントのログレコード、およびＣ個のログレコードが発生する毎に、ノード２０のタイムカウンタ２１（基準タイムカウンタ）の値を取得してログレコードに含める。したがって、タイミングＴ１とＴ３で生成されるログレコード（基準ログレコード）には、ノード１０のタイムカウンタの値およびノード２０のタイムカウンタの値が含まれている。ノード１０において、タイミングＴ２で生成されるログレコードには、ノード１０のタイムカウンタの値は含まれているが、ノード２０のタイムカウンタの値は含まれていない。
【００２１】
ここで、タイミングＴ１におけるノード１０のタイムカウンタの値をＴＣ（１０，Ｔ１）、タイミングＴ１におけるノード２０のタイムカウンタの値（基準カウンタ値）をＴＣ（２０，Ｔ１）、タイミングＴ２におけるノード１０のタイムカウンタの値をＴＣ（１０，Ｔ２）、タイミングＴ２におけるノード２０のタイムカウンタの値（基準カウンタ値）をＴＣ（２０，Ｔ２）、タイミングＴ３におけるノード１０のタイムカウンタの値をＴＣ（１０，Ｔ３）、タイミングＴ３におけるノード２０のタイムカウンタの値（基準カウンタ値）をＴＣ（２０，Ｔ３）で示すと、数１の関係が成り立つ。
【００２２】
【数１】
2004187040.tif 000003
【００２３】
したがって、タイミングＴ２におけるノード１０の基準カウンタ値ＴＣ（２０，Ｔ２）は、数２により求めることができる。
【００２４】
【数２】
2004187040.tif 000004
【００２５】
図４（ａ）は、本実施形態において各ノードでイベントが発生した際のログレコード作成アルゴリズムを示す。イベントが発生すると、ステップ４００で、新規ログレコードを作成し、自ノードのカウンタ値とイベント固有情報を取得し、当該ログレコードに保持する。次に、ステップ４０１で、そのログレコードが当該ノードにおいて最初のログレコードか、またはＣ×ｎ個目（Ｃは定数、ｎは正の整数）のログレコードか、またはそれ以外かを判定する。最初またはＣ×ｎ個目のログレコード（基準ログレコード）である場合、ステップ４０３で基準カウンタ値を取得し当該ログレコードに保持して、ステップ４０３に進む。最初またはＣ×ｎ個目のログレコードのどちらでもない場合は、そのままステップ４０３に進む。ステップ４０３では、作成したログレコードをログレコードファイルに追加挿入する。
【００２６】
以上のようにして、各ノードでログレコードファイルを作成した後、例えばデバッグ時には、必要なすべてのノードのログレコードファイルを取得し、マージしてイベントの発生順序でソートする必要がある。その際、ログレコードファイル内の基準カウンタ値の欄が空白のレコードについては、上記の数２により基準カウンタ値を求めて格納する。
【００２７】
図４（ｂ）は、そのときの基準カウンタ値を求める処理を示す。ステップ４１０で、いま基準カウンタ値を求めようとしているログレコードの前後で基準カウンタ値が記載されている基準ログレコードを見つけ、それらの基準ログレコードの情報と、いま基準カウンタ値を求めようとしているログレコードのカウンタ値から、数２に示す計算手段を用いて基準カウンタ値を求め、当該ログレコードの基準カウンタ値として格納する。
【００２８】
例えば、図２（ｂ）のログレコード２１３の基準カウンタ値を求めるのであれば、その前後で基準カウンタ値が記載されている基準ログレコード２１１と２１５を見つけ、ログレコード２１１を図３のタイミングＴ１に、ログレコード２１５を図３のタイミングＴ３に、ログレコード２１３を図３のタイミングＴ２に、それぞれ対応させて、上記数２で求めればよい。このようにして、各ノードで作成されたログレコードファイル中の全ログレコードの基準カウンタ値を計算して格納し、全ログレコードファイルのログレコードをマージし、ログレコードの基準カウンタ値にしたがってソートする。これにより、ネットワーク１００におけるイベントの発生順序が正確に判定できる。
【００２９】
時刻についても同様である。図２で説明したように、ログレコードの並びの適当な位置に時刻２０３（時刻サーバから取得した正確な時刻）を持つログレコードがあるので、上記で求めた基準カウンタ値と時刻とを対応させて、時刻２０３が空欄のところは補間計算により求めればよい。
【００３０】
上記実施の形態では、イベントをログレコードに記録していくときにはＣ個毎に基準カウンタ値を記録し、後でログレコードをマージするときに空欄の基準カウンタ値を計算して格納している。その変形例として、イベントをログレコードに記録していくとき、すぐに基準カウンタ値の計算と格納を行なってもよい。そのためには、図４（ａ）のステップ４０１でＣ×ｎ個目のログレコードでない場合に、図４（ｂ）のステップ４１０の処理を行なえばよい。ただし、上記実施形態の方法、すなわち後で基準カウンタ値を計算する方法では、計算対象の空欄の基準カウンタ値のログレコード（対象ログレコードと呼ぶ）の前後に、基準カウンタ値を持つ基準ログレコードがあることが保証されているので、それらの基準カウンタ値から数２の式（内挿補間：Ｉｎｔｅｒｐｏｌａｔｉｏｎ）で求めることができた。本変形例では、対象ログレコード以前には基準ログレコードがあるが、対象ログレコードがいまファイルに書き込もうとしている最新のログレコードであって、それ以後にはログレコードがないので、内挿補間では計算できない。そこで、対象ログレコード以前の基準ログレコードを複数取得し、それらの基準カウンタ値の値から外挿補間（Ｅｘｔｒａｐｏｌａｔｉｏｎ）で対象ログレコードの基準カウンタ値を求めるようにする。
【００３１】
上記実施の形態では、所定数毎に基準カウンタ値を持つ基準ログレコードを生成したが、所定数毎でなくともよい。補間により中間の基準カウンタ値を求めることができればよいので、適当な位置に基準ログレコードを生成すればよい。例えば、所定時間毎に基準ログレコードを生成する方法でもよい。時刻データについても同様である。
【００３２】
上記実施の形態において、基準タイムカウンタを持つノード（図１のノード２０）はどのように決めてもよい。ネットワークシステムにおいて、ノード間の通信を行なうアプリケーションプログラムが複数動作する場合は、アプリケーションプログラム毎に当該アプリケーションプログラムが動作するノードの集合の中でどれか１台のノードを基準タイムカウンタのノードとし、当該アプリケーションプログラムが動作する各ノードではその基準カウンタの値を取得してログレコードに含めるようにすればよい。
【００３３】
【発明の効果】
以上説明したように、本発明によれば、ノードに内蔵され精度の高いカウンタの値を用いることで、ネットワークで接続された複数ノードで発生するイベントの発生順序を正確に判定することができる。また、従来技術が含む問題点である、予期せぬタイミングで修正される可能性のあるＯＳの時刻に依存している点や、狂う可能性のある基準タイマーの時刻を取得してログ情報に含めている点などを解決することができる。
【図面の簡単な説明】
【図１】本発明の実施形態のネットワークシステムの全体構成を示すブロック図である。
【図２】ログレコードの形式とログレコードファイルの形式を示すブロック図である。
【図３】ログレコードの発生順序を計算で決定する方法を説明するための図である。
【図４】各ノードでイベントが発生したときのログレコード作成アルゴリズムを示すフローチャートである。
【符号の説明】
１０…ノード、２０…ノード、９０…ネットワーク。
【図１】
2004187040.tif 000005
【図２】
2004187040.tif 000006
【図３】
2004187040.tif 000007
【図４】
2004187040.tif 000008