(57)【要約】【課題】時刻補正を行っている複数の装置から出力されるログのタイムスタンプにズレがあることを前提に、ログ解析時に整合性をもった解析をする。【解決手段】複数のログを生成する複数の計算機からログを受信して解析を行うログ解析装置において、複数の計算機から出力される複数のログに対して、時刻補正ログと、ログ間の整合性ルールによって、各ログに記録されているタイムスタンプを補正する。【選択図】図２
2008269084.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機からタイムスタンプを含むログをプロセッサによって実行されるログ解析部が受信し、前記ログ解析部を実行するプロセッサが前記タイムスタンプを補正して前記ログの解析を行うログ解析方法において、
前記計算機が、時刻を補正したときに時刻の補正量とタイムスタンプを含む第１のログを生成する手順と、
前記計算機が、処理または操作に関連するログにタイムスタンプを含めて第２のログとして生成する手順と、
前記計算機が、前記第１のログと第２のログを送信する手順と、
前記ログ解析部が、前記第１のログと第２のログを受信する手順と、
前記ログ解析部が、前記第１のログを時刻補正履歴格納部へ格納する手順と、
前記ログ解析部が、前記第１のログに基づいて第１の時刻補正量を演算する手順と、
前記ログ解析部が、前記第１の時刻補正量と第２の時刻補正量に基づいて、前記第２のログのタイムスタンプを補正する手順と、
前記ログ解析部が、前記タイムスタンプを補正した複数の第２のログについて、第２のログ間の時系列的な順序関係が予め設定した整合性ルールを満たすか否かを判定する手順と、
前記第２のログ間の時系列的な順序関係が前記整合性ルールを満たさない場合には、前記ログ解析部が、これら第２のログのタイムスタンプの差分から第２の時刻補正量を求める手順と、
前記整合性ルールを満たさない前記第２のログのタイムスタンプを、前記第１の時刻補正量と第２の時刻補正量に基づいて再度補正する手順と、
前記タイムスタンプを再度補正した第２のログについて再度前記整合性ルールを満たすか否かを判定する手順と、
前記整合性ルールを満たした第２のログを保存する手順と、
前記保存した第２のログを解析する手順と、
を含むことを特徴とするログ解析方法。
【請求項２】
前記第１の時刻補正量を演算する手順は、
前記受信した第１のログを生成した計算機の識別子ごとに前記時刻補正履歴格納部に格納した複数の第１のログに基づいて第１の時刻補正量を演算することを特徴とする請求項１に記載のログ解析方法。
【請求項３】
前記第２の時刻補正量を求める手順は、
前記整合性ルールを満たさない前記第２のログのタイムスタンプが前記整合性ルールからずれた量を不整合量として求める手順と、
前記２のログが前記整合性ルールを満たさないと判定された時刻と、前記第２のログの名称と、前記不整合量とを不整合履歴格納部に格納する手順と、
前記格納された少なくともひとつの不整合量から、前記整合性ルールを満たさないと判定された第２のログのタイムスタンプが不整合を解消する値を第２の時刻補正量として演算する手順と、
を含むことを特徴とする請求項１に記載のログ解析方法。
【請求項４】
前記第１の時刻補正量を演算する手順は、
前記受信した第１のログを生成した計算機の識別子ごとに、前記蓄積した複数の第１のログに基づいて第１の時刻補正量を演算する手順と、
前記第１のログのタイムスタンプが示す時刻と前記第１の時刻補正量を第１の補正量の履歴としてタイムスタンプ補正履歴に格納する手順と、を含み、
前記第２の時刻補正量を求める手順は、
前記整合性ルールを満たさない前記第２のログのタイムスタンプが前記整合性ルールからずれた量を不整合量として求める手順と、
前記不整合量に基づいて、前記整合性ルールを満たさないと判定された第２のログのタイムスタンプが不整合を解消する値を第２の時刻補正量として演算する手順と、
前記２のログが前記整合性ルールを満たさないと判定された時刻と、前記第２のログの名称と、前記第２の時刻補正量とを前記タイムスタンプ補正履歴に格納する手順と、を含み、
前記第２のログのタイムスタンプを補正する手順は、
前記第２のログのタイムスタンプが示す時刻を越えない範囲で前記タイムスタンプ補正履歴の時刻を検索し、前記第１の時刻補正量と第２の時刻補正量を取得する手順と、
前記取得した第１の時刻補正量と第２の時刻補正量に基づいて当該第２のログのタイムスタンプを、直前の第２ログのタイムスタンプよりも後の時刻となるように補正する手順と、
を含むことを特徴とする請求項１に記載のログ解析方法。
【請求項５】
前記複数の計算機の第１のログのうち、第１の時刻補正量を演算するための第１のログを設定する手順と、
前記複数の計算機の第２のログのうち、タイムスタンプの補正を行う第２のログを設定する手順と、
前記整合性ルールを設定する手順と、
をさらに含むことを特徴とする請求項１に記載のログ解析方法。
【請求項６】
前記第２のログ間の時系列的な順序関係が予め設定した整合性ルールを満たさないときには、前記第２のログを生成した計算機に対して、時刻を基準時刻へ補正する指令を送信することを特徴とする請求項１に記載のログ解析方法。
【請求項７】
前記複数の計算機は、それぞれ仮想計算機で構成されたことを特徴とする請求項１に記載のログ解析方法。
【請求項８】
タイムスタンプを含むログを生成し、送信する複数の計算機と、
メモリ及びプロセッサを備えて前記複数の計算機からログを受信し、前記ログのタイムスタンプを補正して前記ログの解析を行うログ解析装置において、
前記計算機から時刻を補正したときに時刻の補正量とタイムスタンプを含む第１のログと、処理または操作に関連するログにタイムスタンプを含む第２のログとを受信するログ受信部と、
前記第１のログに基づいて第１の時刻補正量を演算し、前記第１のログのタイムスタンプの時刻と当該第１の時刻補正量とをタイムスタンプ補正履歴格納部へ格納する第１時刻補正量設定部と、
前記複数の計算機からの複数の第２のログ間の時系列的な順序関係を予め設定した整合性ルールとして格納する整合性ルール格納部と、
前記第２のログ間の時系列的な順序関係が前記整合性ルールを満たさない場合には、これら第２のログのタイムスタンプの差分から第２の時刻補正量を演算し、前記第２のログのタイムスタンプの時刻と当該第２の時刻補正量とをタイムスタンプ補正履歴格納部へ格納する第２時刻補正量設定部と、
前記タイムスタンプ補正履歴格納部に格納された前記第１の時刻補正量と第２の時刻補正量に基づいて、前記第２のログのタイムスタンプを補正するタイムスタンプ補正部と、
前記タイムスタンプを補正した複数の第２のログの時系列的な順序関係が前記整合性ルールを満たすか否かを判定する整合性チェック部と、
前記整合性ルールを満たした第２のログを保存するログ保存部と、
前記保存した第２のログを解析するログ解析部と、を備え、
前記第２時刻補正量設定部は、
前記整合性チェック部の判定結果に基づいて前記第２の時刻補正量を演算し、
前記整合性チェック部は、
前記整合性ルールを満たさない第２のログを再度タイムスタンプ補正部へ送信することを特徴とするログ解析装置。
【請求項９】
第１時刻補正量設定部は、
前記受信した第１のログを生成した計算機の識別子ごとに時刻補正履歴格納部へ格納し、当該時刻補正履歴格納部に格納された複数の第１のログに基づいて第１の時刻補正量を演算することを特徴とする請求項８に記載のログ解析装置。
【請求項１０】
前記第２時刻補正量設定部は、
前記整合性ルールを満たさない前記第２のログのタイムスタンプが前記整合性ルールからずれた量を不整合量として求め、前記２のログが前記整合性ルールを満たさないと判定された時刻と、前記第２のログの名称と、前記不整合量とを不整合履歴格納部へ格納し、前記不整合履歴格納部に格納された少なくともひとつの不整合量から、前記整合性ルールを満たさないと判定された第２のログのタイムスタンプが不整合を解消する値を第２の時刻補正量として演算することを特徴とする請求項８に記載のログ解析装置。
【請求項１１】
第１時刻補正量設定部は、
前記受信した第１のログを生成した計算機の識別子ごとに時刻補正履歴格納部へ格納し、前記格納した複数の第１のログに基づいて第１の時刻補正量を演算し、前記第１のログのタイムスタンプが示す時刻と前記第１の時刻補正量を第１の補正量の履歴としてタイムスタンプ補正履歴に格納し、
前記第２時刻補正量設定部は、
前記整合性ルールを満たさない前記第２のログのタイムスタンプが前記整合性ルールからずれた量を不整合量として求め、前記不整合量に基づいて、前記整合性ルールを満たさないと判定された第２のログのタイムスタンプが不整合を解消する値を第２の時刻補正量として演算し、前記２のログが前記整合性ルールを満たさないと判定された時刻と、前記第２のログの名称と、前記第２の時刻補正量とを前記タイムスタンプ補正履歴に格納し、
前記タイムスタンプ補正部は、
前記第２のログのタイムスタンプが示す時刻を越えない範囲で前記タイムスタンプ補正履歴の時刻を検索して、前記第１の時刻補正量と第２の時刻補正量を取得し、
前記取得した第１の時刻補正量と第２の時刻補正量に基づいて当該第２のログのタイムスタンプを、直前の第２ログのタイムスタンプよりも後の時刻となるように補正する補正することを特徴とする請求項８に記載のログ解析装置。
【請求項１２】
前記複数の計算機の第１のログのうち、第１の時刻補正量を演算するための第１のログを設定する第１のインターフェースと、
前記複数の計算機の第２のログのうち、タイムスタンプの補正を行う第２のログを設定する第２のインターフェースと、
前記整合性ルールを設定する第３のインターフェースと、
をさらに有することを特徴とする請求項８に記載のログ解析装置。
【請求項１３】
前記第２のログ間の時系列的な順序関係が予め設定した整合性ルールを満たさないときには、前記第２のログを生成した計算機に対して、時刻を基準時刻へ補正する指令を送信する時刻補正指令部をさらに備えたことを特徴とする請求項８に記載のログ解析装置。
【請求項１４】
前記複数の計算機は、それぞれ仮想計算機で構成されたことを特徴とする請求項８に記載のログ解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のログを利用してシステム状態の監視や、問題の究明を行うログ解析方法または装置に関して、ログに記録されたイベントやモニタ値などの順序関係や相関関係を正しく把握し、システム状態や問題の原因を正しく判定するために、ログを出力した装置の時刻補正ログと、ログのタイムスタンプに関わるルールを利用して、ログに記録されたタイムスタンプを補正する方法または装置に関する。
【背景技術】
【０００２】
Ｗｅｂ３層システム（業務システム）のような複数の計算機からなるクラスタシステムを利用してサービスの提供が広く行われるようになり、このようなクラスタシステム上で行われる処理の進捗状況やシステムの稼動状況を正しく把握して、サービスを安定して提供し続ける必要性が増大している。しかし、このような複数の計算機からなるクラスタシステム上で行われる処理の進捗状況やシステムの稼動状況を把握するには、個々の計算機から出力されるログを個別に監視するだけではサービス全体やシステム全体としての状況を正しく把握できないため、各計算機から出力される複数のログをまとめて解析をする必要がある。
【０００３】
しかし、各計算機の時刻にはズレがあり、また各ログに記録されるタイムスタンプの記録タイミングにもズレがあるため、各ログのタイムスタンプをそのまま利用して解析を行うと正しい解析ができないことがある。例えばログ間での不整合により処理の順序関係が入れ替わる等の間違えが生じたり、例えばログ間のタイムスタンプのズレの傾向によりシステムの稼動状況の統計的な解析結果に真の稼動状況とは異なる傾向が現れる等の間違えが生じたりする。
【０００４】
各計算機の時刻のズレをなくし、ログにタイムスタンプを記録するタイミングを統一することが真の解決策であるが、計算機間で時刻のズレを完全になくすことは困難で、仮に時刻のズレを完全になくせても、システムのすべてのハードウェア及びソフトウェアのログを記録するタイミングを統一することは現実的には実現困難で、ログに記録されているタイムスタンプをそのまま利用して解析を行うと正しい解析ができない可能性がある。
【０００５】
これに対して、各計算機の時刻のズレを補正するＮＴＰ（Network Time Protocol）が広く利用されている。環境にもよるがＮＴＰを利用して各計算機の時刻のズレを数msec〜100msec程度に収めることができると言われている。しかし、例えば個々の処理の進捗状況を詳細に把握する必要がある場合などには、msec単位で正確に時刻の補正ができる方法が必要である。また、ＮＴＰによる時刻補正を大規模なシステムで頻度高く行うと、ネットワークに対する負荷が高くなる。環境によってはＮＴＰによる時刻補正を頻度高く行っても数十msec単位でのズレがなくならず、かえって頻繁な時刻補正による時刻の不連続性が問題になることもある。
【０００６】
これに対していくつかの従来技術が部分的な解決策を与えている。
【０００７】
特許文献１の「イベントトレースデータの時刻補正装置、時刻補正方法及び時刻補正プログラム」では、複数の計算機間で生じるイベントトレースデータの相対的な時刻ズレを、イベントの送受信関係から補正する方法を開示している。この従来技術では、イベントの送受信関係から複数ログ間の時刻のズレを補正する方法を開示しているが、時刻ズレの補正量を測定する期間中にＮＴＰのような時刻補正が行われ時刻ズレの量が不連続になった場合、正しく時刻ズレを補正することができなくなる。また、時刻ズレの補正量をすべての送受信イベントに対して測定するために、時刻補正を行うコストが高い。
【０００８】
特許文献２の「計算機システム、ログ収集方法、及びコンピュータプログラム」では、仮想計算機とホスト計算機の時刻差分を格納する時刻差分テーブルを用意し、各仮想計算機から取得したログのタイムスタンプを修正して取り出せる計算機システムを開示している。この従来技術では、各計算機の時刻変更時に計算機間の時刻差分を更新してタイムスタンプを修正する方法を開示しているが、タイムスタンプの補正量は、計算機間の時刻差分であり、ログの出力タイミングなどに起因するログのタイムスタンプの補正量を考慮していないので、ログ間の整合性が取れない可能性がある。また、時刻変更時以外のズレの補正は行われず、ズレが徐々に拡大するような場合には、タイムスタンプの補正量の誤差が徐々に拡大する。
【０００９】
特許文献３の「タイムスタンプ装置、時刻校正方法および時刻校正プログラム」では、電波時計とＮＴＰのような時刻発行サーバを併用してタイムスタンプ装置の時刻信頼度を向上させる方法を開示している。この従来技術の目的は悪意のある者による時刻改竄を防ぐことにある。この従来技術では、タイムスタンプの時刻そのものの信頼性を上げる方法を開示しているが、完全にタイムスタンプの時刻を統一できる方法ではなく、さらに特許文献２と同様に、ログの出力タイミングなどに起因するタイムスタンプの補正量を別途考慮する必要がある。
【００１０】
特許文献４の「時計同期方法および装置および記録媒体」では、複数の装置の時計について、それぞれの時刻差の測定結果を、以前の時刻差の統計的分布と比較し一定以上の相違がある場合に時刻補正を行う方法を開示している。この従来技術では、各装置の時刻補正を行うタイミングを決定する方法を開示しているが、ログ間の整合性を考慮した時刻補正については開示されていない。
【特許文献１】特開 ２００５−２３５０５４ 公報
【特許文献２】特開 ２００６−２８５８７５ 公報
【特許文献３】特開 ２００６−２３６２５１ 公報
【特許文献４】特開  平１１−２７２６９ 公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明が解決しようとする課題は、複数の装置から出力されるログのタイムスタンプにズレがあることを前提に、ログ解析時に整合性をもった解析を実現するために、ログのタイムスタンプを補正する方法若しくは装置を実現することである。
【００１２】
ログ解析時に整合性をもった解析を実現するには、ログのタイムスタンプそのものを正しく記録する方法も考えられる。つまり、各計算機の時刻のズレをなくし、ログにタイムスタンプを記録するタイミングを統一することができれば、タイムスタンプの補正を行う必要はない。
【００１３】
例えば、上述のＮＴＰ(Network Time Protocol)により各計算機の時刻のズレを縮小する方法が知られている。この方法によって各計算機の時刻のズレを数msec〜100msec程度に収めることができると言われている。しかしながら、例えば個々の処理の進捗状況を詳細に把握する必要がある場合などには、msec単位で時刻の補正ができる方法が必要である。また、ＮＴＰによる時刻補正を大規模なシステムで頻度高く行うとネットワークに対する負荷が高くなる。環境によってはＮＴＰによる時刻補正を頻度高く行っても数十msec単位でのズレがなくならず、かえって頻繁な時刻補正による時刻の不連続性が問題になることもある。さらに、複数の計算機の時刻のズレは、一般的に漸増もしくは漸減する傾向があり、複数ログのタイムスタンプ間でのズレも漸増もしくは漸減するため、ログ解析の結果、このズレの漸増もしくは漸減傾向によって、本質的には存在しない問題である幻像が現れてしまう可能性がある。
【００１４】
また、タイムスタンプを記録するタイミングを統一することは、ログを出力するハードウェアやソフトウェアにおいて、ログに記録するイベントやモニタ値の検出タイミングの調整や、タイムスタンプとする時刻の取得に要する時間の考慮が必要となるなど、現実的には実現困難である。
【００１５】
このように、ログのタイムスタンプそのものを正しく記録することは難しく、複数のログのタイムスタンプ間にはズレがあることを前提として、ログ解析時に整合性をもった解析を実現する必要がある。
【００１６】
タイムスタンプを利用せずに、整合性をもったログ解析を実現する方法も考えられる。例えば、イベントのログについて、ある処理を行う際に、複数のイベントが順番に発生した記録では、あるイベントの直前に記録したイベントの情報も一緒に記録することによって、複数のイベントの順序関係は正しく記録されるはずである。さらに、イベント間での時間間隔も正しく記録できれば、整合性をもったログ解析が実現できるが、そのためには先に述べた各計算機間の時刻のズレをなくす必要が生じるため、現実的には実現困難である。さらに、複数の処理で記録されたイベント相互間の関係については、この方法では記録できない。別の見方をすれば、処理に本質的な順序関係があり、さらにその順序関係を記録することができる範囲においては有効であるが、処理の間に本質的な順序関係がなく、その時々のタイミングによって順序関係が変わるようなイベントなどでは、この方法は利用できない。しかし実際には、本質的には順序関係がないイベント間の順序関係が特定のパターンになった場合に発生する問題などを検出することがログ解析に求められることがあり、ログ解析を行う複数ログ間でのタイムスタンプのズレを極力なくすタイムスタンプの補正を実現することが課題となる。
【００１７】
一方、例えばＷｅｂ３層システムでの処理の進捗状況を把握する場合を考えると、Ｗｅｂサーバのアクセスログと、ＤＢサーバのクエリログには、この順序で処理が記録されるはずであるというように、整合性に関するルールがログ間にあることが多い。
【００１８】
そこで、ＮＴＰ等による時刻補正を行っている複数の装置から出力されるログのタイムスタンプにズレがあることを前提に、ログ解析時に整合性をもった解析を実現することを本発明の目的とする。
【課題を解決するための手段】
【００１９】
本発明は、複数の計算機からタイムスタンプを含むログをプロセッサによって実行されるログ解析部が受信し、前記ログ解析部を実行するプロセッサが前記タイムスタンプを補正して前記ログの解析を行うログ解析方法において、前記計算機が、時刻を補正したときに時刻の補正量とタイムスタンプを含む第１のログを生成する手順と、前記計算機が、処理または操作に関連するログにタイムスタンプを含めて第２のログとして生成する手順と、前記計算機が、前記第１のログと第２のログを送信する手順と、前記ログ解析部が、前記第１のログと第２のログを受信する手順と、前記ログ解析部が、前記第１のログを時刻補正履歴格納部へ格納する手順と、前記ログ解析部が、前記第１のログに基づいて第１の時刻補正量を演算する手順と、前記ログ解析部が、前記第１の時刻補正量と第２の時刻補正量に基づいて、前記第２のログのタイムスタンプを補正する手順と、前記ログ解析部が、前記タイムスタンプを補正した複数の第２のログについて、第２のログ間の時系列的な順序関係が予め設定した整合性ルールを満たすか否かを判定する手順と、前記第２のログ間の時系列的な順序関係が前記整合性ルールを満たさない場合には、前記ログ解析部が、これら第２のログのタイムスタンプの差分から第２の時刻補正量を求める手順と、前記整合性ルールを満たさない前記第２のログのタイムスタンプを、前記第１の時刻補正量と第２の時刻補正量に基づいて再度補正する手順と、前記タイムスタンプを再度補正した第２のログについて再度前記整合性ルールを満たすか否かを判定する手順と、前記整合性ルールを満たした第２のログを保存する手順と、前記保存した第２のログを解析する手順と、を含む。
【００２０】
また、本発明では、複数のログを生成する複数の計算機からログを受信して解析を行うログ解析装置において、ログの整合性チェック結果と時刻補正ログを利用して、タイムスタンプを補正する。
【００２１】
各計算機は、複数のログ生成部と、ＮＴＰなどの方法で時刻を補正する時刻補正部を持ち、時刻補正ログを含むログはログ送信部からログ解析装置に送られる。ログ生成部が生成するログとしては、操作ログやアプリログ、システムログなどが挙げられる。これらのログにはタイムスタンプが付加されている。
【００２２】
ログ解析装置は、複数の計算機からのログをログ受信部で受信し、時刻補正ログは時刻補正履歴格納部に記録する。その他のログはタイムスタンプ補正部でタイムスタンプ補正履歴表を使ってタイムスタンプが補正される。その後、整合性ルールに基づいて、ログのタイムスタンプに対して整合性チェックが行われ、不整合の場合にはタイムスタンプ補正表更新部を通してタイムスタンプ補正履歴格納部を更新してタイムスタンプの補正をやり直す。整合性がとれている場合には、ログの保存、解析、結果の出力を行う。
【００２３】
時刻補正履歴格納部は、各計算機で行われたＮＴＰなどの方法による時刻補正ログの履歴を保持し、その計算機の時刻のズレの傾向を算出するのに利用される。例えば、１時間毎に時刻補正を行う計算機で、毎回１秒程度時刻を進める補正をしている場合、毎秒０．２８msec程度標準時刻から遅れていることになる。時刻補正時には、タイムスタンプ補正履歴格納部の更新を行う。
【００２４】
整合性ルールは、第２のログの間の整合性に関するルールである。例えば、ある処理が計算機１→２→３の順に処理されていく場合、各計算機から出力される第２のログは１→２→３の順にタイムスタンプが並ぶはずである。さらに、計算機間のネットワークの遅延や各計算機での処理時間から、計算機１と計算機２から出力されるログには１秒以上の時間差があるはずであるというルールなども含む。
【００２５】
不整合履歴格納部は、整合性チェックの結果をログ毎に保持し、不整合時には不整合履歴表を利用してタイムスタンプ補正表更新部でタイムスタンプ補正履歴格納部の更新を行う。その後タイムスタンプの補正をやり直す。
【００２６】
タイムスタンプ補正履歴格納部は、ログ毎に、タイムスタンプの補正量と単位時間当たりの補正量の変化分に関する履歴を保持し、タイムスタンプ補正部でログのタイムスタンプを補正する。
【発明の効果】
【００２７】
したがって、本発明によれば、複数の計算機から出力される複数のログに対して、時刻補正ログと、ログ間の整合性ルールによって、各ログに記録されているタイムスタンプを補正することで、複数のログ間の順序関係の精度を向上させ、計算機で行われる処理の進捗状況やシステムの稼動状況を正しく把握することが可能となる。特に、計算機で時刻補正を行った際のタイムスタンプに生じる不連続性や、複数ログ間で漸増・漸減するタイムスタンプのズレによる統計指標に現れる幻像を予防する効果などもある。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【００２９】
＜第１実施形態＞
図１〜図１６は、第１の実施形態を示す。図１は本発明を適用する計算機システムの構成を示すブロック図である。
【００３０】
図１において、本発明を適用する計算機システムは、クラスタ構成の複数の計算機１０１がネットワーク１１００に接続され、各計算機１０１から出力されたログを収集して解析を行うログ解析装置２０１がネットワーク１１００に接続される。各計算機１０１は、データや命令を記憶するメモリ１１と、演算処理を実行するＣＰＵ（プロセッサ）１２と、ネットワーク１１００に接続されるインタフェース１４と、ＣＰＵ１２とインタフェース１４の間でデータの制御を行う制御部１３を含んで構成される。なお、制御部１３にはストレージ装置などを接続することができる。複数の計算機１０１（計算機１〜Ｎ）はそれぞれ所定の処理を実行しており、例えば、ＷＥＢ３層システムを構成する場合は、計算機１でＷＥＢサーバを実行し、計算機２でアプリケーションサーバを実行し、計算機Ｎでデータベースサーバを実行する。
【００３１】
各計算機１０１は、実行するアプリケーションやＯＳからのログを出力し、信号線（ログ通信路）１１０及びネットワークスイッチ１１１から構成されたネットワーク１１００を介してログ解析装置２０１へ送られる。
【００３２】
ログ解析装置２０１は、データや命令を記憶するメモリ２１と、演算処理を実行するＣＰＵ２２と、ネットワーク１１００に接続されるインタフェース２４と、ＣＰＵ２２とインタフェース２４の間でデータの制御を行う制御部２３と、演算結果や受信したデータを格納するストレージ装置２５とを含んで構成された計算機である。
【００３３】
また、ネットワーク１１００には、各計算機１０１が出力するログやログ解析装置２０１の動作設定を行う管理コンソール３０１が接続される。管理コンソール３０１は、データや命令を記憶するメモリ３１と、演算処理を実行するＣＰＵ３２と、ネットワーク１１００に接続されるインタフェース３４と、ＣＰＵ３１２とインタフェース３４の間でデータの制御を行う制御部３３を含んで構成される。また、管理コンソール３０１には入力装置３５と管理コンソール画面４０１が接続される。
【００３４】
図２は、図１に示した計算機システムの機能要素を示すブロック図である。
【００３５】
複数の計算機１０１それぞれには、計算機１０１内部の時刻を基準時刻に合わせる時刻補正部１０２と、アプリケーションやＯＳなどの処理や操作に基づくログをそれぞれ生成する１つ以上のログ生成部１０３と、ログ生成部１０３が生成したログをログ解析装置２０１へ送信するログ送信部１０５が含まれる。時刻補正部１０２が時刻補正に利用する基準時刻は、図２に記載されていない装置（例えば、タイムサーバ等）が提供する基準時刻でもよいし、図２に記載の計算機１０１のいずれかが基準時刻を提供しても良いし、もしくはログ解析装置２０１が提供する基準時刻でもよい。時刻補正部１０２による時刻補正の方法は、ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）による方法などを利用して、計算機１０１およびログ解析装置２０１の全部もしくは一部の間で時刻のズレがなくなるように補正を行う。時刻補正部１０２には、時刻補正を行った際にその履歴をログ出力する時刻補正ログ生成部１０４が含まれる。
【００３６】
ログ生成部１０３は、計算機１０１で起こった各種のイベントや、動作状況に応じて変動するモニタ値、操作変更の履歴などをログとして生成する部分である。ログ生成部１０３が生成するログの例としては、アプリケーションログやシステムログ、操作ログなどが挙げられる。ログ生成部１０３および時刻補正ログ生成部１０４で生成されたログは、ログ送信部１０５から、ログ通信路１１０およびネットワークスイッチ１１１を経由してログ解析装置２０１へ送信される。図２では、ログ送信部１０５が各計算機１０１に１つだけ記載してあるが、複数のログ送信部１０５があってもよい。また同様に、ログ通信路１１０やネットワークスイッチ１１１も複数で構成されていてもよい。なお、図２において、計算機１のログ生成部１０３では、例えば、ログ生成部１−１がＯＳのログを生成し、ログ生成部１−２がアプリケーションのログを生成する。
【００３７】
ログ解析装置２０１は、複数の計算機１０１が出力したログを受信し、受信したログの時刻情報を補正してから解析を行うログ解析部１２０を備える。このログ解析部１２０は、プログラムとしてログ解析装置２０１のメモリ２１にロードされ、プロセッサ２２のキャッシュメモリに読み込まれてから実行される。
【００３８】
ログ解析部１２０は、ログ通信路１１０を経由して送信されてきたログをログ受信部１２１で受信する。ログ受信部１２１は、各計算機１０１の時刻補正ログ生成部１０４生成した時刻補正ログと、ログ生成部１０３が生成したアプリケーションやＯＳなどに関連するログを受信する。
【００３９】
時刻補正履歴表１２８は、ログ受信部１２１で受信した時刻補正ログ生成部１０４で生成された時刻補正ログを各計算機１０１毎に登録する表である。タイムスタンプ補正部１２２は、ログ受信部１２１で受信したログに記録されているタイムスタンプを補正する機能をもつ。タイムスタンプ補正部１２２には、タイムスタンプ補正履歴表１２９が接続されており、タイムスタンプ補正履歴表１２９は、タイムスタンプの補正に利用する。整合性チェック部１２３は、タイムスタンプ補正部１２２で補正されたログのタイムスタンプが、ログ間の時系列的な順序を予め設定した整合性ルール１２４を満たしているかをチェックする機能をもつ。整合性チェック部１２３とタイムスタンプ補正部１２２の間には、ログの不整合が発見された場合にタイムスタンプの補正をやり直すためのタイムスタンプ再補正パス１３２を備える。不整合履歴表１３０は、整合性チェック部１２３で行ったログ間の整合性チェックの結果を登録する表である。整合性チェック部１２３にて整合性チェックを通ったログは、ログ保存部１２５やログ解析部１２６、解析結果出力部１２７に送られる。図２はこれら処理順序の一例を示しているに過ぎず、同時に処理を行ったり、一部を省略したりする場合も含まれる。
【００４０】
タイムスタンプ補正表更新部１３１は、時刻補正履歴表１２８と不整合履歴表１３０に登録されている情報を利用してタイムスタンプ補正履歴表１２９に、ログのタイムスタンプ更新に関する情報を登録する機能をもつ。なお、図２では、ログ解析装置２０１は１つだけであるが、複数のログ解析装置２０１を利用しても良く、さらに複数のログ解析装置２０１で、ログ解析部１２０の一部の機能を共有しても良い。例えば、時刻補正履歴表１２８を複数のログ解析装置２０１で共用して同じ情報を利用することなどが含まれる。
【００４１】
次に、上記図２に示した本発明の計算機システムにおけるログの処理について図３のフローチャートを使って説明する。
【００４２】
まず、各計算機１０１のログ生成部１０３で動作ログや操作ログを生成する（ステップ２０２）。並行して計算機１０１の時刻補正部１０２にある時刻補正ログ生成部１０４では時刻補正ログを生成する（ステップ２０３）。これらのログ及び時刻補正ログを、各計算機１０１のログ送信部１０５からログ解析装置２０１に対して、ログ通信路１１０とネットワークスイッチ１１１を経由して送信する（ステップ２０４）。ログ解析装置２０１のログ解析部１２０は、ログ受信部１２１で送信されてきたログ及び時刻補正ログを受信する（ステップ２０５）。次に、ログ受信部１２１は受信したログの種類を判定し、アプリケーションやＯＳのログであればステップ２０６ヘ進み、時刻補正ログであればステップ２０７へ進む（ステップ２０５０）。以下ではログの種類によって２通りの動作が行われる。
【００４３】
まず、時刻補正ログ生成部１０４で生成された時刻補正ログは、後述する図６（Ａ）のように時刻補正履歴表１２８に登録する（ステップ２０７）。次に、タイムスタンプ補正表更新部１３１が時刻補正履歴表１２８を使って、タイムスタンプ補正履歴表１２９を更新する（ステップ２１１）。時刻補正ログについては、これで終了である（ステップ２１５）。
【００４４】
時刻補正ログ以外のアプリケーションやＯＳに関連するログの場合、まずタイムスタンプ補正部１２２において、タイムスタンプ補正履歴表１２９を使ってログのタイムスタンプの補正を行う（ステップ２０６）。次に整合性チェック部１２３において、整合性ルール１２４に従ってログのタイムスタンプの整合性をチェックする（ステップ２０８）。そして整合性チェック結果を不整合履歴表１３０に登録する（ステップ２０９）。次にタイムスタンプ補正表更新部１３１が不整合履歴表１３０を使って、タイムスタンプ補正履歴表１２９を更新する（ステップ２１０）。整合性チェックの結果、ログの整合性が保証されたか否かを判定し、整合性が保証された場合にはステップ２１４へ進み、整合性が保証されない場合にはステップ２０６へ戻ってタイムスタンプの補正を再度実行する（ステップ２１２）。整合性が保証された場合には、ログ保存部１２５、ログ解析部１２６、解析結果出力部１２７などで後述するようにログの保存・解析・結果出力を行い（ステップ２１４）、その後処理を終了する（ステップ２１５）。ログの保存・解析・結果出力（ステップ２１４）については、一部を省略したり、処理の順序を変更したりしてよい。なお、ログ解析部１２６は、タイムスタンプを補正したログを公知の統計的手法により解析するもので、例えば、各計算機１０１のレスポンスタイムなどを解析する。
【００４５】
上記整合性チェックの結果による制御の分岐（ステップ２１２）において、整合性がない場合には、タイムスタンプ再補正パス１３２により、タイムスタンプの補正（ステップ２０６）に戻る（ステップ２１３）。
【００４６】
図４は図２に示した本発明の基本的な構成に対して、ログ送信部１０５やログ解析部１２０の動作設定を行うインタフェース部分を抜き出したブロック図である。管理コンソール３０１は、計算機１０１のログ送信部１０５や、ログ解析部の整合性ルール１２４、タイムスタンプ補正表更新部１３１、時刻補正命令発行部１３０１などの動作設定を行う機能をもち、設定入力インタフェース３０２を含む。管理コンソール３０１は、設定通信路３０３およびネットワークスイッチ１１１を経由して計算機１０１やログ解析部１２０に動作設定を通知する。図４では、管理コンソール３０１は計算機１０１やログ解析装置２０１とネットワークスイッチ１１１経由で接続しているが、一部の計算機１０１やログ解析装置２０１に管理コンソール３０１を包含したり、各計算機１０１とログ解析装置２０１毎に個別に設けたりする方法も含まれる。
【００４７】
図５は上記図４に示した管理コンソール３０１に含まれる設定入力インタフェース３０２の例である。管理コンソール３０１は、動作設定を行うために管理コンソール画面４０１に設定ウィンドウ４０２を表示する。設定ウィンドウ（ユーザインターフェース）４０２には、計算機１０１やログ解析部１２６毎に設定すべき項目がまとめられており、例えば、計算機１の設定項目として、ログ生成部１０３で生成したログファイルを指定するインタフェース４０４と、時刻補正ログ生成部１０４で生成した時刻補正ログファイルを指定するインタフェース４０５が含まれる。
【００４８】
また、ログ解析部１２０の設定項目の例としては、整合性ルール１２４を設定する整合性ルールファイルを指定するインタフェース４０７と、タイムスタンプ補正表更新部１３１の動作を設定するタイムスタンプ補正設定ファイルを指定するインタフェース４０８と、時刻補正方法に関する設定を行う時刻補正設定ファイルを指定するインタフェース４０９などが挙げられる。図５に記載した設定ファイルを指定するインタフェースの他に、数値を入力するインタフェースや、処理のオン・オフ（有効または無効）を設定するボタンなども設定入力インタフェース３０２に含まれる。
【００４９】
図６は、ログ解析部１２０の時刻補正履歴表１２８と計算機１０１の時刻の補正の様子を示す。図６を使って時刻補正履歴表１２８の構成例と記録データについて説明する。
【００５０】
図６（Ａ）において、時刻補正履歴表１２８は、各計算機１０１毎に時刻５１１と時刻補正履歴を記録する表である。時刻補正履歴には、時刻補正ログを出力した補正場所５１２と時刻５１１における補正量５１３を記録する。時刻補正履歴表１２８への記録は、以下のように行う。
【００５１】
計算機１０１の時刻補正部１０２で時刻補正を行った場合、時刻補正ログ生成部１０４が時刻補正ログを生成する。時刻補正ログには、時刻補正を行った時刻５１１と、時刻補正を行った補正場所５１２、時刻補正量５１３が記録されている。図２、図３に示したように、ログ送信部１０５、ログ通信路１１０、ネットワークスイッチ１１１、ログ受信部１２１を経由してそれぞれの情報が時刻補正履歴表１２８に記録される。
【００５２】
時刻５１１は時刻補正が行われる直前（時刻補正の開始時点）もしくは直後の時刻（時刻補正の完了時点）を用いることができ、補正量５１３は時刻補正により進めた、もしくは遅らせた時間である。時刻５１１については、時刻補正の直前・直後のいずれかに、補正量については、進めた場合を正の値にするか負の値にするかを予め定義して全ての時刻補正ログで統一しておく。統一ができない場合には、時刻補正履歴表１２８に、時刻５１１と補正量５１３の意味を示すフラグをつけておく必要がある。なお、本実施形態では、補正量５１３が負の値の場合は計算機１０１の時刻５１１を遅らせる補正を行った場合を示し、補正量５１３が正の場合は計算機１０１の時刻５１１を進める補正を行った場合を示す。
【００５３】
補正場所５１２は、例えばＩＰアドレスのような計算機１０１を特定できる値や識別子である。
【００５４】
次に、図６（Ｂ）で示すように、時刻と時刻補正量の関係を示したグラフ５０２の例を使って、時刻補正履歴表１２８の利用方法の例を説明する。
【００５５】
このグラフ５０２では、計算機１で行われた時刻補正履歴３回分をプロットしてある。図中、横軸は時刻で、縦軸は計算機１の時刻補正量である。この例のように時刻補正量は一定とは限らず、時刻補正時の誤差などにより値が揺れることがあるため、複数回の補正量の平均値５０３を計算機１の時刻のズレの傾向としてログ受信部１２１が演算しておき、他の処理で利用する。なお、この例の時刻５１１が時刻補正直前の時刻で、補正量５１３が時刻を進めた場合に正の値とすると、厳密には、時刻補正履歴表１２８に記録されている時刻１０：００：００．０００から時刻１０：０１：００．０００の間の時間は、時刻１０：００：００．０００における補正量−５０ｍｓｅｃを考慮して、１：００．０５０となる。図６（Ｂ）では、時刻補正履歴３回分の平均値５０３を求めたが、より多くの履歴を利用したり、平均値ではなく最大値を利用したりする方法であってもよい。また、このような動作設定は、先に図４および図５において述べた動作設定を行うインタフェースにより設定可能にすることも含まれる。
【００５６】
次に、図７は整合性ルール１２４と不整合履歴表１３０を主体にした整合性の判定処理の一例を示す説明図である。以下、図７を使って不整合履歴表の構成例と記録データについて説明する。
【００５７】
図７の不整合履歴表１３０は、時刻６１１と不整合履歴を記録する表である。不整合履歴には、発生場所６１２と不整合量６１３を記録する。不整合履歴表１３０への記録は、以下のように行う。
【００５８】
計算機１０１のログ生成部１０３で生成されたログには、タイムスタンプとログを生成した場所、イベント内容などのデータが記録されている。図２、図３に示したように、ログ送信部１０５、ログ通信路１１０、ネットワークスイッチ１１１、ログ受信部１２１、タイムスタンプ補正部１２２を経由してそれぞれの情報が整合性チェック部１２３に到着する。
【００５９】
整合性チェック部１２３では、予め設定された整合性ルール１２４に従って予め設定したログ間の整合性のチェックが行われる。不整合履歴表１３０には、整合性チェック部１２３によって整合性のチェック結果が記録される。整合性ルール１２４の例としては、ログ１のタイムスタンプよりもログ２のタイムスタンプの方が後である、というログのタイムスタンプの順序関係に関するルールが挙げられる。つまり、ログ１がＷＥＢサーバの受信ログ、ログ２がＤＢサーバのクエリログとした場合、クライアントからのデータ要求があった時点でログ１が生成され、その後、ＷＥＢサーバがＤＢサーバにデータを要求する。ＤＢサーバは要求を処理してＷＥＢサーバに返答した後にログ２を生成する。このように計算機間のログには、時系列的な順序が存在するため、これらの時系列的な順序関係に基づいて整合性ルール１２４を予め設定する。図示の例では、ログ２のタイムスタンプはログ１のタイムスタンプより大きい（タイムスタンプに記録された時刻が遅い）という整合性ルール１２４を定義した場合を示している。
【００６０】
時刻とログのタイムスタンプ差の関係を示したグラフ６０２の例を使って、不整合履歴表１３０の利用方法の例を説明する。このグラフ６０２では、整合性チェック部１２３が演算したログ１とログ２のタイムスタンプの差をプロットしてある。図中横軸は時刻で、縦軸はログ２のタイムスタンプからログ１のタイムスタンプを引いた時間差である。この例のようにタイムスタンプ差は一定とは限らず、計算機１０１の内部の時刻のズレや時刻補正の実施などにより変化することがある。
【００６１】
整合性ルール１２４の例から、このグラフ６０２では、横軸（差分＝０）よりも下の領域（ログ２のタイムスタンプがログ１よりも早い領域）が整合性ルール１２４に合わない不整合領域６０３となる。不整合領域６０３にタイムスタンプ差が入った場合には、不整合が起こらないようにするのに必要なタイムスタンプの補正量の決定を行うために不整合履歴表１３０を利用する。
【００６２】
図７では、不整合履歴２回分の記録があるが、これを最大の不整合量６１３を基準にタイムスタンプの補正量を決定したり、最新の不整合量６１３を基準にタイムスタンプの補正量を決定したりする方法がある。この動作設定は、先に図４および図５において述べた動作設定を行うインタフェースにより設定可能にすることも含まれる。
【００６３】
不整合履歴表１３０に記録される時刻６１１は、ログ間の不整合が発生した際の時刻であるが、複数のログが不整合に関わっている場合には、いずれのログの時刻かを判定するのに必要な情報や、あるいは全てのログの時刻を記録する。不整合量６１３は、どのようなケースに正の値にするか負の値にするかを予め定義して統一しておく。統一ができない場合には、不整合履歴表１３０に、時刻６１１と不整合量６１３の意味を示すフラグをつけておく必要がある。また、不整合量６１３としは、例えば、不整合となったログ１とログ２のタイムスタンプの差分が設定される。すなわち、整合性ルール１２４からずれたタイムスタンプの量が不整合量６１３となる。発生場所６１２は、例えばＩＰアドレスとログの名称のようなログの特定ができる値または識別子である。
【００６４】
図８を使ってタイムスタンプ補正履歴表１２９の構成例と記録データについて説明する。
【００６５】
タイムスタンプ補正履歴表１２９は、インデックスとタイムスタンプ補正パラメータで構成されている。インデックスは、タイムスタンプ補正パラメータに記録されたデータの適用先ログ７１１と、そのデータが有効となる時刻７１２が含まれる。タイムスタンプ補正パラメータは、時刻補正履歴表１２８と不整合履歴表１３０を利用して作られたタイムスタンプの補正に必要なデータである。時刻補正履歴表１２８からは、図６で説明したように、時刻補正量５１３の履歴から計算機１０１における時刻のズレの傾向が分かるので、この傾向を傾き補正量７１４としてタイムスタンプ補正履歴表１２９に登録する。不整合履歴表１３０からは、図７で説明したように、不整合発生時の不整合量６１３から不整合の発生を防ぐのに必要なタイムスタンプ補正量が分かるので、これをオフセット値７１３としてタイムスタンプ補正履歴表１２９に登録する。
【００６６】
次に、時刻とログのタイムスタンプの関係を示したグラフ７０２の例を使って、タイムスタンプ補正履歴表１２９の利用方法の例を説明する。
【００６７】
このグラフ７０２では、ログ１のタイムスタンプをプロットしてある。図中横軸は時刻で、縦軸はログ１のタイムスタンプである。このグラフ７０２で、黒丸の点７０３はタイムスタンプ補正前のログ１のタイムスタンプで、白丸の点７０４はタイムスタンプ補正後のログ1のタイムスタンプである。一点鎖線７０５は、タイムスタンプ補正前のタイムスタンプ列をつないだ直線で、点線７０８はタイムスタンプ補正後のタイムスタンプ列をつないだ直線である。図８の例で、一点鎖線７０５が不連続となっているのは、計算機１０１で時刻補正が行われた結果、タイムスタンプが巻き戻されたことを示している。白抜き矢印７０６は、タイムスタンプ補正履歴表１２９に登録されているオフセット値７１３によってタイムスタンプをオフセット値７１３だけ進めたことを示している。
【００６８】
また、矢印７０７は、タイムスタンプ補正履歴表１２９に登録されている傾き補正量７１４によって、一点鎖線７０５の傾きを補正したことを示している。傾き補正によるタイムスタンプの補正量は、時刻補正が行われた際にリセットされる。つまり、時刻補正が行われた時刻の傾き補正によるタイムスタンプの補正量は０で、時刻補正から単位時間だけ進んだ時点のタイムスタンプ補正量は、傾き補正量７１４となる。図６で説明したように、傾き補正量７１４は、時刻補正履歴表１２８に記録された１つ以上の補正量から、設定によって平均値や最大値などを計算して求めた値を利用する。また、図７で説明したように、オフセット値７１３も不整合履歴表１３０に記録された１つ以上の不整合量から計算によって求めた値を利用する。
【００６９】
次に、図９を参照しながら、タイムスタンプ補正履歴表１２９を使ってログのタイムスタンプの補正を行うタイムスタンプ補正部１２２の動作を説明する。
【００７０】
タイムスタンプ補正部１２２は、ログ受信部１２１からログを読み出し、タイムスタンプ補正履歴表検索部８０１で、読み込んだログ名とタイムスタンプによってタイムスタンプ補正履歴表１２９のインデックスを検索する（８０２）。ログ名でインデックスのログ７１１と一致するものを検索し、タイムスタンプでインデックスの時刻７１２を検索する。
【００７１】
インデックスの時刻７１２の検索は、タイムスタンプに記録されている時刻に最も近い時刻で、タイムスタンプに記録されている時刻よりも前の時刻を検索する。該当するエントリがタイムスタンプ補正履歴表１２９に見つかった場合には、該当エントリのタイムスタンプ補正パラメータを読み出す。タイムスタンプ補正パラメータは、オフセット値７１３と、単位時間当たりの補正量である傾き補正量７１４で構成される。
【００７２】
オフセット値７１３は、タイムスタンプオフセット補正部８０３に送られ、インデックスの時刻７１２と傾き補正量７１４はタイムスタンプ傾き補正部８０５に送られる。タイムスタンプ補正部１２２では、ログ受信部１２１から読み込んだログに対して、タイムスタンプ補正履歴表検索部８０１に続いて、タイムスタンプオフセット補正部８０３、タイムスタンプ傾き補正部８０５でタイムスタンプの補正を行った後に、整合性チェック部１２３にログを送る。なお、タイムスタンプオフセット補正部８０３とタイムスタンプ傾き補正部８０５の処理の順序は図９に記載の順序に限らない。
【００７３】
次に、整合性チェック部１２３でログ間の時系列の不整合が発生した場合には、タイムスタンプ再補正パス１３２を経由してタイムスタンプ補正部１２２のタイムスタンプ補正履歴表検索部８０１にログが再送され、再度タイムスタンプの補正を行う。
【００７４】
図１０は、図８、図９に記載の処理によってログのタイムスタンプの補正を行う方法のフローチャートを示した図である。このフローチャートでは、タイムスタンプ補正部１２２のみを抜粋して示してある。
【００７５】
タイムスタンプの補正を行うログに対して、まず、最初にタイムスタンプ補正履歴表１２９から同一のログ名でタイムスタンプに記録された時刻を越えない直近のインデックス時刻７１２のエントリを検索する（ステップ９０２）。次にタイムスタンプ補正履歴表１２９から取得したオフセット値７１３をタイムスタンプに加算する（ステップ９０３）。次にタイムスタンプ補正履歴表１２９から取得したインデックス時刻７１２とタイムスタンプに記録された時刻の差分に傾き補正量７１４を掛けた値をタイムスタンプに加算する（ステップ９０４）。
【００７６】
以上により図８のグラフ７０２に示したのと同様のタイムスタンプ補正が行える。具体的に図８の例でタイムスタンプの補正方法を説明する。図８において、ログ１の時刻１０：０１：００．０００のログのタイムスタンプの補正方法を例に説明する。
【００７７】
まず、図１０で説明したステップ９０２に従い、図８のタイムスタンプ補正履歴表１２９のインデックスを検索して、１０：０１：００．０００のログ１のエントリのタイムスタンプ補正パラメータを読み出す。その結果、オフセット値７１３は−６０ｍｓｅｃ、傾き補正量７１４は−４５ｍｓｅｃ／ｍｉｎとなる。図８に示した例では、オフセット値７１３は、不整合履歴表１３０の１０：０１：００．０００における不整合量１２０ｍｓｅｃをログ１とログ２で折半した−６０ｍｓｅｃとなっている。
【００７８】
傾き補正量７１４は、時刻補正履歴表１２８に記録されている、１０：００：００．０００とその１分後の２回分の時刻補正量５１３の平均値である−４５ｍｓｅｃとなる。次にステップ９０３により、タイムスタンプにオフセット値７１３を加算してタイムスタンプは１０：０１：３９．９４０となる。次にステップ９０４の処理を行う。
【００７９】
補正中のタイムスタンプは、タイムスタンプ補正履歴表１２９から読み込んだインデックス時刻７１２である１０：０１：００．０００から４０ｓｅｃ進んでいるので、傾き補正量７１４である−４５ｍｓｅｃ／ｍｉｎに４０ｓｅｃを掛けた−３０ｍｓｅｃをタイムスタンプに加算して、１０：０１：３９．９１０が補正後のタイムスタンプとなる。
【００８０】
次に図１１から図１４を使ってタイムスタンプの巻き戻りを予防する方法について説明する。
【００８１】
図１１は、時刻とタイムスタンプの関係を示したグラフ１００１である。白丸の点１００６はタイムスタンプ補正部１２２でタイムスタンプの補正をした後のタイムスタンプで、図１１では、これをタイムスタンプ再補正前のタイムスタンプとする。
【００８２】
図中ボックス１００３はタイムスタンプの巻き戻りを予防した後のタイムスタンプで、図１１ではタイムスタンプ再補正後のタイムスタンプとする。グラフ１００１の破線１００７は、タイムスタンプ再補正前のタイムスタンプを結んだ直線で、一部分が不連続となっている。
【００８３】
図１１の例では、タイムスタンプが以前の時刻に巻き戻ったために直線１００７が不連続となっている。このような不連続性は、例えば計算機１０１で時刻補正が行われた前後で発生する可能性がある。白抜き矢印１００５は、タイムスタンプの巻き戻りが起こったログ１００２を、巻き戻りが起こらないようにタイムスタンプを再補正したことを示している。時刻の巻き戻りが起こらないようにするには、タイムスタンプ１００２よりも前の時刻のタイムスタンプの最新値１００４よりも後の時刻にタイムスタンプを再補正する必要がある。
【００８４】
図１２はタイムスタンプ巻き戻りを予防する方法を示すブロック図である。図２に示したブロック図との違いは、タイムスタンプ補正部１２２と整合性チェック部１２３の間に巻き戻り予防部１１０１を加え、さらに巻き戻り予防部１１０１が利用するタイムスタンプ補正値履歴表１１０２が追加されている点である。その他は、図２と同様である。
【００８５】
タイムスタンプ補正値履歴表１１０２には、図１３で示すように、ログ１１１１とタイムスタンプ補正値履歴が記録される。タイムスタンプ補正値履歴は、最終タイムスタンプ１１１２と最小更新単位１１１３が含まれる。最終タイムスタンプ１１１２は、各ログの最新のタイムスタンプであり、最小更新単位１１１３はタイムスタンプの巻き戻りを補正する際の最小の更新幅であり、巻き戻り検出時には、タイムスタンプを最終タイムスタンプ１１１２に最小更新単位を１１１３加えた時刻に補正することで、巻き戻りの回避を可能とする。つまり、補正対象のログのタイムスタンプが、直前のログのタイムスタンプよりも後の時刻となるように補正する。
【００８６】
なお、最小更新単位１１１３を０にすることで、最終タイムスタンプ１１１２と同時刻にすることができる。最終タイムスタンプ１１１２は、巻き戻り予防部１１０１でタイムスタンプの補正を行った後のログのタイムスタンプを記録する。最小更新単位は、図４および図５で説明した動作設定を行うインタフェースによっても設定可能である。
【００８７】
図１４はタイムスタンプの巻き戻りを予防する方法を示すフローチャートである。図１４では巻き戻り予防部１１０１のみ抜粋して示してある。
【００８８】
タイムスタンプの巻き戻りを予防するログに対して、まず、ログ名でタイムスタンプ補正値履歴表１１０２を検索し、最終タイムスタンプ１１１２と最小更新単位１１１３を取得する（ステップ１２０２）。次に、タイムスタンプ補正部１２２による補正後のタイムスタンプと、取得した最終タイムスタンプ１１１２の比較を行う（ステップ１２０３）。
【００８９】
補正後のタイムスタンプが最終タイムスタンプ１１１２よりも前の時刻の場合には、タイムスタンプを最終タイムスタンプ１１１２に最小更新単位１１１３を加えた時刻に更新する（ステップ１２０４）。補正後のタイムスタンプが最終タイムスタンプ１１１２以降の時刻の場合には、ステップ１２０５に進む。なお、ステップ１２０３でタイムスタンプの比較を行う際に、補正後のタイムスタンプと最終タイムスタンプ１１１２が同時刻の場合に、再補正を行うステップ１２０４を実行するかどうかについては設定に応じて判定する。例えば、最小更新単位が０の場合には同時刻の場合に再補正を行わず、それ以外では再補正を行う設定も含まれる。最後に、再補正後のタイムスタンプでタイムスタンプ補正値履歴表１１０２の最終タイムスタンプ１１１２を更新する（ステップ１２０５）。
【００９０】
以上の処理により、時刻補正などで計算機１０１の時刻を補正したときに、ログのタイムスタンプが巻き戻って、直前のログのタイムスタンプよりも時系列的に前となってしまうのを防止できる。
【００９１】
図１５と図１６を使って、不整合発生時に時刻補正を行う方法を説明する。
【００９２】
図１５は、不整合発生時に時刻補正を行う方法を示すブロック図である。図２に示したブロック図との違いは、整合性チェック部１２３の後に時刻補正命令発行部１３０１を加え、計算機１０１の時刻補正部１０２に命令受信部１３０３を設け、時刻補正命令発行部１３０１と時刻補正命令通信路１３０２とネットワークスイッチ１１１を経由して時刻補正命令の通信が行われる点である。その他の構成は図２と同様である。
【００９３】
時刻補正命令発行部１３０１は、整合性チェック部１２３のチェック結果に応じて１つもしくは複数の計算機１０１に対して時刻補正を実行させる時刻補正命令を発行する機能をもつ。計算機１０１の時刻補正部１０２にある命令受信部１３０３は、時刻補正命令発行部１３０１が発行した時刻補正命令を受信して、時刻補正部１０２で時刻補正を実行する機能をもつ。時刻補正命令には、ログのタイムスタンプの不整合量に応じた時刻補正量のヒント情報を付加することも可能である。
【００９４】
図１６は、不整合発生時に時刻補正を行う方法を示すフローチャートである。図１６のフローチャートでは、時刻補正命令に関わる部分のみ抜粋して示してある。
【００９５】
図１６でステップ２０６、２０８、２０９、２１０、２１２は図３で説明した処理を行う。図３で説明した方法では、ステップ２１２でログ間の整合性チェック結果が不整合となった場合にステップ２０６に戻ってタイムスタンプの補正をやり直していたが、図１６に示す方法では、タイムスタンプの補正をやり直す前に時刻補正命令の発行を行う。
【００９６】
まず、時刻補正命令発行部１３０１で、ログの不整合が発見されたログを出力した計算機１０１に対して、時刻補正を実行させる命令を生成し、時刻補正命令通信路１３０２に送信する（ステップ１４０２）。時刻補正部１０２は、命令受信部１３０３で受信した時刻補正命令により、時刻補正を実行する（ステップ１４０３）。その後ステップ２０６に戻ってタイムスタンプの補正をやり直す。なお、ステップ１４０２、１４０３と並行してステップ２０６を実行することも可能である。
【００９７】
以上の説明において、計算機１０１やログ解析部１２０は別の機能ブロックとして記述、説明してきたが、全て、もしくは一部分が同一の物理計算機上で動作する仮想計算機で実行されている場合も本発明に含まれる。仮想計算機の実現例としては図１９で示すように、物理計算機９１００で稼動するホストＯＳ９３００上で複数のゲストＯＳ９２００が同時に動作し、個々のゲストＯＳ９２００が仮想計算機９１０１に相当する場合、ホストＯＳ９３００とゲストＯＳ９２００の時刻に関連性が存在する可能性がある。そのため、図２や図１５に示したように時刻補正部１０２が、各計算機１０１毎に存在するだけでなく、複数の仮想計算機９１０１にまたがって影響を与える時刻補正部９４００も含まれる。
【００９８】
また、上記実施形態では、ログ解析部１２０がログを生成する計算機１０１（計算機１〜Ｎ）と独立した構成を示したが、ログ解析部１２０を計算機１０１に含めても良い。
【００９９】
また、ログ解析部１２０には、ログ受信部１２１、タイムスタンプ補正部１２２、整合性チェック部１２３、整合性ルール１２４、ログ保存部１２５、ログ解析部１２６及び解析結果出力部１２７を含めたが、ログ保存部１２５、ログ解析部１２６及び解析結果出力部１２７を他の計算機で実行するようにしても良い。
【０１００】
以上のように、複数の計算機１０１からそれぞれ出力される複数のログに対して、時刻補正ログと、処理に関連するログとを収集し、予め設定したログ間の整合性ルールによって、各ログに記録されているタイムスタンプを補正することで、複数のログ間の順序関係の精度を向上させ、計算機１０１やクラスタシステムで行われる処理の進捗状況やシステムの稼動状況を正しく把握することが可能となる。特に、計算機１０１で時刻補正を行った際のタイムスタンプに生じる不連続性や、複数のログ間で漸増・漸減するタイムスタンプのズレによって、ログに基づく統計指標に現れる幻像を予防することが可能となる。
【０１０１】
なお、上記では複数の計算機１０１をクラスタ構成とした例を示したが、上記に限定されるものではなく、計算機１０１で実行される処理や操作をログに基づいて解析する場合に適用することができる。特に、計算機１０１の時刻を基準時刻に合わせる習慣のないユーザについて、ログに基づく処理や操作の解析を行う場合には、本発明によりログ間の整合性を正確に解析することが可能となる。
【０１０２】
＜第２実施形態＞
本発明の第２の実施形態によるログ解析装置を図１７、図１８を使って説明する。
【０１０３】
図１７は、第２実施形態を示す計算機システムのブロック図である。図１７の計算機システムは、１つ以上の計算機１５０１と、ログ解析装置１５０２、管理コンソール１５０３、ネットワーク１５０４で構成される。
【０１０４】
図１７では、ログ解析装置１５０２と管理コンソール１５０３は計算機１５０１と別々の装置としてネットワーク１５０４に接続しているが、計算機１５０１上にこれらの装置が存在してもよく、ログ解析装置１５０２と管理コンソール１５０３を接続するネットワークが、計算機１５０１とログ解析装置１５０２を接続するネットワークと独立していてもよい。計算機１５０１では、ログが生成され、ログ解析装置１５０２は計算機１５０１が生成したログを収集して解析する。また、このシステムに含まれる装置の全てもしくは一部は、自らの時刻補正を行う機能をもち、時刻を基準時刻に合わせている。また時刻補正時に、時刻補正ログを出力する機能ももつ。基準時刻はシステムに含まれるいずれかの装置、もしくは外部の装置の時刻であり、ネットワーク１５０４を経由して時刻の補正を行う。
【０１０５】
図１７では、各装置は別々のハードウェアで構成されているが、これらの装置の全て、もしくは一部分が同一のハードウェア上で動作していてもよい。さらに、それぞれの装置が仮想計算機上で動作していてもよい。管理コンソール１５０３は、計算機１５０１やログ解析装置１５０２の動作設定を行う装置で、先に説明した時刻補正機能の動作時刻や、基準時刻の設定、ログ解析装置１５０２で解析するログのファイルや時刻補正ログのファイル、ログのタイムスタンプの補正方法の設定などを行う機能をもつ。
【０１０６】
図１８を使って、ログ解析装置とログ解析対象システムの動作を説明する。
【０１０７】
このシステムは、ログ解析対象システム１６０１と、ログ解析装置１６３０、それらの間を接続するネットワーク１６２０で構成されている。ログ解析対象システム１６０１は、１つ以上の計算機１６０２が含まれ、各計算機１６０２は、ハードウェア（ＨＷ）１６１０と、ハードウェア上で動作するオペレーティングシステム（ＯＳ）１６０８、オペレーティングシステム上で動作するアプリケーション（ＡＰ）１６０３、時刻補正部１６０４、ログ送信部１６０５で構成される。図１８では、アプリケーション１６０３は１つだけであるが、複数のアプリケーションが動作していてもよく、ログ送信部１６０５もアプリケーション毎に複数動作してもよい。また、計算機１６０２は仮想計算機でもよく、ホストＯＳ上のゲストＯＳでアプリケーション１６０３や時刻補正部１６０４、ログ送信部１６０５が動作していてもよい。
【０１０８】
図１８に示すように、計算機１６０２内の各部はログの出力を行う。ハードウェア１６１０は、メモリの空き容量やＣＰＵの使用率などのモニタ値や、ハードウェアエラーなどのイベント情報を記録したハードウェアログ１６１１を出力する。オペレーティングシステム１６０８は、プロセス数や割り込み回数などのモニタ値や、例外の発生やプロセスの異常終了などのイベント情報を記録したシステムログ１６０９を出力する。アプリケーション１６０３は、アプリケーションの実行状況などを記録したアプリケーションログ１６０６を出力する。時刻補正部１６０４は時刻補正を行った際に、時刻補正量を記録した時刻補正ログ１６０７を出力する。ログ送信部１６０５は、これらのログを収集し、ネットワーク１６２０を経由してログ解析装置１６３０にログを送信する機能をもつ。
【０１０９】
ログ送信部１６０５から送信されるログには、ログに記録された情報の生成もしくは記録時刻を示すタイムスタンプが付けられており、さらにどの場所（計算機）で生成もしくは記録されたかを特定できる情報も付いている。場所の情報の記録方法としては、例えば、計算機１６０２のＩＰアドレスや、ログ毎に固有なログ名、計算機１６０２毎に固有なホスト名などがある。ログ送信部１６０５がログを収集するタイミングや収集対象とするログのファイル名などの収集方法に関する設定や、送信間隔などの送信方法関する設定については、管理コンソールから設定可能である。
【０１１０】
ログ解析装置１６３０は、ハードウェア１６５４上で動作するオペレーティングシステム１６５３と、オペレーティングシステム１６５３上で動作する各種のプログラムで構成される。各種のプログラムとしては、図１８に記載のタイムスタンプ補正プログラム１６３１、ログ保存プログラム１６５０、ログ解析プログラム１６５１、解析結果出力プログラム１６５２の他に、アプリケーションや時刻補正部などがあってもよい。また、ログ保存プログラム１６５０、ログ解析プログラム１６５１、解析結果出力プログラム１６５２は、一部が無い構成でもよく、またその中の複数がまとまって１つのプログラムになっていても、タイムスタンプ補正プログラム１６３１の一部として含まれていてもよい。
タイムスタンプ補正プログラムは、複数のプログラムモジュールで構成される。
【０１１１】
まず、ログ送信部１６０５からネットワーク１６２０を経由してログ解析装置１６３０に送信された各種ログは、ログバッファ１６３２に格納される。図１８では時刻補正ログについて、ネットワーク１６２０から直接時刻補正履歴表１６３６に送られることになっているが、いったんログバッファ１６３２に記録されてから、時刻補正履歴表１６３６に記録される方法でもよい。なお、時刻補正履歴表１６３６は、前記第１実施形態の時刻補正履歴表１２８と同様の構成である。
【０１１２】
タイムスタンプ補正プログラムモジュール１６３３は、ログバッファ１６３２から各種ログ（ハードウェアログ、システムログ、アプリケーションログ）を読み込み、ログのタイムスタンプの補正を行う機能をもつプログラムモジュールである。ログのタイムスタンプの補正は、タイムスタンプ補正履歴表１６３７に記録されているタイムスタンプ補正量データ１６４３を利用して前記第１実施形態と同様に行う。このため、タイムスタンプ補正履歴表１６３７は、前記第１実施形態のタイムスタンプ補正履歴表１２９と同様に構成される。
【０１１３】
タイムスタンプを補正したログは、整合性チェックプログラムモジュール１６３４に読み込まれ、整合性ルールデータベース１６３５に登録されているルールに従って整合性をチェックされる。整合性ルールデータベース１６３５は、前記第１実施形態の整合性ルール１２４と同様に、ログ間の時系列的な関係を含んで構成される。
【０１１４】
整合性チェックプログラムモジュール１６３４は、ログ間の整合性チェック結果１６４１を不整合履歴表１６３９に登録する他に、ログ間の不整合時にはタイムスタンプ補正プログラムモジュール１６３３にログを返送してタイムスタンプの補正のやり直しを実行させたり、整合性に問題が無い場合には、ログをログ保存プログラム１６５０やログ解析プログラム１６５１、解析結果出力プログラム１６５２に送ったりする。なお、不整合履歴表１６３９は、前記第１実施形態の不整合履歴表１３０と同様に構成される。
【０１１５】
時刻補正履歴表１６３６には、図６で説明した方法と同様の方法で時刻補正ログから時刻補正履歴が記録される。不整合履歴表１６３９は、図７で説明した方法と同様の方法で整合性チェック結果１６４１から不整合履歴が記録される。タイムスタンプ補正履歴表更新プログラムモジュール１６３８は、時刻補正履歴表１６３６から時刻補正履歴データ１６４０を読み出し、不整合履歴表１６３９から不整合履歴データ１６４２を読み出して、前記第１実施形態の図８から図１０で説明した方法と同様の方法でタイムスタンプ補正履歴表１６３７の更新を行う。
【０１１６】
タイムスタンプ補正履歴表１６３７を使ったタイムスタンプの補正の方法は、前記第１実施形態の図８から図１０で説明した方法と同様の方法で行う。この際にタイムスタンプ補正履歴表１６３７からタイムスタンプ補正プログラムモジュールには、タイムスタンプ補正量データ１６４３が送られる。タイムスタンプ補正量データ１６４３は、図８、図９に示したインデックス時刻７１２、オフセット値７１３、傾き補正量７１４に相当するデータを含む。タイムスタンプ補正プログラムモジュール１６３３の動作は、図１０に示したフローチャートと同様の動作である。
【０１１７】
以上によりタイムスタンプ補正プログラム１６３１は、ログ解析対象システム１６０１で生成されて出力、送信されたログのタイムスタンプを整合性のあるタイムスタンプに補正することができる。ログ解析装置１６３０では、補正されたタイムスタンプが記録されたログを、ログ保存プログラム１６５０で保存し、ログ解析プログラム１６５１で所定の解析を行い、解析結果出力プログラム１６５２で解析結果の出力を行うことができる。
【０１１８】
図１８には示していないが、前記第１実施形態の図１２、図１３で説明した方法と同様の方法で、タイムスタンプの巻き戻りを予防することができる。具体的には、図１８でタイムスタンプ補正プログラムモジュール１６３３と整合性チェックプログラムモジュール１６３４の間に、図１２に示した巻き戻り予防部１１０１と同様の機能をもつ巻き戻り予防プログラムモジュールを挿入して、タイムスタンプ補正プログラムモジュール１６３３でタイムスタンプを補正されたログのタイムスタンプの巻き戻り予防を行う。
【０１１９】
その際に、図１２に示したタイムスタンプ補正値履歴表１１０２と同様の表を巻き戻り予防プログラムモジュールに接続して、補正後のタイムスタンプがそれ以前の最終タイムスタンプの時刻に比べて前の時刻になっていないかを確認し、図１３に示したフローチャートと同様の動作でタイムスタンプの巻き戻りを予防する。
【０１２０】
さらに、上記図１５、図１６で説明した方法と同様の方法で、不整合発生時に計算機１６０２の時刻補正を実行させることができる。具体的には、図１８で整合性チェックプログラムモジュール１６３４の結果を受ける部分に、図１５に示した時刻補正命令発行部１３０１と同様の機能をもつ時刻補正命令発行プログラムモジュールを挿入して、整合性チェックプログラムモジュール１６３４で不整合が発生した際に、時刻補正命令発行プログラムモジュールで計算機１６０２に対して時刻補正を実行させる時刻補正命令の生成を行う。
【０１２１】
さらに図１８には示していないが、時刻補正部１６０４に図１５に示した命令受信部１３０３と同様の機能をもつ命令受信プログラムモジュールを挿入し、ネットワーク１６２０を経由して、時刻補正命令発行プログラムモジュールから時刻補正命令を受信できるようにすることで、ログの不整合発生時に計算機１６０２で時刻補正を行うことが可能となる。時刻補正命令の生成、発行、実行の動作については、図１６に示したフローチャートと同様の動作を行えばよい。
【０１２２】
以上のように、第２実施形態も前記第１実施形態と同様に、ログ解析対象システム１６０１で行われる処理の進捗状況やシステムの稼動状況を正しく把握することが可能となる。特に、計算機１６０２で時刻補正を行った際のタイムスタンプに生じる不連続性や、複数のログ間で漸増・漸減するタイムスタンプのズレによって、ログに基づく統計指標に現れる幻像を予防することが可能となる。
【産業上の利用可能性】
【０１２３】
以上のように、複数の計算機から出力される複数のログを利用した、クラスタシステムなどで行われる処理の進捗状況把握や、システムの稼動状況把握の精度向上が図れるので、システム運用管理ツールなどの基盤技術として利用可能である。
【図面の簡単な説明】
【０１２４】
【図１】第１の実施形態を示し、本発明を適用する計算機システムのブロック図。
【図２】同じく、第１の実施形態を示し、計算機システムの機能要素の構成を示すブロック図。
【図３】同じく、第１の実施形態を示し、計算機システムで実行される処理の流れを示すフローチャート。
【図４】同じく、第１の実施形態を示し、管理コンソールからの動作設定方法を示すブロック図である。
【図５】同じく、第１の実施形態を示し、動作設定を行うインタフェースの設定画面の説明図である。
【図６】同じく、第１の実施形態を示し、（Ａ）は時刻補正履歴表の一例を示す説明図で、（Ｂ）は時刻の補正履歴に基づく計算機の時刻補正量の算出方法の一例を示すグラフである。
【図７】同じく、第１の実施形態を示し、不整合履歴表の構成例と整合性ルールの例および整合性チェックの例を示す説明図である。
【図８】同じく、第１の実施形態を示し、タイムスタンプ補正履歴表の構成例とタイムスタンプ補正方法を示すグラフである。
【図９】同じく、第１の実施形態を示し、タイムスタンプ補正方処理を示すブロック図である。
【図１０】同じく、第１の実施形態を示し、タイムスタンプ補正処理を示すフローチャートである。
【図１１】同じく、第１の実施形態を示し、タイムスタンプの巻き戻りを予防する方法を示すグラフである。
【図１２】同じく、第１の実施形態を示し、タイムスタンプ巻き戻りを予防するための計算機システムの他の構成を示すブロック図である。
【図１３】同じく、第１の実施形態を示し、タイムスタンプ補正値履歴表の一例を示す説明図である。
【図１４】同じく、第１の実施形態を示し、タイムスタンプの巻き戻りを予防する処理の一例を示すフローチャートである。
【図１５】同じく、第１の実施形態を示し、ログの不整合発生時に時刻補正を行うための計算機システムの他の構成を示すブロック図である。
【図１６】同じく、第１の実施形態を示し、ログの不整合発生時に時刻補正を行う処理の一例を示すフローチャートである。
【図１７】第２の実施形態を示し、ログ解析装置と管理コンソールと計算機の構成を示すブロック図。
【図１８】同じく、第２の実施形態を示し、ログ解析装置の他の形態を示すブロック図。
【図１９】第１の実施形態を示し、計算機システムの他の形態を示すブロック図で、仮想計算機を用いた例を示す。
【符号の説明】
【０１２５】
１０１ 計算機
１０２ 時刻補正部
１０３ ログ生成部
１０４ 時刻補正ログ生成部
１０５ ログ送信部
１１０ ログ通信路
１１１ ネットワークスイッチ
１２０ ログ解析部
１２１ ログ受信部
１２２ タイムスタンプ補正部
１２３ 整合性チェック部
１２４ 整合性ルール
１２５ ログ保存部
１２６ ログ解析部
１２７ 解析結果出力部
１２８ 時刻補正履歴表
１２９ タイムスタンプ補正履歴表
１３０ 不整合履歴表
１３１ タイムスタンプ補正表更新部
１３２ タイムスタンプ再補正パス
３０１ 管理コンソール
【図１】
2008269084.tif 000003
【図２】
2008269084.tif 000004
【図３】
2008269084.tif 000005
【図４】
2008269084.tif 000006
【図６】
2008269084.tif 000007
【図７】
2008269084.tif 000008
【図８】
2008269084.tif 000009
【図９】
2008269084.tif 000010
【図１０】
2008269084.tif 000011
【図１１】
2008269084.tif 000012
【図１２】
2008269084.tif 000013
【図１３】
2008269084.tif 000014
【図１４】
2008269084.tif 000015
【図１５】
2008269084.tif 000016
【図１６】
2008269084.tif 000017
【図１９】
2008269084.tif 000018
【図５】
2008269084.tif 000019
【図１７】
2008269084.tif 000020
【図１８】
2008269084.tif 000021