分散処理システム、ログ収集サーバ、ログ収集方法、プログラム
【課題】プログラムに障害が発生した場合に、解析者がログの到着を待つ時間を短縮すること。
【解決手段】本発明の分散処理システムは、複数のサービス提供サーバ10と、サービス提供サーバ10からログを収集するログ収集サーバ30と、を有する。ログ収集サーバ30は、プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表すログ収集順序リスト33と、サービス提供サーバ10上のプログラムに障害が発生した場合、障害が発生したプログラムについてログ収集順序リスト33に表される順序に従ってサービス提供サーバ10からログを収集するログ収集部31と、を有する。
【解決手段】本発明の分散処理システムは、複数のサービス提供サーバ10と、サービス提供サーバ10からログを収集するログ収集サーバ30と、を有する。ログ収集サーバ30は、プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表すログ収集順序リスト33と、サービス提供サーバ10上のプログラムに障害が発生した場合、障害が発生したプログラムについてログ収集順序リスト33に表される順序に従ってサービス提供サーバ10からログを収集するログ収集部31と、を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバからログを収集する技術に関し、特に、複数のサーバから大容量のログを収集する技術に関する。
【背景技術】
【0002】
分散処理システムは、複数のサーバが協調して動作することでサービスを提供するシステムであり、各サーバ上では複数のプログラムが動作する。
【0003】
各プログラムは、障害発生時に備え、障害原因を特定するためのログ(解析用ログ)を各サーバに出力している。ログは、大容量のため、通常は各サーバに蓄積しており、障害発生時に各サーバから収集して、障害原因の特定のために解析者が使用する。
【0004】
サーバからログを収集する技術として、例えば、非特許文献1には、簡易操作で運用可能な統合ログ管理環境を提供し、システム監査や障害調査に必要な各種ログを収集し、管理コストを削減する技術が記載されている。
【0005】
また、サーバからログを収集する他の技術として、例えば、非特許文献2には、サーバの各部品や様々なサービス間の依存関係に注目し、システム全体の全ログの中から管理者が現在注目している事象に関連のあるログを自動抽出する技術が開示されている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】NEC、“WebSAM LogCollector”、[平成23年6月7日検索]、インターネット<URL:http://www.nec.co.jp/middle/WebSAM/products/LogCollector/>
【非特許文献2】敷田幹文、後藤宏志、“大規模サーバ間の部品依存関係に基づくログ管理支援法”、2008年3月15日、情報処理学会、情報処理学会論文誌、第49巻、第3号、p.1081-1089、[平成23年6月7日検索]、インターネット<URL:http://hdl.handle.net/10119/7763>
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、非特許文献1,2に記載の技術においては、ログを一括して収集した後に解析を開始するため、全てのログを回収するまで解析に着手できなかった。
【0008】
分散処理システムを構成する複数のサーバから大容量のログを収集するには長い時間を要する(場合によっては数日を要する)ため、障害発生時に全ログの到着を待って解析に着手していては、障害原因の特定が遅れてしまう。
【0009】
そこで、本発明の目的は、プログラムに障害が発生した場合に、解析者がログの到着を待つ時間を短縮することができる分散処理システム、ログ収集サーバ、ログ収集方法、プログラムを提供することにある。
【課題を解決するための手段】
【0010】
本発明の分散処理システムは、
複数のサービス提供サーバと、前記サービス提供サーバからログを収集するログ収集サーバと、を有してなる分散処理システムであって、
前記ログ収集サーバは、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する。
【0011】
本発明のログ収集サーバは、
サービス提供サーバからログを収集するログ収集サーバであって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する。
【0012】
本発明のログ収集方法は、
サービス提供サーバからログを収集するログ収集サーバが行うログ収集方法であって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストを登録し、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集する。
【0013】
本発明のプログラムは、
前記ログ収集方法を前記ログ収集サーバに実行させるためのものである。
【発明の効果】
【0014】
本発明によれば、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【0015】
これにより、障害発生時には、解析者が必要とする順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できるという効果が得られる。
【図面の簡単な説明】
【0016】
【図1】プログラムの依存関係の例を示す図である。
【図2】障害の発生箇所と原因個所とが異なる例を示す図である。
【図3】ログ収集順序の例を示す図である。
【図4】分散処理システムにおけるサーバの動作例を示す図である。
【図5】本発明の第1および第2の実施形態の分散処理システムの構成例を示す図である。
【図6】ログ収集順序リストの例を示す図である。
【図7】サーバリストの例を示す図である。
【図8】本発明の第1の実施形態の分散処理システムの障害発生時の動作例を説明するシーケンスチャートである。
【図9】本発明の第1の実施形態のログ収集サーバのログ収集動作の動作例を説明するフローチャートである。
【図10】本発明の第2実施形態のログ収集サーバのログ収集動作の動作例を説明するフローチャートである。
【図11】本発明の第3の実施形態の分散処理システムの構成例を示す図である。
【図12】本発明の第3の実施形態の分散処理システムの障害発生時の動作例を説明するシーケンスチャートである。
【発明を実施するための形態】
【0017】
(1)本発明の概要
最初に、本発明の概要について説明する。
【0018】
ここでは、1台のサーバにおいて、P1、P2、P3の3個のプログラムが動作するケースを考える。本ケースでは、P1、P2、P3の依存関係は、図1に示すように、P1がP2を使用し、P2がP3を使用するという関係になっている。また、図2に示すように、障害(アラーム)が発生したプログラムがP1、障害の真の原因となる不具合があるプログラムがP3だとする。
【0019】
この場合、解析者は、P1の障害の原因を特定するため、まず、P1のログを解析する。P1のログを解析した結果、障害の原因がP1ではない場合、次に、解析者は、P1が使用するP2のログを解析する。P2のログを解析した結果、障害の原因がP2ではない場合、次に、解析者は、P2が使用するP3のログを解析する。そして、P3のログを解析した結果、障害の真の原因がP3の不具合であることを特定する。
【0020】
上記のケースでは、解析者がログを必要とする順序は、P1→P2→P3の順序である。そのため、P1→P2→P3の順序でログを収集すれば、解析者がログの到着を待つ時間を短縮できる。
【0021】
そこで、本発明では、図3に示すように、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【0022】
これにより、障害発生時には、解析者が必要とするP1→P2→P3の順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できる。
【0023】
一方、プログラム間の依存関係を考慮せずにログを収集した場合、例えば、最初にP1のログ、次にP3のログ、最後にP2のログを収集した場合を考える。
【0024】
この場合には、解析者は、P1のログを解析後、P2のログを解析しようとするが、この時点ではP3のログしか収集できていない可能性がある。その場合には、解析者は、P2のログが到着するのを待つ必要があり、解析作業の進捗を阻害してしまう。
【0025】
なお、上記のケースは、サーバが1台の例であるが、分散処理システムでは、図4に示すように、各プログラムは複数のサーバ上で稼動し、かつ、それらの複数のサーバが協調して動作する。各プログラムのログは、大容量であり、かつ、複数のサーバに分散して蓄積されるため、障害発生時に全てのログを収集するには非常に長い時間を要する。
【0026】
障害発生時には、一刻も早く原因を特定する必要があり、ログ収集にかける時間は短ければ短いほど好ましい。ただ、解析者は、大容量のログの全てを一度に解析できるわけではないため、解析者が解析する順序でログを提供できれば、解析者がログの到着を待つ時間を短縮でき、解析作業の進捗を阻害することはない。
【0027】
そのため、本発明では、図3のログ収集順序に従って、まず、サーバ1〜NのP1のログ、次に、サーバ1〜NのP2のログ、最後に、サーバ1〜NのP3のログの順序で収集して解析者に提供する。
【0028】
これにより、解析者がログの到着を待つ時間を短縮することができる。
(2)本発明の実施形態
続いて、本発明の実施形態について説明する。
(2−1)第1の実施形態
図5に、本実施形態の分散処理システムの構成例を示す。
【0029】
図5に示すように、本実施形態の分散処理システムは、複数台(より具体的には数百台以上)のサービス提供サーバ(以下、サーバと表記した場合にはサービス提供サーバを意味する)10と、アラーム監視サーバ20と、ログ収集サーバ30と、を有している。
【0030】
サーバ10は、同一サービスを提供するグループ毎に分類される。
【0031】
サーバ10は、障害発生時に備えて解析に必要なログを蓄積している。
【0032】
なお、図5において、Pziは、グループzの各サーバ10にインストールされたi個目のプログラム(z=A,B,・・・、i=1,2,・・・)であり、また、Lziは、プログラムPziのログ(z=A,B,・・・、i=1,2,・・・)である(以下の図面において同じ)。
【0033】
サーバ10は、自己のサービス提供サーバ上のプログラムに障害が発生した場合、アラームを送信するアラーム送信部11を有している。なお、アラームは、自己のサーバ10を識別する情報と障害が発生したプログラムを識別する情報を含むものとする。
【0034】
アラーム監視サーバ20は、障害が発生したサーバ10からアラームを受信するアラーム受信部21と、アラーム受信部21が受信したアラームを表示するアラーム表示部22と、を有している。
【0035】
ログ収集サーバ30は、障害発生時にサーバ10からログを収集するログ収集部31と、サーバ10から収集したログを格納するログ格納部32と、ログ収集順序リスト33と、サーバリスト34と、を有している。
【0036】
図6に、ログ収集順序リスト33の例を示す。
【0037】
図6に示すように、ログ収集順序リスト33は、プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストである。
【0038】
図7に、サーバリスト34の例を示す。
【0039】
図7に示すように、サーバリスト34は、グループ毎に、そのグループに属するサーバ10の情報(サーバ名、IPアドレス等)を表す第2のリストである。
【0040】
分散処理システムでは、基本的には、グループ単位でサービスを提供し、同一グループに属するサーバ10間で協調動作を行う。
【0041】
そのため、ログ収集部31は、サーバ10で障害が発生した場合、そのサーバ10と同じグループに属する全てのサーバ10からログを収集する。
【0042】
以下に、本実施形態の分散処理システムの動作について説明する。
【0043】
図8に、本実施形態の分散処理システムにおいて、サーバ10−A1上で動作するプログラムPA1に障害が発生した時の動作例を説明するシーケンスチャートを示す。
【0044】
図8に示すように、各プログラムPziは、ログLziをサーバ10に常時出力している(ステップA1)。
【0045】
ここで、サーバ10−A1上のプログラムPA1に障害が発生したとする(ステップA2)。
【0046】
すると、サーバ10−A1のアラーム送信部11は、アラーム監視サーバ20にアラームを送信する(ステップA3)。
【0047】
アラーム監視サーバ20内では、アラーム受信部21は、アラームを受信すると、そのアラームをアラーム表示部22に表示する(ステップA4)。
【0048】
運用者20Aは、アラーム監視サーバ20のアラーム表示部22を監視することにより、サーバ10−A1上のプログラムPA1にて障害が発生したことを確認する(ステップA5)。
【0049】
次に、運用者20Aは、ログ収集サーバ30のログ収集部31に対し、サーバ10−A1のプログラムPA1に関連するログの収集を指示する(ステップA6)。
【0050】
すると、ログ収集部31は、後述する図9に示すフローに従って、サーバ10−A1と同じグループに属する全てのサーバ10からログを収集し、収集したログをログ格納部32に格納する(ステップA7)。
【0051】
解析者30Aは、ログLA1が収集され次第、解析を開始する(ステップA8)。
【0052】
ここでは、ログ収集部31により、ログはLA1→LA2→LA3・・・→LAXの順序で収集される。そのため、障害の真の原因がPA1でなかった場合、解析者30Aは、LA2→LA3・・・の順序でログを解析する。
【0053】
図9に、ログ収集部31のログ収集動作の動作例を説明するフローチャートを示す。
【0054】
図9に示すように、まず、ログ収集部31は、NとXを初期化してそれぞれ1にする(ステップB1)。
【0055】
次に、ログ収集部31は、ログ収集順序リスト33から、プログラムPA1の障害発生時にX番目に収集すべき対象ログを特定する(ステップB2)。
【0056】
次に、ログ収集部31は、サーバリスト34から、障害が発生したサーバ10−A1が属するグループAのN番目に収集すべき対象サーバを特定する(ステップB3)。
【0057】
なお、N番目のサーバは、例えば、サーバリスト34に記載されたサーバ名の数字部分の順序や、サーバリスト34の記載の順序等で判断する。
【0058】
次に、ログ収集部31は、対象サーバから対象ログを収集する(ステップB4)。
【0059】
次に、ログ収集部31は、Nをインクリメントし(ステップB5)、グループAの中に対象ログを未収集の未収集サーバがあるか否かを判断し(ステップB6)、未収集のサーバがあれば(ステップB6のYES)、ステップB3に戻る。
【0060】
一方、グループAの中に未収集サーバがなければ(ステップB6のNO)、ログ収集部31は、Xをインクリメントすると共にNを初期化して1にし(ステップB7)、プログラムPA1の障害発生時に収集すべきログの中に、未収集ログがあるか否かを判断し(ステップB8)、未収集ログがあれば(ステップB8のYES)、ステップB2に戻り、未収集ログがなければ(ステップB8のNO)、処理を終了する。
【0061】
上述したように本実施形態によれば、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【0062】
これにより、障害発生時には、解析者が必要とする順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できる。
(2−2)第2の実施形態
本実施形態の分散処理システムは、第1の実施形態と構成自体は同様であるが、動作が第1の実施形態とは異なる。
【0063】
すなわち、第1の実施形態においては、障害が発生したサーバ10と同じグループに属するサーバ10からログを収集する際に、サーバ名の数字部分の順序やサーバリスト34に記載された順序でログを収集していた。
【0064】
これに対して、本実施形態においては、最初に、障害が発生したサーバ10からログを収集し、その後に、障害が発生したサーバ10と同じグループに属する他のサーバ10からログを収集する。
【0065】
以下、本実施形態の分散処理システムの動作について説明する。
【0066】
なお、本実施形態は、第1の実施形態と比較して、ログ収集部31のログ収集動作が異なり、その他の動作は同様である。そのため、以下では、本実施形態のログ収集動作の動作例についてのみ、図10を参照して説明する。
【0067】
図10に示すように、まず、ログ収集部31は、障害が発生したサーバ10−A1を、最初にログを収集すべきサーバと決定する(ステップC1)。
【0068】
次に、ログ収集部31は、Xを初期化して1にする(ステップC2)。
【0069】
次に、ログ収集部31は、ログ収集順序リスト33から、プログラムPA1の障害発生時にX番目に収集すべき対象ログを特定する(ステップC3)。
【0070】
次に、ログ収集部31は、サーバ10−A1から対象ログを収集する(ステップC4)。
【0071】
次に、ログ収集部31は、Xをインクリメントし(ステップC5)、プログラムPA1の障害発生時に収集すべきログの中に、未収集ログがあるか否かを判断し(ステップC6)、未収集ログがあれば(ステップC6のYES)、ステップC3に戻り、未収集ログがなければ(ステップC6のNO)、ステップC7に進む。
【0072】
以降、図9に示したステップB1〜B8と同様のステップC7〜C14の処理を行う。
【0073】
上述したように本実施形態によれば、障害が発生したサーバ10から最初にログを収集するため、障害が発生したサーバ10のログを優先して解析することができる。
【0074】
その他の効果は第1の実施形態と同様である。
(2−3)第3の実施形態
図11に、本実施形態の分散処理システムの構成例を示す。
【0075】
図11に示すように、本実施形態の分散処理システムは、図5に示した第1の実施形態と比較して、アラーム監視サーバ20を削除した点と、ログ収集サーバ30にアラーム受信部35を追加した点と、が異なる。
【0076】
第1の実施形態においては、運用者20Aがアラーム監視サーバ20を監視し、アラームを確認した場合にログ収集サーバ30にログ収集を手動で指示し、ログ収集サーバ30は、運用者20Aの指示をトリガーとしてログを収集していた。
【0077】
これに対して、本実施形態においては、各サーバ10からログ収集サーバ30に直接アラームを送信し、ログ収集サーバ30は、アラームの受信をトリガーとして、そのアラームに関連するログを自動で収集する。
【0078】
以下に、本実施形態の分散処理システムの動作について説明する。
【0079】
図12に、本実施形態の分散処理システムにおいて、サーバ10−A1上で動作するプログラムPA1に障害が発生した時の動作例を説明するシーケンスチャートを示す。
【0080】
図12に示すように、各プログラムPziは、ログLziをサーバ10に常時出力している(ステップD1)。
【0081】
ここで、サーバ10−A1上のプログラムPA1に障害が発生したとする(ステップD2)。
【0082】
すると、サーバ10−A1のアラーム送信部11は、ログ収集サーバ30にアラームを送信する(ステップD3)。
【0083】
ログ収集サーバ30内では、アラーム受信部35は、アラームを受信すると、そのアラームに関連するログの収集をログ収集部31に指示する(ステップD4)。
【0084】
すると、ログ収集部31は、上述した図9または図10に示すフローに従って、サーバ10−A1と同じグループに属する全てのサーバ10からログを収集し、収集したログをログ格納部32に格納する(ステップD5)。
【0085】
解析者30Aは、ログLA1が収集され次第、解析を開始する(ステップD6)。
【0086】
ここでは、ログ収集部31により、ログはLA1→LA2→LA3・・・→LAXの順序で収集される。そのため、障害の真の原因がPA1でなかった場合、解析者30Aは、LA2→LA3・・・の順序でログを解析する。
【0087】
上述したように本実施形態によれば、各サーバ10からログ収集サーバ30に直接アラームを送信するため、運用者が手動で指示をすることなく、アラームに関連するログを自動で収集することができる。
【0088】
その他の効果は第1または第2の実施形態と同様である。
【符号の説明】
【0089】
10 サービス提供サーバ
20 アラーム監視サーバ
21 アラーム受信部
22 アラーム表示部
30 ログ収集サーバ
31 ログ収集部
32 ログ格納部
33 ログ収集順序リスト
34 サーバリスト
35 アラーム受信部
【技術分野】
【0001】
本発明は、サーバからログを収集する技術に関し、特に、複数のサーバから大容量のログを収集する技術に関する。
【背景技術】
【0002】
分散処理システムは、複数のサーバが協調して動作することでサービスを提供するシステムであり、各サーバ上では複数のプログラムが動作する。
【0003】
各プログラムは、障害発生時に備え、障害原因を特定するためのログ(解析用ログ)を各サーバに出力している。ログは、大容量のため、通常は各サーバに蓄積しており、障害発生時に各サーバから収集して、障害原因の特定のために解析者が使用する。
【0004】
サーバからログを収集する技術として、例えば、非特許文献1には、簡易操作で運用可能な統合ログ管理環境を提供し、システム監査や障害調査に必要な各種ログを収集し、管理コストを削減する技術が記載されている。
【0005】
また、サーバからログを収集する他の技術として、例えば、非特許文献2には、サーバの各部品や様々なサービス間の依存関係に注目し、システム全体の全ログの中から管理者が現在注目している事象に関連のあるログを自動抽出する技術が開示されている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】NEC、“WebSAM LogCollector”、[平成23年6月7日検索]、インターネット<URL:http://www.nec.co.jp/middle/WebSAM/products/LogCollector/>
【非特許文献2】敷田幹文、後藤宏志、“大規模サーバ間の部品依存関係に基づくログ管理支援法”、2008年3月15日、情報処理学会、情報処理学会論文誌、第49巻、第3号、p.1081-1089、[平成23年6月7日検索]、インターネット<URL:http://hdl.handle.net/10119/7763>
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、非特許文献1,2に記載の技術においては、ログを一括して収集した後に解析を開始するため、全てのログを回収するまで解析に着手できなかった。
【0008】
分散処理システムを構成する複数のサーバから大容量のログを収集するには長い時間を要する(場合によっては数日を要する)ため、障害発生時に全ログの到着を待って解析に着手していては、障害原因の特定が遅れてしまう。
【0009】
そこで、本発明の目的は、プログラムに障害が発生した場合に、解析者がログの到着を待つ時間を短縮することができる分散処理システム、ログ収集サーバ、ログ収集方法、プログラムを提供することにある。
【課題を解決するための手段】
【0010】
本発明の分散処理システムは、
複数のサービス提供サーバと、前記サービス提供サーバからログを収集するログ収集サーバと、を有してなる分散処理システムであって、
前記ログ収集サーバは、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する。
【0011】
本発明のログ収集サーバは、
サービス提供サーバからログを収集するログ収集サーバであって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する。
【0012】
本発明のログ収集方法は、
サービス提供サーバからログを収集するログ収集サーバが行うログ収集方法であって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストを登録し、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集する。
【0013】
本発明のプログラムは、
前記ログ収集方法を前記ログ収集サーバに実行させるためのものである。
【発明の効果】
【0014】
本発明によれば、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【0015】
これにより、障害発生時には、解析者が必要とする順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できるという効果が得られる。
【図面の簡単な説明】
【0016】
【図1】プログラムの依存関係の例を示す図である。
【図2】障害の発生箇所と原因個所とが異なる例を示す図である。
【図3】ログ収集順序の例を示す図である。
【図4】分散処理システムにおけるサーバの動作例を示す図である。
【図5】本発明の第1および第2の実施形態の分散処理システムの構成例を示す図である。
【図6】ログ収集順序リストの例を示す図である。
【図7】サーバリストの例を示す図である。
【図8】本発明の第1の実施形態の分散処理システムの障害発生時の動作例を説明するシーケンスチャートである。
【図9】本発明の第1の実施形態のログ収集サーバのログ収集動作の動作例を説明するフローチャートである。
【図10】本発明の第2実施形態のログ収集サーバのログ収集動作の動作例を説明するフローチャートである。
【図11】本発明の第3の実施形態の分散処理システムの構成例を示す図である。
【図12】本発明の第3の実施形態の分散処理システムの障害発生時の動作例を説明するシーケンスチャートである。
【発明を実施するための形態】
【0017】
(1)本発明の概要
最初に、本発明の概要について説明する。
【0018】
ここでは、1台のサーバにおいて、P1、P2、P3の3個のプログラムが動作するケースを考える。本ケースでは、P1、P2、P3の依存関係は、図1に示すように、P1がP2を使用し、P2がP3を使用するという関係になっている。また、図2に示すように、障害(アラーム)が発生したプログラムがP1、障害の真の原因となる不具合があるプログラムがP3だとする。
【0019】
この場合、解析者は、P1の障害の原因を特定するため、まず、P1のログを解析する。P1のログを解析した結果、障害の原因がP1ではない場合、次に、解析者は、P1が使用するP2のログを解析する。P2のログを解析した結果、障害の原因がP2ではない場合、次に、解析者は、P2が使用するP3のログを解析する。そして、P3のログを解析した結果、障害の真の原因がP3の不具合であることを特定する。
【0020】
上記のケースでは、解析者がログを必要とする順序は、P1→P2→P3の順序である。そのため、P1→P2→P3の順序でログを収集すれば、解析者がログの到着を待つ時間を短縮できる。
【0021】
そこで、本発明では、図3に示すように、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【0022】
これにより、障害発生時には、解析者が必要とするP1→P2→P3の順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できる。
【0023】
一方、プログラム間の依存関係を考慮せずにログを収集した場合、例えば、最初にP1のログ、次にP3のログ、最後にP2のログを収集した場合を考える。
【0024】
この場合には、解析者は、P1のログを解析後、P2のログを解析しようとするが、この時点ではP3のログしか収集できていない可能性がある。その場合には、解析者は、P2のログが到着するのを待つ必要があり、解析作業の進捗を阻害してしまう。
【0025】
なお、上記のケースは、サーバが1台の例であるが、分散処理システムでは、図4に示すように、各プログラムは複数のサーバ上で稼動し、かつ、それらの複数のサーバが協調して動作する。各プログラムのログは、大容量であり、かつ、複数のサーバに分散して蓄積されるため、障害発生時に全てのログを収集するには非常に長い時間を要する。
【0026】
障害発生時には、一刻も早く原因を特定する必要があり、ログ収集にかける時間は短ければ短いほど好ましい。ただ、解析者は、大容量のログの全てを一度に解析できるわけではないため、解析者が解析する順序でログを提供できれば、解析者がログの到着を待つ時間を短縮でき、解析作業の進捗を阻害することはない。
【0027】
そのため、本発明では、図3のログ収集順序に従って、まず、サーバ1〜NのP1のログ、次に、サーバ1〜NのP2のログ、最後に、サーバ1〜NのP3のログの順序で収集して解析者に提供する。
【0028】
これにより、解析者がログの到着を待つ時間を短縮することができる。
(2)本発明の実施形態
続いて、本発明の実施形態について説明する。
(2−1)第1の実施形態
図5に、本実施形態の分散処理システムの構成例を示す。
【0029】
図5に示すように、本実施形態の分散処理システムは、複数台(より具体的には数百台以上)のサービス提供サーバ(以下、サーバと表記した場合にはサービス提供サーバを意味する)10と、アラーム監視サーバ20と、ログ収集サーバ30と、を有している。
【0030】
サーバ10は、同一サービスを提供するグループ毎に分類される。
【0031】
サーバ10は、障害発生時に備えて解析に必要なログを蓄積している。
【0032】
なお、図5において、Pziは、グループzの各サーバ10にインストールされたi個目のプログラム(z=A,B,・・・、i=1,2,・・・)であり、また、Lziは、プログラムPziのログ(z=A,B,・・・、i=1,2,・・・)である(以下の図面において同じ)。
【0033】
サーバ10は、自己のサービス提供サーバ上のプログラムに障害が発生した場合、アラームを送信するアラーム送信部11を有している。なお、アラームは、自己のサーバ10を識別する情報と障害が発生したプログラムを識別する情報を含むものとする。
【0034】
アラーム監視サーバ20は、障害が発生したサーバ10からアラームを受信するアラーム受信部21と、アラーム受信部21が受信したアラームを表示するアラーム表示部22と、を有している。
【0035】
ログ収集サーバ30は、障害発生時にサーバ10からログを収集するログ収集部31と、サーバ10から収集したログを格納するログ格納部32と、ログ収集順序リスト33と、サーバリスト34と、を有している。
【0036】
図6に、ログ収集順序リスト33の例を示す。
【0037】
図6に示すように、ログ収集順序リスト33は、プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストである。
【0038】
図7に、サーバリスト34の例を示す。
【0039】
図7に示すように、サーバリスト34は、グループ毎に、そのグループに属するサーバ10の情報(サーバ名、IPアドレス等)を表す第2のリストである。
【0040】
分散処理システムでは、基本的には、グループ単位でサービスを提供し、同一グループに属するサーバ10間で協調動作を行う。
【0041】
そのため、ログ収集部31は、サーバ10で障害が発生した場合、そのサーバ10と同じグループに属する全てのサーバ10からログを収集する。
【0042】
以下に、本実施形態の分散処理システムの動作について説明する。
【0043】
図8に、本実施形態の分散処理システムにおいて、サーバ10−A1上で動作するプログラムPA1に障害が発生した時の動作例を説明するシーケンスチャートを示す。
【0044】
図8に示すように、各プログラムPziは、ログLziをサーバ10に常時出力している(ステップA1)。
【0045】
ここで、サーバ10−A1上のプログラムPA1に障害が発生したとする(ステップA2)。
【0046】
すると、サーバ10−A1のアラーム送信部11は、アラーム監視サーバ20にアラームを送信する(ステップA3)。
【0047】
アラーム監視サーバ20内では、アラーム受信部21は、アラームを受信すると、そのアラームをアラーム表示部22に表示する(ステップA4)。
【0048】
運用者20Aは、アラーム監視サーバ20のアラーム表示部22を監視することにより、サーバ10−A1上のプログラムPA1にて障害が発生したことを確認する(ステップA5)。
【0049】
次に、運用者20Aは、ログ収集サーバ30のログ収集部31に対し、サーバ10−A1のプログラムPA1に関連するログの収集を指示する(ステップA6)。
【0050】
すると、ログ収集部31は、後述する図9に示すフローに従って、サーバ10−A1と同じグループに属する全てのサーバ10からログを収集し、収集したログをログ格納部32に格納する(ステップA7)。
【0051】
解析者30Aは、ログLA1が収集され次第、解析を開始する(ステップA8)。
【0052】
ここでは、ログ収集部31により、ログはLA1→LA2→LA3・・・→LAXの順序で収集される。そのため、障害の真の原因がPA1でなかった場合、解析者30Aは、LA2→LA3・・・の順序でログを解析する。
【0053】
図9に、ログ収集部31のログ収集動作の動作例を説明するフローチャートを示す。
【0054】
図9に示すように、まず、ログ収集部31は、NとXを初期化してそれぞれ1にする(ステップB1)。
【0055】
次に、ログ収集部31は、ログ収集順序リスト33から、プログラムPA1の障害発生時にX番目に収集すべき対象ログを特定する(ステップB2)。
【0056】
次に、ログ収集部31は、サーバリスト34から、障害が発生したサーバ10−A1が属するグループAのN番目に収集すべき対象サーバを特定する(ステップB3)。
【0057】
なお、N番目のサーバは、例えば、サーバリスト34に記載されたサーバ名の数字部分の順序や、サーバリスト34の記載の順序等で判断する。
【0058】
次に、ログ収集部31は、対象サーバから対象ログを収集する(ステップB4)。
【0059】
次に、ログ収集部31は、Nをインクリメントし(ステップB5)、グループAの中に対象ログを未収集の未収集サーバがあるか否かを判断し(ステップB6)、未収集のサーバがあれば(ステップB6のYES)、ステップB3に戻る。
【0060】
一方、グループAの中に未収集サーバがなければ(ステップB6のNO)、ログ収集部31は、Xをインクリメントすると共にNを初期化して1にし(ステップB7)、プログラムPA1の障害発生時に収集すべきログの中に、未収集ログがあるか否かを判断し(ステップB8)、未収集ログがあれば(ステップB8のYES)、ステップB2に戻り、未収集ログがなければ(ステップB8のNO)、処理を終了する。
【0061】
上述したように本実施形態によれば、プログラム毎に、プログラム間の依存関係に応じて、そのプログラムに障害が発生した時のログ収集する順序を予め決めておき、障害発生時には、その順序でログを収集する。
【0062】
これにより、障害発生時には、解析者が必要とする順序でログを自動的に収集することができ、解析者がログの収集を待つ時間を短縮できる。
(2−2)第2の実施形態
本実施形態の分散処理システムは、第1の実施形態と構成自体は同様であるが、動作が第1の実施形態とは異なる。
【0063】
すなわち、第1の実施形態においては、障害が発生したサーバ10と同じグループに属するサーバ10からログを収集する際に、サーバ名の数字部分の順序やサーバリスト34に記載された順序でログを収集していた。
【0064】
これに対して、本実施形態においては、最初に、障害が発生したサーバ10からログを収集し、その後に、障害が発生したサーバ10と同じグループに属する他のサーバ10からログを収集する。
【0065】
以下、本実施形態の分散処理システムの動作について説明する。
【0066】
なお、本実施形態は、第1の実施形態と比較して、ログ収集部31のログ収集動作が異なり、その他の動作は同様である。そのため、以下では、本実施形態のログ収集動作の動作例についてのみ、図10を参照して説明する。
【0067】
図10に示すように、まず、ログ収集部31は、障害が発生したサーバ10−A1を、最初にログを収集すべきサーバと決定する(ステップC1)。
【0068】
次に、ログ収集部31は、Xを初期化して1にする(ステップC2)。
【0069】
次に、ログ収集部31は、ログ収集順序リスト33から、プログラムPA1の障害発生時にX番目に収集すべき対象ログを特定する(ステップC3)。
【0070】
次に、ログ収集部31は、サーバ10−A1から対象ログを収集する(ステップC4)。
【0071】
次に、ログ収集部31は、Xをインクリメントし(ステップC5)、プログラムPA1の障害発生時に収集すべきログの中に、未収集ログがあるか否かを判断し(ステップC6)、未収集ログがあれば(ステップC6のYES)、ステップC3に戻り、未収集ログがなければ(ステップC6のNO)、ステップC7に進む。
【0072】
以降、図9に示したステップB1〜B8と同様のステップC7〜C14の処理を行う。
【0073】
上述したように本実施形態によれば、障害が発生したサーバ10から最初にログを収集するため、障害が発生したサーバ10のログを優先して解析することができる。
【0074】
その他の効果は第1の実施形態と同様である。
(2−3)第3の実施形態
図11に、本実施形態の分散処理システムの構成例を示す。
【0075】
図11に示すように、本実施形態の分散処理システムは、図5に示した第1の実施形態と比較して、アラーム監視サーバ20を削除した点と、ログ収集サーバ30にアラーム受信部35を追加した点と、が異なる。
【0076】
第1の実施形態においては、運用者20Aがアラーム監視サーバ20を監視し、アラームを確認した場合にログ収集サーバ30にログ収集を手動で指示し、ログ収集サーバ30は、運用者20Aの指示をトリガーとしてログを収集していた。
【0077】
これに対して、本実施形態においては、各サーバ10からログ収集サーバ30に直接アラームを送信し、ログ収集サーバ30は、アラームの受信をトリガーとして、そのアラームに関連するログを自動で収集する。
【0078】
以下に、本実施形態の分散処理システムの動作について説明する。
【0079】
図12に、本実施形態の分散処理システムにおいて、サーバ10−A1上で動作するプログラムPA1に障害が発生した時の動作例を説明するシーケンスチャートを示す。
【0080】
図12に示すように、各プログラムPziは、ログLziをサーバ10に常時出力している(ステップD1)。
【0081】
ここで、サーバ10−A1上のプログラムPA1に障害が発生したとする(ステップD2)。
【0082】
すると、サーバ10−A1のアラーム送信部11は、ログ収集サーバ30にアラームを送信する(ステップD3)。
【0083】
ログ収集サーバ30内では、アラーム受信部35は、アラームを受信すると、そのアラームに関連するログの収集をログ収集部31に指示する(ステップD4)。
【0084】
すると、ログ収集部31は、上述した図9または図10に示すフローに従って、サーバ10−A1と同じグループに属する全てのサーバ10からログを収集し、収集したログをログ格納部32に格納する(ステップD5)。
【0085】
解析者30Aは、ログLA1が収集され次第、解析を開始する(ステップD6)。
【0086】
ここでは、ログ収集部31により、ログはLA1→LA2→LA3・・・→LAXの順序で収集される。そのため、障害の真の原因がPA1でなかった場合、解析者30Aは、LA2→LA3・・・の順序でログを解析する。
【0087】
上述したように本実施形態によれば、各サーバ10からログ収集サーバ30に直接アラームを送信するため、運用者が手動で指示をすることなく、アラームに関連するログを自動で収集することができる。
【0088】
その他の効果は第1または第2の実施形態と同様である。
【符号の説明】
【0089】
10 サービス提供サーバ
20 アラーム監視サーバ
21 アラーム受信部
22 アラーム表示部
30 ログ収集サーバ
31 ログ収集部
32 ログ格納部
33 ログ収集順序リスト
34 サーバリスト
35 アラーム受信部
【特許請求の範囲】
【請求項1】
複数のサービス提供サーバと、前記サービス提供サーバからログを収集するログ収集サーバと、を有してなる分散処理システムであって、
前記ログ収集サーバは、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する分散処理システム。
【請求項2】
前記ログ収集サーバは、
グループ毎に、そのグループに属するサービス提供サーバを表す第2のリストを有し、
前記ログ収集部は、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したサービス提供サーバと同じグループに属する全てのサービス提供サーバからログを収集する、請求項1に記載の分散処理システム。
【請求項3】
前記ログ収集部は、
前記サービス提供サーバ上のプログラムに障害が発生した場合、最初に、障害が発生したサービス提供サーバからログを収集し、その後に、障害が発生したサービス提供サーバと同じグループに属する他のサービス提供サーバからログを収集する、請求項2に記載の分散処理システム。
【請求項4】
前記サービス提供サーバは、
自己のサービス提供サーバ上のプログラムに障害が発生したことを表すアラームを送信するアラーム送信部を有し、
前記分散処理システムは、
前記サービス提供サーバから前記アラームを受信し表示するアラーム監視サーバを有し、
前記ログ収集部は、
障害が発生したサービス提供サーバ上のプログラムに関連するログを収集する指示が入力されたことをトリガーとして、前記サービス提供サーバからログを収集する、請求項1から3のいずれか1項に記載の分散処理システム。
【請求項5】
前記サービス提供サーバは、
自己のサービス提供サーバ上のプログラムに障害が発生したことを表すアラームを送信するアラーム送信部を有し、
前記ログ収集サーバは、
前記サービス提供サーバから前記アラームを受信するアラーム受信部を有し、
前記ログ収集部は、
前記アラームを受信したことをトリガーとして、前記サービス提供サーバからログを収集する、請求項1から3のいずれか1項に記載の分散処理システム。
【請求項6】
サービス提供サーバからログを収集するログ収集サーバであって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有するログ収集サーバ。
【請求項7】
サービス提供サーバからログを収集するログ収集サーバが行うログ収集方法であって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストを登録し、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集する、ログ収集方法。
【請求項8】
請求項7に記載のログ収集方法を前記ログ収集サーバに実行させるためのプログラム。
【請求項1】
複数のサービス提供サーバと、前記サービス提供サーバからログを収集するログ収集サーバと、を有してなる分散処理システムであって、
前記ログ収集サーバは、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有する分散処理システム。
【請求項2】
前記ログ収集サーバは、
グループ毎に、そのグループに属するサービス提供サーバを表す第2のリストを有し、
前記ログ収集部は、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したサービス提供サーバと同じグループに属する全てのサービス提供サーバからログを収集する、請求項1に記載の分散処理システム。
【請求項3】
前記ログ収集部は、
前記サービス提供サーバ上のプログラムに障害が発生した場合、最初に、障害が発生したサービス提供サーバからログを収集し、その後に、障害が発生したサービス提供サーバと同じグループに属する他のサービス提供サーバからログを収集する、請求項2に記載の分散処理システム。
【請求項4】
前記サービス提供サーバは、
自己のサービス提供サーバ上のプログラムに障害が発生したことを表すアラームを送信するアラーム送信部を有し、
前記分散処理システムは、
前記サービス提供サーバから前記アラームを受信し表示するアラーム監視サーバを有し、
前記ログ収集部は、
障害が発生したサービス提供サーバ上のプログラムに関連するログを収集する指示が入力されたことをトリガーとして、前記サービス提供サーバからログを収集する、請求項1から3のいずれか1項に記載の分散処理システム。
【請求項5】
前記サービス提供サーバは、
自己のサービス提供サーバ上のプログラムに障害が発生したことを表すアラームを送信するアラーム送信部を有し、
前記ログ収集サーバは、
前記サービス提供サーバから前記アラームを受信するアラーム受信部を有し、
前記ログ収集部は、
前記アラームを受信したことをトリガーとして、前記サービス提供サーバからログを収集する、請求項1から3のいずれか1項に記載の分散処理システム。
【請求項6】
サービス提供サーバからログを収集するログ収集サーバであって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストと、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集するログ収集部と、を有するログ収集サーバ。
【請求項7】
サービス提供サーバからログを収集するログ収集サーバが行うログ収集方法であって、
プログラム毎に、プログラム間の依存関係に応じて予め決められた、そのプログラムに障害が発生した時にログを収集する順序を表す第1のリストを登録し、
前記サービス提供サーバ上のプログラムに障害が発生した場合、障害が発生したプログラムについて前記第1のリストに表される順序に従って前記サービス提供サーバからログを収集する、ログ収集方法。
【請求項8】
請求項7に記載のログ収集方法を前記ログ収集サーバに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−3950(P2013−3950A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−136126(P2011−136126)
【出願日】平成23年6月20日(2011.6.20)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願日】平成23年6月20日(2011.6.20)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】
[ Back to top ]