以下、本発明の実施形態を図面を参照して説明する。
実施形態1.
図1は、本発明の第1の実施形態のファイル情報収集システムの構成例を示すブロック図である。
図1では、ファイル情報収集システムだけでなく、所定の目的のために用いられるシステムに属するサーバ10a〜10nも図示している。サーバ上で動作するプロセスは、他のサーバ上で動作するプロセスを呼び出すことがある。この場合、異なるサーバ上で動作するプロセス間に呼び出し関係がある。以下、呼び出している方を「呼び出し元」と記し、呼び出されている方を「呼び出し先」と記す。いずれかのサーバでエラーが生じた場合、そのサーバから見て呼び出し元のサーバにエラーが波及していく。なお、エラーの発生に伴い、サーバはアラートを出力するが、アラートを出力するサーバは、1番最初にエラーが発生したサーバであるとは限らない。
各サーバ10a〜10nはそれぞれ、情報採取手段11を備える。情報採取手段11は、ファイル情報収集システム1から要求された情報を採取し、ファイル情報収集システム1に送信する。
各サーバ10a〜10nおよびファイル情報収集システム1は、例えば、ネットワーク20を介して接続されている。
ファイル情報収集システム1は、情報取得手段2と、ファイル特定手段3と、呼び出し関係情報記憶手段4と、順序制御手段5と、表示手段6とを備える。
ファイル情報収集システム1の管理者は、運用中のシステム(サーバ10a〜10nを含むシステム)でいずれかのサーバがアラートを出力した場合、そのサーバの識別情報と、そのサーバにおいてアラートを出力したプロセスのプロセス名とを含む情報(以下、起点情報)を作成する。ここで、起点とは、アラートを出力したサーバを意味する。また、以下の説明では、サーバの識別情報として、サーバ名を用いるものとする。また、管理者は、アラートの出力時刻の情報も起点情報に含める。以下、アラートの出力時刻を基準時刻と記す。管理者は、起点情報を作成すると、その基点情報をファイル情報収集システム1に入力する。
ここで、起点情報によって特定されるプロセス、または、既に特定されているプロセスとの呼び出し関係に基づいて新たに特定されるプロセスを特定プロセスと記す。最初の特定プロセスは、起点情報に含まれるプロセス名によって特定されるプロセスである。
サーバ名とプロセス名と基準時刻とを含む起点情報が情報取得手段2に入力されたとする。すると、情報取得手段2は、そのプロセス名によって特定されるプロセス(特定プロセス)を包含したプロセスの親子関係を示すツリー構造で表される各プロセスのプロセスID(Identification)を、特定プロセスが動作しているサーバに要求することによって、その各プロセスのプロセスIDをそのサーバから取得する。そのサーバの情報採取手段11は、情報取得手段2から要求された各プロセスのプロセスIDを、情報取得手段2に送信すればよい。また、情報取得手段2は、各プロセスのプロセスIDとともに、その各プロセスのプロセス名を取得してもよい。なお、あるプロセスが別のプロセスを生成した場合、そのプロセス間には親子関係があるといい、生成されたプロセスを子と呼び、子を生成したプロセスを親と呼ぶ。
特定プロセスを包含したプロセスの親子関係を示すツリー構造で表される各プロセスのプロセスIDを情報取得手段2が取得する態様は、特に限定されない。例えば、情報取得手段2は、プロセス名を指定して、そのプロセス名を有するプロセスのプロセスID、プロセス名、およびそのプロセスと親子関係にあるプロセスのプロセスID(親または子のプロセスID)を含むプロセス情報を取得する。そして、情報取得手段2は、親または子のプロセスIDを指定して、そのプロセスIDに対応するプロセス情報を取得することを、親子関係のツリー構造が得られるまで繰り返せばよい。
また、一回の要求で、特定プロセスを包含したプロセスの親子関係を示すツリー構造で表される各プロセスのプロセスIDを取得できるのであれば、情報取得手段2は、一回の要求でその各プロセスのプロセスIDを取得してもよい。
図2は、プロセスの親子関係を示すツリー構造の例を示す模式図である。図2に示す各ノードはプロセスを表し、各ノードに示す番号は、プロセスIDであるものとする。例えば、起点情報に含まれるプロセス名を有するプロセス(特定プロセス)のプロセスIDが“53”であり、その特定プロセスを包含したプロセスの親子関係を示すツリー構造が図2に例示するツリー構造となる場合、情報取得手段2は、ツリー構造で表される各プロセスのプロセスID“50”,“51”,“52”,“53”を取得する。このような親子関係を有するプロセス群がまとまって処理を実行している。
また、情報取得手段2は、取得した各プロセスIDに対応する各プロセス(ツリー構造で表される各プロセス)が開いている各ファイルのファイル名およびファイル属性を、特定プロセスが動作しているサーバに要求することによって、その各ファイルのファイル名およびファイル属性をそのサーバから取得する。そのサーバの情報採取手段11は、情報取得手段2から要求された各ファイル名および各ファイル属性を、情報取得手段2に送信すればよい。
なお、各ファイル名は、例えば、“/var/log/error.log”のように、ルートディレクトリからのパスも含めて記述される。
情報取得手段2が取得したファイル名の中には、ログファイルのファイル名や、ログファイル以外の種々のファイルのファイル名が含まれる。
また、ファイル属性とは、ファイルが開かれるときに指定される属性である。ファイル属性の内容は、ライト(WRITE)可能、リード(READ)可能、リード/ライト(READ/WRITE)可能のうちのいずれかである。
ファイル特定手段3は、情報取得手段2が取得したファイル名のうち、ログファイルのファイル名を判定し、そのファイル名のリストを生成する。本実施形態では、ファイル特定手段3は、ログファイルであると判定することはできないがログファイルである可能性があるファイル(以下、ログファイル候補と記す。)もそのリストに含める場合を例にして説明する。
ファイル特定手段3は、情報取得手段2が取得したファイル名のうち、対応するファイル属性がライト可能またはリード/ライト可能となっているファイル名を選択する。エラーに関する情報が書き込まれるログファイルのファイル属性は、ライト可能またはリード/ライト可能であるためである。
対応するファイル属性がリード可能であるファイル名は、ログファイルに該当しないので、ファイル特定手段3は、そのようなファイル名は選択せずに、破棄する。
ファイル特定手段3が選択したファイル名の集合の中に、同一のファイル名が複数ある場合がある。異なるプロセスが同一ファイルを開くことがあるので、情報取得手段2が同一ファイルのファイル名を重複して取得することがあるためである。
ファイル特定手段3は、選択したファイル名の集合の中に同一のファイル名が複数あれば、重複を排除する。すなわち、ファイル特定手段3は、同一のファイル名が複数あれば、そのうち、1つだけを残し、残りを破棄する。
さらに、ファイル特定手段3は、ファイル名が所定の条件を満たしている場合、そのファイルをログファイルのファイル名であると判定する。この所定の条件は、include 条件とexclude 条件の組み合わせで表される。include 条件は、ファイル名に少なくとも所定の形式で“log” の文字列が含まれているという条件である。exclude 条件は、ログファイルには用いられない文字列を含んでいるという条件である。図3は、include 条件およびexclude 条件の例を示す。図3に示す例では、include 条件およびexclude 条件を正規表現で示している。図3に示す“log[s]”は、“log” または“logs”という文字列を表している。図3に示す例において、“[.+]”は、“.”と一文字以上の任意の文字列を意味している。“.*”は、“.”と0文字以上の任意の文字列を意味している。“/dev/” という文字列を含んでいるファイル名はログファイルではないと言える。従って、図3に示す例では、exclude 条件の例として、“/dev/.*” を示している。
ファイル特定手段3は、ファイル名が「include 条件を満たし、かつ、exclude 条件を満たしていない」という条件を満足している場合、そのファイル名が、ログファイルのファイル名であると判定する。
また、ファイル特定手段3は、ファイル名が「include 条件とexclude 条件の双方を満たしていない」という条件を満たしている場合、そのファイル名が、ログファイル候補のファイル名であると判定する。
なお、include 条件およびexclude 条件は、図3に示す例に限定されない。
ファイル特定手段3は、ログファイルまたはログファイル候補のファイル名であると判定したファイル名毎にレコード作成し、そのレコードのリストを作成する。個々のレコードは、サーバ名、ファイル名、ファイルを出力したサーバのサーバ属性の情報を含む。本実施形態では、個々のレコードがファイルの種別も含む場合を例にして説明する。また、本実施形態では、「ファイルの種別」が「ログファイル」および「ログファイル候補」の2種類である場合を例にして説明する。なお、以下の説明において、サーバがファイルを出力するとは、サーバがファイルを生成または更新し、サーバ内に保持することである。
サーバ属性は、最初の特定プロセス(すなわち、起点情報によって特定されるプロセス)が動作しているサーバ(以下、起点サーバと記す。)であるか、起点サーバから見て呼び出し先側のサーバであるか、あるいは、起点サーバから見て呼び出し元側のサーバであるかを示す。また、後述するように、リスト内のレコードが、リストの最後に移動する場合がある。この場合、リストの最後に移動したレコードのサーバ属性は、レコードがリストの最後に移動したことを意味する所定の内容(本実施形態の例では「参照」という文字列)に書き換えられる。
呼び出し関係情報記憶手段4は、呼び出し関係情報を記憶する記憶装置である。呼び出し関係情報とは、どのプロセスが他のサーバのどのプロセスを呼び出しているかを示す情報である。図4は、呼び出し関係情報の例を示す模式図である。図4に例示する呼び出し関係情報は、サーバ1のプロセス“httpd”が、サーバ2のプロセス“java”を呼び出し、サーバ2のプロセス“java”が、サーバ3のプロセス“mysqld”を呼び出すという関係を示している。以下、「サーバ1」、「サーバ2」および「サーバ3」がサーバ名であるものとして説明する。そして、例えば、サーバ名が「サーバ1」であるサーバを、単にサーバ1と記す。予め管理者が呼び出し関係情報を作成し、呼び出し関係情報記憶手段4に記憶させておく。図4では、呼び出し関係を有するプロセスが3つである場合を例示しているが、呼び出し関係を有するプロセスの数は3つに限定されない。例えば、“mysqld”の呼び出し先側にさらにプロセスが存在していてもよい。同様に、“httpd”の呼び出し元側にさらにプロセスが存在していてもよい。
情報取得手段2は、特定プロセスに応じてファイル特定手段3がリストを生成すると、新たに特定プロセスを定める。このとき、情報取得手段2は、特定プロセスが呼び出しているプロセスを新たな特定プロセスに定める。ただし、特定プロセスが呼び出しているプロセスが存在しなくなった場合、情報取得手段2は、最初の特定プロセス(起点情報によって特定されるプロセス)の呼び出し元になっているプロセスを新たな特定プロセスに定める。その後、情報取得手段2は、呼び出し元になっているプロセスが存在しなくなるまで、順次、特定プロセスの呼び出し元になっているプロセスを新たな特定プロセスに定める。情報取得手段2は、呼び出し関係情報を参照して、あるプロセスが呼び出しているプロセスや、あるプロセスの呼び出し元となっているプロセスを判定すればよい。
ファイル特定手段3は、新たに特定プロセスが定められた場合、上記と同様にリストを生成する。そして、ファイル特定手段3は、新たに生成したリストを、既に生成したリストの最後に追加する。
順序制御手段5は、新たな特定プロセスが存在しなくなったときに、その時点で得られているリスト内のレコードの順序を操作する。順序制御手段5は、リストの先頭からレコードを順番に1つずつ選択する。順序制御手段5は、選択したレコードに対応するファイルの更新時刻の情報を、そのファイルを出力したサーバから取得する。このとき、順序制御手段5は、そのサーバの情報採取手段11に、ファイルの更新時刻の情報を要求し、情報採取手段11は、要求された更新時刻の情報を順序制御手段5に送信すればよい。順序制御手段5は、サーバから取得した更新時刻が、管理者によって指定された基準時刻(起点情報に含まれている基準時刻)よりも前の時刻であるか否かを判定する。順序制御手段5は、サーバから取得した更新時刻が基準時刻より前の時刻である場合、選択したレコードのサーバ属性を「参照」に書き換え、そのレコードをリストの最後に移動する。「参照」とは、レコードがリストの最後に移動したことを意味する。また、順序制御手段5は、サーバから取得した更新時刻が基準時刻以降の時刻である場合、そのレコードの内容および順序を変更しない。レコードをリストの最後に移動するか否かの判断基準として、順序制御手段5は、ファイルサイズを用いてもよい。
順序制御手段5は、未選択のレコードがなくなるまで、レコードを順番に1つずつ選択し、上記の処理を行う。
順序制御手段5の処理の後、表示手段6は、リストに含まれているファイル名を、サーバ別に表示する。このとき、順序制御手段5は、サーバ属性に応じて、ファイル名の表示態様を変える。本実施形態では、順序制御手段5が、サーバ属性だけでなく、ファイルの種別によっても、表示態様を変える場合を例にして説明する。
情報取得手段2、ファイル特定手段3、順序制御手段5および表示手段6は、例えば、ディスプレイ装置を有するコンピュータのCPU(Central Processing Unit)によって実現される。この場合、CPUは、コンピュータのプログラム記憶装置(図示略)等のプログラム記録媒体からファイル情報収集プログラムを読み込み、そのプログラムに従って、情報取得手段2、ファイル特定手段3、順序制御手段5および表示手段6として動作すればよい。表示手段6のうち、表示内容を決定する部分が、CPUによって実現される。表示手段6のうち、実際に表示を行う部分は、ディスプレイ装置によって実現される。この点は、後述の他の実施形態においても同様である。
また、情報取得手段2、ファイル特定手段3、順序制御手段5および表示手段6がそれぞれ別々のハードウェアによって実現されていてもよい。
次に、第1の実施形態の処理経過について説明する。図5、図6および図7は、本発明の第1の実施形態の処理経過の例を示すフローチャートである。
本発明のファイル情報収集システム1は、管理者によって起点情報が入力されると、ステップS1から処理を実行する。以下に示す例では、管理者が、図4に例示する呼び出し関係情報を予め呼び出し関係情報記憶手段4に記憶させている場合を例にして説明する。また、以下の説明では、アラートを出力したプロセスが、図4に例示する“java”である場合を例にして説明する。また、管理者によって入力された起点情報には、サーバ名“サーバ2”と、プロセス名“java”と、基準時刻“2015/8/24 13:00:00”とが含まれている場合を例にして説明する。
また、以下の説明では、図4に示す各サーバ1〜3で動作しているプロセスのプロセスID等、およびそれらのプロセスが開いているファイルのファイル名およびファイル属性が、図8に例示するように表される場合を例にして説明する。ただし、図8では、図4に示すプロセスを包含するツリー構造で表される各プロセスを示している。なお、図8に例示するように、プロセスIDをPIDと記す場合がある。また、「親PID」は、親プロセスのプロセスIDを意味する。「親PID」が“0”であるということは、親プロセスが存在しないことを意味する。また、以下の説明では、ライト可能というファイル属性を“W”で表し、リード可能というファイル属性を“R”と表し、リード/ライト可能というファイル属性を“W/R”と表す場合がある。
また、以下の説明では、ログファイルのファイル名およびログファイル候補のファイル名を判定する際、ファイル特定手段3が、図3に例示するinclude 条件およびexclude 条件を用いる場合を例にして説明する。
情報取得手段2は、特定プロセスを包含したプロセスの親子関係を示すツリー構造で表される各プロセスのプロセスIDを、特定プロセスが動作しているサーバから取得する(ステップS1)。
起点情報が入力された直後に実行されるステップS1では、起点情報に含まれるプロセス名によって特定されるプロセスが、特定プロセスになる。また、起点情報が入力された直後に実行されるステップS1では、起点情報に含まれるサーバ名によって特定されるサーバが、特定プロセスが動作しているサーバである。
情報取得手段2は、例えば、プロセス名“java”を指定して、そのプロセス名を有するプロセスのプロセスID、プロセス名、およびそのプロセスと親子関係にあるプロセスのプロセスID(親または子のプロセスID)を含むプロセス情報を、サーバ2から取得する。そして、情報取得手段2は、親または子のプロセスIDを指定して、そのプロセスIDに対応するプロセス情報をサーバ2から取得することを、親子関係のツリー構造が得られるまで繰り返せばよい。このように、情報取得手段2は、プロセスIDの他に、プロセス名等も取得してよい。
本例では、情報取得手段2は、図8に例示する情報52を、サーバ2から取得する。
続いて、情報取得手段2は、ステップS1で取得した各プロセスIDに対応する各プロセスが開いている各ファイルのファイル名およびファイル属性を、特定プロセスが動作しているサーバから取得する(ステップS2)。
ここでは、情報取得手段2は、プロセスIDが200(図8参照)であるプロセスが開いている各ファイルのファイル名およびファイル属性を、サーバ2から取得する。同様に、情報取得手段2は、プロセスIDが201であるプロセスが開いている各ファイルの情報、および、プロセスIDが201であるプロセスが開いている各ファイルの情報もサーバ2から取得する。
本例では、情報取得手段2は、図8に例示する情報55をサーバ2から取得する。情報54〜56はいずれも、プロセスIDとファイル名とファイル属性との組を含んでいる。なお、図8に例示する情報55では、プロセスID“201”,“202”に対応するファイル名およびファイル属性が含まれていない。このことは、プロセスID“201”,“202”に対応するプロセスはファイルを開いていないことを意味する。
次に、ファイル特定手段3は、ステップS2で取得されたファイル名のうち、ファイル属性がライト可能またはリード/ライト可能となっているファイル名を選択する。さらに、ファイル特定手段3は、選択したファイル名の集合の中に同一のファイル名が複数あれば、重複を排除する(ステップS3)。
本例では、情報55として図8に示す各ファイル名のうち、ファイル特定手段3は、1番目から4番目までの各ファイル名までを選択する。また、これらの4つのファイル名は重複していないので、ファイル特定手段3は、重複排除は行わなくてよい。
次に、ファイル特定手段3は、ステップS3の結果得た各ファイル名に基づいて、その各ファイル名の中から、ログファイルのファイル名およびログファイル候補のファイル名を特定する(ステップS4)。
図8に示す情報55における1番目から4番目までの各ファイル名は、いずれも、「include 条件を満たし、かつ、exclude 条件を満たしていない」という条件を満足している。従って、ファイル特定手段3は、その4つのファイル名がいずれもログファイルのファイル名であると判定する。この4つのファイル名の中には、ログファイル候補のファイル名は存在していない。
次に、ファイル特定手段3は、ログファイルのファイル名毎、および、ログファイル名候補のファイル名毎に、サーバ名、ファイル名、サーバ属性、ファイルの種別を含むレコードを作成し、レコードのリストを生成する(ステップS5)。
本例では、ファイル特定手段3は、図9に例示するリストを生成する。サーバ2は、起点サーバであるので、図9に示す各レコードのサーバ属性は、「起点」である。また、ステップS4の結果により、ここでは、「ファイルの種別」は、全て「ログファイル」である。
ファイル特定手段3は、以前にステップS5を実行している場合、既に生成済みのリストの最後に、新たに生成したリストを追加する。ここでは、起点情報入力後、最初にステップS5に移行した状態であるので、既存のリストはない。従って、ここでは、ファイル特定手段3は、図9に示すリストを生成すればよい。
なお、ファイル特定手段3は、リスト(既存のリストに新たなリストを追加した場合には、追加後のリスト)内にログファイル候補のレコードがある場合、そのレコードをリストの最後に移動する。
ステップS5の後、情報取得手段2は、現在の特定プロセスが最初の特定プロセス(起点情報によって特定されるプロセス)よりも呼び出し元側のプロセスであるか否かを示すフラグ(以下、単にフラグと記す。)の値が1であるか否かを判定する(ステップS6)。フラグの初期値は0である。フラグの値が1であるということは、現在の特定プロセスが最初の特定プロセスよりも呼び出し元側のプロセスであることを意味する。フラグの値が0であるということは、現在の特定プロセスが最初の特定プロセスよりも呼び出し元側のプロセスでないことを意味する。
フラグの値が1であれば(ステップS6のYes)、ステップS12に移行し、フラグの値が0であれば(ステップS6のNo)、ステップS7に移行する。ここでは、フラグの値は初期値“0”であるので、ステップS7に移行する。
ステップS7において、情報取得手段2は、現在の特定プロセスの呼び出し先のプロセスが存在するか否かを、呼び出し関係情報(図4参照)に基づいて判定する(ステップS7)。現在の特定プロセスの呼び出し先のプロセスが存在する場合(ステップS7のYes)、ステップS8に移行し、存在しない場合(ステップS7のNo)、ステップS9に移行する。ここでは、現在の特定プロセスの呼び出し先のプロセス(“mysqld”)が存在するので、ステップS8に移行する。
ステップS8において、情報取得手段2は、現在の特定プロセスが呼び出しているプロセスを新たな特定プロセスとして定める(ステップS8)。また、情報取得手段2は、呼び出し関係情報(図4参照)を参照して、新たな特定プロセスが動作しているサーバを認識する。ここでは、情報取得手段2は、“java”が呼び出している“mysqld”を新たな特定プロセスとして定める。また、情報取得手段2は、“mysqld”が動作しているサーバが、サーバ3であることを認識する。
ステップS8の後、ステップS1に移行し、ステップS1以降の動作を繰り返す。
“mysqld”が特定プロセスとなった場合、情報取得手段2は、ステップS1で、図8に例示する情報53をサーバ3から取得する。さらに、情報取得手段2は、ステップS2で、図8に例示する情報56をサーバ3から取得する。
ステップS3において、ファイル特定手段3は、情報56として示す各ファイル名のうち、1番目、3番目および4番目のファイル名を選択する。これらの3つのファイル名は重複していないので、ファイル特定手段3は、重複排除は行わなくてよい。
ステップS3の結果得た各ファイル名のうち、“/dev/null” は、「include 条件を満たし、かつ、exclude 条件を満たしていない」という条件も、「include 条件とexclude 条件の双方を満たしていない」という条件も満たしていない。
また、“/var/log/mysqld.log” は、「include 条件を満たし、かつ、exclude 条件を満たしていない」という条件を満たしている。
また、“/var/lib/mysql/ib_logfile”は、「include 条件とexclude 条件の双方を満たしていない」という条件を満たしている。
従って、ステップS4において、ファイル特定手段3は、“/dev/null”は、ログファイルおよびログファイル候補のいずれにも該当しないと判定する。また、ファイル特定手段3は、“/var/log/mysqld.log” がログファイルのファイル名であり、“/var/lib/mysql/ib_logfile”がログファイル候補のファイル名であると判定する。
次のステップS5において、ファイル特定手段3は、“/var/log/mysqld.log” のレコードおよび“/var/lib/mysql/ib_logfile”のレコードを含むリストを作成する。これらのレコードにおけるサーバ属性は全て「呼び出し先」である。また、“/var/log/mysqld.log” のレコードにおいて、ファイルの種別はログファイルである。“/var/lib/mysql/ib_logfile”のレコードにおいて、ファイルの種別はログファイル候補である。
ここでは、既存のリスト(前回のステップS5で作成したリスト、図9参照)が存在する。従って、ファイル特定手段3は、新たに作成したリストを既存のリストの最後に追加する。この結果、図10に示すリストが得られる。
次に、情報取得手段2は、フラグの値が1であるか否かを判定する(ステップS6)。ここでは、フラグの値は0であるので、ステップS7に移行する。
情報取得手段2は、現在の特定プロセス(“mysqld”)の呼び出し先のプロセスが存在するか否かを、呼び出し関係情報に基づいて判定する(ステップS7)。本例では、“mysqld”の呼び出し先のプロセスが存在しないので(図4参照)、ステップS9に移行する。“mysqld”の呼び出し先のプロセスが存在する場合には、再度、ステップS8以降の処理を実行すればよい。
ステップS9において、情報取得手段2は、最初の特定プロセス(“java”)を呼び出しているプロセスが存在するか否かを、呼び出し関係情報(図4参照)に基づいて判定する(ステップS9)。最初の特定プロセス(“java”)を呼び出しているプロセスが存在する場合(ステップS9のYes)、ステップS10に移行し、存在しない場合(ステップS9のNo)、ステップS14に移行する。例えば、図4に示す“httpd”が起点情報に記載されている場合、ステップS9からステップS14に移行する。ここでは、最初の特定プロセス(“java”)を呼び出しているプロセス“httpd”が存在するので、ステップS10に移行する。
ステップS10において、情報取得手段2は、最初の特定プロセス(“java”)を呼び出しているプロセスを新たな特定プロセスとして定める(ステップS10)。ここでは、情報取得手段2は、“java”を呼び出している“httpd”を新たな特定プロセスとして定める。また、情報取得手段2は、“httpd”が動作しているサーバが、サーバ1であることを認識する。
次に、情報取得手段2は、フラグの値を1に変更する(ステップS11)。
ステップS11の後、ステップS1に移行し、ステップS1以降の動作を繰り返す。
“httpd”が特定プロセスとなった場合、ステップS1で、図8に例示する情報51をサーバ1から取得する。さらに、情報取得手段2は、ステップS2で、図8に例示する情報54をサーバ1から取得する。
ステップS3において、ファイル特定手段3は、情報54として示す各ファイル名のうち、1番目、2番目、4番目、5番目、7番目および8番目のファイル名を選択する。これらのファイルのうち、1番目、4番目および7番目のファイル名(“/var/log/access.log” )は重複しているので、ファイル特定手段3は、重複を排除する。例えば、ファイル特定手段3は、4番目および7番目のファイル名を破棄し、1番目だけを残す。同様に、2番目、5番目および8番目のファイル名(“/var/log/error.log”)は重複しているので、ファイル特定手段3は、重複を廃棄する。
この結果得られた2つのファイル名(“/var/log/access.log” および“/var/log/error.log”)は、「include 条件を満たし、かつ、exclude 条件を満たしていない」という条件を満たしている。従って、ファイル特定手段3は、この2つのファイル名がいずれもログファイルのファイル名であると判定する(ステップS4)。
次のステップS5において、ファイル特定手段3は、“/var/log/access.log” のレコードおよび“/var/log/error.log”のレコードを含むリストを作成する。これらのレコードにおけるサーバ属性は全て「呼び出し元」である。また、これらのレコードにおけるファイルの種別は全て「ログファイル」である。
さらに、ファイル特定手段3は、そのリストを、既存のリスト(図10参照)の最後に追加する。また、ファイル特定手段3は、ログファイル候補のレコードをリストの最後に移動する。この結果、図11に示すリストが得られる。
次に、情報取得手段2は、フラグの値が1であるか否かを判定する(ステップS6)。ここでは、フラグの値は1であるので、ステップS12に移行する。
ステップS12において、情報取得手段2は、現在の特定プロセス(“httpd”)を呼び出しているプロセスが存在するか否かを、呼び出し関係情報(図4参照)に基づいて判定する(ステップS12)。
現在の特定プロセスを呼び出しているプロセスが存在する場合(ステップS12のYes)、情報取得手段2は、現在の特定プロセスを呼び出しているプロセスを新たな特定プロセスとして定める(ステップS13)。このとき、情報取得手段2は、そのプロセスが動作しているサーバも認識する。この後、ステップS1に移行し、ステップS1以降の動作を繰り返す。
現在のプロセスを呼び出しているプロセスが存在しない場合(ステップS12のNo)、ステップS14に移行する。本例では、“httpd”を呼び出しているプロセスは存在しないので、ステップS14に移行する。
ステップS14では、順序制御手段5は、生成されたリスト(図11参照)内のレコードを全て選択したか否かを判定する(ステップS14)。
未選択のレコードが残っている場合(ステップS14のNo)、順序制御手段5は、リストの先頭側に最も近い未選択のレコードを選択する(ステップS15)。例えば、1番最初にステップS15に移行した場合、順序制御手段5は、リストの1番目のレコードを選択する。ここでは、図11に示す1番目のレコードを選択した場合を例にして説明する。
また、サーバ1、サーバ2およびサーバ3が、図11に示す各ファイル名のファイルを更新した時刻は、図12に例示する時刻であるものとする。また、ここでは、図11に示す各ファイルのサイズはいずれも0でないものとし、ファイルの更新時刻に着目して説明する。
ステップS15の後、順序制御手段5は、選択したレコードに対応するファイルを出力したサーバから、そのファイルの更新時刻およびサイズの情報を取得する(ステップS16)。ここでは、順序制御手段5は、サーバ2から、“/opt/tomcat/log/catalina.out”の更新日時およびサイズの情報を取得する。順序制御手段5は、取得した更新日時の情報を、ステップS15で選択したレコードに追加してもよい。
ステップS16の後、順序制御手段5は、選択したレコードに対応するファイルの更新時刻が基準時刻より前の時刻であるか否かを判定するとともに、そのファイルのサイズが0であるか否かを判定する(ステップS17)。説明を簡単にするために、前述のように、図11に示す各ファイルのサイズは0でないものとする。
更新時刻が基準時刻より前であるか、または、ファイルのサイズが0である場合(ステップS17のYes)、ステップS18に移行する。また、更新時刻が基準時刻以降の時刻であり、かつ、ファイルのサイズが0でない場合(ステップS17のNo)、順序制御手段5は、ステップS14以降の処理を繰り返す。“/opt/tomcat/log/catalina.out”の更新日時は“2015/8/24 14:00:00”であり(図12参照)、入力された起点情報が示す基準時刻“2015/8/24 13:00:00”以降の時刻である。また、“/opt/tomcat/log/catalina.out”のファイルサイズは0ではない。従って、ここでは、順序制御手段5は、ステップS17からステップS14に移行し、ステップS14以降の処理を行う。
2番目のレコード(“/opt/tomcat/log/catalina.log”)を選択した場合にも、順序制御手段5は、ステップS17からステップS14に移行する。
ステップS15で、順序制御手段5が、図11に示す3番目のレコード(“/opt/tomcat/log/localhost.log” )を選択したとする。順序制御手段5は、このレコードに対応するファイルの更新時刻の情報として、“2015/8/24 00:00:00”(図12参照)を取得する(ステップS16)。
従って、順序制御手段5は、“/opt/tomcat/log/localhost.log” の更新時刻は基準時刻より前であると判定し(ステップS17のYes)、ステップS18に移行する。
ステップS18では、順序制御手段5は、選択したレコードのサーバ属性の内容を「参照」に書き換え、そのレコードをリストの最後に移動する(ステップS18)。従って、順序制御手段5は、図11に示す3番目のレコードのサーバ属性を「参照」に書き換え、リストの最後に移動する。ステップS18の後、順序制御手段5は、ステップS14に移行し、ステップS14以降の処理を行う。
図11に示す4番目のレコードの更新時刻は“2015/8/24 01:00:00”であり、基準時刻よりも前の時刻である。従って、順序制御手段5は、図11に示す4番目のレコードを選択した場合にも、ステップS17からステップS18に移行し、図11に示す4番目のレコードのサーバ属性を「参照」に書き換え、そのレコードをリストの最後に移動する。この時点でのリストは、図13に示すようになる。この後、順序制御手段5は、ステップS14以降の処理を行う。
ステップS15で、図11に示す最後のレコード(“/var/lib/mysql/ib_logfile” )を選択した場合、ステップS17からステップS14に戻る。この結果、リストは、図14に示すようになる。
図11に示す最後のレコード(“/var/lib/mysql/ib_logfile” )を選択した後、ステップS14に移行した場合、リスト内のレコードが全て選択済みとなっている(ステップS14のYes)。この場合、ステップS19に移行する。
なお、上記の説明では、主に更新時刻に着目して、ステップS17を説明したが、ステップS16で取得したファイルのサイズが0である場合にも、ステップS18に移行する。すなわち、ファイルのサイズが0である場合にも、順序制御手段5は、選択しているレコードのサーバ属性を「参照」に書き換え、そのレコードをリストの最後に移動する。
ステップS19では、表示手段6が、リストに含まれている各ファイル名をサーバ別に表示する(ステップS19)。このとき、表示手段6は、サーバ属性に応じて、ファイル名の表示態様を変える。また、表示手段6は、サーバ属性だけでなく、ファイルの種別によってもファイル名の表示態様を変えてもよい。本実施形態では、表示手段6がファイル名の表示部分の背景を、サーバ属性およびファイルの種別に応じて変える場合を例にして説明する。
図15は、表示手段6が表示する画面の例を示す説明図である。この画面内で表示されるファイル名は、リストに含まれているファイル名である。表示手段6は、例えば、各サーバを示すアイコン61〜63を表示する。そして、表示手段6は、そのアイコンの近傍に、サーバが出力したファイルのファイル名を表示する。例えば、表示手段6は、サーバ1のアイコン61の近傍に、サーバ1が出力したファイルのファイル名を表示する。アイコン62,63に関しても同様である。
また、表示手段6は、サーバ属性が参照であるレコードのファイル名の背景を、他のファイル名の背景と異なる背景にする。図15に示す例では、サーバ属性が「参照」であるレコードのファイル名の背景を斜線としている。同様に、表示手段6は、ファイルの種別がログファイル候補であるレコードのファイル名の背景を、他のファイル名の背景と異なる背景にする。図15に示す例では、ファイルの種別がログファイル候補であるレコードのファイル名(サーバ3下)の背景をグレーにしている。
図15に例示する画面に表示されるファイル名は、いずれも、ログファイルまたはログファイル候補のファイル名である。従って、管理者は、ログファイルまたはログファイル候補のファイル名を把握することができる。
また、サーバ属性が「参照」であるファイルは、更新時刻が基準時刻(アラートの出力時刻)より前であるか、あるいは、ファイルのサイズが0であるファイルである。更新時刻が基準時刻より前であるファイルは、ログファイルであったとしても、アラート出力の起因となったエラーとの関連性が低いと考えられる。同様に、サイズが0のファイルも、ログファイルであったとしても、アラート出力の起因となったエラーとの関連性が低いと考えられる。従って、これらのファイルは、アラート出力の起因となったエラーの解析の際、重要度は低い。図15に例示する画面によって、管理者は、そのような重要度の低いファイルのファイル名を把握することができる。また、ログファイル候補は、ログファイルに比べて重要度が低いと言える。図15に例示する画面によって、管理者は、ログファイルと、ログファイル候補とを区別して把握することができる。
第1の実施形態によれば、情報取得手段2が、起点情報や呼び出し関係情報に基づいて特定プロセスを定める。そして、情報取得手段2が、そのプロセスを包含するツリー構造(親子関係を示すツリー構造)によって表される各プロセスが開いている各ファイルのファイル名およびファイル属性を取得する。そして、情報取得手段2が、ファイル属性がライト可能またはリード/ライト可能となっているファイル名を選択し、そのファイル名に基づいて、ログファイルのファイル名およびログファイル候補のファイル名を特定する。さらに、情報取得手段2が、ログファイルのファイル名を含むレコード、および、ログファイル候補のファイル名を含むレコードのリストを生成する。また、順序制御手段5は、生成されたリスト内で、ファイルの更新時刻が基準時刻より前のレコードや、サイズが0であるファイルのレコードをリストの最後に移動する。
従って、アラートの出力の起因となったエラーに関連するファイルのリストが生成されるので、管理者は、全てのログファイルを把握していなくても、障害解析のための適切なログファイルのファイル名のリストを得ることができる。この結果、管理者は、障害解析のための適切なログファイルを把握することができる。
また、ファイルの更新時刻が基準時刻より前のレコードや、サイズが0であるファイルのレコードは、リストの最後に移動しているので、エラーとの関連性が高いファイルのファイル名がリストの先頭から並ぶことになる。従って、管理者は、エラーとの関連性が高いファイルとそうでないファイルを区別して把握することができる。
さらに、本実施形態では、ファイルの種別がログファイルとログファイル候補とに分類されている。従って、管理者は、ログファイルと、ログファイル候補とを区別して把握することができる。
さらに、表示手段6は、図15に例示するように、サーバ属性やファイルの種別に応じて表示態様を変えて、ファイル名を表示する。従って、管理者は、エラーとの関連性が高いファイルとそうでないファイルとを容易に区別することができる。同様に、管理者は、ログファイルとログファイル候補とを容易に区別することができる。
実施形態2.
第2の実施形態のファイル情報収集システムは、リストを生成するだけでなく、リスト内のレコードに対応するファイルをサーバから取得する。ただし、ファイル情報収集システムは、リスト内の各レコードに対応する全てのファイルを取得するとは限らない。
図16は、本発明の第2の実施形態のファイル情報収集システムの構成例を示すブロック図である。図16では、図1と同様に、サーバ10a〜10nも図示している。また、第1の実施形態のファイル情報収集システムの要素と同一の要素については、図1と同一の符号を付し、説明を省略する。
各サーバ10a〜10nはそれぞれ、情報採取手段11と、ファイル送信手段12とを備える。情報採取手段11は、第1の実施形態における情報採取手段11と同様であり、説明を省略する。
ファイル送信手段12は、ファイル情報収集システム1から要求されたファイルを、ファイル情報収集システム1に送信する。
第2の実施形態のファイル情報収集システム1は、第1の実施形態のファイル情報収集システム1が備える各手段に加え、ファイル判定手段7を備える。
順序制御手段5は、第1の実施形態で示した処理の他に、以下の処理も実行する。順序制御手段5は、ステップS14(図7参照)で、リスト内のレコードを全て選択したと判定した場合(ステップS14のYes)、その時点で得られているリストから、再度、レコードを選択する。このとき、順序制御手段5は、リストの先頭側から、サーバ名が共通であって連続する未選択のレコードの集合を、サーバ名毎に順次、選択する。また、本実施形態では、サーバ属性が「起点」または「呼び出し先」であるレコードが選択対象である場合を例にして説明する。サーバ属性が「起点」または「呼び出し先」であるレコードは、リストの先頭から連続して並んでいる。
そして、順序制御手段5は、選択した各レコードに対応する各ファイルを、その各ファイルを出力したサーバに要求することによって、その各ファイルを取得する。このとき、ファイル送信手段12は、順序制御手段5から要求されたファイルを順序制御手段5に送信すればよい。
ファイル判定手段7は、順序制御手段5がサーバから取得したファイル毎に、エラーが発生したことを示す情報(以下、エラー情報と記す。)を含んでいるか否かを判定する。ファイル判定手段7は、エラー情報を含んでいないファイルに対応するレコードの「ファイルの種別」を「ログファイル_NOERROR」に変更する。「ログファイル_NOERROR」は、ファイルがエラー情報を含んでいないということを示す。
また、順序制御手段5は、選択したレコードの集合に属する全てのレコードで「ファイルの種別」がログファイル_NOERRORとなった場合、そのレコードに対応する各ファイルを出力したサーバよりも呼び出し先側のサーバから出力されたファイルに対応するレコードの集合をリストの最後に移動する。また、順序制御手段5は、その集合に属するレコードの「ファイルの種別」を「ログファイル_NOERROR」に変更する。
情報取得手段2、ファイル特定手段3、順序制御手段5、表示手段6およびファイル判定手段7は、例えば、ディスプレイ装置を有するコンピュータのCPUによって実現される。この場合、CPUは、コンピュータのプログラム記憶装置(図示略)等のプログラム記録媒体からファイル情報収集プログラムを読み込み、そのプログラムに従って、情報取得手段2、ファイル特定手段3、順序制御手段5、表示手段6およびファイル判定手段7として動作すればよい。また、各手段がそれぞれ別々のハードウェアによって実現されていてもよい。
次に、第2の実施形態の処理経過について説明する。図17は、本発明の第2の実施形態の処理経過の例を示すフローチャートである。ステップS1〜S18の動作は、第1の実施形態と同様であり、説明を省略する。図17では、ステップS14(図7参照)でリスト内のレコードを全て選択したと判定した後(ステップS14のYes)の動作を図示している。
前述のように、順序制御手段5は、ステップS14でリスト内のレコードを全て選択したと判定した場合、その時点で得られているリストから、再度、レコードを選択する。本実施形態では、ステップS14でリスト内のレコードを全て選択したと判定した時点で、図18に例示するリストが得られている場合を例にして説明する。図18に示すサーバ4は、サーバ3の呼び出し先側のサーバである。また、図18では、サーバ属性が「参照」であるレコードが存在しない場合を例示しているが、サーバ属性が「参照」であるレコードがリスト内に含まれていてもよい。ただし、第1の実施形態の説明から明らかなように、サーバ属性が「参照」であるレコードの集合は、リストの最後に連続して並ぶ。
順序制御手段5は、リストから、サーバ属性が「起点」または「呼び出し先」となっているレコードを全て選択したか否かを判定する(ステップS21)。このことは、サーバ属性が「起点」または「呼び出し先」となっているレコードに対応するファイルが取得対象であることを意味する。図18に示す例では、1番目から5番目までの各レコードに対応するファイルが取得対象となる。ただし、後述するように、取得対象のファイルであっても、順序制御手段5が、サーバから取得しない場合がある。
サーバ属性が「起点」または「呼び出し先」となっているレコードであって未選択となっているレコードがあれば(ステップS21のNo)、順序制御手段5はステップS22に移行する。
ステップS22において、順序制御手段5は、共通のサーバから出力されたファイルに対応するレコードの集合であって、連続するレコードの集合を選択する(ステップS22)。順序制御手段5は、サーバ名が共通であって連続する未選択のレコードを選択すればよい。ただし、順序制御手段5は、リストの先頭に最も近い未選択のレコードの集合を選択する。なお、ステップS22で選択されるレコードの集合に属するレコードの数は1個であってもよい。例えば、あるサーバ名のレコードが1つしか存在しない場合には、順序制御手段5は、ステップS22で、その1つのレコードを選択すればよい。
最初にステップS22に移行した場合、順序制御手段5は、リスト(図18参照)の先頭から、サーバ名が「サーバ2」となっている連続する2つのレコードを選択する。
順序制御手段5は、ステップS22で選択したレコードに対応する各ファイルを、その各ファイルを出力したサーバから取得する(ステップS23)。本例では、順序制御手段5は、図18に示す1番目および2番目の各レコードに対応する各ファイルをサーバ2のファイル送信手段12に要求することによって、その各ファイルを取得する。
順序制御手段5は、ステップS23において、ファイルをサーバに要求する際、基準時刻の情報もサーバに送信し、ファイルの記載内容のうち、その基準時刻以降の記録に該当する部分のみを要求してもよい。この要求を受けたファイル送信手段12は、要求されたファイルの記載内容のうち、基準時刻以降の記録に該当する部分のみを順序制御手段5に送信してもよい。ログファイルには、時系列順に種々の事項が記録されるが、基準時刻より前の時刻の記録は、アラート出力の起因となったエラーとの関連性が低いと考えられる。従って、順序制御手段5は、基準時刻以降の記録に該当する部分のみを取得することによって、ファイル情報収集システム1が保持するファイルの容量の増加を抑えることができる。
なお、順序制御手段5は、ステップS23において、要求したファイル全体をサーバから取得してもよい。
次に、ファイル判定手段7は、ステップS23で得られたファイル毎に、エラー情報を含んでいるか否かを判定する(ステップS24)。ファイル判定手段7は、ファイル内に所定のエラーレベルが記録されていれば、そのファイルがエラー情報を含んでいると判定し、ファイル内に所定のエラーレベルが記録されていなければ、そのファイルがエラー情報を含んでいないと判定してもよい。また、ファイル判定手段7は、ファイル内に所定の文言(例えば、“error”,“fatal”等の文言)が含まれていれば、そのファイルがエラー情報を含んでいると判定し、ファイル内に上記の所定の文言が含まれていなければ、そのファイルがエラー情報を含んでいないと判定してもよい。
また、ステップS24において、ファイル判定手段7は、エラー情報を含んでいないと判定したファイルに対応するレコードの「ファイルの種別」をログファイル_NOERRORに変更する。
次に、順序制御手段5は、ステップS22で選択したレコードの集合に属する全てのレコードで「ファイルの種別」がログファイル_NOERRORになっているか否かを判定する(ステップS25)。選択したレコードの集合に属する全てのレコードで「ファイルの種別」がログファイル_NOERRORであるということは、ステップS22で取得した全てのファイルがエラー情報を含んでいないということである。
選択したレコードの集合に属する全てのレコードの中で、「ファイルの種別」がログファイル_NOERRORでないレコードが存在する場合(ステップS25のNo)、ステップS21に移行し、ステップS21以降の動作を行う。
選択したレコードの集合に属する全てのレコードで「ファイルの種別」がログファイル_NOERRORである場合(ステップS25のYes)、ステップS26に移行する。
本例では、図18に示す1番目および2番目の各レコードに対応する各ファイルはエラー情報を含んでいるものとして説明する。この場合、1番目および2番目の各レコードのファイルの種別は変更されず、ステップS25から、ステップS21に移行する。
この場合、サーバ属性が「起点」または「呼び出し先」となっているレコードであって未選択となっているレコード(図18に示す3番目から5番目までのレコード)が存在する(ステップS21のNo)。従って、順序制御手段5は、サーバ名が「サーバ3」となっている連続する2つのレコード(図18に示す3番目および4番目のレコード)を選択する(ステップS22)。
次に、順序制御手段5は、その2つのレコードに対応するファイルを、サーバ3に要求することによって、サーバ3から2つのファイルを取得する(ステップS23)。
図18に示す3番目および4番目の各レコードに対応する2つのファイルがいずれもエラー情報を含んでいないものとして説明する。この場合、ファイル判定手段7は、その2つのファイルがそれぞれエラー情報を含んでいないと判定し、ステップS22で選択された2つのレコードの「ファイルの種別」をログファイル_NOERRORに変更する(ステップS24)。
そして、順序制御手段5は、ステップS22で選択したレコードの集合に属する全てのレコードで「ファイルの種別」がログファイル_NOERRORになっていると判定し(ステップS25のYes)、ステップS26に移行する。
ステップS26において、順序制御手段5は、直近のステップS22で選択したレコードの集合(図18に示す3番目および4番目のレコード)の後に続くレコードの集合であって、サーバ属性が「呼び出し先」となっているレコードの集合をリストの最後に移動する。さらに、順序制御手段5は、その集合に属するレコードの「ファイルの種別」をログファイル_NOERRORに変更する(ステップS26)。
本例では、図18に示す3番目および4番目のレコードの後に続くレコードの集合であって、サーバ属性が「呼び出し先」となっているレコードの集合は、図18に示す5番目のレコードのみを含む集合である。従って、順序制御手段5は、図18に示す5番目のレコードをリストの最後に移動し、その2つのレコードの「ファイルの種別」をログファイル_NOERRORに変更する。図19は、この時点でのリストの状態を示す模式図である。
ステップS26の後、ステップS27に移行する。このことは、ステップS21,S22に移行せず、レコードの集合の選択を中止すること意味する。
ステップS27において、表示手段6は、リストに含まれている各ファイル名をサーバ別に表示する(ステップS27)。このとき、表示手段6は、サーバ属性およびファイルの種別に応じて、ファイル名の表示態様を変える。
図20は、表示手段6が表示する画面の例を示す説明図である。表示手段6は、例えば、各サーバを示すアイコン61〜64を表示する。そして、表示手段6は、そのアイコンの近傍に、サーバが出力したファイルのファイル名を表示する。この点は、第1の実施形態におけるステップS19と同様である。
さらに、表示手段6は、ファイルの種別がログファイル_NOERRORであるレコードのファイル名の背景を、他のファイル名の背景と異なる背景にする(図19および図20参照)。同様に、表示手段6は、ファイルの種別がログファイル候補であるレコードのファイル名の背景を、他のファイル名の背景と異なる背景にする(図19および図20参照)。
また、図18および図19に示す例では、サーバ属性が「参照」であるレコードが存在していない場合を示しているが、サーバ属性が参照であるレコードが存在する場合、表示手段6は、そのレコードのファイル名の背景を、他のファイル名の背景と異なる背景にする。
また、表示手段6は、サーバから取得したファイルのファイル名と、サーバから取得していないファイルのファイル名とで、表示態様を変えてもよい。
ステップS27で処理を終了する。
上記の例では、ファイル情報収集システム1は、サーバ4が出力したファイル“/var/log/storage.log”を取得せずに、処理を終了することになる。既に述べたように、いずれかのサーバでエラーが生じた場合、そのサーバから見て呼び出し元のサーバにエラーが波及していく。従って、サーバ3が出力した各ファイルがいずれもエラー情報を含んでいない場合、サーバ3から見て呼び出し先側のサーバ4が出力したファイルもエラー情報を含んでいないと考えられる。さらに、エラー情報を含まないファイルは、取得したとしても、エラー発生箇所の特定等の障害解析にあまり寄与しないと考えられる。よって、サーバ4が出力したファイルを取得しないことで、障害解析にあまり寄与しないと考えられるファイルの保持量を抑えることができる。
以上の説明では、図18に示す3番目および4番目の各レコードに対応する2つのファイルがエラー情報を含んでいない場合を示した。
図18に示す3番目および4番目の各レコードに対応する2つのファイルのうち、少なくともいずれか一方がエラー情報を含んでいる場合には、ステップS25からステップS21に移行し、ステップ21以降の動作を行う。この場合、ステップS21からステップS22に移行し、順序制御手段5は、図18に示す5番目のレコードを選択する。その後、ステップS23,S24,S25に移行する。ステップS25で、順序制御手段5が、図18に示す5番目のレコードの「ファイルの種別」がログファイル_NOERRORでないと判定したとする(ステップS25のNo)。すなわち、そのレコードに対応するファイルがエラー情報を含んでいたとする。この場合、再度、ステップS21に移行する。ここで、順序制御手段5は、リストから、サーバ属性が「起点」または「呼び出し先」となっているレコードを全て選択したと判定する(ステップS21のYes)。この場合、表示手段6は、ステップS27の表示処理を実行する。ステップS27の表示処理は既に説明した通りであるので、ここでは説明を省略する。このように、図17に示す例では、ステップS26からステップS27に移行して処理を終了する場合と、ステップS21からステップS27に移行して処理を終了する場合とがある。
第2の実施形態によれば、第1の実施形態と同様の効果が得られる。さらに、第2の実施形態では、障害解析に用いるファイルを各サーバからファイル情報収集システム1に集めることができる。前述のように、いずれかのサーバでエラーが生じた場合、そのサーバから見て呼び出し元のサーバにエラーが波及していく。従って、エラー発生箇所の特定等の障害解析では、起点サーバ、および、呼び出し先側の各サーバが出力したファイルが重要であると言える。本実施形態では、起点サーバ、および、呼び出し先側の各サーバが出力したファイルをファイル情報収集システム1が取得することができる。
また、あるサーバが出力した各ファイルにエラー情報が含まれていなければ、そのサーバの呼び出し先側の各サーバが出力したファイルにもエラー情報が含まれていないと考えられる。本実施形態では、そのような呼び出し先側の各サーバが出力したファイルを、ファイル情報収集システム1は取得しない。従って、障害解析にあまり寄与しないと考えられるファイルの保持量を抑えることができる。
図17に示すフローチャートにおいて、ステップS22の後、ファイル情報収集システム1は、ステップS22で選択したレコードの集合に属するレコード毎に、ステップS23,S24の処理を実行してもよい。例えば、ファイル情報収集システム1は、ステップS22で選択したレコードの集合に属する1つのレコードを対象に、ステップS23,S24の処理を実行した後、次のレコードを対象に、ステップS23,S24の処理を実行してもよい。そして、ファイル情報収集システム1は、選択したレコードの集合に属する全てのレコードに関してステップS23,S24の処理を終えた後に、ステップS25に移行してもよい。
次に、第2の実施形態の変形例について説明する。
上記の第2の実施形態では、ステップS21において、順序制御手段5は、リストから、サーバ属性が「起点」または「呼び出し先」となっているレコードを全て選択したか否かを判定する場合を説明した。
ステップS21において、順序制御手段5は、リストから、サーバ属性が「起点」、「呼び出し先」または「呼び出し元」となっているレコードを全て選択したか否かを判定してもよい。このことは、サーバ属性が「起点」、「呼び出し先」、「呼び出し元」のいずれかになっているレコードに対応するファイルが取得対象であることを意味する。この場合、ステップS26の後、ステップS21に移行してもよい。ただし、順序制御手段5は、ステップS26でリストの最後に移動されたレコードの集合は選択済みであるものとみなして、ステップS21の判定を行う。
また、ステップS22で、順序制御手段5が、サーバ属性が「呼び出し元」となっているファイルの集合を選択した場合、順序制御手段5は、ステップS25の判定処理は行わず、ステップS24の後、ステップS21に移行する。
この場合、ファイル情報収集システム1は、起点サーバから見て呼び出し元側のサーバが出力したログファイルも取得することができる。
また、ファイル情報収集システム1は、リストに含まれる全てのレコードに対応する各ファイルを収集してもよい。
実施形態3.
第3の実施形態のファイル情報収集システムは、サーバの通信記録情報に基づいて、呼び出し関係情報を生成し、その呼び出し関係情報を記憶する。
図21は、本発明の第3の実施形態のファイル情報収集システムの構成例を示すブロック図である。図21では、図1と同様に、サーバ10a〜10nも図示している。また、第1の実施形態のファイル情報収集システムの要素と同一の要素については、図1と同一の符号を付し、説明を省略する。
各サーバ10a〜10nはそれぞれ、情報採取手段11と、通信記録手段13とを備える。情報採取手段11は、第1の実施形態における情報採取手段11と同様であり、説明を省略する。
通信記録手段13は、他のサーバとの通信の通信記録情報を生成し、保持する。通信記録情報は、プロセスIDと、自ポート番号と、宛先と、宛先ポート番号との組み合わせを含む。図22は、サーバ1〜3がそれぞれ生成した通信記録情報の例を示す説明図である。
プロセスIDは、通信記録手段13を備えるサーバ上で動作するプロセスのIDである。例えば、サーバ1の通信記録手段13が生成した通信記録情報に記述されているプロセスIDは、サーバ1上で動作するプロセスのプロセスIDである。
自ポート番号は、通信記録手段13を備えるサーバのポートのポート番号である。例えば、サーバ1の通信記録手段13が生成した通信記録情報に記述されている自ポート番号は、サーバ1のポート番号である。
宛先は、通信記録手段13を備えるサーバと通信したサーバのサーバ名である。例えば、サーバ1の通信記録手段13が生成した通信記録情報に記述されている宛先は、サーバ1と通信したサーバのサーバ名である。
宛先ポート番号は、通信記録手段13を備えるサーバと通信したサーバのポート番号である。より具体的には、宛先ポート番号は、通信記録手段13を備えるサーバの通信相手となるサーバが通信時に用いたポートのポート番号である。
図22に示すサーバ1の通信記録情報71の最後の行を例にして説明すると、この最後の行は、以下の事項を表している。サーバ1のプロセス“101”は、サーバ2と通信し、その時、プロセス“101”は、サーバ1のポート“33894”を用い、サーバ2は、サーバ2のポート“8080”を用いた。
通信記録手段13は、他のサーバとの通信が新たに発生すると、プロセスIDと、自ポート番号と、宛先と、宛先ポート番号との組を、新たに通信記録情報に追加する。
また、通信記録手段13は、通信記録手段13を備えるサーバのポートのうち、プロセスIDと、リッスン(listen)しているポートのポート番号との対も通信記録情報に含める。リッスンしているポートとは、他のサーバからの通信を受け付けられる状態となっているポートである。
リッスンしているポートのポート番号は、対応する宛先および宛先ポート番号の内容が特定されていない自ポート番号として、通信記録情報内に記述される。例えば、サーバ1の通信記録情報71では、対応する宛先および宛先ポート番号の内容が特定されていない自ポート番号として“80”が記述されている。従って、サーバ1において、リッスンしているポートは、ポート“80”である。
通信記録手段13は、対応する宛先および宛先ポート番号の内容が特定されていない自ポート番号として、リッスンしているポートのポート番号を通信記録情報内に記述する。
サーバは、他のサーバに呼び出される場合、リッスンしているポートを用いる。例えば、サーバAが、リッスンしているポートで、他のサーバBと通信したとする。この場合、サーバBが呼び出し元となり、サーバAを呼び出し、サーバA,Bが通信したことになる。この場合、サーバAはサーバBから見て呼び出し先サーバである。
また、サーバは、他のサーバを呼び出す場合、リッスンしているポート以外のポートを用いる。例えば、サーバAが、リッスンしているポート以外のポートでサーバBと通信したとする。この場合、サーバAが呼び出し元となり、サーバBを呼び出し、サーバA,Bが通信したことになる。この場合、サーバAはサーバBから見て呼び出し元サーバである。
通信記録手段13は、ファイル情報収集システム1からの要求に応じて、保持している通信記録情報をファイル情報収集システム1に送信する。
以下の説明では、第3の実施形態のファイル情報収集システム1が、第1の実施形態のファイル情報収集システム1が備える呼び出し関係情報記憶手段4(図1参照)に代えて、呼び出し関係情報生成手段8(図21参照)を備える場合を例にして説明する。
ただし、第3の実施形態のファイル情報収集システム1は、第2の実施形態のファイル情報収集システム1が備える呼び出し関係情報記憶手段4(図16参照)に代えて、呼び出し関係情報生成手段8を備える構成であってもよい。すなわち、第3の実施形態は、第2の実施形態に適用されてもよい。
呼び出し関係情報生成手段8は、各サーバから順次、通信記録情報を取得し、各サーバの通信記録情報に基づいて、各サーバで動作しているプロセス間の呼び出し関係を特定し、呼び出し関係情報を生成する。呼び出し関係情報生成手段8は、生成した呼び出し関係情報を記憶する。
すなわち、第1および第2の実施形態では、呼び出し関係情報記憶手段4(図1、図16参照)が予め管理者等によって準備された呼び出し関係情報を記憶する構成であるのに対し、本実施形態では、呼び出し関係情報生成手段8が呼び出し関係情報を生成し、記憶する。
以下の説明では、起点情報が入力されたときに、呼び出し関係情報生成手段8が呼び出し関係情報を生成し、記憶し、その後、ステップS1(図5参照)に移行する場合を例にして説明する。ただし、呼び出し関係情報生成手段8が呼び出し関係情報を生成するタイミングは本例に限定されず、呼び出し関係情報生成手段8は、例えば、定期的に呼び出し関係情報を生成してもよい。
情報取得手段2、ファイル特定手段3、順序制御手段5、表示手段6および呼び出し関係情報生成手段8は、例えば、ディスプレイ装置を有するコンピュータのCPUによって実現される。この場合、CPUは、コンピュータのプログラム記憶装置(図示略)等のプログラム記録媒体からファイル情報収集プログラムを読み込み、そのプログラムに従って、情報取得手段2、ファイル特定手段3、順序制御手段5、表示手段6および呼び出し関係情報生成手段8として動作すればよい。また、各手段がそれぞれ別々のハードウェアによって実現されていてもよい。
以下、呼び出し関係情報生成手段8の処理経過を説明する。図23は、起点サーバから見て呼び出し先側のプロセス間の呼び出し関係を特定する処理の例を示すフローチャートである。
起点情報が入力されると、呼び出し関係情報生成手段8は、サーバから通信記録情報を取得する(ステップS31)。起点情報入力後、最初にステップS31に移行した場合、呼び出し関係情報生成手段8は、起点情報に含まれているサーバ名に対応するサーバから、通信記録情報を取得する。また、ステップS31〜S35はループ処理になっていて、ステップS35からステップS31に移行する場合もある。この場合、呼び出し関係情報生成手段8は、直近のステップS34で特定したサーバから、通信記録情報を取得する。
呼び出し関係情報生成手段8は、サーバが備えている通信記録手段13に対して通信記録情報を要求することによって、通信記録情報を取得すればよい。通信記録手段13は、その要求に応じて、保持している通信記録情報を呼び出し関係情報生成手段8に送信すればよい。
ここでは、起点情報内に「サーバ2」というサーバ名が含まれているとする。この場合、最初にステップS31に移行したとき、呼び出し関係情報生成手段8は、サーバ2から通信記録情報を取得する。ここでは、図22に例示する通信記録情報72を取得したとする。
ステップS31の次に、呼び出し関係情報生成手段8は、直近のステップS31で取得した通信記録情報と、前々回のステップS31で取得した通信記録情報とに基づいて、プロセスの呼び出し関係を特定する(ステップS32)。「前々回のステップS31」とは、直近のステップS31の1回前のステップS31である。
ただし、最初にステップS32に移行した場合、直近のステップS31が最初のステップS31であり、呼び出し関係情報生成手段8は、それ以前に通信記録情報を取得していない。この場合、呼び出し関係情報生成手段8は、ステップS32でプロセスの呼び出し関係を特定せずに、ステップS33に移行してよい。ここでは、呼び出し関係情報生成手段8は、最初のステップS31で通信記録情報72を取得しているだけであるので、ステップS33に移行する。
ステップS33では、呼び出し関係情報生成手段8は、直近のステップS31で取得した通信記録情報を参照し、サーバ(ステップS31で通信記録情報を提供したサーバ)のポートのうち、リッスンしているポートを特定する。通信記録情報72(図22参照)では、対応する宛先および宛先ポート番号の内容が特定されていない自ポート番号は“8080”である。従って、呼び出し関係情報生成手段8は、サーバ2において、リッスンしているポートはポート“8080”であると特定する。
次に、呼び出し関係情報生成手段8は、直近のステップS31で取得した通信記録情報を参照し、リッスンしているポート以外のポートで通信した通信相手のサーバを特定する(ステップS34)。通信記録情報72では、リッスンしているポート以外のサーバ2のポートのポート番号として“48940”が記述されている。従って、呼び出し関係情報生成手段8は、自ポート番号“48940”に対応するサーバ3(図22参照)を特定する。
なお、リッスンしているポート以外のポートのポート番号が自ポート番号として記述されていない場合、呼び出し関係情報生成手段8は、ステップS34でサーバを特定できない。
また、運用されているシステムに属する各サーバ(図22に示す例では、サーバ1、サーバ2およびサーバ3)が、そのシステムに属さないサーバ(例えば、DNS(Domain Name System)サーバ等)を呼び出している場合もある。システムに属さないサーバのサーバ名が、リッスンしているポート以外のポートのポート番号に対応付けられている場合、呼び出し関係情報生成手段8は、サーバを特定できなかったと判定する。呼び出し関係情報生成手段8は、例えば、運用されているシステムに属する各サーバのサーバ名を予め記憶しておき、通信履歴情報から得られたサーバ名と比較することによって、得られたサーバ名を有するサーバがシステムに属するか否かを判定すればよい。
ステップS34でサーバを特定できた場合(ステップS35のYes)、呼び出し関係情報生成手段8は、ステップS31に移行する。
次のステップS31において、呼び出し関係情報生成手段8は、直近のステップS34で特定したサーバ3から通信記録情報を取得する。ここでは、呼び出し関係情報生成手段8が、図22に例示する通信記録情報73をサーバ3から取得したものとする。
続いて、呼び出し関係情報生成手段8は、直近のステップS31で取得した通信記録情報と、前々回のステップS31で取得した通信記録情報とに基づいて、プロセスの呼び出し関係を特定する(ステップS32)。
ここでは、直近のステップS31で取得した通信記録情報は、通信記録情報73であり、前々回のステップS31で取得した通信記録情報は、通信記録情報72である。また、ステップS32の説明において、前々回のステップS31で取得した通信記録情報を第1通信記録情報と記し、直近のステップS31で取得した通信記録情報を第2通信記録情報と記す。
呼び出し関係情報生成手段8は、第1通信記録情報(通信記録情報72)に基づいて、リッスンしているポート以外のポート番号を特定し、さらに、そのポート番号に対応するプロセスIDおよび宛先ポート番号を特定する。ステップS32の説明において、このプロセスIDを有するプロセスを第1プロセスと記す。また、呼び出し関係情報生成手段8は、第1プロセスが動作するサーバとして、第1通信記録情報を提供したサーバを特定する。本例では、呼び出し関係情報生成手段8は、通信記録情報72に基づいて、リッスンしているポート以外のポート番号“48940”を特定し、そのポート番号に対応するプロセスID“201”を特定する。また、呼び出し関係情報生成手段8は、第1プロセスが動作するサーバとして、「サーバ2」を特定する。また、本例では、呼び出し関係情報生成手段8は、“48940”に対応する宛先ポート番号“3306”を特定する。
さらに、呼び出し関係情報生成手段8は、第2通信記録情報(通信記録情報73)に基づいて、第1通信記録情報から特定した宛先ポート番号と同一の自ポート番号に対応するプロセスIDを特定する。ステップS32の説明において、このプロセスIDを有するプロセスを第2プロセスと記す。また、呼び出し関係情報生成手段8は、第2プロセスが動作するサーバとして、第2通信記録情報を提供したサーバを特定する。本例では、呼び出し関係情報生成手段8は、通信記録情報73を参照して、第1通信記録情報から特定した宛先ポート番号“3306”と同一の自ポート番号に対応するプロセスID“301”を特定する(図22参照)。また、呼び出し関係情報生成手段8は、第2プロセスが動作するサーバとして、「サーバ3」を特定する。
呼び出し関係情報生成手段8は、第1プロセスが第2プロセスを呼び出しているという関係と、第1プロセスが動作しているサーバと、2プロセスとを示す呼び出し関係情報を生成する。図24は、ステップS32で生成した呼び出し関係情報の例を示す模式図である。なお、呼び出し関係情報生成手段8は、前回のステップS32までに生成した呼び出し関係情報が存在していれば、新たに生成した呼び出し関係情報を、その呼び出し関係情報に追加する。
ステップS32の後、呼び出し関係情報生成手段8は、直近のステップS31で取得した通信記録情報を参照し、サーバ(ステップS31で通信記録情報を提供したサーバ)のポートのうち、リッスンしているポートを特定する(ステップS33)。ここでは、呼び出し関係情報生成手段8は、通信記録情報73に基づいて、リッスンしているポートは、ポート“3306”であると特定する。
次に、呼び出し関係情報生成手段8は、直近のステップS31で取得した通信記録情報を参照し、リッスンしているポート以外のポートで通信した通信相手のサーバを特定する(ステップS34)。本例では、通信記録情報73において、リッスンしているポートのポート番号“3306”以外のポート番号は、自ポート番号として記述されていない。従って、呼び出し関係情報生成手段8は、ステップS34でサーバを特定できない。
この場合(ステップS35のNo)、起点サーバから見て呼び出し先側のプロセス間の呼び出し関係を特定する処理を終了する。この結果、図24に模式的に示す呼び出し関係情報が得られたことになる。
なお、上記のステップS34でサーバを特定できた場合には、サーバ3のプロセスが呼び出している他のサーバのプロセスが存在していることになる。この場合(ステップS35のYes)、呼び出し関係情報生成手段8は、さらにステップS31以降の処理を行えばよい。
次に、起点サーバから見て呼び出し元側のプロセス間の呼び出し関係を特定する処理について説明する。図25は、起点サーバから見て呼び出し元側のプロセス間の呼び出し関係を特定する処理の例を示すフローチャートである。なお、呼び出し関係情報生成手段8は、図23に示す処理の完了後に、以下に示す処理を行えばよい。
呼び出し関係情報生成手段8は、サーバから通信記録情報を取得する(ステップS41)。起点情報入力後、最初にステップS41に移行した場合、呼び出し関係情報生成手段8は、起点情報に含まれているサーバ名に対応するサーバから、通信記録情報を取得する。ただし、呼び出し関係情報生成手段8は、最初にステップS31(図23参照)に移行したときに、起点情報に含まれているサーバ名に対応するサーバから、通信記録情報を取得している。従って、最初にステップS41に移行した場合、呼び出し関係情報生成手段8は、その通信記録情報を、最初のステップS41で取得した通信記録情報とみなしてよい。ここでは、呼び出し関係情報生成手段8は、通信記録情報72を、最初のステップS41でサーバ2から取得した通信記録情報とみなす。
また、ステップS41〜S45はループ処理になっていて、ステップS45からステップS41に移行する場合もある。この場合、呼び出し関係情報生成手段8は、直近のステップS44で特定したサーバから、通信記録情報を取得する。
ステップS31と同様に、呼び出し関係情報生成手段8は、サーバが備えている通信記録手段13に対して通信記録情報を要求することによって、通信記録情報を取得すればよい。通信記録手段13は、その要求に応じて、保持している通信記録情報を呼び出し関係情報生成手段8に送信すればよい。
ステップS41の次に、呼び出し関係情報生成手段8は、直近のステップS41で取得した通信記録情報と、前々回のステップS41で取得した通信記録情報に基づいて、プロセスの呼び出し関係を特定する(ステップS42)。「前々回のステップS41]とは、直近のステップS41の1回前のステップS41である。
ただし、最初にステップS42に移行した場合、直近のステップS41が最初のステップS41であり、呼び出し関係情報生成手段8は、それ以前に通信記録情報を取得していない。この場合、呼び出し関係情報生成手段8は、ステップS42でプロセスの呼び出し関係を特定せずに、ステップS43に移行してよい。ここでは、呼び出し関係情報生成手段8は、最初のステップS41で通信記録情報72を取得しているだけであるので、ステップS43に移行する。
ステップS43では、呼び出し関係情報生成手段8は、直近のステップS41で取得した通信情報を参照し、サーバ(ステップS41で通信記録情報を提供したサーバ)のポートのうち、リッスンしているポートを特定する(ステップS43)。ステップS43は、前述のステップS33と同様の処理である。ここでは、通信記録情報72に基づいて、呼び出し関係情報生成手段8は、サーバ2において、リッスンしているポートはポート“8080”であると特定する。
次に、呼び出し関係情報生成手段8は、直近のステップS41で取得した通信記録情報を参照し、リッスンしているポートで通信した通信相手のサーバを特定する(ステップS44)。ここでは、呼び出し関係情報生成手段8は、通信記録情報72に基づいて、リッスンしているポートのポート番号“8080”に対応するサーバ1を特定する(図22参照)。
なお、リッスンしているポートのポート番号“8080”に対応する宛先および宛先ポート情報が記述されていない場合(例えば、図22に例示する通信記録情報72の最後の行が存在しない場合)、呼び出し関係情報生成手段8は、ステップS44でサーバを特定できない。
また、リッスンしているポートのポート番号に対応するサーバが、運用されているシステムに属さないサーバ(例えば、DNSサーバ等)である場合、呼び出し関係情報生成手段8は、サーバを特定できなかったと判定する。呼び出し関係情報生成手段8は、例えば、運用されているシステムに属する各サーバのサーバ名を予め記憶しておき、通信記録情報から得られたサーバ名と比較することによって、得られたサーバ名を有するサーバがシステムに属するか否かを判定すればよい。
ステップS44でサーバを特定できた場合(ステップS45のYes)、呼び出し関係情報生成手段8は、ステップS41に移行する。
次のステップS41において、呼び出し関係情報生成手段8は、直近のステップS44で特定したサーバ1から通信記録情報を取得する。ここでは、呼び出し関係情報生成手段8が、図22に例示する通信記録情報71をサーバ1から取得したものとする。
続いて、呼び出し関係情報生成手段8は、直近のステップS41で取得した通信記録情報と、前々回のステップS41で取得した通信記録情報とに基づいて、プロセスの呼び出し関係を特定する(ステップS42)。
ここでは、直近のステップS41で取得した通信記録情報は、通信記録情報71であり、前々回のステップS41で取得した通信記録情報は、通信記録情報72である。また、ステップS42の説明において、前々回のステップS41で取得した通信記録情報を第1通信記録情報と記し、直近のステップS41で取得した通信記録情報を第2通信記録情報と記す。
呼び出し関係情報生成手段8は、第1通信記録情報(通信記録情報72)に基づいて、リッスンしているポートのポート番号を特定し、さらに、そのポート番号に対応するプロセスIDおよび宛先ポート番号を特定する。ステップS42の説明において、このプロセスIDを有するプロセスを第1プロセスと記す。また、呼び出し関係情報生成手段8は、第1プロセスが動作するサーバとして、第1通信記録情報を提供したサーバを特定する。本例では、呼び出し関係情報生成手段8は、通信記録情報72に基づいて、リッスンしているポートのポート番号“8080”を特定し、そのポート番号に対応するプロセスID“201”を特定する。また、呼び出し関係情報生成手段8は、第1プロセスが動作するサーバとして、「サーバ2」を特定する。また、本例では、呼び出し関係情報生成手段8は、“8080”に対応する宛先ポート番号“33894”を特定する。
さらに、呼び出し関係情報生成手段8は、第2通信記録情報(通信記録情報71)に基づいて、第1通信記録情報から特定した宛先ポート番号と同一の自ポート番号に対応するプロセスIDを特定する。ステップS42の説明において、このプロセスIDを有するプロセスを第2プロセスと記す。また、呼び出し関係情報生成手段8は、第2プロセスが動作するサーバとして、第2通信記録情報を提供したサーバを特定する。本例では、呼び出し関係情報生成手段8は、通信記録情報71を参照して、第1通信記録情報から特定した宛先ポート番号“33894” と同一の自ポート番号に対応するプロセスID“101”を特定する(図22参照)。また、呼び出し関係情報生成手段8は、第2プロセスが動作するサーバとして、「サーバ1」を特定する。
呼び出し関係情報生成手段8は、第2プロセスが第1プロセスを呼び出しているという関係と、第1プロセスが動作しているサーバと、2プロセスとを示す呼び出し関係情報を生成する。図26は、ステップS42で生成した呼び出し関係情報の例を示す模式図である。なお、呼び出し関係情報生成手段8は、前回のステップS42までに生成した呼び出し関係情報が存在していれば、新たに生成した呼び出し関係情報を、その呼び出し関係情報に追加する。
ステップS42の後、呼び出し関係情報生成手段8は、直近のステップS41で取得した通信記録情報を参照し、サーバ(ステップS41で通信記録情報を提供したサーバ)のポートのうち、リッスンしているポートを特定する(ステップS43)。ここでは、呼び出し関係情報生成手段8は、通信記録情報71に基づいて、リッスンしているポートは、ポート“80”であると特定する。
次に、呼び出し関係情報生成手段8は、直近のステップS41で取得した通信記録情報を参照し、リッスンしているポートで通信した通信相手のサーバを特定する(ステップS44)。本例では、通信記録情報71において、リッスンしているポートのポート番号“80”に対応する宛先および宛先ポート情報が記述されていない。従って、呼び出し関係情報生成手段8は、ステップS44でサーバを特定できない。
この場合(ステップS45のNo)、起点サーバから見て呼び出し元側のプロセス間の呼び出し関係を特定する処理を終了する。この結果、図26に模式的に示す呼び出し関係情報が得られたことになる。
なお、上記のステップS44でサーバを特定できた場合には、サーバ1のプロセスが他のサーバのプロセスによって呼び出されていることになる。この場合(ステップS45のYes)、呼び出し関係情報生成手段8は、さらにステップS41以降の処理を行えばよい。
起点サーバから見て呼び出し元側のプロセス間の呼び出し関係を特定する処理(図23参照)、および、起点サーバから見て呼び出し元側のプロセス間の呼び出し関係を特定する処理(図25参照)が終了した後、呼び出し関係情報生成手段8は、その2つの処理で得られた呼び出し関係情報をまとめる。この結果、図27に模式的に示す呼び出し関係情報が得られる。呼び出し関係情報生成手段8は、この結果得られた呼び出し関係情報を記憶する。
この後、ファイル情報収集システム1は、ステップS1以降の処理を実行すればよい。
本実施形態によれば、ファイル情報収集システム1が呼び出し関係情報を生成するので、管理者は予め呼び出し関係情報を定めておく必要がない。よって、管理者の負担を軽減することができる。
次に、本発明のファイル情報収集システムの概要を説明する。図28は、本発明のファイル情報収集システムの概要を示すブロック図である。本発明のファイル情報収集システムは、情報取得手段81と、リスト作成手段82と、順序制御手段83とを備える。
情報取得手段81(例えば、情報取得手段2)は、プロセスが特定された場合に、特定されたプロセスを包含したプロセスの親子関係を示すツリー構造によって表される各プロセスのプロセスIDと、各プロセスが開いている各ファイルのファイル名およびファイル属性とを、特定されたプロセスが動作しているサーバから取得する。
リスト作成手段82(例えば、ファイル特定手段3)は、ファイル属性がライト可能またはリード/ライト可能であって、ファイル名が所定の条件を満たしているファイルを選択し、選択したファイルを対象に、ファイルを出力したサーバの識別情報と、ファイル名と、ファイルを出力したサーバのサーバ属性とを含むレコードのリストを作成する。
情報取得手段81は、特定されたプロセスが呼び出しているプロセスを新たに特定し、特定されたプロセスが呼び出しているプロセスが存在しなくなった後は、最初に特定されたプロセスの呼び出し元となっているプロセスを新たに特定し、順次、特定されたプロセスの呼び出し元となっているプロセスを新たに特定する。
リスト作成手段82は、新たにプロセスが特定されたことによってリストを作成した場合、当該リストを作成済みのリストの最後に追加する。
順序制御手段83(順序制御手段5)は、リストの先頭からレコードを順番に1つずつ選択し、選択したレコードに対応するファイルの更新時刻の情報を、当該ファイルを出力したサーバから取得する。順序制御手段83は、当該更新時刻がユーザによって指定された基準時刻より前の時刻である場合、選択したレコードのサーバ属性を所定の内容に変更し、当該レコードをリストの最後に移動する。
サーバ属性は、最初に特定されたプロセスが動作しているサーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し先サーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し元サーバであるか、または、上記の所定の内容を示す属性である。
そのような構成により、運用中のシステムに属するいずれかのサーバでアラートが生じた場合等において、障害解析のための適切なログファイルを判定し、そのファイル名のリストを生成することができる。
上記の実施形態は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
(付記1)
プロセスが特定された場合に、特定されたプロセスを包含したプロセスの親子関係を示すツリー構造によって表される各プロセスのプロセスIDと、前記各プロセスが開いている各ファイルのファイル名およびファイル属性とを、特定されたプロセスが動作しているサーバから取得する情報取得手段と、
ファイル属性がライト可能またはリード/ライト可能であって、ファイル名が所定の条件を満たしているファイルを選択し、選択したファイルを対象に、ファイルを出力したサーバの識別情報と、ファイル名と、ファイルを出力したサーバのサーバ属性とを含むレコードのリストを作成するリスト作成手段とを備え、
前記情報取得手段は、特定されたプロセスが呼び出しているプロセスを新たに特定し、特定されたプロセスが呼び出しているプロセスが存在しなくなった後は、最初に特定されたプロセスの呼び出し元となっているプロセスを新たに特定し、順次、特定されたプロセスの呼び出し元となっているプロセスを新たに特定し、
前記リスト作成手段は、新たにプロセスが特定されたことによってリストを作成した場合、当該リストを作成済みのリストの最後に追加し、
前記リストの先頭からレコードを順番に1つずつ選択し、選択したレコードに対応するファイルの更新時刻の情報を、当該ファイルを出力したサーバから取得し、当該更新時刻がユーザによって指定された基準時刻より前の時刻である場合、選択したレコードのサーバ属性を所定の内容に変更し、当該レコードを前記リストの最後に移動する順序制御手段とを備え、
前記サーバ属性は、最初に特定されたプロセスが動作しているサーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し先サーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し元サーバであるか、または、前記所定の内容を示す属性である
ことを特徴とするファイル情報収集システム。
(付記2)
前記順序制御手段は、選択したファイルの更新時刻の情報およびサイズの情報を、当該ファイルを出力したサーバから取得し、当該更新時刻がユーザによって指定された基準時刻より前の時刻である場合、または、当該サイズが0である場合、当該ファイルのサーバ属性を所定の内容に変更し、当該ファイルのレコードをリストの最後に移動する
付記1に記載のファイル情報収集システム。
(付記3)
リストに含まれているファイル名を、サーバ別に表示する表示手段を備え、
前記表示手段は、前記サーバ属性に応じて、ファイル名の表示態様を変える
付記1または付記2に記載のファイル情報収集システム。
(付記4)
前記順序制御手段は、リストの先頭側から、サーバの識別情報が共通であって連続する未選択のレコードの集合を順次、選択し、選択したレコードの集合に対応する各ファイルを、当該各ファイルを出力したサーバから取得し、
前記順序制御手段が前記サーバから取得したファイル毎に、エラーが発生したことを示す情報を含んでいるか否かを判定し、前記情報を含んでいないファイルの種別を特定の種別に定め、
前記順序制御手段は、1つサーバから取得した各ファイルが全て、前記情報を含んでいない場合、直近に選択したレコードの集合の後に続くレコードの集合であって、サーバ属性が呼び出し先サーバであるレコードの集合を、リストの最後に移動するとともに、前記レコードの集合に対応する各ファイルの種別を前記特定の種別に定める
付記1または付記2に記載のファイル情報収集システム。
(付記5)
前記順序制御手段は、選択したレコードの集合に対応する各ファイルが全て、エラーが発生したことを示す情報を含んでいない場合、レコードの集合の選択を中止する
付記4に記載のファイル情報収集システム。
(付記6)
リストに含まれているファイル名を、サーバ別に表示する表示手段を備え、
前記表示手段は、前記サーバ属性およびファイルの種別に応じて、ファイル名の表示態様を変える
付記4または付記5に記載のファイル情報収集システム。
(付記7)
各サーバから通信記録を示す通信記録情報を取得し、前記各サーバの通信記録情報に基づいて、前記各サーバで動作しているプロセス間の呼び出し関係を特定する呼び出し関係特定手段を備える
付記1から付記6のうちのいずれか1項に記載のファイル情報収集システム。
(付記8)
プロセスが特定された場合に、特定されたプロセスを包含したプロセスの親子関係を示すツリー構造によって表される各プロセスのプロセスIDと、前記各プロセスが開いている各ファイルのファイル名およびファイル属性とを、特定されたプロセスが動作しているサーバから取得し、
ファイル属性がライト可能またはリード/ライト可能であって、ファイル名が所定の条件を満たしているファイルを選択し、選択したファイルを対象に、ファイルを出力したサーバの識別情報と、ファイル名と、ファイルを出力したサーバのサーバ属性とを含むレコードのリストを作成し、
特定されたプロセスが呼び出しているプロセスを新たに特定し、特定されたプロセスが呼び出しているプロセスが存在しなくなった後は、最初に特定されたプロセスの呼び出し元となっているプロセスを新たに特定し、順次、特定されたプロセスの呼び出し元となっているプロセスを新たに特定し、
新たにプロセスが特定されたことによってリストを作成した場合、当該リストを作成済みのリストの最後に追加し、
前記リストの先頭からレコードを順番に1つずつ選択し、選択したレコードに対応するファイルの更新時刻の情報を、当該ファイルを出力したサーバから取得し、当該更新時刻がユーザによって指定された基準時刻より前の時刻である場合、選択したレコードのサーバ属性を所定の内容に変更し、当該レコードを前記リストの最後に移動し、
前記サーバ属性は、最初に特定されたプロセスが動作しているサーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し先サーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し元サーバであるか、または、前記所定の内容を示す属性である
ことを特徴とするファイル情報収集方法。
(付記9)
コンピュータに、
プロセスが特定された場合に、特定されたプロセスを包含したプロセスの親子関係を示すツリー構造によって表される各プロセスのプロセスIDと、前記各プロセスが開いている各ファイルのファイル名およびファイル属性とを、特定されたプロセスが動作しているサーバから取得する情報取得処理、および、
ファイル属性がライト可能またはリード/ライト可能であって、ファイル名が所定の条件を満たしているファイルを選択し、選択したファイルを対象に、ファイルを出力したサーバの識別情報と、ファイル名と、ファイルを出力したサーバのサーバ属性とを含むレコードのリストを作成するリスト作成処理を実行させ、
前記情報取得処理で、特定されたプロセスが呼び出しているプロセスを新たに特定させ、特定されたプロセスが呼び出しているプロセスが存在しなくなった後は、最初に特定されたプロセスの呼び出し元となっているプロセスを新たに特定させ、順次、特定されたプロセスの呼び出し元となっているプロセスを新たに特定させ、
前記リスト作成処理で、新たにプロセスが特定されたことによってリストを作成した場合、当該リストを作成済みのリストの最後に追加させ、
前記リストの先頭からレコードを順番に1つずつ選択し、選択したレコードに対応するファイルの更新時刻の情報を、当該ファイルを出力したサーバから取得し、当該更新時刻がユーザによって指定された基準時刻より前の時刻である場合、選択したレコードのサーバ属性を所定の内容に変更し、当該レコードを前記リストの最後に移動する順序制御処理を実行させ、
前記サーバ属性は、最初に特定されたプロセスが動作しているサーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し先サーバであるか、最初に特定されたプロセスが動作しているサーバから見て呼び出し元サーバであるか、または、前記所定の内容を示す属性である
ことを特徴とするファイル情報収集プログラム。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は2015年12月4日に出願された日本出願特願2015−237675を基礎とする優先権を主張し、その開示の全てをここに取り込む。