(57)【特許請求の範囲】
【請求項１】
複数のサービス提供サーバと、前記サービス提供サーバからログを収集するログ収集サーバと、を有してなる分散処理システムであって、
前記ログ収集サーバは、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第１のリストと、
グループ毎に、そのグループに属するサービス提供サーバを表す第２のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したサービス提供サーバと同じグループに属する全てのサービス提供サーバから、障害が発生したプログラムについて前記第１のリストに表される順序に従ってログを収集するログ収集部と、を有する分散処理システム。
【請求項２】
前記ログ収集部は、
前記サービス提供サーバ上のプログラムに障害が発生した場合、最初に、障害が発生したサービス提供サーバからログを収集し、その後に、障害が発生したサービス提供サーバと同じグループに属する他のサービス提供サーバからログを収集する、請求項１に記載の分散処理システム。
【請求項３】
前記サービス提供サーバは、
自己のサービス提供サーバ上のプログラムに障害が発生したことを表すアラームを送信するアラーム送信部を有し、
前記分散処理システムは、
前記サービス提供サーバから前記アラームを受信し表示するアラーム監視サーバを有し、
前記ログ収集部は、
障害が発生したサービス提供サーバ上のプログラムに関連するログを収集する指示が入力されたことをトリガーとして、前記サービス提供サーバからログを収集する、請求項１または２に記載の分散処理システム。
【請求項４】
前記サービス提供サーバは、
自己のサービス提供サーバ上のプログラムに障害が発生したことを表すアラームを送信するアラーム送信部を有し、
前記ログ収集サーバは、
前記サービス提供サーバから前記アラームを受信するアラーム受信部を有し、
前記ログ収集部は、
前記アラームを受信したことをトリガーとして、前記サービス提供サーバからログを収集する、請求項１または２に記載の分散処理システム。
【請求項５】
サービス提供サーバからログを収集するログ収集サーバであって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第１のリストと、
グループ毎に、そのグループに属するサービス提供サーバを表す第２のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したサービス提供サーバと同じグループに属する全てのサービス提供サーバから、障害が発生したプログラムについて前記第１のリストに表される順序に従ってログを収集するログ収集部と、を有するログ収集サーバ。
【請求項６】
サービス提供サーバからログを収集するログ収集サーバが行うログ収集方法であって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第１のリストを登録し、
グループ毎に、そのグループに属するサービス提供サーバを表す第２のリストを登録し、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したサービス提供サーバと同じグループに属する全てのサービス提供サーバから、障害が発生したプログラムについて前記第１のリストに表される順序に従ってログを収集する、ログ収集方法。
【請求項７】
請求項６に記載のログ収集方法を前記ログ収集サーバに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバからログを収集する技術に関し、特に、複数のサーバから大容量のログを収集する技術に関する。
【背景技術】
【０００２】
分散処理システムは、複数のサーバが協調して動作することでサービスを提供するシステムであり、各サーバ上では複数のプログラムが動作する。
【０００３】
各プログラムは、障害発生時に備え、障害原因を特定するためのログ（解析用ログ）を各サーバに出力している。ログは、大容量のため、通常は各サーバに蓄積しており、障害発生時に各サーバから収集して、障害原因の特定のために解析者が使用する。
【０００４】
サーバからログを収集する技術として、例えば、非特許文献１には、簡易操作で運用可能な統合ログ管理環境を提供し、システム監査や障害調査に必要な各種ログを収集し、管理コストを削減する技術が記載されている。
【０００５】
また、サーバからログを収集する他の技術として、例えば、非特許文献２には、サーバの各部品や様々なサービス間の依存関係に注目し、システム全体の全ログの中から管理者が現在注目している事象に関連のあるログを自動抽出する技術が開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】ＮＥＣ、“WebSAM LogCollector”、［平成23年6月7日検索］、インターネット＜URL：http://www.nec.co.jp/middle/WebSAM/products/LogCollector/＞
【非特許文献２】敷田幹文、後藤宏志、“大規模サーバ間の部品依存関係に基づくログ管理支援法”、2008年3月15日、情報処理学会、情報処理学会論文誌、第49巻、第3号、p.1081-1089、［平成23年6月7日検索］、インターネット＜URL：http://hdl.handle.net/10119/7763＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、非特許文献１，２に記載の技術においては、ログを一括して収集した後に解析を開始するため、全てのログを回収するまで解析に着手できなかった。
【０００８】
分散処理システムを構成する複数のサーバから大容量のログを収集するには長い時間を要する（場合によっては数日を要する）ため、障害発生時に全ログの到着を待って解析に着手していては、障害原因の特定が遅れてしまう。
【０００９】
そこで、本発明の目的は、プログラムに障害が発生した場合に、解析者がログの到着を待つ時間を短縮することができる分散処理システム、ログ収集サーバ、ログ収集方法、プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の分散処理システムは、
複数のサービス提供サーバと、前記サービス提供サーバからログを収集するログ収集サーバと、を有してなる分散処理システムであって、
前記ログ収集サーバは、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第１のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第１のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する。
【００１１】
本発明のログ収集サーバは、
サービス提供サーバからログを収集するログ収集サーバであって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第１のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第１のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する。
【００１２】
本発明のログ収集方法は、
サービス提供サーバからログを収集するログ収集サーバが行うログ収集方法であって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第１のリストを登録し、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第１のリストに表される順序に従って前記サービス提供サーバからログを収集する。
【００１３】
本発明のプログラムは、
前記ログ収集方法を前記ログ収集サーバに実行させるためのものである。
【発明の効果】
【００１４】
本発明によれば、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【００１５】
これにより、障害発生時には、解析者が必要とする順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できるという効果が得られる。
【図面の簡単な説明】
【００１６】
【図１】プログラムの依存関係の例を示す図である。
【図２】障害の発生箇所と原因個所とが異なる例を示す図である。
【図３】ログ収集順序の例を示す図である。
【図４】分散処理システムにおけるサーバの動作例を示す図である。
【図５】本発明の第１および第２の実施形態の分散処理システムの構成例を示す図である。
【図６】ログ収集順序リストの例を示す図である。
【図７】サーバリストの例を示す図である。
【図８】本発明の第１の実施形態の分散処理システムの障害発生時の動作例を説明するシーケンスチャートである。
【図９】本発明の第１の実施形態のログ収集サーバのログ収集動作の動作例を説明するフローチャートである。
【図１０】本発明の第２実施形態のログ収集サーバのログ収集動作の動作例を説明するフローチャートである。
【図１１】本発明の第３の実施形態の分散処理システムの構成例を示す図である。
【図１２】本発明の第３の実施形態の分散処理システムの障害発生時の動作例を説明するシーケンスチャートである。
【発明を実施するための形態】
【００１７】
（１）本発明の概要
最初に、本発明の概要について説明する。
【００１８】
ここでは、１台のサーバにおいて、Ｐ１、Ｐ２、Ｐ３の３個のプログラムが動作するケースを考える。本ケースでは、Ｐ１、Ｐ２、Ｐ３の依存関係は、図１に示すように、Ｐ１がＰ２を使用し、Ｐ２がＰ３を使用するという関係になっている。また、図２に示すように、障害（アラーム）が発生したプログラムがＰ１、障害の真の原因となる不具合があるプログラムがＰ３だとする。
【００１９】
この場合、解析者は、Ｐ１の障害の原因を特定するため、まず、Ｐ１のログを解析する。Ｐ１のログを解析した結果、障害の原因がＰ１ではない場合、次に、解析者は、Ｐ１が使用するＰ２のログを解析する。Ｐ２のログを解析した結果、障害の原因がＰ２ではない場合、次に、解析者は、Ｐ２が使用するＰ３のログを解析する。そして、Ｐ３のログを解析した結果、障害の真の原因がＰ３の不具合であることを特定する。
【００２０】
上記のケースでは、解析者がログを必要とする順序は、Ｐ１→Ｐ２→Ｐ３の順序である。そのため、Ｐ１→Ｐ２→Ｐ３の順序でログを収集すれば、解析者がログの到着を待つ時間を短縮できる。
【００２１】
そこで、本発明では、図３に示すように、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【００２２】
これにより、障害発生時には、解析者が必要とするＰ１→Ｐ２→Ｐ３の順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できる。
【００２３】
一方、プログラム間の依存関係を考慮せずにログを収集した場合、例えば、最初にＰ１のログ、次にＰ３のログ、最後にＰ２のログを収集した場合を考える。
【００２４】
この場合には、解析者は、Ｐ１のログを解析後、Ｐ２のログを解析しようとするが、この時点ではＰ３のログしか収集できていない可能性がある。その場合には、解析者は、Ｐ２のログが到着するのを待つ必要があり、解析作業の進捗を阻害してしまう。
【００２５】
なお、上記のケースは、サーバが１台の例であるが、分散処理システムでは、図４に示すように、各プログラムは複数のサーバ上で稼動し、かつ、それらの複数のサーバが協調して動作する。各プログラムのログは、大容量であり、かつ、複数のサーバに分散して蓄積されるため、障害発生時に全てのログを収集するには非常に長い時間を要する。
【００２６】
障害発生時には、一刻も早く原因を特定する必要があり、ログ収集にかける時間は短ければ短いほど好ましい。ただ、解析者は、大容量のログの全てを一度に解析できるわけではないため、解析者が解析する順序でログを提供できれば、解析者がログの到着を待つ時間を短縮でき、解析作業の進捗を阻害することはない。
【００２７】
そのため、本発明では、図３のログ収集順序に従って、まず、サーバ１〜ＮのＰ１のログ、次に、サーバ１〜ＮのＰ２のログ、最後に、サーバ１〜ＮのＰ３のログの順序で収集して解析者に提供する。
【００２８】
これにより、解析者がログの到着を待つ時間を短縮することができる。
（２）本発明の実施形態
続いて、本発明の実施形態について説明する。
（２−１）第１の実施形態
図５に、本実施形態の分散処理システムの構成例を示す。
【００２９】
図５に示すように、本実施形態の分散処理システムは、複数台（より具体的には数百台以上）のサービス提供サーバ（以下、サーバと表記した場合にはサービス提供サーバを意味する）１０と、アラーム監視サーバ２０と、ログ収集サーバ３０と、を有している。
【００３０】
サーバ１０は、同一サービスを提供するグループ毎に分類される。
【００３１】
サーバ１０は、障害発生時に備えて解析に必要なログを蓄積している。
【００３２】
なお、図５において、Ｐｚｉは、グループｚの各サーバ１０にインストールされたｉ個目のプログラム（ｚ＝Ａ，Ｂ，・・・、ｉ＝１，２，・・・）であり、また、Ｌｚｉは、プログラムＰｚｉのログ（ｚ＝Ａ，Ｂ，・・・、ｉ＝１，２，・・・）である（以下の図面において同じ）。
【００３３】
サーバ１０は、自己のサービス提供サーバ上のプログラムに障害が発生した場合、アラームを送信するアラーム送信部１１を有している。なお、アラームは、自己のサーバ１０を識別する情報と障害が発生したプログラムを識別する情報を含むものとする。
【００３４】
アラーム監視サーバ２０は、障害が発生したサーバ１０からアラームを受信するアラーム受信部２１と、アラーム受信部２１が受信したアラームを表示するアラーム表示部２２と、を有している。
【００３５】
ログ収集サーバ３０は、障害発生時にサーバ１０からログを収集するログ収集部３１と、サーバ１０から収集したログを格納するログ格納部３２と、ログ収集順序リスト３３と、サーバリスト３４と、を有している。
【００３６】
図６に、ログ収集順序リスト３３の例を示す。
【００３７】
図６に示すように、ログ収集順序リスト３３は、プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第１のリストである。
【００３８】
図７に、サーバリスト３４の例を示す。
【００３９】
図７に示すように、サーバリスト３４は、グループ毎に、そのグループに属するサーバ１０の情報（サーバ名、ＩＰアドレス等）を表す第２のリストである。
【００４０】
分散処理システムでは、基本的には、グループ単位でサービスを提供し、同一グループに属するサーバ１０間で協調動作を行う。
【００４１】
そのため、ログ収集部３１は、サーバ１０で障害が発生した場合、そのサーバ１０と同じグループに属する全てのサーバ１０からログを収集する。
【００４２】
以下に、本実施形態の分散処理システムの動作について説明する。
【００４３】
図８に、本実施形態の分散処理システムにおいて、サーバ１０−Ａ１上で動作するプログラムＰＡ１に障害が発生した時の動作例を説明するシーケンスチャートを示す。
【００４４】
図８に示すように、各プログラムＰｚｉは、ログＬｚｉをサーバ１０に常時出力している（ステップＡ１）。
【００４５】
ここで、サーバ１０−Ａ１上のプログラムＰＡ１に障害が発生したとする（ステップＡ２）。
【００４６】
すると、サーバ１０−Ａ１のアラーム送信部１１は、アラーム監視サーバ２０にアラームを送信する（ステップＡ３）。
【００４７】
アラーム監視サーバ２０内では、アラーム受信部２１は、アラームを受信すると、そのアラームをアラーム表示部２２に表示する（ステップＡ４）。
【００４８】
運用者２０Ａは、アラーム監視サーバ２０のアラーム表示部２２を監視することにより、サーバ１０−Ａ１上のプログラムＰＡ１にて障害が発生したことを確認する（ステップＡ５）。
【００４９】
次に、運用者２０Ａは、ログ収集サーバ３０のログ収集部３１に対し、サーバ１０−Ａ１のプログラムＰＡ１に関連するログの収集を指示する（ステップＡ６）。
【００５０】
すると、ログ収集部３１は、後述する図９に示すフローに従って、サーバ１０−Ａ１と同じグループに属する全てのサーバ１０からログを収集し、収集したログをログ格納部３２に格納する（ステップＡ７）。
【００５１】
解析者３０Ａは、ログＬＡ１が収集され次第、解析を開始する（ステップＡ８）。
【００５２】
ここでは、ログ収集部３１により、ログはＬＡ１→ＬＡ２→ＬＡ３・・・→ＬＡＸの順序で収集される。そのため、障害の真の原因がＰＡ１でなかった場合、解析者３０Ａは、ＬＡ２→ＬＡ３・・・の順序でログを解析する。
【００５３】
図９に、ログ収集部３１のログ収集動作の動作例を説明するフローチャートを示す。
【００５４】
図９に示すように、まず、ログ収集部３１は、ＮとＸを初期化してそれぞれ１にする（ステップＢ１）。
【００５５】
次に、ログ収集部３１は、ログ収集順序リスト３３から、プログラムＰＡ１の障害発生時にＸ番目に収集すべき対象ログを特定する（ステップＢ２）。
【００５６】
次に、ログ収集部３１は、サーバリスト３４から、障害が発生したサーバ１０−Ａ１が属するグループＡのＮ番目に収集すべき対象サーバを特定する（ステップＢ３）。
【００５７】
なお、Ｎ番目のサーバは、例えば、サーバリスト３４に記載されたサーバ名の数字部分の順序や、サーバリスト３４の記載の順序等で判断する。
【００５８】
次に、ログ収集部３１は、対象サーバから対象ログを収集する（ステップＢ４）。
【００５９】
次に、ログ収集部３１は、Ｎをインクリメントし（ステップＢ５）、グループＡの中に対象ログを未収集の未収集サーバがあるか否かを判断し（ステップＢ６）、未収集のサーバがあれば（ステップＢ６のＹＥＳ）、ステップＢ３に戻る。
【００６０】
一方、グループＡの中に未収集サーバがなければ（ステップＢ６のＮＯ）、ログ収集部３１は、Ｘをインクリメントすると共にＮを初期化して１にし（ステップＢ７）、プログラムＰＡ１の障害発生時に収集すべきログの中に、未収集ログがあるか否かを判断し（ステップＢ８）、未収集ログがあれば（ステップＢ８のＹＥＳ）、ステップＢ２に戻り、未収集ログがなければ（ステップＢ８のＮＯ）、処理を終了する。
【００６１】
上述したように本実施形態によれば、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【００６２】
これにより、障害発生時には、解析者が必要とする順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できる。
（２−２）第２の実施形態
本実施形態の分散処理システムは、第１の実施形態と構成自体は同様であるが、動作が第１の実施形態とは異なる。
【００６３】
すなわち、第１の実施形態においては、障害が発生したサーバ１０と同じグループに属するサーバ１０からログを収集する際に、サーバ名の数字部分の順序やサーバリスト３４に記載された順序でログを収集していた。
【００６４】
これに対して、本実施形態においては、最初に、障害が発生したサーバ１０からログを収集し、その後に、障害が発生したサーバ１０と同じグループに属する他のサーバ１０からログを収集する。
【００６５】
以下、本実施形態の分散処理システムの動作について説明する。
【００６６】
なお、本実施形態は、第１の実施形態と比較して、ログ収集部３１のログ収集動作が異なり、その他の動作は同様である。そのため、以下では、本実施形態のログ収集動作の動作例についてのみ、図１０を参照して説明する。
【００６７】
図１０に示すように、まず、ログ収集部３１は、障害が発生したサーバ１０−Ａ１を、最初にログを収集すべきサーバと決定する（ステップＣ１）。
【００６８】
次に、ログ収集部３１は、Ｘを初期化して１にする（ステップＣ２）。
【００６９】
次に、ログ収集部３１は、ログ収集順序リスト３３から、プログラムＰＡ１の障害発生時にＸ番目に収集すべき対象ログを特定する（ステップＣ３）。
【００７０】
次に、ログ収集部３１は、サーバ１０−Ａ１から対象ログを収集する（ステップＣ４）。
【００７１】
次に、ログ収集部３１は、Ｘをインクリメントし（ステップＣ５）、プログラムＰＡ１の障害発生時に収集すべきログの中に、未収集ログがあるか否かを判断し（ステップＣ６）、未収集ログがあれば（ステップＣ６のＹＥＳ）、ステップＣ３に戻り、未収集ログがなければ（ステップＣ６のＮＯ）、ステップＣ７に進む。
【００７２】
以降、図９に示したステップＢ１〜Ｂ８と同様のステップＣ７〜Ｃ１４の処理を行う。
【００７３】
上述したように本実施形態によれば、障害が発生したサーバ１０から最初にログを収集するため、障害が発生したサーバ１０のログを優先して解析することができる。
【００７４】
その他の効果は第１の実施形態と同様である。
（２−３）第３の実施形態
図１１に、本実施形態の分散処理システムの構成例を示す。
【００７５】
図１１に示すように、本実施形態の分散処理システムは、図５に示した第１の実施形態と比較して、アラーム監視サーバ２０を削除した点と、ログ収集サーバ３０にアラーム受信部３５を追加した点と、が異なる。
【００７６】
第１の実施形態においては、運用者２０Ａがアラーム監視サーバ２０を監視し、アラームを確認した場合にログ収集サーバ３０にログ収集を手動で指示し、ログ収集サーバ３０は、運用者２０Ａの指示をトリガーとしてログを収集していた。
【００７７】
これに対して、本実施形態においては、各サーバ１０からログ収集サーバ３０に直接アラームを送信し、ログ収集サーバ３０は、アラームの受信をトリガーとして、そのアラームに関連するログを自動で収集する。
【００７８】
以下に、本実施形態の分散処理システムの動作について説明する。
【００７９】
図１２に、本実施形態の分散処理システムにおいて、サーバ１０−Ａ１上で動作するプログラムＰＡ１に障害が発生した時の動作例を説明するシーケンスチャートを示す。
【００８０】
図１２に示すように、各プログラムＰｚｉは、ログＬｚｉをサーバ１０に常時出力している（ステップＤ１）。
【００８１】
ここで、サーバ１０−Ａ１上のプログラムＰＡ１に障害が発生したとする（ステップＤ２）。
【００８２】
すると、サーバ１０−Ａ１のアラーム送信部１１は、ログ収集サーバ３０にアラームを送信する（ステップＤ３）。
【００８３】
ログ収集サーバ３０内では、アラーム受信部３５は、アラームを受信すると、そのアラームに関連するログの収集をログ収集部３１に指示する（ステップＤ４）。
【００８４】
すると、ログ収集部３１は、上述した図９または図１０に示すフローに従って、サーバ１０−Ａ１と同じグループに属する全てのサーバ１０からログを収集し、収集したログをログ格納部３２に格納する（ステップＤ５）。
【００８５】
解析者３０Ａは、ログＬＡ１が収集され次第、解析を開始する（ステップＤ６）。
【００８６】
ここでは、ログ収集部３１により、ログはＬＡ１→ＬＡ２→ＬＡ３・・・→ＬＡＸの順序で収集される。そのため、障害の真の原因がＰＡ１でなかった場合、解析者３０Ａは、ＬＡ２→ＬＡ３・・・の順序でログを解析する。
【００８７】
上述したように本実施形態によれば、各サーバ１０からログ収集サーバ３０に直接アラームを送信するため、運用者が手動で指示をすることなく、アラームに関連するログを自動で収集することができる。
【００８８】
その他の効果は第１または第２の実施形態と同様である。
【符号の説明】
【００８９】
１０    サービス提供サーバ
２０    アラーム監視サーバ
２１    アラーム受信部
２２    アラーム表示部
３０    ログ収集サーバ
３１    ログ収集部
３２    ログ格納部
３３    ログ収集順序リスト
３４    サーバリスト
３５    アラーム受信部
【図１】
0005566956.tif 000002
【図２】
0005566956.tif 000003
【図３】
0005566956.tif 000004
【図４】
0005566956.tif 000005
【図５】
0005566956.tif 000006
【図６】
0005566956.tif 000007
【図７】
0005566956.tif 000008
【図８】
0005566956.tif 000009
【図９】
0005566956.tif 000010
【図１０】
0005566956.tif 000011
【図１１】
0005566956.tif 000012
【図１２】
0005566956.tif 000013