以下に添付図面を参照して、この発明にかかるサーバ装置、システム、およびログ収集支援方法の実施の形態を詳細に説明する。
(実施の形態にかかるログ収集支援方法の一実施例)
図1は、実施の形態にかかるログ収集支援方法の一実施例を示す説明図である。図1において、サーバ101(図1では、サーバ101−1,101−2)は、クライアント装置102から、処理の実行を要求するリクエスト110を受信するコンピュータである。また、サーバ101は、受信したリクエスト110に応じた処理を実行する。また、サーバ101は、実行した処理に応じたログを出力する。また、サーバ101は、実行した処理から派生した処理の実行を要求する処理要求120を他のサーバ101に送信する。
クライアント装置102は、処理の実行を要求するリクエスト110をサーバ101に送信するコンピュータである。また、クライアント装置102は、送信したリクエスト110に応じた処理の処理結果であるレスポンスをサーバ101から受信する。
複数のサーバ101で実行される一連の処理に関するログを収集する場合、例えば、一連の処理についてのシステム内での処理経路を特定する。クラウドシステムのように複数のサーバ101を含むシステムでは、一連の処理の各々の処理を実行するサーバ101は、各サーバ101の処理能力や負荷状況に応じて、処理の振り分け先が柔軟に変更されるため、処理経路の特定が困難になる。
そこで、本実施の形態では、クライアント装置102からのリクエスト110から派生した一連の処理を実行する各々のサーバ101で出力されるログを、一連の処理の実行に伴ってサーバ間で受け継いでいく。これにより、最終的にクライアント装置102に対応する特定の記憶領域にログを蓄積することができ、クライアント装置102ごとのログの収集を効率化できる。
以下、クライアント装置102からサーバ101−1にリクエスト110が送信された場合を例に挙げて、実施の形態にかかるログ収集支援方法の一実施例について説明する。
(1)サーバ101−1は、クライアント装置102からリクエスト110を受信する。リクエスト110は、例えば、複数のサーバ101で実行される一連の処理の実行の開始を要求する実行要求である。
(2)サーバ101−1は、受信したリクエスト110に応じた処理を実行する。また、サーバ101−1は、実行した処理から派生した処理についてのサーバ101−2への処理要求120と、実行した処理に関するログを含む第1のログ情報130と、を生成する。
(3)サーバ101−1は、生成した処理要求120と第1のログ情報130とをサーバ101−2に送信する。
(4)サーバ101−2は、サーバ101−1から処理要求120と第1のログ情報130とを受信する。また、サーバ101−2は、受信した処理要求120に応じた処理を実行する。また、サーバ101−2は、実行した処理に関するログを含む第2のログ情報140を生成する。
(5)サーバ101−2は、特定の記憶領域150への第1のログ情報130と第2のログ情報140との書き込みを制御する。ここで、特定の記憶領域150とは、クライアント装置102に対応する記憶領域であり、各サーバ101(例えば、サーバ101−1,101−2)から出力されるログのうちのクライアント装置102に関連するログをまとめて記憶する記憶領域である。
特定の記憶領域150としては、例えば、各サーバ101が有するいずれかの記憶領域や、クライアント装置102が有するいずれかの記憶領域を採用することができる。また、特定の記憶領域150として、各サーバ101がアクセス可能なストレージ装置160が有するいずれかの記憶領域を採用することにしてもよい。
具体的には、例えば、サーバ101−2とは異なる他のコンピュータが特定の記憶領域150を有する場合、サーバ101−2は、該他のコンピュータに、第1のログ情報130および第2のログ情報140の書込指示を送信する。他のコンピュータとは、例えば、クライアント装置102、サーバ101−1である。
また、サーバ101−2が特定の記憶領域150を有する場合、サーバ101−2は、自サーバが有する特定の記憶領域150に、第1のログ情報130と第2のログ情報140とを書き込む。また、ストレージ装置160が特定の記憶領域150を有する場合、サーバ101−2は、ストレージ装置160の特定の記憶領域150に、第1のログ情報130と第2のログ情報140とを書き込む。
このように、実施の形態にかかるログ収集支援方法によれば、クライアント装置102からのリクエスト110から派生する各々の処理の実行に応じて各サーバ101から出力されるログを集約して特定の記憶領域150に蓄積することができる。
これにより、特定の記憶領域150に、特定のクライアント装置102に関連するログをまとめて蓄積することができる。結果として、特定のクライアント装置102に関連するログを、特定のクライアント装置102に対応する特定の記憶領域150から、一括して収集することができる。このため、ログの収集作業にかかる作業負荷を軽減することができるとともに、ログ収集時に、特定のクライアント装置102に関連するログのみを収集でき、収集されるログの量を抑制することができる。
また、特定の記憶領域150に、特定のクライアント装置102に関連するログを、リクエスト110から派生した一連の処理ごとにまとめて蓄積することもできる。結果として、特定のクライアント装置102から送信された特定のリクエスト110から派生した一連の処理に関連するログを、特定のクライアント装置102に対応する特定の記憶領域150から、一括して収集することができる。このため、ログの収集作業にかかる作業負荷を軽減することができるとともに、ログ収集時に、特定のクライアント装置102からのリクエスト110から派生した一連の処理に関連するログのみを収集でき、収集されるログの量を抑制することができる。
(実施の形態にかかるログ収集システムのシステム構成例)
図2は、実施の形態にかかるログ収集システムのシステム構成例を示す説明図である。図2において、ログ収集システム200は、サーバ101−1〜101−nと、クライアント装置102−1〜102―mと、情報収集装置201と、を含む。ログ収集システム200において、サーバ101−1〜101−n、クライアント装置102−1〜102―mおよび情報収集装置201は、有線または無線のネットワーク210を介して接続されている。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
以下の説明では、サーバ101−1〜101−nのうち任意のサーバを「サーバ101−i」と表記する(i=1,2,…,n)。また、クライアント装置102−1〜102−mのうち任意のクライアント装置を「クライアント装置102−j」と表記する(j=1,2,…,m)。
ここで、サーバ101−iは、クライアント装置102−jまたは他のサーバ101−k(ただし、k≠i、k=1,2,…,n)から、処理の実行を要求するリクエストを受信するコンピュータである。また、サーバ101−iは、受信したリクエストに応じた処理を実行する。また、サーバ101−iは、実行した処理に応じたログを出力する。また、サーバ101−iは、実行した処理から派生した処理の実行を要求するリクエストを、他のサーバ101−kに送信する。サーバ101−1〜101−nは、例えば、クラウドコンピューティング内のサーバ群である。
クライアント装置102−jは、処理の実行を要求するリクエストをサーバ101−iに送信するコンピュータである。リクエストの種別としては、例えば、SOAP、JMS(Java Message Service)、FTP(File Transfer Protocol)、CORBA(Common Object Request Broker Architecture)などがある。また、クライアント装置102−jは、送信したリクエストに応じたレスポンスをサーバ101−iから受信する。クライアント装置102−jは、例えば、クラウドコンピューティングの利用者が使用するPC(Personal Computer)やノートPCなどである。なお、Javaは登録商標である。
情報収集装置201は、各サーバ101−iから出力されたログを収集するコンピュータである。収集対象となるログは、例えば、クライアント装置102からのリクエストから派生した一連の処理の実行に応じて各サーバ101−iから出力されたログ群である。具体的には、例えば、情報収集装置201は、収集の対象になるクライアント装置102−jに対応する特定の記憶領域150(図1参照)から、クライアント装置102−jに関連するログ群を収集する。情報収集装置201は、例えば、ログ収集システム200の管理者が使用するPCやノートPCなどである。
(実施の形態にかかるコンピュータのハードウェア構成例)
次に、図3を用いて、図2に示した実施の形態にかかるコンピュータ(サーバ101−1〜101−n、クライアント装置102−1〜102―m、情報収集装置201)のハードウェア構成例について説明する。
図3は、実施の形態にかかるコンピュータのハードウェア構成例を示すブロック図である。図3において、コンピュータは、CPU(Central Processing Unit)301と、ROM(Read‐Only Memory)302と、RAM(Random Access Memory)303と、磁気ディスクドライブ304と、磁気ディスク305と、光ディスクドライブ306と、光ディスク307と、I/F(Interface)308と、キーボード309と、マウス310と、ディスプレイ311と、を備えている。また、各構成部はバス300によってそれぞれ接続されている。
ここで、CPU301は、コンピュータの全体の制御を司る。ROM302は、ブートプログラムなどのプログラムを記憶している。RAM303は、CPU301のワークエリアとして使用される。
磁気ディスクドライブ304は、CPU301の制御にしたがって磁気ディスク305に対するデータのリード/ライトを制御する。磁気ディスク305は、磁気ディスクドライブ304の制御で書き込まれたデータを記憶する。
光ディスクドライブ306は、CPU301の制御にしたがって光ディスク307に対するデータのリード/ライトを制御する。光ディスク307は、光ディスクドライブ306の制御で書き込まれたデータを記憶したり、光ディスク307に記憶されたデータをコンピュータに読み取らせたりする。
I/F308は、通信回線を通じてネットワーク210に接続され、このネットワーク210を介して他の装置に接続される。そして、I/F308は、ネットワーク210と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F308には、例えば、モデムやLANアダプタなどを採用することができる。
キーボード309は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス310は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
ディスプレイ311は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ311は、例えば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
なお、図3に示したコンピュータのハードウェア構成は一例であり、例えば、サーバ101−iとして採用されるコンピュータには、光ディスクドライブ306、光ディスク307、キーボード309、マウス310、ディスプレイ311が備えられていなくてもよい。また、クライアント装置102または情報収集装置201として採用されるコンピュータには、例えば、スキャナやプリンタが備えられていてもよい。
(クライアント装置102−jの機能的構成例)
図4は、クライアント装置102−jの機能的構成を示すブロック図である。クライアント装置102−jは、設定部401と、生成部402と、送信部403と、受信部404と、記録部405と、を含む構成である。この制御部となる機能(設定部401〜記録部405)は、具体的には、例えば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F308により、その機能を実現する。各機能部の処理結果は、例えば、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
設定部401は、収集するログの種別を設定する機能を有する。ここで、収集するログの種別とは、サーバ101−iに出力させるログの種別である。例えば、サーバ101−iに出力させるログの種別として、エラーログ、警告ログ、詳細ログ、デバッグログ、またはそれらの組み合わせが採用される。具体的には、例えば、設定部401は、クライアント装置102−jの利用者または情報収集装置201の管理者から収集するログの種別の入力を受けて、定義ファイル(例えば、後述の図5に示す定義ファイル500)に設定しておく。
ここで、収集するログの種別の入力は、例えば、クライアント装置102−jの利用者によるキーボード309またはマウス310の操作によって行われる。また、収集するログの種別の入力は、情報収集装置201の管理者によって情報収集装置201で入力されたログの種別を、情報収集装置201から受信することによって行われてもよい。これにより、設定部401は、サーバ101−iに収集させるログの種別を設定しておくことができ、サーバ101−iにログの収集を要求する際にサーバ101−iで収集すべきログの種別を通知することができる。
ここで、図5を用いて、設定部401によって収集するログの種別が設定される定義ファイルの具体例について説明する。図5では、クライアント装置102−jによって、当該クライアント装置102−jが生成するすべてのリクエストに共通して適用される定義ファイルが作成されている場合を示す。
図5は、定義ファイルの具体例を示す説明図である。定義ファイル500は、採取ログ、採取可否、および出力ログのフィールドを有し、各フィールドに情報を設定することで、サーバに収集させるログの種別を、レコードとして記憶している。定義ファイルは、クライアント装置102−jの利用者または情報収集装置201の管理者によって設定される。
採取ログのフィールドには、サーバ101−iに採取させるログが記憶されている。例えば、採取ログのフィールドには、サーバ101−iに採取させるログとして、トレースログやシーケンスログが記憶されている。採取可否のフィールドには、サーバ101−iにログの採取を実行させるか否かが記憶されている。出力ログのフィールドには、採取ログのフィールドに記憶されたログの中から収集するログの種別が記憶されている。例えば、出力ログのフィールドには、ログの種別として、エラーログ、警告ログ、詳細ログ、デバッグログ、またはそれらの組み合わせが記憶されている。
例えば、レコード501は、サーバ101にログの採取を「実行させる」状態であり、サーバ101に採取させるログが「トレースログ」であり、サーバ101に採取したトレースログの中から収集させるログの種別が「エラーログ」であることを示している。
ここでは、クライアント装置102−jによってすべてのリクエストに共通の定義ファイル500が一つ作成されている場合について示したが、定義ファイル500は複数作成されていてもよい。例えば、クライアント装置102−jによって、リクエストの種別ごとに異なる定義ファイル500が作成されていてもよい。また、クライアント装置102−jによって、定義ファイル500にリクエスト種別のフィールドを追加したテーブルが作成され、リクエストの種別に対応付けたレコードが作成されていてもよい。これにより、リクエストの種別ごとに異なる種別のログを収集することができる。また、特定の種別のリクエストについてログを収集したり、特定の種別のリクエストについてログを収集しないようにしたりすることもできる。
図4の説明に戻り、生成部402は、リクエストデータを生成する機能を有する。ここで、リクエストデータとは、処理の実行を要求するリクエスト本体と、サーバ101−iに収集させるログの種別が記載され収集したログの通知を要求するログデータ通知要求と、を含むデータである。具体的には、例えば、生成部402は、定義ファイル500を参照して、サーバ101−iに収集させるログの種別を含むログデータ通知要求を生成する。
そして、生成部402は、生成したログデータ通知要求を含むリクエストデータを生成する。これにより、生成部402は、サーバ101−iに送信するリクエストデータを生成することができる。ここで、図6を用いて、生成部402によって生成されるリクエストデータのデータ構造の一例について説明する。
図6は、リクエストデータのデータ構造の一例を示す説明図である。図6に示すように、リクエストデータ600は、リクエスト本体601と、ログデータ通知要求602と、を含む。リクエスト本体601は、処理の実行を要求するデータである。ログデータ通知要求602は、サーバ101−iに収集させるログの種別を含み、収集したログのクライアント装置102−jへの通知をサーバ101−iに要求するデータである。次に、図7および図8を用いて、図6に示したログデータ通知要求602の具体例について説明する。
図7および図8は、ログデータ通知要求602の具体例を示す説明図である。図7に示すログデータ通知要求602において、符号710で示す箇所には、クライアント装置102−jのIP(Internet Protocol)アドレスが記載されている。ここでは、符号710の箇所にはIPアドレスとして「192.168.10.1」が記載されている。
符号721で示す箇所には、サーバ101−iが採取すべきログが記載されている。ここでは、符号721の箇所には「tracelog」が記載されており、サーバ101−iが採取すべきログはトレースログであることが示されている。なお、符号721で示す箇所は、定義ファイル500の採取ログのフィールドを参照して、生成部402によって生成される。
符号722で示す箇所には、サーバ101−iがログの採取を実行すべきか否かを示す情報が記載されている。ここでは、符号722の箇所には「yes」が記載されており、サーバ101−iがログの採取を実行すべきであることが示されている。なお、符号722で示す箇所は、定義ファイル500の採取可否のフィールドを参照して、生成部402によって生成される。
符号723で示す箇所には、サーバ101−iが採取したログの中から収集すべきログの種別が記載されている。ここでは、符号723の箇所には「debuglog」が記載されており、サーバ101−iが採取したトレースログの中から収集すべきログの種別は、デバッグログであることが示されている。なお、符号723で示す箇所は、定義ファイル500の出力ログのフィールドを参照して、生成部402によって生成される。
なお、符号723の箇所にデバッグログが記載されている場合、収集すべきログの種別は、デバッグログのみではなく、エラーログ、警告ログ、詳細ログ、およびデバッグログであると規定してもよい。また、符号723の箇所に詳細ログが記載されている場合、収集すべきログの種別はエラーログ、警告ログおよび詳細ログであると規定してもよい。また、符号723の箇所にエラーログが記載されている場合、収集すべきログの種別はエラーログであると規定してもよいし、符号723の箇所に警告ログが記載されている場合、収集すべきログの種別はエラーログおよび警告ログであると規定してもよい。
符号731で示す箇所には、符号721で示す箇所と同様の内容が記載されている。符号732で示す箇所には、符号722で示す箇所と同様の内容が記載されている。符号733で示す箇所には、符号723で示す箇所と同様の内容が記載されている。具体的には、符号731〜符号733で示す箇所には、サーバ101−iが採取すべきログはシーケンスログであり、採取したシーケンスログの中から収集すべきログの種別はデバッグログであることが示されている。
図8に示すログデータ通知要求602において、符号810で示す箇所には、符号710で示す箇所と同様にクライアント装置102−jのIPアドレスが記載されている。ここでは、符号810の箇所にはIPアドレスとして「192.168.10.2」が記載されている。
符号821および符号831で示す箇所には、符号721で示す箇所と同様の内容が記載されている。符号822および符号832で示す箇所には、符号722で示す箇所と同様の内容が記載されている。符号823および符号833で示す箇所には、符号723で示す箇所と同様の内容が記載されている。
具体的には、符号821〜符号823で示す箇所には、サーバ101−iが採取すべきログはトレースログであり、採取したシーケンスログの中から収集すべきログの種別はエラーログであることが示されている。また、符号831〜符号833で示す箇所には、サーバ101−iが採取すべきログはシーケンスログであり、採取したシーケンスログの中から収集すべきログの種別はエラーログであることが示されている。
図4の説明に戻り、送信部403は、リクエストデータ600をサーバ101−iに送信する機能を有する。具体的には、例えば、送信部403は、図7または図8に示したログデータ通知要求602を含むリクエストデータ600を、サーバ101−iに送信する。これにより、送信部403は、サーバ101−iにリクエストデータ600を送信し、リクエストデータ600に含まれるリクエスト本体601に応じた一連の処理を各サーバ101−iに実行させることができる。
受信部404は、レスポンスデータをサーバ101−iから受信する機能を有する。ここで、レスポンスデータとは、リクエストデータ600に含まれるリクエスト本体601によって要求された一連の処理の処理結果となるレスポンス本体を含むデータである。また、レスポンスデータとは、リクエストデータ600に含まれるリクエスト本体601によって要求された一連の処理を実行した各サーバ101−iから出力されたログを集約したログデータを含むデータである。
具体的には、例えば、受信部404は、リクエストデータ600を送信した結果として、サーバ101−iから送信されたレスポンスデータを受信する。これにより、受信部404は、サーバ101−iに要求した一連の処理の処理結果と、一連の処理についてのログデータと、をサーバ101−iから受信することができる。なお、レスポンスデータの具体例については図14を用いて後述する。また、レスポンスデータに含まれるログデータの具体例については、図15および図16を用いて後述する。
記録部405は、ログデータを記録する機能を有する。具体的には、例えば、記録部405は、受信部404によって受信されたレスポンスデータにログデータが含まれている場合、レスポンスデータからログデータを抽出して、抽出したログデータを特定の記憶領域150に記録する。これにより、記録部405は、自クライアント装置102−jについてのログデータを、自クライアント装置102−j内の記憶領域に記録しておくことができる。
(実施の形態にかかるサーバ101−iの機能的構成例)
図9は、実施の形態にかかるサーバ101−iの機能的構成例を示すブロック図である。サーバ101−iは、受信部901と、特定部902と、実行部903と、抽出部904と、生成部905と、書込制御部906と、送信部907と、を含む構成である。この制御部となる機能(受信部901〜送信部907)は、具体的には、例えば、図3に示したROM302、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、I/F308により、その機能を実現する。各機能部の処理結果は、例えば、RAM303、磁気ディスク305、光ディスク307などの記憶装置に記憶される。
受信部901は、リクエストをクライアント装置102−jから受信する機能を有する。ここで、リクエストとは、上述したリクエストデータ600に含まれるリクエスト本体601である。具体的には、例えば、受信部901は、図7または図8に示したリクエスト本体601とログデータ通知要求602とを含むリクエストデータ600を、クライアント装置102−jから受信する。これにより、受信部901は、クライアント装置102−jからのリクエスト本体601に応じた一連の処理の実行を開始するトリガになるリクエストを受信することができる。
また、受信部901は、一連の処理のうちの第1の処理の実行に応じて出力される第1のログ情報を含む、一連の処理のうちの第2の処理の処理要求を、システム内の他のサーバ装置から受信する機能を有する。ここで、サーバ装置とは、上述したサーバ101−iである。他のサーバ装置とは、上述したサーバ101−kである。一連の処理とは、クライアント装置102−jからのリクエストに応じて実行される処理である。第1の処理とは、リクエスト本体601に応じて実行される一連の処理のうちの他のサーバ101−kで実行された処理である。第1のログ情報とは、第1の処理を実行した他のサーバ101−kで出力されたログである。第2の処理とは、一連の処理のうちの第1の処理の次に実行すべき処理である。第2の処理の処理要求とは、第1の処理を実行した他のサーバ101−kで生成されたリクエスト本体であり、例えば、図12で後述するリクエスト本体である。
具体的には、例えば、受信部901は、後述の図12または図13に示すログデータを含むリクエストデータを、他のサーバ101−kから受信する。これにより、受信部901は、他のサーバ101−kからの一連の処理のうちいずれかの処理の実行を開始するトリガになるリクエストを受信することができる。
特定部902は、クライアント装置102−jからのリクエストに応じて実行される一連の処理の各々の処理を実行する対象サーバ101−iを特定する機能を有する。ここで、一連の処理の各々の処理を実行する対象サーバ101−iとは、例えば、一連の処理の各々の処理の実行に使用するアプリケーションを有するサーバ101−iである。
具体的には、例えば、特定部902は、受信部901によってクライアント装置102−jからリクエストデータ600が受信された場合、リクエストデータ600に含まれるリクエスト本体601により要求されている処理を実行可能なサーバ101−iを特定する。このとき、特定部902は、実行可能なサーバ101−iが複数ある場合、各サーバ101−iの処理能力または作業負荷を参照して、複数のサーバ101−iの中から、処理を実行するサーバ101−iを特定してもよい。
より具体的には、特定部902は、リクエストデータ600によって要求されている処理が同期型であるか非同期型であるかを特定し、一連の処理の各々の処理を実行するサーバ101−iを特定する。なお、特定部902は、リクエストデータ600に処理が同期型であるか非同期型であるかを示す情報が含まれている場合、リクエストデータ600を参照して処理が同期型であるか非同期型であるかを特定してもよい。また、特定部902は、リクエストデータ600に識別子が含まれている場合、識別子と対応付けて同期型であるか非同期型であるかを記憶したテーブルを参照して、処理が同期型であるか非同期型であるかを特定してもよい。これにより、特定部902は、一連の処理の各々の処理を実行すべきサーバ101−iを特定することができる。
ここで、同期型の処理とは、親子関係のあるサーバ101−i間で実行される処理である。同期型の処理では、親サーバによって子サーバに処理の実行が要求され、子サーバの処理結果を親サーバが受信する。同期型の処理では、親サーバが、一連の処理の処理結果を集約して、集約した処理結果をクライアント装置102−jに送信する。
また、非同期型の処理とは、独立したサーバ101−i間で実行される処理である。非同期型の処理では、サーバ101−iは、自サーバ101−iでの処理が終了すると、次の処理を実行すべき他のサーバ101−kに、処理の実行を要求し、また、処理結果を送信する。非同期型の処理では、一連の処理のうち最後の処理を実行したサーバ101−iが、クライアント装置102−jに一連の処理の処理結果を送信する。
ここで、図10および図11を用いて、同期型および非同期型のそれぞれの場合について、クライアント装置102−jからのリクエストデータ600に含まれるリクエスト本体601に応じて実行される一連の処理の一例について説明する。
<同期型の一連の処理の一例>
まず、図10を用いて、同期型の一連の処理の一例について説明する。
図10は、同期型の一連の処理の一例を示す説明図である。図10に示すように、サーバ101−1は、クライアント装置102−jからリクエストデータ600を受信すると、自サーバ101−1を親サーバであると判定して、リクエストデータ600によって要求された処理を実行する。ここで、サーバ101−1は、実行が終了した処理の次に実行すべき処理を実行する子サーバを特定し、特定した子サーバに次に実行すべき処理の実行を要求するリクエストデータを送信する。
このとき、サーバ101−1は、子サーバを特定すると、子サーバを示す情報をリクエストデータに記載しておく。そして、サーバ101−1は、子サーバでの処理結果であるレスポンスデータを受信する。サーバ101−1は、一連の処理のすべての実行が終了すると、子サーバから受信したレスポンスデータをまとめて、クライアント装置102−jに送信する。
例えば、サーバ101−1は、自サーバ101−1で実行した処理の次の処理を実行する子サーバとしてサーバ101−2を特定し、特定したサーバ101−2に処理の実行を要求するリクエストデータを送信する。サーバ101−2は、受信したリクエストデータに含まれる子サーバを示す情報に基づいて、自サーバ101−2が子サーバであると判定する。そして、サーバ101−2は、処理を実行して処理結果となるレスポンスデータをサーバ101−1に送信する。
サーバ101−1は、サーバ101−2から処理結果となるレスポンスデータを受信する。サーバ101−1は、サーバ101−2で実行した処理の次の処理を実行する子サーバとしてサーバ101−3を特定し、特定したサーバ101−3に処理の実行を要求する。サーバ101−3は、受信したリクエストデータに含まれる子サーバを示す情報に基づいて、自サーバ101−3が子サーバであると判定する。そして、サーバ101−3は、処理を実行して処理結果となるレスポンスデータをサーバ101−1に送信する。
サーバ101−1は、サーバ101−3から処理結果となるレスポンスデータを受信する。そして、サーバ101−1は、一連の処理が終了した場合、自サーバ101−1の処理結果と、サーバ101−2およびサーバ101−3から受信した処理結果と、をまとめてクライアント装置102−jに送信する。
なお、親サーバは、同時に複数の子サーバに処理を要求するリクエストデータを送信してもよい。また、同一の子サーバに、処理を要求するリクエストデータを、複数回送信してもよい。
<非同期型の一連の処理の一例>
次に、図11を用いて、非同期型の一連の処理の一例について説明する。
図11は、非同期型の一連の処理の一例を示す説明図である。図11に示すように、サーバ101−1は、クライアント装置102−jからリクエストデータ600を受信すると、リクエストデータ600によって要求された処理を実行する。ここで、サーバ101−1は、実行した処理から派生した一連の処理のうちの次に実行すべき処理を実行する他のサーバ101−2を特定する。そして、サーバ101−1は、特定したサーバ101−2に、処理の実行を要求するリクエストデータと、自サーバ101−1の処理結果と、を送信する。このとき、サーバ101−1は、特定したサーバ101−2を示す情報をリクエストデータに記載しておく。
サーバ101−2は、サーバ101−1からリクエストデータを受信すると、要求された処理を実行する。ここで、サーバ101−2は、実行した処理から派生した一連の処理のうちの次に実行すべき処理を実行する他のサーバ101−3を特定する。そして、サーバ101−2は、特定したサーバ101−3に、処理の実行を要求するリクエストデータと、サーバ101−1の処理結果と、自サーバ101−2の処理結果と、を送信する。このとき、サーバ101−2は、特定したサーバ101−3を示す情報をリクエストデータに記載しておく。
サーバ101−3は、サーバ101−2からリクエストデータを受信すると、要求された処理を実行する。ここで、サーバ101−3は、自サーバ101−3が一連の処理の最後の処理を実行したサーバ101−iであると判定する。そして、サーバ101−3は、サーバ101−1の処理結果と、サーバ101−2の処理結果と、自サーバ101−3の処理結果と、をまとめてクライアント装置102−jに送信する。なお、自サーバ101−iが最後の処理を実行したサーバ101−iであるか否かは、リクエストデータ600に含まれる非同期型の処理を実行するサーバ101−iを示す情報に基づいて判定することができる。
図9の説明に戻り、実行部903は、受信部901によってリクエストが受信された場合、第1の処理を実行するとともに、第1の処理の処理内容に関する第1のログ情報を出力する機能を有する。具体的には、例えば、実行部903は、受信部901によってクライアント装置102−jから受信されたリクエストデータ600に含まれるリクエスト本体601に応じた処理を実行する。ここで、実行部903によって処理が実行されると、実行された処理に関するログを含むログデータが生成される。そして、実行部903によってログデータが出力される。これにより、実行部903は、一連の処理を実行することができ、実行した処理に関するログを含むログデータを生成して、出力することができる。
実行部903は、受信部901によって第2の処理の処理要求が受信された場合に、第2の処理を実行するとともに、第2の処理の実行内容に関する第2のログ情報を出力する機能を有する。具体的には、例えば、実行部903は、リクエスト本体601に応じた一連の処理のうちの受信部901によって他のサーバ101−kから受信されたリクエストデータに含まれるリクエスト本体に応じた処理を実行する。ここで、実行部903によって処理が実行されると、実行された処理に関するログを含むログデータが生成される。そして、実行部903によってログデータが出力される。これにより、実行部903は、一連の処理を実行することができ、実行した処理に関するログを含むログデータを生成して、出力することができる。
抽出部904は、受信部901によって第2の処理の処理要求が受信された場合、実行部903による第2の処理の実行に応じて出力されるログ情報の中から、リクエストから特定される所定の種別の第2のログ情報を抽出する機能を有する。具体的には、例えば、抽出部904は、実行部903による処理の実行に伴って出力されたログの中から、リクエストデータ600に含まれるログデータ通知要求602を参照して特定した種別のログを抽出する。
より具体的には、例えば、抽出部904は、図7に示したログデータ通知要求602を参照すると、実行部903による処理の実行に伴って出力されたトレースログおよびシーケンスログの中から、デバッグログを抽出する。また、例えば、抽出部904は、図8に示したログデータ通知要求602を参照すると、実行部903による処理の実行に伴って出力されたトレースログおよびシーケンスログの中から、エラーログを抽出する。これにより、抽出部904は、クライアント装置102−jの利用者または情報収集装置201の管理者から収集を要求された種別のログを抽出して、抽出したログを含むログデータを生成することができる。
なお、図7に示したログデータ通知要求602のように、収集すべきログとしてデバッグログが記載されている場合に、デバッグログのみではなく、エラーログ、警告ログ、詳細ログ、およびデバッグログを収集すると規定してもよい。このとき、抽出部904は、トレースログおよびシーケンスログの中から、デバッグログのみではなく、エラーログ、警告ログ、詳細ログ、およびデバッグログを抽出する。
生成部905は、他のサーバ101−kに対するリクエストデータを生成する機能を有する。具体的には、例えば、生成部905は、リクエスト本体601に応じて派生した一連の処理のうちの自サーバ101−iに割り当てられている処理が一連の処理の最後に実行される処理であるか否かを判定する。そして、生成部905は、自サーバ101−iに割り当てられている処理が最後に実行される処理ではない場合、他のサーバ101−kに対するリクエストデータを生成する。
これにより、生成部905は、一連の処理のうちの自サーバ101−iが実行した処理の次に実行すべき処理の実行を要求するリクエストデータを生成することができる。ここで、図12および図13を用いて、図11に示した非同期型を例に挙げて、生成部905によって生成されるリクエストデータのデータ構造の一例について説明する。
図12および図13は、リクエストデータのデータ構造の一例を示す説明図である。図12に示すように、サーバ101−1では、クライアント装置102−jから受信したリクエストデータ600に、リクエスト本体1201と、レスポンス本体1202と、ログデータA1203と、をマージしたリクエストデータ1200が生成される。なお、マージとは、複数のデータを併合して一つのデータを生成することをいう。リクエスト本体1201は、サーバ101−2に処理の実行を要求するデータである。レスポンス本体は、自サーバ101−1の処理結果である。ログデータA1203は、サーバ101−1において収集されたログデータである。サーバ101−1は、生成されたリクエストデータ1200をサーバ101−2に送信する。
図13に示すように、サーバ101−1からリクエストデータ1200を受信したサーバ101−2では、受信したリクエストデータ1200に、リクエスト本体1301と、レスポンス本体1302と、ログデータB1303と、をマージする。そして、サーバ101−2では、マージによりリクエストデータ1300が生成される。具体的には、サーバ101−2では、受信したリクエストデータ1200に含まれるレスポンス本体1202と、リクエストデータ600と、ログデータA1203とを抽出する。そして、サーバ101−2では、抽出したデータと、自サーバ101−2で生成したリクエスト本体1301と、レスポンス本体1302と、ログデータB1303とをマージする。
リクエスト本体1301は、サーバ101−3に処理の実行を要求するデータである。レスポンス本体1302は、自サーバ101−2の処理結果である。ログデータB1303は、サーバ101−2において収集されたログである。サーバ101−2は、生成されたリクエストデータ1300をサーバ101−3に送信する。図12および図13に示すように、サーバ101−iにより、既に処理を実行したサーバ101−iから出力されたログデータと、自サーバ101−iで出力したログデータと、が集約されていく。
図9の説明に戻り、また、生成部905は、クライアント装置102−jに対するレスポンスデータを生成する機能を有する。具体的には、例えば、生成部905は、自サーバ101−iに割り当てられている処理が最後に実行される処理である場合、クライアント装置102−jに対するレスポンスデータを生成する。上述したように、レスポンスデータとは、リクエスト本体601によって要求された一連の処理を実行した各サーバ101−iから出力された処理結果となるレスポンス本体を含むデータである。また、レスポンスデータとは、リクエスト本体601によって要求された一連の処理を実行した各サーバ101−iから出力されたログデータを含むデータである。
これにより、生成部905は、一連の処理のうちの自サーバ101−iが実行した処理が最後の処理である場合、クライアント装置102−jに送信するレスポンスデータを生成することができる。ここで、図14を用いて、図11に示した非同期型を例に挙げて、生成部905によって生成されるレスポンスデータのデータ構造の一例について説明する。
図14は、レスポンスデータのデータ構造の一例を示す説明図である。図14に示すように、サーバ101−2からリクエストデータ1300を受信したサーバ101−3では、受信したリクエストデータ1300に、レスポンス本体1401と、ログデータC1402と、をマージしたレスポンスデータ1400が生成される。
具体的には、サーバ101−3では、受信したリクエストデータ1300に含まれるレスポンス本体1202,1302と、リクエストデータ600と、ログデータA1203と、ログデータB1303とを抽出する。そして、サーバ101−3では、抽出したデータに、自サーバ101−3で生成したレスポンス本体1401と、ログデータC1402とをマージする。レスポンス本体1401は、自サーバ101−3の処理結果である。ログデータC1402は、サーバ101−3において収集されたログである。サーバ101−3は、生成されたレスポンスデータ1400をクライアント装置102−jに送信する。
図14に示すように、サーバ101−iにより、既に処理を実行したサーバ101−iから出力されたログデータと、自サーバ101−iで出力したログデータと、が集約される。そのため、特定の記憶領域150では、レスポンスデータ1400ごとにログデータを記憶しておくことで、一連の処理ごとにログデータを記憶しておくことができるようになる。また、図14に示すように、ログデータA1203、ログデータB1303、およびログデータC1402を生成順に並べてマージすることで、一連の処理が実行されたサーバ101−iの順序を把握することができる。そのため、特定の記憶領域150では、一連の処理が実行された順序を特定できるようにログデータを記憶しておくことができるようになる。
これにより、情報収集装置201の管理者は、一連の処理に関連するログデータのみを参照したり、一連の処理が実行された順序を把握したりすることができるようになりログの解析が容易になる。また、ログデータには、例えば、リクエストの種別を特定する情報が付与されていてもよい。リクエストの種別を特定する情報とは、例えば、リクエスト名やリクエストから派生して実行される一連の処理を特定する処理IDなどがある。これにより、情報収集装置201は、特定のクライアント装置102についてのログデータのうちの特定の種別のリクエストに関するログのみを収集できるようになる。なお、リクエストの種別を特定する情報は、例えば、クライアント装置102−jからサーバ101−iに送信されるリクエストデータ600に含まれている。
次に、図15および図16を用いて、図14のレスポンスデータ1400に含まれるログデータの具体例について説明する。
図15および図16は、ログデータの具体例を示す説明図である。図15に示すログデータにおいて、符号1510で示す箇所には、レスポンスデータ1400を送信したサーバ101−iのIPアドレスが記載されている。ここでは、符号1510の箇所にはIPアドレスとして「192.168.58.4」が記載されている。
符号1521で示す箇所には、サーバ101−iが採取したログが記載されている。ここでは、符号1521の箇所には「tracelog」が記載されており、サーバ101−iが採取したログはトレースログであることが示されている。
符号1522で示す箇所には、サーバ101−iが採取したログの中から収集した特定の種別のログが記載されている。ここでは、符号1522の箇所にはサーバ101−iがトレースログの中から収集したデバッグログが記載されている。具体的には、符号1522の箇所にはログが生成された日時「2011/06/28 11:42:35」と、ログが生成されたプロセス名「esistart」と、ログの種別「DEBUG」が記載されている。また、符号1522の箇所にはログのID「DEBUG99999」と、ログの内容「xxxxx」と、が記載されている。
なお、符号1531で示す箇所には、符号1521で示す箇所と同様の内容が記載されている。符号1532で示す箇所には、符号1522で示す箇所と同様の内容が記載されている。具体的には、符号1531および符号1532で示す箇所には、サーバ101−iが採取したシーケンスログの中から収集したデバッグログが記載されている。
図16に示すログデータ通知要求602において、符号1610で示す箇所には、符号1510で示す箇所と同様にサーバ101−iのIPアドレスが記載されている。ここでは、符号1610の箇所にはIPアドレスとして「192.168.58.4」が記載されている。
符号1621および符号1631で示す箇所には、符号1521で示す箇所と同様の内容が記載されている。符号1622および符号1632で示す箇所には、符号1522で示す箇所と同様の内容が記載されている。
具体的には、符号1621および符号1622で示す箇所には、サーバ101−iが採取したトレースログの中から収集したエラーログが記載されている。また、符号1631および符号1632で示す箇所には、サーバ101−iが採取したシーケンスログの中から収集したエラーログが記載されている。
図9の説明に戻り、書込制御部906は、第1のログ情報および第2のログ情報の、クライアント装置102−jに対応する特定の記憶領域150への書き込みを制御する機能を有する。第2のログ情報は、第2の処理の実行に応じて出力されたログ、または、第2の処理の実行に応じて出力されたログの中から抽出部904によって抽出されたログである。
具体的には、例えば、書込制御部906は、第2の処理の処理要求が受信された場合、一連の処理のうちの第2の処理が最後に実行される処理であるか否かを判定する。そして、書込制御部906は、最後に実行される処理であると判定された場合、クライアント装置102−jに第1および第2のログ情報を送信する。これにより、書込制御部906は、クライアント装置102−j内の特定の記憶領域150に第1および第2のログ情報を書き込むようクライアント装置102−jに指示する。
より具体的には、例えば、書込制御部906は、自サーバ101−iが実行した処理がクライアント装置102−jからのリクエスト本体601から派生した一連の処理の最後の処理であるか否かを判定する。そして、書込制御部906は、自サーバ101−iが実行した処理が最後の処理である場合、ログデータを含むレスポンスデータ1400を生成して、送信部907にレスポンスデータ1400をクライアント装置102−jへ送信させる。
これにより、書込制御部906は、レスポンスデータ1400に含まれるログデータをクライアント装置102−j内の特定の記憶領域150へ書き込むように、クライアント装置102−jに指示する。レスポンスデータ1400とは、例えば、図14に示したデータである。これにより、書込制御部906は、ログデータをクライアント装置102−jに記録させることができる。
書込制御部906は、第1および第2のログ情報を含む、一連の処理のうちの第3の処理の処理要求を、送信部907にシステム内の他のサーバ101−kへ送信させる機能を有する。ここで、第3の処理とは、リクエスト本体601から派生した一連の処理のうちの第2の処理の次に実行すべき処理である。ここで、第3の処理の処理要求とは、第2の処理を実行したサーバ101−iで生成されたリクエスト本体であり、例えば、図13に示したリクエスト本体1301である。具体的には、例えば、書込制御部906は、第2の処理の処理要求が受信された場合、一連の処理のうちの第2の処理が最後に実行される処理であるか否かを判定する。そして、書込制御部906は、最後に実行される処理ではないと判定された場合、第1および第2のログ情報を含む、一連の処理のうちの第3の処理の処理要求を、送信部907にシステム内の他のサーバ101−kへ送信させる。
より具体的には、例えば、書込制御部906は、自サーバ101−iが実行した処理がクライアント装置102−jからのリクエスト本体601から派生した一連の処理の最後の処理であるか否かを判定する。そして、書込制御部906は、自サーバ101−iが実行した処理が最後の処理ではない場合、ログデータを含むリクエストデータ1300を生成して、送信部907にリクエストデータ1300を、次の処理を実行する他のサーバ101−kへ送信させる。リクエストデータ1300とは、例えば、図13に示したデータである。これにより、書込制御部906は、自サーバ101−iで生成したログデータと、既に処理を実行したサーバ101−iで生成されたログデータと、を次の処理を実行する他のサーバ101−kに送信することで、次の処理を実行する他のサーバ101−kにログデータを集約させることができる。
書込制御部906は、実行部903による第1の処理の実行に応じて出力される第1のログ情報を含む、一連の処理のうちの第2の処理の処理要求を、送信部907にシステム内の他のサーバ101−kへ送信させる機能を有する。具体的には、例えば、書込制御部906は、ログデータを含むリクエストデータが生成されている場合、送信部907に、リクエストデータを次の処理を実行する他のサーバ101−kへ送信させる。リクエストデータとは、例えば、図12に示したリクエストデータ1200である。
なお、書込制御部906は、一連の処理が同期型の処理であれば、次の処理を実行する子サーバに、リクエストデータ1200を送信する。また、書込制御部906は、一連の処理が非同期型の処理であれば次に処理を実行するサーバ101−iに、リクエストデータ1200を送信する。これにより、書込制御部906は、自サーバ101−iで生成したログデータと、既に処理を実行したサーバ101−iで生成されたログデータと、を次の処理を実行する他のサーバ101−kに送信することで、次の処理を実行する他のサーバ101−kにログデータを集約させることができる。
以上では、特定の記憶領域150がクライアント装置102−jにある場合について説明したが、特定の記憶領域150は、サーバ101−i、またはストレージ装置160にあってもよい。この場合、クライアント装置102−jから受信したリクエストデータ600には、ログデータ通知要求602は含まれていない。以下では、特定の記憶領域150がサーバ101−i、またはストレージ装置160にある場合を例に挙げて、書込制御部906の機能について説明する。
書込制御部906は、受信したリクエストデータ600にログデータ通知要求602が含まれていない場合、複数のサーバ101−iの中から、特定の記憶領域150を有するサーバ101−iを特定する機能を有する。そして、書込制御部906は、特定されたサーバ101−iに第1および第2のログ情報を送信することにより、特定の記憶領域150に第1および第2のログ情報を書き込むようサーバ101−iに指示する機能を有する。
具体的には、例えば、書込制御部906は、図17に後述する書込先テーブルを参照することにより、ログデータを書き込む特定の記憶領域150を有する他のサーバ101−kを特定し、特定された他のサーバ101−kに、ログデータの書き込みを指示する。ログデータの書き込みを指示された他のサーバ101−kは、当該ログデータに関するクライアント装置102−jに対応付けた特定の記憶領域150を確保し、確保した記憶領域150にログデータを書き込む。このとき、例えば、他のサーバ101−kは、クライアント装置102−jに対応付けて特定の記憶領域150を記憶した記憶先テーブルを作成しておく。ログデータの書き込みを指示された他のサーバ101−kは、当該ログデータに関するクライアント装置102−jに対応付けた特定の記憶領域150が確保されている状態であれば、当該記憶先テーブルに基づいて、当該特定の記憶領域150にログデータを書き込む。
他のサーバ101−kは、情報収集装置201から特定のクライアント装置102−jについてのログを要求された場合、当該記憶先テーブルに基づいて、当該クライアント装置102−jに対応付けられた特定の記憶領域150を参照することで、情報収集装置201にログデータを送信する。これにより、書込制御部906は、クライアント装置102−jに対応付けたログデータを他のサーバ101−kに記録させることができる。結果として、情報収集装置201からクライアント装置102−jについてのログデータを要求されたとき、クライアント装置102−jについてのログデータのみを特定して、情報収集装置201に送信することができるようになる。
また、書込制御部906は、自サーバ101−iが特定された場合、自サーバ101−i内の特定の記憶領域150に、第1および第2のログ情報を書き込む。これにより、書込制御部906は、ログデータを自サーバ101−i内で記録しておくことができる。
(書込先テーブルの記憶内容の一例)
ここで、図17を用いて、書込制御部906によって特定の記憶領域150を有するサーバ101−iまたはストレージ装置160を特定する際に参照される書込先テーブルの記憶内容の一例について説明する。
図17は、書込先テーブルの記憶内容の一例を示す説明図である。図17に示すように、書込先テーブル1700は、クライアント装置IDおよび記憶領域識別情報のフィールドを有する。書込先テーブル1700は、各フィールドに情報を設定することで、各々のクライアント装置IDのクライアント装置102−jに関連するログデータを記憶する特定の記憶領域150を有するサーバ101−iまたはストレージ装置160を識別する情報を、レコードとして記憶している。各レコードは、例えば、情報収集装置201の管理者によって予め設定される。
ここで、クライアント装置IDは、クライアント装置102−jを識別するID(IDentification)である。例えば、クライアント装置IDとしては、IPアドレスが採用される。記憶領域識別情報は、ログデータを書き込む特定の記憶領域150を識別する情報である。例えば、記憶領域識別情報としては、ログデータを書き込むサーバ101−iのIPアドレスが採用される。なお、書込先テーブル1700は、例えば、ログ収集システム200内の各サーバ101−1〜101−nが記憶している。また、同期型の一連の処理を実行する場合であれば、親サーバになりうるサーバ101−iのみが、書込先テーブル1700を記憶していてもよい。
サーバ101−iでは、書込先テーブル1700を参照することで、ログデータを書き込ませるサーバ101−iまたはストレージ装置160を特定できるようになる。例えば、サーバ101−iは、書込先テーブル1700のレコード1701を参照することで、IPアドレス「192.168.10.1」のクライアント装置102−jについてのログデータを、書き込ませるサーバ101−iまたはストレージ装置160を特定できる。ここでは、サーバ101−iは、ログデータを書き込ませるコンピュータは、IPアドレス「192.168.58.1」で識別されるコンピュータであることを特定できる。
また、書込先テーブル1700は、情報収集装置201に記憶されていてもよい。情報収集装置201では、書込先テーブル1700を参照することで、ログを収集する対象のクライアント装置102−jについてのログデータが書き込まれた特定の記憶領域150を特定できるようになる。例えば、情報収集装置201は、書込先テーブル1700のレコード1701を参照することで、IPアドレス「192.168.10.1」のクライアント装置102−jについてのログデータが書き込まれた特定の記憶領域150を特定できる。ここでは、情報収集装置201は、ログデータが書き込まれた特定の記憶領域150は、IPアドレス「192.168.58.1」で特定されるコンピュータにあることを特定できる。
なお、上述した説明では、ログデータ通知要求602に出力ログのフィールドが含まれている場合について説明したが、これに限らない。例えば、クライアント装置102−jのIPアドレスと収集するログの種別とを関連付けたテーブルを各サーバ101−iが記憶しておき、各サーバ101−iで各クライアント装置102−jに対応する収集するログの種別を特定してもよい。
これにより、クライアント装置102−jに対応する特定の記憶領域150に、クライアント装置102−jについてのログデータが集約される。そのため、情報収集装置201の管理者は、収集の対象にするクライアント装置102−jに対応する特定の記憶領域150を参照することで、ログデータを収集することができるようになる。このとき、他のクライアント装置102−jについてのログデータは収集されない。そのため、情報収集装置201の管理者は、ログデータの収集にかかる時間を短縮することができる。また、ログデータの収集によって使用される通信帯域を削減することができる。そして、情報収集装置201の管理者は、収集の対象にするクライアント装置102−j以外のクライアント装置102−jのログデータを収集しないため、セキュリティを向上できる。
情報収集装置201の管理者は、ログデータがクライアント装置102−jに記憶されている場合、クライアント装置102−jからログデータを収集する。このとき、情報収集装置201の管理者は、クライアント装置102−jにログデータの送信を要求することでログデータを自動収集してもよい。また、情報収集装置201の管理者は、クライアント装置102−jを操作することでログデータを記録媒体にコピーして、情報収集装置201で記録媒体からログデータを読み出してもよい。
また、情報収集装置201の管理者は、ログデータがサーバ101−iまたはストレージ装置160に記憶されている場合、図17に示した書込先テーブル1700を参照して、ログデータの書込先を特定して、特定した書込先から、ログデータを収集する。このとき、情報収集装置201の管理者は、特定した書込先であるサーバ101−iにログデータの送信を要求することでログデータを自動収集してもよい。また、情報収集装置201の管理者は、ストレージ装置160からログデータを読み出してもよい。なお、情報収集装置201の管理者は、特定の記憶領域150から、特定の期間内に生成されたログデータのみを収集するようにしてもよい。
(実施の形態にかかるクライアント装置102−jのリクエスト処理手順の一例)
次に、図18を用いて、実施の形態にかかるクライアント装置102−jのリクエスト処理手順の一例について説明する。
図18は、実施の形態にかかるクライアント装置102−jのリクエスト処理手順の一例を示すフローチャートである。まず、クライアント装置102−jは、ログデータを要求するか否かを判定する(ステップS1801)。ここで、ログデータを要求しない場合(ステップS1801:No)、クライアント装置102−jは、ステップS1804に移行する。
一方、ログデータを要求する場合(ステップS1801:Yes)、クライアント装置102−jは、ログデータ通知要求602を生成する(ステップS1802)。次に、クライアント装置102−jは、リクエストデータ600を生成する(ステップS1803)。そして、クライアント装置102−jは、生成したリクエストデータ600を送信する(ステップS1804)。
次に、クライアント装置102−jは、レスポンスデータ1400を受信したか否かを判定する(ステップS1805)。ここで、レスポンスデータ1400を受信していない場合(ステップS1805:No)、クライアント装置102−jは、ステップS1805に戻り、レスポンスデータ1400の受信を待つ。
一方、レスポンスデータ1400を受信した場合(ステップS1805:Yes)、クライアント装置102−jは、受信したレスポンスデータ1400にログデータが含まれているか否かを判定する(ステップS1806)。ここで、ログデータが含まれていない場合(ステップS1806:No)、クライアント装置102−jは、ステップS1809に移行する。
一方、ログデータが含まれている場合(ステップS1806:Yes)、クライアント装置102−jは、レスポンスデータ1400の中からログデータを抽出する(ステップS1807)。次に、クライアント装置102−jは、抽出したログデータをログファイルに記録する(ステップS1808)。
そして、クライアント装置102−jは、レスポンス処理を実行して(ステップS1809)、リクエスト処理を終了する。これにより、クライアント装置102−jは、サーバ101−iに処理を要求することができ、サーバ101−iから処理結果を受信することができる。
(実施の形態にかかるサーバ101−iのレスポンス処理手順の一例)
次に、図19を用いて、実施の形態にかかるサーバ101−iのレスポンス処理手順の一例について説明する。なお、レスポンス処理は、クライアント装置102−jからリクエストデータ600を受信したサーバ101−iにより実行される処理であり、例えば、図10または図11に示したサーバ101−1により実行される処理である。
図19は、実施の形態にかかるサーバ101−iのレスポンス処理手順の一例を示すフローチャートである。まず、サーバ101−iは、リクエストデータ600を受信したか否かを判定する(ステップS1901)。ここで、リクエストデータ600を受信していない場合(ステップS1901:No)、サーバ101−iは、ステップS1901に戻り、リクエストデータ600の受信を待つ。
一方、リクエストデータ600を受信した場合(ステップS1901:Yes)、サーバ101−iは、出力ログを特定する(ステップS1902)。次に、サーバ101−iは、処理を実行する(ステップS1903)。そして、サーバ101−iは、ログ抽出処理を実行する(ステップS1904)。
次に、サーバ101−iは、リクエストデータ600に基づいて実行すべき処理が同期型か否かを判定する(ステップS1905)。ここで、同期型である場合(ステップS1905:Yes)、サーバ101−iは、同期型呼出処理を実行し(ステップS1906)、レスポンス処理を終了する。
一方、同期型でない場合(ステップS1905:No)、サーバ101−iは、非同期型呼出処理を実行し(ステップS1907)、レスポンス処理を終了する。これにより、サーバ101−iは、リクエストデータ600に含まれるリクエスト本体601に応じた処理を実行することができる。
(同期型呼出処理の具体的処理手順の一例)
次に、図20を用いて、同期型呼出処理の具体的処理手順の一例について説明する。同期型呼出処理は、ステップS1906でサーバ101−iにより実行される処理である。また、同期型呼出処理は、図10に示したサーバ101−1〜サーバ101−3により実行される処理である。
図20は、同期型呼出処理の具体的処理手順の一例を示すフローチャートである。まず、サーバ101−iは、自サーバ101−iが親サーバであるか否かを判定する(ステップS2001)。ここで、親サーバでない場合(ステップS2001:No)、サーバ101−iは、レスポンス本体とログデータとを含むレスポンスデータを生成する(ステップS2002)。次に、サーバ101−iは、生成したレスポンスデータを親サーバに送信する(ステップS2003)。そして、サーバ101−iは、同期型呼出処理を終了する。
一方、親サーバである場合(ステップS2001:Yes)、サーバ101−iは、リクエストデータを生成する(ステップS2004)。次に、サーバ101−iは、生成したリクエストデータを子サーバに送信する(ステップS2005)。そして、サーバ101−iは、送信したリクエストデータに応じたレスポンスデータを受信したか否かを判定する(ステップS2006)。ここで、レスポンスデータを受信していない場合(ステップS2006:No)、サーバ101−iは、ステップS2006に戻り、レスポンスデータの受信を待つ。
一方、レスポンスデータを受信した場合(ステップS2006:Yes)、サーバ101−iは、すべての子サーバを呼び出したか否かを判定する(ステップS2007)。ここで、すべての子サーバを呼び出していない場合(ステップS2007:No)、サーバ101−iは、ステップS2004に戻る。
一方、すべての子サーバを呼び出した場合(ステップS2007:Yes)、サーバ101−iは、子サーバからのレスポンス本体をマージする(ステップS2008)。次に、サーバ101−iは、子サーバからのログデータをマージする(ステップS2009)。そして、サーバ101−iは、レスポンスデータを生成する(ステップS2010)。
次に、サーバ101−iは、生成したレスポンスデータをクライアント装置102−jに送信する(ステップS2011)。そして、サーバ101−iは、同期型呼出処理を終了する。これにより、サーバ101−iは、同期型である一連の処理を実行することができる。
(非同期型呼出処理の具体的処理手順の一例)
次に、図21を用いて、非同期型呼出処理の具体的処理手順の一例について説明する。非同期型呼出処理は、ステップS1907でサーバ101−iにより実行される処理である。また、非同期型呼出処理は、図11に示したサーバ101−1〜サーバ101−3により実行される処理である。
図21は、非同期型呼出処理の具体的処理手順の一例を示すフローチャートである。まず、サーバ101−iは、自サーバ101−iが最後の非同期サーバ101−iか否かを判定する(ステップS2101)。ここで、自サーバ101−iが最後の非同期サーバ101−iである場合(ステップS2101:Yes)、サーバ101−iは、受信したリクエストデータ(リクエストデータ1300)に、レスポンス本体(レスポンス本体1401)をマージする(ステップS2102)。次に、サーバ101−iは、ログデータ(ログデータC1402)をマージする(ステップS2103)。そして、サーバ101−iは、レスポンスデータ1400を生成する(ステップS2104)。
次に、サーバ101−iは、生成したレスポンスデータ1400をクライアント装置102−jに送信する(ステップS2105)。そして、サーバ101−iは、非同期型呼出処理を終了する。
一方、自サーバ101−iが最後の非同期サーバ101−iでない場合(ステップS2101:No)、サーバ101−iは、受信したリクエストデータに、レスポンス本体(レスポンス本体1202、またはレスポンス本体1302)をマージする(ステップS2106)。次に、サーバ101−iは、ログデータ(ログデータA1203、またはログデータB1303)をマージする(ステップS2107)。そして、サーバ101−iは、リクエストデータ(リクエストデータ1200、またはリクエストデータ1300)を生成する(ステップS2108)。
次に、サーバ101−iは、生成したリクエストデータ(リクエストデータ1200、またはリクエストデータ1300)を他のサーバ101−kに送信する(ステップS2109)。そして、サーバ101−iは、非同期型呼出処理を終了する。これにより、サーバ101−iは、非同期型である一連の処理を実行することができる。
(ログ抽出処理の具体的処理手順の一例)
次に、図22を用いて、ログ抽出処理の具体的処理手順の一例について説明する。ログ抽出処理は、ステップS1904でサーバ101−iにより実行された処理である。なお、サーバ101−iにより採取されるログが複数あれば、ログ抽出処理は、それぞれのログを対象にして実行される。例えば、サーバ101−iによりトレースログおよびシーケンスログが採取された場合、ログ抽出処理は、トレースログおよびシーケンスログのそれぞれを対象にして実行される。
図22は、ログ抽出処理の具体的処理手順の一例を示すフローチャートである。まず、サーバ101−iは、ログデータ通知要求602に記載された収集すべきログの種別がエラーログか否かを判定する(ステップS2201)。ここで、収集すべきログの種別がエラーログである場合(ステップS2201:Yes)、サーバ101−iは、エラーログを抽出して(ステップS2202)、ログ抽出処理を終了する。
一方、収集すべきログの種別がエラーログでない場合(ステップS2201:No)、サーバ101−iは、ログデータ通知要求602に記載された収集すべきログの種別が警告ログか否かを判定する(ステップS2203)。ここで、収集すべきログの種別が警告ログである場合(ステップS2203:Yes)、サーバ101−iは、エラーログおよび警告ログを抽出して(ステップS2204)、ログ抽出処理を終了する。
一方、収集すべきログの種別が警告ログでない場合(ステップS2203:No)、サーバ101−iは、ログデータ通知要求602に記載された収集すべきログの種別が詳細ログか否かを判定する(ステップS2205)。ここで、収集すべきログの種別が詳細ログである場合(ステップS2205:Yes)、サーバ101−iは、エラーログ、警告ログおよび詳細ログを抽出して(ステップS2206)、ログ抽出処理を終了する。
一方、収集すべきログの種別が詳細ログでない場合(ステップS2205:No)、サーバ101−iは、エラーログ、警告ログ、詳細ログおよびデバッグログを抽出して(ステップS2207)、ログ抽出処理を終了する。これにより、サーバ101−iは、クライアント装置102−jから要求された種別のログを抽出することができる。
以上説明したように、実施の形態にかかるサーバ装置、システム、およびログ収集支援方法によれば、クライアント装置102−jに対応する特定の記憶領域150に、クライアント装置102−jについてのログデータが集約される。そのため、情報収集装置201の管理者は、収集の対象にするクライアント装置102−jに対応する特定の記憶領域150を参照することで、収集の対象にするクライアント装置102−jについてのログデータを収集することができるようになる。
また、情報収集装置201の管理者は、一連の処理を実行したサーバ101−iを特定して特定したサーバ101−iからログデータを収集する場合とは異なり、サーバ101−iを特定する作業を削減できる。また、情報収集装置201の管理者は、各サーバ101−iで生成されたログデータをそれぞれのサーバ101−iから収集する場合に比して収集されるログデータの量が少なくなるため、ログデータの収集にかかる時間を短縮することができる。また、各サーバ101−iで生成されたログデータをそれぞれのサーバ101−iから収集する場合に比して収集されるログデータの量が少なくなるため、ログデータの収集による通信量が削減され、ネットワーク210の負荷が軽減される。
また、情報収集装置201の管理者またはクライアント装置102−jの利用者は、サーバ101−iに収集させるログの種別を設定することで、収集するログデータの量を少なくすることができる。また、サーバ101−iは、サーバ101−iで収集するログの種別が設定されているため、収集しなくてよいログを収集せずにすみ、作業負担を軽減できる。
また、情報収集装置201の管理者は、収集の対象にするクライアント装置102−j以外のクライアント装置102−jのログデータを収集しないようにできるため、セキュリティを向上できる。具体的には、例えば、情報収集装置201において、クライアント装置102−jごとにログデータの収集についての認証を行うようにしておき、ログデータの収集について認証された場合にのみログデータを収集できるようにして、セキュリティを向上できる。
また、サーバ101−iは、集約したログデータをクライアント装置102−jで記憶させておく。そして、情報収集装置201の管理者は、クライアント装置102−jからログデータを収集することができる。そのため、情報収集装置201の管理者は、各サーバ101−iで生成されたログデータをそれぞれのサーバ101−iから収集する場合とは異なり、例えば、プロビジョニングによりクラウド環境に含まれるサーバ101−iが回収された場合でも、ログデータを収集できる。また、情報収集装置201の管理者は、プロビジョニングによりクラウド環境に追加されたサーバ101−iがあることを知らなくても、ログデータを収集できる。
また、サーバ101−iは、集約したログデータを、いずれかのサーバ101−iでクライアント装置102−jごとに分類して記憶させておく。そして、情報収集装置201の管理者は、サーバ101−iからログデータを収集することができる。そのため、それぞれのサーバ101−iで生成したログデータを記憶しておく場合に比して、ログデータの管理が容易になる。例えば、プロビジョニングによって、クラウド環境に含まれるサーバ101−iが回収される際に、回収されるサーバ101−iから他のサーバ101−kにログデータを退避することも容易にできるようになる。このとき、特定のクライアント装置102−jについてのログデータを退避させることも可能になる。
また、サーバ101−iは、クライアント装置102−jからのリクエストから派生して実行される一連の処理の実行に応じて、各々のサーバ101−iから出力されるログデータを集約してから、特定の記憶領域150への書き込みを指示する。そのため、各々のサーバ101−iから出力されるログデータの書き込みを、それぞれのサーバ101−iで個別に指示する場合に比べて、サーバ101−iと、記憶領域との間の通信回数(および特定の記憶領域150に対する書込処理の回数)を削減することができる。
また、クライアント装置102−jにログデータを記憶させておく場合、クライアント装置102−jでログデータに処理を加えることができる。そのため、クライアント装置102−jが、自装置の正常動作をチェックし、正常動作が確認された場合にログデータを消去するといったことができ、特定の記憶領域150の使用量を削減できる。
また、情報収集装置201の管理者は、ログデータが一連の処理ごとに集約されて特定の記憶領域150に書き込まれているため、情報収集装置201の管理者は、一連の処理についてのログのみを容易に抽出できる。ログデータが生成順に集約されて特定の記憶領域150に書き込まれているため、クライアント装置102−jからのリクエスト本体601から派生した一連の処理についての各サーバ101−iでの処理の順序を容易に把握できる。
なお、本実施の形態で説明したログ収集支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ログ収集支援プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本ログ収集支援プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)クライアント装置からのリクエストに応じて一連の処理を実行可能な複数のサーバ装置を含むシステム内のサーバ装置であって、
前記一連の処理のうちの第1の処理の実行に応じて出力される第1のログ情報を含む、前記一連の処理のうちの第2の処理の処理要求を、前記システム内の他のサーバ装置から受信した場合に、前記第2の処理を実行するとともに、前記第2の処理の実行内容に関する第2のログ情報を出力する実行部と、
前記第1のログ情報および前記第2のログ情報の、前記クライアント装置に対応する特定の記憶領域への書き込みを制御する書込制御部と、
を備えることを特徴とするサーバ装置。
(付記2)前記書込制御部は、
前記クライアント装置に前記第1および第2のログ情報を送信することにより、前記クライアント装置内の前記特定の記憶領域に前記第1および第2のログ情報を書き込むよう前記クライアント装置に指示することを特徴とする付記1に記載のサーバ装置。
(付記3)前記複数のサーバ装置の中から、前記特定の記憶領域を有するサーバ装置を特定する特定部を備え、
前記書込制御部は、
前記特定部によって特定された前記サーバ装置に前記第1および第2のログ情報を送信することにより、前記特定の記憶領域に前記第1および第2のログ情報を書き込むよう前記サーバ装置に指示することを特徴とする付記1または2に記載のサーバ装置。
(付記4)前記書込制御部は、
前記特定部によって自サーバ装置が特定された場合、前記特定の記憶領域に前記第1および第2のログ情報を書き込むことを特徴とする付記3に記載のサーバ装置。
(付記5)前記第2の処理の処理要求が受信された場合、前記一連の処理のうちの前記第2の処理が最後に実行される処理であるか否かを判定する判定部を備え、
前記書込制御部は、
前記判定部によって前記第2の処理が最後に実行される処理であると判定された場合、前記第1および第2のログ情報の前記特定の記憶領域への書き込みを制御することを特徴とする付記1〜4のいずれか一つに記載のサーバ装置。
(付記6)前記判定部によって前記第2の処理が最後に実行される処理ではないと判定された場合、前記第1および第2のログ情報を含む、前記一連の処理のうちの第3の処理の処理要求を、前記システム内の他のサーバ装置に送信する送信部を備えることを特徴とする付記5に記載のサーバ装置。
(付記7)前記実行部は、
前記リクエストを前記クライアント装置から受信した場合、前記第1の処理を実行するとともに、前記第1の処理の実行内容に関する第1のログ情報を出力し、
前記送信部は、
前記第1のログ情報を含む、前記一連の処理のうちの第2の処理の処理要求を、前記システム内の他のサーバ装置に送信することを特徴とする付記6に記載のサーバ装置。
(付記8)前記第2の処理の処理要求を受信した場合に、前記実行部によって出力されるログ情報の中から、前記リクエストから特定される所定の種別の前記第2のログ情報を抽出する抽出部を備え、
前記書込制御部は、
前記第1のログ情報および前記抽出部によって抽出された前記第2のログ情報の、前記特定の記憶領域への書き込みを制御することを特徴とする付記1〜7のいずれか一つに記載のサーバ装置。
(付記9)クライアント装置からのリクエストに応じて一連の処理を実行可能な第1のサーバ装置および第2のサーバ装置を含むシステムであって、
前記第1のサーバ装置は、
前記一連の処理のうちの第1の処理を実行するとともに、前記第1の処理の実行内容に関する第1のログ情報を出力し、前記第1のログ情報を含む、前記一連の処理のうちの第2の処理の処理要求を、前記第2のサーバ装置に送信し、
前記第2のサーバ装置は、
前記第2の処理の処理要求を受信した場合に、前記第2の処理を実行するとともに、前記第2の処理の実行内容に関する第2のログ情報を出力し、前記第2の処理の処理要求に含まれる前記第1のログ情報および前記第2のログ情報の、前記クライアント装置に対応する特定の記憶領域への書き込みを制御することを特徴とするシステム。
(付記10)クライアント装置からのリクエストに応じて一連の処理を実行可能な複数のサーバ装置を含むシステム内のサーバ装置が、
前記一連の処理のうちの第1の処理の実行に応じて出力される第1のログ情報を含む、前記一連の処理のうちの第2の処理の処理要求を、前記システム内の他のサーバ装置から受信した場合に、前記第2の処理を実行するとともに、前記第2の処理の実行内容に関する第2のログ情報を出力する実行工程と、
前記第1のログ情報および前記第2のログ情報の、前記クライアント装置に対応する特定の記憶領域への書き込みを制御する書込制御工程と、
を実行することを特徴とするログ収集支援方法。
(付記11)クライアント装置からのリクエストに応じて一連の処理を実行可能な複数のサーバ装置を含むシステム内のサーバ装置に、
前記一連の処理のうちの第1の処理の実行に応じて出力される第1のログ情報を含む、前記一連の処理のうちの第2の処理の処理要求を、前記システム内の他のサーバ装置から受信した場合に、前記第2の処理を実行するとともに、前記第2の処理の実行内容に関する第2のログ情報を出力する実行工程と、
前記第1のログ情報および前記第2のログ情報の、前記クライアント装置に対応する特定の記憶領域への書き込みを制御する書込制御工程と、
を実行させることを特徴とするログ収集支援プログラム。