(57)【特許請求の範囲】
【請求項１】
複数のノードを備えており情報処理装置が出力する複数の種類のメッセージに基づいて前記情報処理装置の障害を検出するシステムが実行する障害検出方法であって、
前記複数の種類の一部である第１の集合に属する種類のメッセージを第１のノードに収集し、前記複数の種類の一部である前記第１の集合とは異なる第２の集合に属する種類のメッセージを第２のノードに収集し、
前記第１のノードに収集された前記第１の集合に属する種類のメッセージに基づいて第１の障害候補の情報を生成し、また、前記第２のノードに収集された前記第２の集合に属する種類のメッセージに基づいて第２の障害候補の情報を生成し、
前記第１の障害候補の情報と前記第２の障害候補の情報との組み合わせに基づいて前記情報処理装置の障害を検出する、
障害検出方法。
【請求項２】
前記第１のノードおよび前記第２のノードに収集するメッセージの種類を、前記複数の種類それぞれのメッセージが前記情報処理装置により出力された回数に基づいて変更する、請求項１記載の障害検出方法。
【請求項３】
前記複数の種類は、前記第１の集合および前記第２の集合を含む、要素の重複のない複数の集合に分けられて、前記複数の集合それぞれにつき収集先のノードが割り当てられており、
メッセージを収集する際に、前記複数の種類それぞれに対応する番号の情報を記憶する記憶手段を参照して当該メッセージの種類に対応する番号を取得し、当該番号を収集先のノードの数で除したときの剰余に基づいて収集先のノードを決定する、
請求項１記載の障害検出方法。
【請求項４】
所定の障害に対応するメッセージの種類の障害パターンを複数の部分パターンに分割して、第１の部分パターンを前記第１のノードに割り当て、第２の部分パターンを前記第２のノードに割り当て、
前記第１のノードに収集されたメッセージの種類の組み合わせから前記第１の部分パターンが検出された場合に前記第１の障害候補の情報を生成し、また、前記第２のノードに収集されたメッセージの種類の組み合わせから前記第２の部分パターンが検出された場合に前記第２の障害候補の情報を生成する、
請求項１乃至３の何れか一項に記載の障害検出方法。
【請求項５】
前記第１のノードに収集されたメッセージの種類の組み合わせから前記第１の部分パターンが検出されない場合に前記所定の障害の否定を示す情報を生成し、また、前記第２のノードに収集されたメッセージの種類の組み合わせから前記第２の部分パターンが検出されない場合に前記所定の障害の否定を示す情報を生成し、
少なくとも何れかの前記所定の障害の否定を示す情報が生成された場合には、前記所定の障害を検出しない、
請求項４記載の障害検出方法。
【請求項６】
メッセージを収集する際に、当該メッセージの出力時間を取得し、
時間範囲の情報の入力を受け付けると、前記第１のノードおよび前記第２のノードに収集されたメッセージのうち出力時間が前記時間範囲に属するメッセージに基づいて前記第１の障害候補の情報および前記第２の障害候補の情報を生成する、
請求項１乃至５の何れか一項に記載の障害検出方法。
【請求項７】
前記複数のノードは、前記第１のノードおよび前記第２のノードを含み３以上のノードを含む１段目のノード群と、１またはそれ以上のノードを含む中間ノード群と、最終段のノードと、を含み、
前記中間ノード群を用いて前記１段目のノード群が生成した前記第１の障害候補の情報および前記第２の障害候補の情報を含む複数の障害候補の情報を段階的に絞り込み、絞り込まれた障害候補の情報を前記最終段のノードに収集し、
前記最終段のノードに収集された障害候補の情報に基づいて前記情報処理装置の障害を検出する、
請求項１乃至６の何れか一項に記載の障害検出方法。
【請求項８】
情報処理装置が出力する複数の種類のメッセージに基づいて前記情報処理装置の障害を検出する障害検出システムであって、
前記複数の種類の一部である第１の集合に属する種類のメッセージを収集し、収集した前記第１の集合に属する種類のメッセージに基づいて第１の障害候補の情報を生成する第１のノードと、
前記複数の種類の一部である前記第１の集合とは異なる第２の集合に属する種類のメッセージを収集し、収集した前記第２の集合に属する種類のメッセージに基づいて第２の障害候補の情報を生成する第２のノードと、
前記第１の障害候補の情報と前記第２の障害候補の情報との組み合わせに基づいて、前記情報処理装置の障害を検出する、または、前記第１の障害候補の情報と前記第２の障害候補の情報とを集約した第３の障害候補の情報を生成する第３のノードと、
を有する障害検出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は障害検出方法および障害検出システムに関する。
【背景技術】
【０００２】
現在、複数の情報処理装置がネットワークを介して接続された情報処理システムが利用されている。情報処理システムでは、当該システムに含まれる装置上のハードウェアやソフトウェアの稼働監視が行われることがある。稼働監視を行うことで、何れかの装置で発生した障害を早期に検出し対処できる。
【０００３】
障害の検出には種々の方法が考えられている。例えば、情報処理装置が出力する複数の種類のメッセージから特定のパターンを検出し、当該パターンに応じた障害を検出する。具体的には、正常なメッセージのパターンと異なるパターンを検出したり、異常なメッセージのパターンを検出したりする方法がある。
【０００４】
前者の方法では、分散システムにおいて、分散システムが正常に運用された場合に生成されるメッセージのパターンと異なるメッセージを異常と検出することで、大量のメッセージから対処を要する異常を正確に検出する提案がある。
【０００５】
後者の方法では、情報処理システム内の構成要素間の関連度を考慮して、各構成要素が出力したログメッセージに基づき障害パターンメッセージを生成する提案がある。
また、システム障害を判定するための判定ルールを複数（完全一致判定用および部分一致判定用）用意しておき、完全一致判定用の条件が完全に成立しない場合にも、部分一致判定用の条件を用いて、障害原因候補を一覧表示する提案もある。
【０００６】
更に、計算機システムのハードウェアなどに対する診断方法において、一連の診断処理を幾つかの処理に分割し、分割した各処理を独立して行う複数の診断モジュールを用いて診断を行う提案もある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３１８０７１号公報
【特許文献２】特開２０１１−１７０８０２号公報
【特許文献３】特開２０１０−１８２０４４号公報
【特許文献４】特開平９−２２３６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、情報処理システムが大規模化して監視対象の装置が増大すると、障害検出のために解析すべきメッセージ量も増大し得る。そこで、障害検出を高速に行うため、検出のための処理を複数のノードを用いて分散化することが考えられる。この場合、分散処理の仕組みをどのように実現するかが問題となる。
【０００９】
例えば、ある障害を示すパターン（障害パターン）に何れかのノードを対応付け、そのノードが当該障害パターンに含まれる全ての種類のメッセージを収集することが考えられる。しかし、あるノードが担当する障害パターンおよび他のノードが担当する他の障害パターンに、同一の種類のメッセージが含まれることがある。その場合、当該同一の種類のメッセージが複製されて、複数のノードで重複して収集される。すると、情報処理装置と各ノードとを接続するネットワークを流れるメッセージのデータ量が増え、当該ネットワークの負荷が増大するおそれがある。
【００１０】
一側面では、本発明は、ネットワークの負荷の増大を抑制して処理を分散できるようにした障害検出方法および障害検出システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
一実施態様では、複数のノードを備えており情報処理装置が出力する複数の種類のメッセージに基づいて情報処理装置の障害を検出するシステムが実行する障害検出方法が提供される。この障害検出方法では、複数の種類の一部である第１の集合に属する種類のメッセージを第１のノードに収集し、複数の種類の一部である第１の集合とは異なる第２の集合に属する種類のメッセージを第２のノードに収集する。第１のノードに収集された第１の集合に属する種類のメッセージに基づいて第１の障害候補の情報を生成し、また、第２のノードに収集された第２の集合に属する種類のメッセージに基づいて第２の障害候補の情報を生成する。第１の障害候補の情報と第２の障害候補の情報との組み合わせに基づいて情報処理装置の障害を検出する。
【００１２】
また、一実施態様では、情報処理装置が出力する複数の種類のメッセージに基づいて情報処理装置の障害を検出する障害検出システムが提供される。この障害検出システムは、第１のノードと第２のノードと第３のノードとを有する。第１のノードは、複数の種類の一部である第１の集合に属する種類のメッセージを収集し、収集した第１の集合に属する種類のメッセージに基づいて第１の障害候補の情報を生成する。第２のノードは、複数の種類の一部である第１の集合とは異なる第２の集合に属する種類のメッセージを収集し、収集した第２の集合に属する種類のメッセージに基づいて第２の障害候補の情報を生成する。第３のノードは、第１の障害候補の情報と第２の障害候補の情報との組み合わせに基づいて、情報処理装置の障害を検出する、または、第１の障害候補の情報と第２の障害候補の情報とを集約した第３の障害候補の情報を生成する。
【発明の効果】
【００１３】
一実施態様によれば、ネットワークの負荷の増大を抑制して処理を分散できる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の情報処理システムを示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】第２の実施の形態の前段検出サーバのハードウェア例を示す図である。
【図４】第２の実施の形態のソフトウェア例を示す図である。
【図５】第２の実施の形態のメッセージ辞書の例を示す図である。
【図６】第２の実施の形態の配布表の例を示す図である。
【図７】第２の実施の形態の候補パターンテーブルの例を示す図である。
【図８】第２の実施の形態の合成パターンテーブルの例を示す図である。
【図９】第２の実施の形態のメッセージデータの例を示す図である。
【図１０】第２の実施の形態の候補パターン通知データの例を示す図である。
【図１１】第２の実施の形態のメッセージ配布の例を示すフローチャートである。
【図１２】第２の実施の形態の候補パターン検出の例を示すフローチャートである。
【図１３】第２の実施の形態の障害検出の例を示すフローチャートである。
【図１４】第２の実施の形態の障害検出の第１の例を示す図である。
【図１５】第２の実施の形態の障害検出の第２の例を示す図である。
【図１６】第２の実施の形態の障害検出の第３の例を示す図である。
【図１７】第２の実施の形態のテーブルの更新例を示す図である。
【図１８】メッセージ配布の第１の他の例を示す図である。
【図１９】メッセージ配布の第２の他の例を示す図である。
【図２０】第３の実施の形態のメッセージ配布の例を示すフローチャートである。
【図２１】第４の実施の形態のソフトウェア例を示す図である。
【図２２】第４の実施の形態の分割前パターンテーブルの例を示す図である。
【図２３】第４の実施の形態のメッセージ頻度テーブルの例を示す図である。
【図２４】第４の実施の形態の配布表更新の例を示すフローチャートである。
【図２５】第５の実施の形態のソフトウェア例を示す図である。
【図２６】第５の実施の形態の候補パターンテーブル（前段）の例を示す図である。
【図２７】第５の実施の形態の候補パターンテーブル（中段）の例を示す図である。
【図２８】第５の実施の形態の候補パターン通知データの例を示す図である。
【図２９】第５の実施の形態の候補パターン検出の例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムを示す図である。第１の実施の形態の情報処理システムは、情報処理装置１およびノード２，２ａ，３を含む。第１の実施の形態の情報処理システムは、情報処理装置１が出力する複数の種類のメッセージに基づいて情報処理装置１の障害を検出する。情報処理装置１およびノード２，２ａ，３は、ネットワークで接続されている。
【００１６】
情報処理装置１は、複数の種類のメッセージを出力する。複数の種類のメッセージとは、例えば情報処理装置１上のハードウェアやソフトウェアのログに関するメッセージである。例えば、情報処理装置１はメッセージＭ１，Ｍ２，Ｍ３を出力する。メッセージＭ１は、種類Ａのメッセージである。メッセージＭ２は、種類Ｂのメッセージである。メッセージＭ３は、種類Ｄのメッセージである。情報処理装置１が出力し得るメッセージの種類の集合｛Ａ，Ｂ，Ｃ，Ｄ，Ｅ・・・｝を集合Ｘとする。
【００１７】
ノード２は、複数の種類（集合Ｘ）の一部である集合Ｘ１に属する種類のメッセージを収集する。例えば、集合Ｘ１にはメッセージの種類Ａ，Ｂ，Ｃが属する。情報処理装置１がメッセージＭ１，Ｍ２，Ｍ３を出力した場合、ノード２は、情報処理装置１からメッセージＭ１，Ｍ２を収集する。
【００１８】
ノード２は、収集した集合Ｘ１に属する種類のメッセージに基づいて障害候補の情報を生成する。障害候補の情報とは、情報処理装置１における障害の発生を示唆する情報である。例えば、障害原因を示すメッセージの種類の集合（障害パターン）の一部（部分パターン）を検出した旨を示す情報である。
【００１９】
より具体的には、障害番号＃１で示される障害に対して障害パターン｛Ａ，Ｂ，Ｄ｝が、障害番号＃２で示される障害に対して障害パターン｛Ａ，Ｅ｝が対応している。例えば、障害番号＃１に部分パターン｛Ａ，Ｂ｝を、障害番号＃２に部分パターン｛Ａ｝を対応付けた情報をノード２に格納しておく。ノード２が収集したメッセージＭ１，Ｍ２の種類の組み合わせは｛Ａ，Ｂ｝であり、部分パターン｛Ａ，Ｂ｝に一致し、部分パターン｛Ａ｝を含む。したがって、ノード２は、障害番号＃１に関する障害候補の情報Ｙ１と、障害番号＃２に関する障害候補の情報Ｙ２と、を生成する。なお、部分パターンの検出は完全一致による検出でもよいし、部分一致による検出でもよい。ここでは、部分一致による場合を例示しており、収集したメッセージの種類の集合｛Ａ，Ｂ｝に対して障害番号＃２の部分パターン｛Ｂ｝も検出している。完全一致とする場合は当該障害番号＃２の部分パターンは未検出となる。
【００２０】
ノード２ａは、複数の種類（集合Ｘ）の一部である集合Ｘ１とは異なる集合Ｘ２に属する種類のメッセージを収集する。ここで、集合Ｘ１，Ｘ２が異なるとは、例えば、集合Ｘ１，Ｘ２に要素の重複がない（排他的である）ことを示す。例えば、集合Ｘ２にはメッセージの種類Ｄ，Ｅが属する。情報処理装置１がメッセージＭ１，Ｍ２，Ｍ３を出力した場合、ノード２ａは、情報処理装置１からメッセージＭ３を収集する。
【００２１】
ノード２ａは、収集した集合Ｘ２に属する種類のメッセージに基づいて障害候補の情報を生成する。ノード２ａは、ノード２と同様にして障害候補の情報を生成する。
例えば、障害番号＃１に部分パターン｛Ｄ｝を、障害番号＃２に部分パターン｛Ｅ｝を対応付けた情報をノード２ａに格納しておく。ノード２ａが収集したメッセージＭ３の種類の組み合わせは｛Ｄ｝であり、部分パターン｛Ｄ｝に一致する。したがって、ノード２ａは、障害番号＃１に関する障害候補の情報Ｙ３を生成する。
【００２２】
ノード３は、ノード２が生成した障害候補の情報とノード２ａが生成した障害候補の情報との組み合わせに基づいて、情報処理装置１の障害を検出する。または、ノード３は、ノード２が生成した障害候補の情報とノード２ａが生成した障害候補の情報とを集約した障害候補の情報Ｚを生成する。障害候補の情報Ｚは、例えば他のノードにより別の障害候補の情報と組み合わせられて、障害の検出または障害候補の情報の絞り込みに用いられる。
【００２３】
ここで、例えばノード２，２ａの両方で障害番号＃１に関する障害候補の情報Ｙ１，Ｙ３が生成されている。ノード３は、障害候補の情報Ｙ１，Ｙ３の組み合わせにより、情報処理装置１の障害番号＃１の障害を検出する。一方、ノード２では障害番号＃２に関する障害候補の情報Ｙ２が生成されているが、ノード２ａでは障害番号＃２に関する障害候補の情報が生成されていない。このため、ノード３は障害番号＃２の障害は検出しない。
【００２４】
また、例えば、障害番号＃１に対する障害パターンが、｛Ａ，Ｂ，Ｄ，Ｆ，Ｇ，・・・｝のようにＡ，Ｂ，Ｄ以外の種類を含む場合もある。その場合、ノード３は障害候補の情報Ｙ１，Ｙ３を集約して障害番号＃１に関する障害候補の情報Ｚを生成してもよい。そして、更に後段のノードで種類Ｆ，Ｇのメッセージの検出結果を示す障害候補の情報などと組み合わせて障害番号＃１の障害を検出してもよい。例えば、障害番号＃１に対して障害候補の情報Ｙ１，Ｙ３の組み合わせを登録した情報をノード３に格納しておけば、ノード３は当該情報に基づいて障害候補の情報Ｚを生成できる。このように、ノード３は障害候補の情報Ｙ１，Ｙ３を障害候補の情報Ｚに絞り込むこともできる。
【００２５】
第１の実施の形態の情報処理システムによれば、ノード２により、集合Ｘ１に属する種類Ａ，ＢのメッセージＭ１，Ｍ２が収集され、収集されたメッセージＭ１，Ｍ２に基づいて障害候補の情報Ｙ１，Ｙ２が生成される。また、ノード２ａにより、集合Ｘ２に属する種類ＤのメッセージＭ３が収集され、収集されたメッセージＭ３に基づいて障害候補の情報Ｙ３が生成される。ノード３により、障害候補の情報Ｙ１，Ｙ３の組み合わせに基づいて、情報処理装置１の障害が検出される、または、障害候補の情報Ｙ１，Ｙ３を集約した障害候補の情報Ｚが生成される。
【００２６】
これにより、ネットワークの負荷の増大を抑制して処理を分散できる。具体的には、同一の種類のメッセージを前段のノード２，２ａの何れかで収集する（例えば、集合Ｘ１と集合Ｘ２とは要素の重複がない）。前段のノード２，２ａでは自身が担当するメッセージにより障害候補の検出のみを行い、後段のノード３では前段で検出された障害候補を組み合わせて障害を検出する。ここで、障害検出の処理を分散させる場合、ある障害パターンにノードを対応付け、当該障害パターンに含まれる全てのメッセージの収集をそのノードに担当させることも考えられる。この場合、異なる障害パターンに同一種類のメッセージが含まれると、メッセージを複製して複数のノードで重複して収集することになる。すると、情報処理装置とノードとの間のネットワークの負荷が高まるおそれがあり、非効率的となる。
【００２７】
これに対し、第１の実施の形態の情報処理システムでは、同一種類のメッセージを異なるノードで重複して収集せずに済む。よって、メッセージを複製して収集する場合に比べて情報処理装置１とノード２，２ａとの間のネットワークに流すメッセージの数やデータ量を低減でき、当該ネットワークの負荷の増大を抑制できる。また、障害候補を段階的に絞り込むようにすれば、各ノードが担当する処理負担を軽減できる。よって、障害検出のための処理を効率的に分散できる。
【００２８】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムでは、複数のサーバ装置（以下、サーバということがある）が提供するサービスの稼働監視が行われる。そのために、複数のサーバ装置のハードウェアやソフトウェアのログに関するメッセージを取得し、当該メッセージに基づく障害を検出する。
【００２９】
第２の実施の形態の情報処理システムは、監視対象サーバ１００，１００ａ，１００ｂ、前段検出サーバ２００，２００ａ，後段検出サーバ３００および管理端末装置４００を含む。前段検出サーバ２００，２００ａ，後段検出サーバ３００および管理端末装置４００は、ネットワーク１０に接続されている。ネットワーク１０は、例えばＬＡＮ（Local Area Network）である。監視対象サーバ１００，１００ａ，１００ｂは、ネットワーク２０に接続されている。ネットワーク２０は、例えばＬＡＮである。ネットワーク１０，２０は、中継装置３０で接続されている。中継装置３０は、ネットワーク１０，２０間の通信を中継するスイッチまたはルータ等である。
【００３０】
監視対象サーバ１００，１００ａ，１００ｂは、互いに連携して所定のサービスを実行するサーバコンピュータである。例えば、当該サービスはＷｅｂサービスである。その場合、例えば、監視対象サーバ１００は、ネットワーク２０に接続されたクライアント装置（図示を省略）のブラウザにＧＵＩ（Graphical User Interface）を提供するＷｅｂサーバである。例えば、監視対象サーバ１００ａは、Ｗｅｂサーバで入力された要求に基づく処理を実行するＡＰ（APplication）サーバである。例えば、監視対象サーバ１００ｂは、ＡＰサーバの要求に基づいてデータベースの参照・更新を行うＤＢ（DataBase）サーバである。
【００３１】
監視対象サーバ１００，１００ａ，１００ｂは、各サーバ上のハードウェアやソフトウェアに関するログを出力する。
前段検出サーバ２００，２００ａは、監視対象サーバ１００，１００ａ，１００ｂが出力したメッセージの情報を収集するサーバコンピュータである。前段検出サーバ２００，２００ａは、収集したメッセージの情報から障害候補のパターンを検出し、障害候補の情報を生成する。
【００３２】
後段検出サーバ３００は、監視対象サーバ１００，１００ａ，１００ｂの障害を検出するサーバコンピュータである。後段検出サーバ３００は、前段検出サーバ２００，２００ａが生成した障害候補の情報を取得し、障害候補の情報の組み合わせに基づいて監視対象サーバ１００，１００ａ，１００ｂの障害を検出する。後段検出サーバ３００は、検出した障害を管理端末装置４００に通知する。
【００３３】
管理端末装置４００は、第２の実施の形態の情報処理システムの管理者が利用するクライアントコンピュータである。管理端末装置４００は、後段検出サーバ３００から通知された障害の内容を管理者に提示する。また、管理端末装置４００は、メッセージの解析を行いたい時間範囲を前段検出サーバ２００，２００ａおよび後段検出サーバ３００に入力することもできる。以下では、当該時間範囲をタイムウィンドウと呼ぶことがある。
【００３４】
図３は、第２の実施の形態の前段検出サーバのハードウェア例を示す図である。前段検出サーバ２００は、ＣＰＵ（Central Processing Unit）２０１、ＲＡＭ(Random Access Memory）２０２、ＨＤＤ（Hard Disk Drive）２０３、画像信号処理部２０４、入力信号処理部２０５、ディスクドライブ２０６および通信部２０７を有する。各ユニットが前段検出サーバ２００のバスに接続されている。監視対象サーバ１００，１００ａ，１００ｂ、前段検出サーバ２００ａ、後段検出サーバ３００および管理端末装置４００も前段検出サーバ２００と同様のハードウェアを用いて実装できる。
【００３５】
ＣＰＵ２０１は、前段検出サーバ２００の情報処理を制御するプロセッサである。ＣＰＵ２０１は、ＨＤＤ２０３に記憶されているプログラムやデータの少なくとも一部を読み出し、ＲＡＭ２０２に展開してプログラムを実行する。なお、前段検出サーバ２００は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
【００３６】
ＲＡＭ２０２は、ＣＰＵ２０１が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、前段検出サーバ２００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
【００３７】
ＨＤＤ２０３は、ＯＳ（Operating System）プログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。ＨＤＤ２０３は、ＣＰＵ２０１の命令に従って、内蔵の磁気ディスクに対してデータの読み書きを行う。なお、前段検出サーバ２００は、ＨＤＤ以外の種類の不揮発性の記憶装置（例えば、ＳＳＤ（Solid State Drive）など）を備えてもよく、複数の記憶装置を備えていてもよい。
【００３８】
画像信号処理部２０４は、ＣＰＵ２０１の命令に従って、前段検出サーバ２００に接続されたディスプレイ２１に画像を出力する。ディスプレイ２１としては、例えば、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイを用いることができる。
【００３９】
入力信号処理部２０５は、前段検出サーバ２００に接続された入力デバイス２２から入力信号を取得し、ＣＰＵ２０１に出力する。入力デバイス２２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４０】
ディスクドライブ２０６は、記録媒体２３に記録されたプログラムやデータを読み取る駆動装置である。記録媒体２３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。ディスクドライブ２０６は、例えば、ＣＰＵ２０１の命令に従って、記録媒体２３から読み取ったプログラムやデータをＲＡＭ２０２またはＨＤＤ２０３に格納する。
【００４１】
通信部２０７は、ネットワーク１０を介して監視対象サーバ１００，１００ａ，１００ｂ、後段検出サーバ３００および管理端末装置４００と通信を行う通信インタフェースである。通信部２０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４２】
図４は、第２の実施の形態のソフトウェア例を示す図である。図４に示すユニットの一部または全部は、監視対象サーバ１００，１００ａ，１００ｂ、前段検出サーバ２００，２００ａおよび後段検出サーバ３００が実行するプログラムのモジュールであってもよい。また、図４に示すユニットの一部または全部は、ＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）などの電子回路であってもよい。監視対象サーバ１００ａ，１００ｂも監視対象サーバ１００と同様のユニットを用いて実装できる。前段検出サーバ２００ａも前段検出サーバ２００と同様のユニットを用いて実装できる。
【００４３】
監視対象サーバ１００は、ログ記憶部１１０、辞書記憶部１２０、配布表記憶部１３０、メッセージ変換部１４０およびメッセージ送信部１５０を有する。
ログ記憶部１１０は、監視対象サーバ１００上のハードウェアや監視対象サーバ１００が実行するソフトウェアのログを記憶する。ログは、当該ソフトウェアなど（ハードウェアのドライバプログラムやアプリケーションプログラム）が生成して出力するものである。例えば、ログは発生したイベントの内容を記述したテキストの情報（メッセージテキストと呼ぶことがある）を含む。メッセージテキストは、イベントが発生した時間を示すタイムスタンプを含む。
【００４４】
辞書記憶部１２０は、メッセージ辞書を記憶する。メッセージ辞書は、メッセージテキストをメッセージ番号に変換するためのテーブルである。
配布表記憶部１３０は、配布表を記憶する。配布表は、メッセージ番号に対応付けて、メッセージ番号の情報の送信先を登録したテーブルである。
【００４５】
メッセージ変換部１４０は、辞書記憶部１２０に記憶されたメッセージ辞書に基づいて、ログ記憶部１１０に記憶されたログ内のメッセージテキストをメッセージ番号に変換する。メッセージ変換部１４０は、メッセージ番号の情報をメッセージ送信部１５０に出力する。メッセージ番号の情報は、メッセージテキストに含まれていたタイムスタンプを含む。
【００４６】
メッセージ送信部１５０は、配布表記憶部１３０に記憶された配布表に基づいて、メッセージ変換部１４０から取得したメッセージ番号の情報を前段検出サーバ２００，２００ａの何れかに送信する。以下では、メッセージ送信部１５０が前段検出サーバ２００，２００ａに送信するメッセージ番号の情報をメッセージデータと呼ぶことがある。メッセージデータで示されるメッセージ番号が、当該メッセージデータの種類を示す。
【００４７】
前段検出サーバ２００は、記憶部２１０および候補検出部２２０を有する。
記憶部２１０は、候補パターンテーブルを記憶する。候補パターンテーブルは、候補パターンを登録したテーブルである。候補パターンとは、障害候補のメッセージ番号の所定の集合である。また、記憶部２１０は、メッセージデータを記憶する。
【００４８】
候補検出部２２０は、監視対象サーバ１００，１００ａ，１００ｂから受信したメッセージデータを記憶部２１０に格納する。
候補検出部２２０は、記憶部２１０に記憶された候補パターンテーブルに基づいて、監視対象サーバ１００，１００ａ，１００ｂから通知されたメッセージ番号の集合から候補パターンを検出する。候補検出部２２０は、検出した候補パターンの情報を後段検出サーバ３００に送信する。以下では、候補検出部２２０が後段検出サーバ３００に送信する候補パターンの情報を候補パターン通知データと呼ぶことがある。
【００４９】
後段検出サーバ３００は、記憶部３１０および候補合成部３２０を有する。
記憶部３１０は、合成パターンテーブルを記憶する。合成パターンテーブルは、合成パターンと当該合成パターンに対応する障害の内容を登録したテーブルである。ここで、合成パターンとは、候補パターンの所定の組み合わせである。また、記憶部３１０は、候補パターン通知データを記憶する。
【００５０】
候補合成部３２０は、前段検出サーバ２００，２００ａから受信した候補パターン通知データを記憶部３１０に格納する。
候補合成部３２０は、記憶部３１０に記憶された合成パターンテーブルに基づいて、前段検出サーバ２００，２００ａから通知された候補パターンの集合から合成パターンを検出する。候補合成部３２０は、検出した合成パターンに対応する障害の情報を管理端末装置４００に送信する。
【００５１】
図５は、第２の実施の形態のメッセージ辞書の例を示す図である。メッセージ辞書１２１は、辞書記憶部１２０に格納される。メッセージ辞書１２１は、メッセージテキストおよびメッセージ番号の項目を含む。
【００５２】
メッセージテキストの項目には、メッセージテキストに含まれる文字列が登録される。メッセージ番号の項目には、メッセージ番号が登録される。例えば、メッセージテキスト“Ｗｅｂ  Ｄｏｗｎ”に対してメッセージ番号“２”が登録される。
【００５３】
図６は、第２の実施の形態の配布表の例を示す図である。配布表１３１は、配布表記憶部１３０に格納される。配布表１３１は、メッセージ番号およびサーバ番号の項目を含む。
【００５４】
メッセージ番号の項目には、メッセージ番号が登録される。サーバ番号の項目には、配布先のサーバのサーバ番号が１つ登録される。サーバ番号は、配布先のサーバの識別情報である。ここで、サーバ番号“１”は、前段検出サーバ２００を示すとする。サーバ番号“２”は、前段検出サーバ２００ａを示すとする。例えば、配布表１３１にはメッセージ番号“２”に対してサーバ番号“２”が登録される。これは、メッセージ番号“２”に関するメッセージデータを、前段検出サーバ２００ａに送信することを示す。
【００５５】
なお、登録されていないメッセージ番号“１”は収集の対象外であり、メッセージ送信部１５０はメッセージ番号“１”のメッセージデータを送信しない。メッセージ送信部１５０は、例えば、メッセージ変換部１４０から取得したメッセージ番号“１”の情報を破棄する。
【００５６】
図７は、第２の実施の形態の候補パターンテーブルの例を示す図である。図７（Ａ）は前段検出サーバ２００が保持する候補パターンテーブル２１１の例を示している。候補パターンテーブル２１１は、記憶部２１０に格納される。候補パターンテーブル２１１は、障害番号、関連メッセージ番号、枝番号および候補パターンの項目を含む。
【００５７】
障害番号の項目には、障害番号が登録される。障害番号は、障害の内容を識別するための番号である。関連メッセージ番号の項目には、当該障害番号に対応する障害に関連する（当該障害の候補となり得る）メッセージ番号が登録される。枝番号の項目には、枝番号が登録される。枝番号は、障害を検出するための複数のパターンを識別するための番号である。候補パターンの項目には、候補パターンが登録される。候補パターンは、メッセージ番号の集合であり、要素の順序（例えば、時系列）は問わない。
【００５８】
例えば、障害番号“１”という障害に関連するメッセージ番号として“３，５，７”が登録される。更に、障害番号“１”の障害を検出し得るパターンが３つ存在し、それらが枝番号“１−１”、“１−２”、“１−３”で識別される。枝番号“１−１”には候補パターンの設定はない（設定なしを示す“−”（ハイフン）が対応付けられている）。枝番号“１−２”には候補パターン“３，５”が対応付けられている。枝番号“１−３”には候補パターン“７”が対応付けられている。
【００５９】
図７（Ｂ）は前段検出サーバ２００ａが保持する候補パターンテーブル２１１ａの例を示している。候補パターンテーブル２１１ａは、前段検出サーバ２００ａの所定の記憶部に格納される。候補パターンテーブル２１１ａのデータ構造は、候補パターンテーブル２１１のデータ構造と同様である。
【００６０】
例えば、障害番号“１”という障害に関連するメッセージ番号として“２，４，６”が登録される。障害番号“１”の障害を検出し得るパターンが枝番号“１−１”、“１−２”、“１−３”で識別される点は、候補パターンテーブル２１１と同様である。一方で、候補パターンテーブル２１１ａでは、枝番号“１−１”には候補パターン“２，４，６”が対応付けられている。枝番号“１−２”には候補パターン“２，６”が対応付けられている。枝番号“１−３”には候補パターン“２，４，６”が対応付けられている。
【００６１】
図８は、第２の実施の形態の合成パターンテーブルの例を示す図である。合成パターンテーブル３１１は、記憶部３１０に格納される。合成パターンテーブル３１１は、障害番号、枝番号、合成パターンおよび障害内容の項目を含む。
【００６２】
障害番号の項目には、障害番号が登録される。枝番号の項目には、枝番号が登録される。合成パターンの項目には、合成パターンが登録される。合成パターンは、候補パターンの組み合わせであり、各候補パターンの順序（例えば、時系列）は問わない。障害内容の項目には、システムの障害の内容が登録される。
【００６３】
例えば、障害番号“１”の枝番号“１−１”の合成パターンが“２：１−１”である。ここで、“２：１−１”の表記は、“：”（コロン）の前の数字（ここでは、“２”）の部分が前段検出サーバのサーバ番号（ここでは、前段検出サーバ２００ａ）を示す。また、“：”の後の文字（ここでは“１−１”）は前段検出サーバで検出された候補パターンに対応する枝番号を示す。すなわち、“２：１−１”の表記は、前段検出サーバ２００ａで検出された枝番号“１−１”の候補パターンを示す。
【００６４】
よって、合成パターン“２：１−１”は、枝番号“１−１”の候補パターンの情報を前段検出サーバ２００ａから取得したときに検出し得る。
また、例えば、障害番号“１”の枝番号“１−２”の合成パターンが“１：１−２，２：１−２”である。この合成パターンは、枝番号“１−２”の候補パターンの情報を前段検出サーバ２００から取得し、かつ、枝番号“１−３”の候補パターンの情報を前段検出サーバ２００ａから取得したときに検出し得る。
【００６５】
また、例えば、合成パターンテーブル３１１には、障害番号“１”に対して障害内容“ＷｅｂサービスＸＸＸ  利用不可”が登録される。これは、障害番号“１”の３つの枝番号の候補パターンの何れかを検出したときに“ＷｅｂサービスＸＸＸ  利用不可”の障害を検出して、管理端末装置４００に通知することを示す。
【００６６】
図９は、第２の実施の形態のメッセージデータの例を示す図である。メッセージデータ６００は、メッセージ送信部１５０により前段検出サーバ２００，２００ａの何れかに送信されるデータである。メッセージデータ６００は、日時およびメッセージ番号の項目を含む。
【００６７】
日時の項目には、メッセージに関するイベントが発生した時間を示すタイムスタンプ（例えば、年月日時分秒）の情報が設定される。メッセージ番号の項目には、メッセージ番号が設定される。
【００６８】
メッセージデータ６００ａ，６００ｂ，６００ｃ，６００ｄは、実際の値が設定された場合を例示している。
メッセージデータ６００ａは、日時が“２０１１／７／２５  １０：５８：３０”（２０１１年７月２５日１０時５８分３０秒）、メッセージ番号が“３”である。
【００６９】
メッセージデータ６００ｂは、日時が“２０１１／７／２５  １０：５８：３２”、メッセージ番号が“２”である。
メッセージデータ６００ｃは、日時が“２０１１／７／２５  １０：５８：３３”、メッセージ番号が“６”である。
【００７０】
メッセージデータ６００ｄは、日時が“２０１１／７／２５  １０：５８：３４”、メッセージ番号が“５”である。
ここで、配布表１３１によれば、メッセージ番号“３”、“５”に関するメッセージデータ６００ａ，６００ｄは、前段検出サーバ２００（サーバ番号“１”）に送信される。また、配布表１３１によれば、メッセージ番号“２”、“６”に関するメッセージデータ６００ｂ，６００ｃは、前段検出サーバ２００ａ（サーバ番号“２”）に送信される。
【００７１】
図１０は、第２の実施の形態の候補パターン通知データの例を示す図である。候補パターン通知データ７００は、候補検出部２２０により後段検出サーバ３００に送信されるデータである。候補パターン通知データ７００は、サーバ番号、始めの時間、終わりの時間および枝番号の項目を含む。
【００７２】
サーバ番号の項目には、候補パターンを検出した前段検出サーバのサーバ番号が設定される。始めの時間の項目には、候補パターンとして検出されたメッセージ番号の時間のうち、最も早い時間が設定される。終わりの時間の項目には、候補パターンとして検出されたメッセージ番号の時間のうち、最も遅い時間が設定される。なお、候補パターンの要素となるメッセージ番号が１つの場合、始めの時間および終わりの時間は同一の時間が設定される。枝番号の項目には、検出した候補パターンに対応する枝番号が設定される。
【００７３】
候補パターン通知データ７００ａ，７００ｂ，７００ｃは、実際の値が設定された場合を例示している。
候補パターン通知データ７００ａは、サーバ番号が“１”、始めの時間が“２０１１／７／２５  １０：５８：３０”、終わりの時間が“２０１１／７／２５  １０：５８：３４”、枝番号が“１−２”である。候補パターン通知データ７００ａは、メッセージデータ６００ａ，６００ｄに基づいて、候補検出部２２０により生成され、後段検出サーバ３００に送信される。
【００７４】
候補パターン通知データ７００ｂは、サーバ番号が“２”、始めの時間が“２０１１／７／２５  １０：５８：３２”、終わりの時間が“２０１１／７／２５  １０：５８：３３”、枝番号が“１−２”である。候補パターン通知データ７００ｂは、メッセージデータ６００ｂ，６００ｃに基づいて、前段検出サーバ２００ａの候補検出部により生成され、後段検出サーバ３００に送信される。
【００７５】
候補パターン通知データ７００ｃは、サーバ番号が“１”、始めの時間が設定なしを示す“−”（ハイフン）、終わりの時間が設定なしを示す“−”（ハイフン）、枝番号が“¬１”（否定記号と数字“１”の結合）である。ここで、候補パターン通知データ７００ｃは、否定パターンを通知するためのデータである。否定パターンは、ある障害に対する全枝番号の否定を示す。否定記号とともに設定される数字は障害番号である。候補パターン通知データ７００ｃは、候補検出部２２０が障害番号“１”に対応する関連メッセージの一部を含むが、全ての枝番号の候補パターンを検出できなかった場合に、当該候補検出部２２０により生成され、後段検出サーバ３００に送信される。否定パターンは、対応する候補パターンが検出できなかった場合に生成されるので、候補パターン通知データの始めの時間および終わりの時間の項目は設定なしとなる。
【００７６】
次に、第２の実施の形態の情報処理システムの処理手順を説明する。
図１１は、第２の実施の形態のメッセージ配布の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。なお、監視対象サーバ１００ａ，１００ｂも監視対象サーバ１００と同様の処理手順である。
【００７７】
（ステップＳ１１）メッセージ変換部１４０は、ログ記憶部１１０に記憶されたログからメッセージテキストを取得する。例えば、ログには１つのメッセージテキストが所定のコード（例えば、改行コード）で区切られている。メッセージ変換部１４０は当該コードにより個々のメッセージテキストを区別して取得できる。
【００７８】
（ステップＳ１２）メッセージ変換部１４０は、辞書記憶部１２０に記憶されたメッセージ辞書１２１に基づいて、取得したメッセージをメッセージ番号に変換する。メッセージ変換部１４０は、メッセージ番号の情報をメッセージ送信部１５０に出力する。例えば、メッセージ変換部１４０が“２０１１／７／２５  １０：５８：３０  ・・・ＨＤＤ  Ｆａｕｌｔ”というメッセージを取得した場合、メッセージ番号の情報は時間“２０１１／７／２５  １０：５８：３０”およびメッセージ番号“３”を含む。
【００７９】
（ステップＳ１３）メッセージ送信部１５０は、配布表記憶部１３０に記憶された配布表１３１に基づいて、メッセージ変換部１４０から取得したメッセージ番号の情報の送信先の前段検出サーバを決定する。
【００８０】
（ステップＳ１４）メッセージ送信部１５０は、メッセージデータ６００をステップＳ１３で決定した送信先の前段検出サーバに送信する。例えば、メッセージ番号が“３”の場合、メッセージデータ６００ａを前段検出サーバ２００（サーバ番号“１”）に送信する。
【００８１】
このようにして、ログに含まれるメッセージがメッセージ番号に変換される。メッセージデータにより、当該メッセージ番号が前段検出サーバ２００，２００ａに通知される。配布表１３１では、１つのメッセージ番号が１つの前段検出サーバに対応付けられる。したがって、１つのメッセージ番号に関するメッセージデータは、１つの前段検出サーバで収集される。
【００８２】
なお、監視対象サーバ１００，１００ａ，１００ｂは、ログに新たなメッセージが追加されたときに当該メッセージ通知の処理を実行する。または、所定の周期やログに所定数のメッセージが追加されたタイミングで実行してもよい。
【００８３】
前段検出サーバ２００は、監視対象サーバ１００，１００ａ，１００ｂから受信したメッセージデータを記憶部２１０に格納する。前段検出サーバ２００ａは、監視対象サーバ１００，１００ａ，１００ｂから受信したメッセージデータを自身の記憶部に格納する。
【００８４】
図１２は、第２の実施の形態の候補パターン検出の例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。なお、前段検出サーバ２００ａも前段検出サーバ２００と同様の処理手順である。
【００８５】
（ステップＳ２１）管理端末装置４００は、前段検出サーバ２００にタイムウィンドウを入力する。タイムウィンドウは、時間範囲の情報である。タイムウィンドウは、例えば、“２０１１／７／２５  １０：５８：００”〜“２０１１／７／２５  １０：５９：００”の時間範囲の情報を含む。なお、前段検出サーバ２００，２００ａには、同じタイムウィンドウを入力する。
【００８６】
（ステップＳ２２）候補検出部２２０は、記憶部２１０に記憶されたメッセージデータを参照して、タイムウィンドウに含まれる全てのメッセージ番号（メッセージ番号列）を取得する。
【００８７】
（ステップＳ２３）候補検出部２２０は、記憶部２１０に記憶された候補パターンテーブル２１１を参照して、障害番号を１つ選択する。
（ステップＳ２４）候補検出部２２０は、候補パターンテーブル２１１を参照して、メッセージ番号列のパターンが当該障害番号の枝番号に対応する何れかの候補パターンと一致（完全一致）するか否か判定する。何れかの候補パターンと一致する場合、処理をステップＳ２５に進める。何れの候補パターンとも一致しない場合、処理をステップＳ２６に進める。例えば、メッセージ番号列“３，５，３，５”は、メッセージ番号“３”、“５”の組み合わせであるので、そのパターンは“３，５”である。当該パターン“３，５”は、候補パターン“３，５”と一致する。同様に、メッセージ番号列“５，３，７，３，７”のパターンは“３，５，７”である。当該パターン“３，５，７”は、候補パターン“３，５”とは一致しない。なお、候補パターンテーブル２１１では、枝番号“１−１”の候補パターンが“−”（設定なし）である。当該枝番号“１−１”の候補パターンについては、ステップＳ２２で何れのメッセージ番号も取得できていない場合に、枝番号“１−１”の候補パターンと一致すると判断する。一方、ステップＳ２２で何れかのメッセージ番号を取得している場合に、枝番号“１−１”の候補パターンと一致しないと判断する。
【００８８】
（ステップＳ２５）候補検出部２２０は、メッセージ番号列から検出した候補パターンについて、候補パターン通知データを生成し、後段検出サーバ３００に送信する。例えば、候補パターン“３，５”（枝番号“１−２”）を検出した場合、候補検出部２２０は候補パターン通知データ７００ａを後段検出サーバ３００に送信する。他の枝番号の候補パターンがある場合には、その候補パターンに関しても候補パターン通知データを生成して後段検出サーバ３００に送信する。ここで、例えば、ステップＳ２４で示した枝番号“１−１”のように、何れのメッセージ番号も取得できていない場合に、候補パターンと一致すると判断することもある。この場合は例外として、候補検出部２２０は候補パターンの通知は行わない。
【００８９】
（ステップＳ２６）候補検出部２２０は、ステップＳ２３で選択した障害番号について、否定パターン用の通知データを生成し、後段検出サーバ３００に送信する。例えば、障害番号“１”には、枝番号“１−１”、“１−２”、“１−３”がある。障害番号“１”に対し、これら全枝番号の候補パターンをメッセージ番号列から検出できなかったとき、候補検出部２２０は、障害番号“１”の否定パターン“¬１”を設定した候補パターン通知データ７００ｃを生成して後段検出サーバ３００に送信する。
【００９０】
（ステップＳ２７）候補検出部２２０は、ステップＳ２３で選択した障害番号を処理済とする。候補検出部２２０は、候補パターンテーブル２１１を参照して、次の障害番号（未処理の障害番号）があるか否か判定する。次の障害番号がある場合、処理をステップＳ２３に進める。次の障害番号がない場合、処理を終了する。
【００９１】
このようにして、前段検出サーバ２００で候補パターンが検出され、候補パターン通知データが後段検出サーバ３００に送信される。前段検出サーバ２００ａも同様である。後段検出サーバ３００は、前段検出サーバ２００，２００ａから受信した候補パターン通知データを記憶部３１０に格納する。
【００９２】
なお、ステップＳ２５では、何れのメッセージ番号も取得できていない場合、その旨を明示的（例えば、候補パターン“１：１−１”として）に後段検出サーバ３００に通知してもよい。しかし、上述のように、候補パターンの通知を行わないようにすれば、前段検出サーバ２００，２００ａと後段検出サーバ３００との間で送受信される通信データを減らせるので、これらサーバ間のネットワークの負荷を軽減できる。
【００９３】
図１３は、第２の実施の形態の障害検出の例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
（ステップＳ３１）管理端末装置４００は、後段検出サーバ３００にタイムウィンドウを入力する。候補合成部３２０は、タイムウィンドウの入力を受け付ける。なお、後段検出サーバ３００に入力するタイムウィンドウの時間範囲は、前段検出サーバ２００，２００ａに入力したタイムウィンドウと同一範囲とする。管理端末装置４００は、前段検出サーバ２００，２００ａに対するタイムウィンドウの入力と同時に、後段検出サーバ３００にタイムウィンドウを入力してもよい。その場合、前段検出サーバ２００，２００ａから送信される候補パターン通知データを一通り受信した後に、以降のステップＳ３２を開始する。
【００９４】
（ステップＳ３２）候補合成部３２０は、記憶部３１０に記憶された候補パターン通知データを参照して、終わりの時間に設定された時間がタイムウィンドウ内である全ての候補パターン（候補パターン列）を取得する。
【００９５】
（ステップＳ３３）候補合成部３２０は、記憶部３１０に記憶された合成パターンテーブル３１１を参照して、障害番号を１つ選択する。
（ステップＳ３４）候補合成部３２０は、合成パターンテーブル３１１を参照して、候補パターン列が当該障害番号の枝番号に対応する何れかの合成パターンと一致するか否か判定する。何れかの合成パターンと一致する場合、処理をステップＳ３５に進める。何れの合成パターンとも一致しない場合、処理をステップＳ３８に進める。
【００９６】
（ステップＳ３５）候補合成部３２０は、記憶部３１０に記憶された候補パターン通知データを参照して、当該障害番号の否定パターンがあるか否か判定する。否定パターンがない場合、処理をステップＳ３６に進める。否定パターンがある場合、処理をステップＳ３８に進める。例えば、合成パターンテーブル３１１によれば、枝番号“１−１”の合成パターンは“２：１−１”である。この場合、候補パターン列に候補パターン“２：１−１”が含まれれば、ステップＳ３４で枝番“１−１”の合成パターンが検出される。候補合成部３２０は、本ステップＳ３５で障害番号“１”の否定パターンがある場合、当該合成パターンを検出していても、障害番号“１”の障害検出を抑止する。このように、否定パターンの有無により合成パターン“２：１−１”が成立しているか否かを判断できる。
【００９７】
（ステップＳ３６）候補合成部３２０は、記憶部３１０に記憶された候補パターン通知データを参照して、検出した合成パターンの要素となる候補パターンに対応する始めの時間および終わりの時間を抽出する。候補合成部３２０は、抽出した時間のうち、最も早い時間および最も遅い時間の両方がタイムウィンドウ内に含まれるか否か判定する。含まれる場合、処理をステップＳ３７に進める。含まれない場合、処理をステップＳ３８に進める。
【００９８】
（ステップＳ３７）候補合成部３２０は、ステップＳ３３で選択した障害番号に対応する障害内容を管理端末装置４００に通知する。障害の通知方法は、管理端末装置４００への通知に限られない。例えば、候補合成部３２０は、管理者の電子メールアドレスを保持し、障害内容を記述した電子メールを当該電子メールアドレス宛に送信してもよい。
【００９９】
（ステップＳ３８）候補合成部３２０は、ステップＳ３３で選択した障害番号を処理済とする。候補合成部３２０は、合成パターンテーブル３１１を参照して、次の障害番号（未処理の障害番号）があるか否かを判定する。次の障害番号がある場合、処理をステップＳ３３に進める。次の障害番号がない場合、処理を終了する。
【０１００】
このようにして、後段検出サーバ３００で合成パターンが検出され、当該合成パターンに対応する障害が管理端末装置４００に通知される。
管理者は、タイムウィンドウにより所望の時間範囲を容易に指定して、障害検出処理を行わせることができる。
【０１０１】
また、ステップＳ３６の処理により、ステップＳ３４でタイムウィンドウに収まらない合成パターンを検出しても、当該合成パターンによる障害を非検出とできる。例えば、タイムウィンドウを未来にずらしながら障害検出を連続して行うと、今回指定したタイムウィンドウよりも過去の時間の候補パターン通知データ（前回分）が記憶部３１０に残ることがある（重複データは上書きされる）。この場合、ステップＳ３４では今回指定したタイムウィンドウに収まらない合成パターンを検出する可能性がある。そこで、ステップＳ３６により当該合成パターンを排除する。なお、障害検出の処理を行う前に、記憶部３１０に格納された候補パターン通知データをクリアするようにしてもよい。
【０１０２】
更に、上記ステップＳ３１において、後段検出サーバ３００に入力するタイムウィンドウの時間範囲は、前段検出サーバ２００，２００ａに入力したタイムウィンドウと少なくとも一部が重複する異なる範囲としてもよい。
【０１０３】
また、上記ステップＳ３２では、候補合成部３２０は、記憶部３１０に記憶された候補パターン通知データを参照して、始めの時間および終わりの時間の両方がタイムウィンドウ内である全ての候補パターン（候補パターン列）を取得してもよい。その場合、ステップＳ３６をスキップして、ステップＳ３７に進んでもよい。
【０１０４】
管理端末装置４００は、例えば、障害内容を示す画像を生成して、管理端末装置４００のモニタに表示させ管理者に提示する。
次に、上記処理手順に基づく障害検出の具体例を説明する。
【０１０５】
図１４は、第２の実施の形態の障害検出の第１の例を示す図である。図１４では、枝番号“１−２”の合成パターンを検出することで、障害番号“１”の障害を検出する場合を例示している。
【０１０６】
監視対象サーバ１００，１００ａ，１００ｂは、ログにメッセージが記録されると、配布表１３１に基づいて、当該メッセージに対応するメッセージデータを前段検出サーバ２００，２００ａの何れかに送信する。例えば、メッセージに対応するメッセージ番号が“・・・，３，５，１，２，３，６，９，２，５，・・・”であったとする。配布表１３１によれば、監視対象サーバ１００，１００ａ，１００ｂは、メッセージ番号“３”、“５”を前段検出サーバ２００に通知する。同様に、メッセージ番号“２”、“６”を前段検出サーバ２００ａに通知する。
【０１０７】
前段検出サーバ２００，２００ａは、メッセージデータにより通知されたメッセージ番号とメッセージが生成された時間を保持し、蓄積する。
管理端末装置４００は、タイムウィンドウＷ１を前段検出サーバ２００，２００ａおよび後段検出サーバ３００に入力する。タイムウィンドウＷ１の時間範囲には、監視対象サーバ１００，１００ａ，１００ｂから通知された“３，５，１，２，３，６，９，２，５”のメッセージ番号が含まれている。
【０１０８】
前段検出サーバ２００では、蓄積されたメッセージデータから、タイムウィンドウＷ１内のメッセージ番号列として時間の早い順に“３，５，３，５”を取得する。前段検出サーバ２００は、候補パターンテーブル２１１に基づいて、メッセージ番号列から候補パターン“３，５”を検出する。前段検出サーバ２００は、サーバ番号“１”と当該候補パターンに対応する枝番号“１−２”とを含む候補パターン通知データを生成して、後段検出サーバ３００に送信する。なお、候補パターン通知データに設定する始めの時間は、メッセージ番号列の中で最も早く検出された“３”に対応する時間である。終わりの時間は、メッセージ番号列の中で最も遅く検出された“５”に対応する時間である。前段検出サーバ２００が通知した候補パターンを“１：１−２”と表記する。
【０１０９】
前段検出サーバ２００ａでは、蓄積されたメッセージデータから、タイムウィンドウＷ１内のメッセージ番号列として時間の早い順に“２，６，２”を取得する。前段検出サーバ２００ａは、候補パターンテーブル２１１ａに基づいて、メッセージ番号列から候補パターン“２，６”を検出する。前段検出サーバ２００ａは、サーバ番号“２”と当該候補パターンに対応する枝番号“１−２”とを含む候補パターン通知データを生成して、後段検出サーバ３００に送信する。候補パターン通知データに設定する始めの時間は、メッセージ番号列の中で最も早く検出された“２”に対応する時間である。終わりの時間は、メッセージ番号列の中で最も遅く検出された“２”に対応する時間である。前段検出サーバ２００ａが通知した候補パターンを“２：１−２”と表記する。
【０１１０】
後段検出サーバ３００は、候補パターン通知データにより通知されたサーバ番号、始めの時間、終わりの時間および枝番号を保持し、蓄積する。
後段検出サーバ３００は、蓄積された候補パターン通知データから、タイムウィンドウＷ１内の候補パターン列“１：１−２，２：１−２”を取得する。すると、後段検出サーバ３００は、合成パターンテーブル３１１に基づき枝番号“１−２”の合成パターンを検出する。
【０１１１】
ここで、候補パターン“１：１−２”の始めの時間および終わりの時間は、タイムウィンドウＷ１に含まれている。候補パターン“２：１−２”の始めの時間および終わりの時間は、タイムウィンドウＷ１に含まれている。よって、後段検出サーバ３００は、障害番号“１”に対応する障害の内容を管理端末装置４００に通知する。
【０１１２】
図１５は、第２の実施の形態の障害検出の第２の例を示す図である。図１５では、障害番号“１”の障害を検出しない場合を例示している。監視対象サーバ１００，１００ａ，１００ｂ（監視対象サーバ群）が、時系列にメッセージ番号“４，９，１，２，４，６，３，２，９”を前段検出サーバ２００，２００ａの何れかを通知する。配布表１３１によれば、メッセージ番号“３”を前段検出サーバ２００に通知する。メッセージ番号“２”、“４”、“６”を前段検出サーバ２００ａに通知する。
【０１１３】
管理端末装置４００は、前段検出サーバ２００，２００ａおよび後段検出サーバ３００にタイムウィンドウＷ２を入力する。監視対象サーバ１００，１００ａ，１００ｂが出力した各メッセージ番号“４，９，１，２，４，６，３，２，９”に対応する時間は、タイムウィンドウＷ２に含まれるとする。
【０１１４】
前段検出サーバ２００では、タイムウィンドウＷ２内のメッセージ番号列“３”を取得する。候補パターンテーブル２１１によれば、当該メッセージ番号列から得られるパターン“３”は、障害番号“１”の何れの枝番号の候補パターンにも該当しない。よって、前段検出サーバ２００は、障害番号“１”の否定パターン“１：¬１”を後段検出サーバ３００に通知する。
【０１１５】
前段検出サーバ２００ａでは、タイムウィンドウＷ２内のメッセージ番号列“４，２，４，６，２”を取得する。候補パターンテーブル２１１ａによれば、当該メッセージ番号列から得られるパターン“２，４，６”は、枝番号“１−１”、“１−３”の候補パターンに該当する。よって、前段検出サーバ２００ａは、候補パターン“２：１−１”および“２：１−３”を検出した旨を後段検出サーバ３００に通知する。なお、枝番号“１−２”の候補パターン“２，６”は、当該メッセージ番号列から得られるパターン“２，４，６”とは異なるため、検出されない。候補パターン“２：１−１”、“２：１−３”それぞれの始めの時間および終わりの時間はタイムウィンドウＷ２に含まれている。
【０１１６】
後段検出サーバ３００は、前段検出サーバ２００から否定パターン“１：¬１”を受信している。後段検出サーバ３００は、前段検出サーバ２００ａから候補パターン“２：１−１”、“２：１−３”を受信している。この場合、後段検出サーバ３００は、否定パターン“１：¬１”により、障害番号“１”の障害を検出しない。
【０１１７】
図１６は、第２の実施の形態の障害検出の第３の例を示す図である。図１６では、枝番号“１−１”の合成パターンを検出することで、障害番号“１”の障害を検出する場合を例示している。監視対象サーバ１００，１００ａ，１００ｂ（監視対象サーバ群）が、“４，９，１，２，４，６，１，２，９”を前段検出サーバ２００，２００ａの何れかを通知する。配布表１３１によれば、前段検出サーバ２００に通知するメッセージ番号はない。メッセージ番号“２”、“４”、“６”を前段検出サーバ２００ａに通知する。
【０１１８】
管理端末装置４００は、前段検出サーバ２００，２００ａおよび後段検出サーバ３００にタイムウィンドウＷ３を入力する。監視対象サーバ１００，１００ａ，１００ｂが出力した各メッセージ番号“４，９，１，２，４，６，１，２，９”に対応する時間は、タイムウィンドウＷ３に含まれるとする。
【０１１９】
前段検出サーバ２００では、タイムウィンドウＷ３内のメッセージ番号列は取得されない。この場合、前段検出サーバ２００は何もしない。
前段検出サーバ２００ａでは、タイムウィンドウＷ３内のメッセージ番号列“４，２，４，６，２”を取得する。候補パターンテーブル２１１ａによれば、当該メッセージ番号列から得られるパターン“２，４，６”は、枝番号“１−１”、“１−３”の候補パターンに該当する。よって、前段検出サーバ２００ａは、候補パターン“２：１−１”および“２：１−３”を検出した旨を後段検出サーバ３００に通知する。候補パターン“２：１−１”および“２：１−３”それぞれの始めの時間および終わりの時間はタイムウィンドウＷ３に含まれている。
【０１２０】
後段検出サーバ３００は、前段検出サーバ２００からは何も受信していない。後段検出サーバ３００は、前段検出サーバ２００ａから候補パターン“２：１−１”、“２：１−３”を受信している。合成パターンテーブル３１１によれば、枝番号“１−１”の合成パターンは“２：１−１”である。よって、後段検出サーバ３００は、当該枝番号“１−１”の合成パターンを検出する。一方、合成パターンテーブル３１１によれば、枝番号“１−３”の合成パターンは“１：１−３，２：１−３”である。しかし、後段検出サーバ３００は、候補パターン“１：１−３”を受信していない。したがって、枝番号“１−３”の合成パターンは検出されない。
【０１２１】
そして、後段検出サーバ３００は、枝番号“１−１”の合成パターンを検出したので、障害番号“１”に対応する障害の内容を管理端末装置４００に通知する。
以上のように、第２の実施の形態の情報処理システムでは、監視対象サーバ１００，１００ａ，１００ｂが出力したメッセージデータの一部を前段検出サーバ２００で収集する。一方、監視対象サーバ１００，１００ａ，１００ｂが出力したメッセージデータの他の一部を前段検出サーバ２００ａで収集する。そして、前段検出サーバ２００，２００ａは、それぞれが障害原因の候補となり得る候補パターンを検出して後段検出サーバ３００に通知する。後段検出サーバ３００は、候補パターンの組み合わせ（合成パターン）に基づいて、障害を検出する。
【０１２２】
このため、第２の実施の形態の情報処理システムでは、同一種類のメッセージデータを１つの前段検出サーバで収集すれば足りる。障害の検出は、前段検出サーバ２００，２００ａでの候補パターンの検出結果を後段で組み合わせて行えばよいためである。
【０１２３】
更に、システムの運用に応じて、新たな障害原因のパターンを追加したい場合や、既存のパターンを変更したい場合もある。第２の実施の形態の情報処理システムでは、この場合にテーブル更新作業を省力化できるという利点もある。
【０１２４】
図１７は、第２の実施の形態のテーブルの更新例を示す図である。図１７では、障害原因のパターンを追加する際に、更新しなくてよいテーブルおよび更新するテーブルを示している。新たな障害原因のパターンは、障害番号“２”の枝番号“２−２”とする。枝番号“２−２”は、障害原因パターン“２，５，８”に対応するものである。なお、図１７では“メッセージ”の語を“ｍｓｇ”（ｍｅｓｓａｇｅの略）と略記している（以下、同様）。
【０１２５】
図１７（Ａ）は更新対象とならないテーブルである。図１７（Ａ）では、配布表１３１を示している。監視対象サーバ１００ａ，１００ｂが保持する配布表も更新しなくてよい。
【０１２６】
図１７（Ｂ）は更新対象とするテーブルである。図１７（Ｂ）では、候補パターンテーブル２１１，２１１ａおよび合成パターンテーブル３１１を示している。
候補パターンテーブル２１１には、関連メッセージに“５”（追加部分Ｒ１）を、枝番号に“２−２”（追加部分Ｒ２）を、当該枝番号に対応する候補パターンに“５”（追加部分Ｒ３）を追加する。
【０１２７】
候補パターンテーブル２１１ａには、枝番号に“２−２”（追加部分Ｒ４）を、当該枝番号に対応する候補パターンに“２，８”（追加部分Ｒ５）を追加する。
合成パターンテーブル３１１には、枝番号に“２−２”（追加部分Ｒ６）を、当該枝番号に対応する合成パターンに“１：２−２，２：２−２”（追加部分Ｒ７）を追加する。
【０１２８】
このように、更新対象とするテーブルを前段検出サーバ２００，２００ａおよび後段検出サーバ３００が保持するテーブルとし、監視対象サーバ１００，１００ａ，１００ｂが保持する配布表は更新しなくてよい。
【０１２９】
監視対象サーバは、システムの規模が大きくなると、その数も増加し得る。このとき、監視対象サーバの配布表を個々に更新するとなると、そのための作業コストが大きくなる可能性がある。
【０１３０】
これに対し、第２の実施の形態の情報処理システムでは、障害原因のパターンを追加／変更する場合、監視対象サーバ１００，１００ａ，１００ｂの配布表の更新作業を省ける。このため、障害原因のパターンを更新する際の作業コストを軽減できる。
【０１３１】
次に、他の障害検出の方法を例示して第２の実施の形態の障害検出の方法と比較する。
図１８は、メッセージ配布の第１の他の例を示す図である。図１８の情報処理システムは、監視対象サーバ８００，８００ａ，８００ｂおよび障害検出サーバ９００，９００ａを含む。監視対象サーバ８００，８００ａ，８００ｂは、障害検出サーバ９００，９００ａにより監視されるサーバコンピュータである。
【０１３２】
障害検出サーバ９００，９００ａは、監視対象サーバ８００，８００ａ，８００ｂにおける障害を検出するサーバコンピュータである。障害検出サーバ９００，９００ａは、検出を担当する障害が個々に割り当てられている。
【０１３３】
障害検出サーバ９００は、障害番号“１”の障害の検出を担当する。障害検出サーバ９００は、パターンテーブル９１０を保持する。パターンテーブル９１０には、障害番号“１”の障害を検出するためのメッセージ番号のパターンが登録されている。
【０１３４】
障害検出サーバ９００ａは、障害番号“２”の障害の検出を担当する。障害検出サーバ９００ａは、パターンテーブル９１０ａを保持する。パターンテーブル９１０ａには、障害番号“２”の障害を検出するためのメッセージ番号のパターンが登録されている。
【０１３５】
図１８の情報処理システムでは、障害検出サーバ９００，９００ａの両方が、自身の担当する障害を検出するために、監視対象サーバ８００，８００ａ，８００ｂが出力した全てのメッセージデータを収集する。その場合、例えば、監視対象サーバ８００は、メッセージ番号“３，５，１，２，３，６，９，２，５”を通知するための一連のメッセージデータを複製して、障害検出サーバ９００，９００ａの両方に送信する。監視対象サーバ８００ａ，８００ｂも同様である。メッセージデータを複製して、同一のメッセージデータを重複して送信するのでネットワークの負荷が高まるおそれがあり、非効率的となる。
【０１３６】
一方、第２の実施の形態の情報処理システムでは、このような通知データの複製や通知データの重複送信を行わずに済む。このため、図１８の情報処理システムに比べて、ネットワークの負荷の増大を抑えられる。例えば、監視対象サーバ８００が９個のメッセージ番号を通知したい場合、障害検出サーバ９００，９００ａの２台に通知するので、９×２＝１８回のデータ送信が発生する。これに対し、第２の実施の形態の情報処理システムでは、９個のメッセージ番号のそれぞれを前段検出サーバ２００，２００ａの何れかに通知すればよいので、９回のデータ送信で済む。
【０１３７】
図１９は、メッセージ配布の第２の他の例を示す図である。図１９の情報処理システムは、監視対象サーバ８００ｃ，８００ｄ，８００ｅおよび障害検出サーバ９００ｂ，９００ｃを含む。監視対象サーバ８００ｃ，８００ｄ，８００ｅは、障害検出サーバ９００ｂ，９００ｃにより監視されるサーバコンピュータである。
【０１３８】
障害検出サーバ９００ｂ，９００ｃは、監視対象サーバ８００ｃ，８００ｄ，８００ｅにおける障害を検出するサーバコンピュータである。障害検出サーバ９００，９００ａは、検出を担当する障害が個々に割り当てられている。
【０１３９】
障害検出サーバ９００ｂは、障害番号“１”の障害の検出を担当する。障害検出サーバ９００ｂは、パターンテーブル９１０ｂを保持する。パターンテーブル９１０ｂには、障害番号“１”の障害を検出するためのメッセージ番号のパターンが登録されている。
【０１４０】
障害検出サーバ９００ｃは、障害番号“２”の障害の検出を担当する。障害検出サーバ９００ｃは、パターンテーブル９１０ｃを保持する。パターンテーブル９１０ｃには、障害番号“２”の障害を検出するためのメッセージ番号のパターンが登録されている。
【０１４１】
図１９の情報処理システムでは、障害検出サーバ９００ｂ，９００ｃは、自身が担当するパターンに含まれるメッセージ番号のみを監視対象サーバ８００ｃ，８００ｄ，８００ｅから収集する。そのために、監視対象サーバ８００ｃ，８００ｄ，８００ｅは、配布表８１０を保持する。配布表８１０には、メッセージ番号に対応付けて、配布先とする障害検出サーバ（サーバ番号）が定義される。例えば、サーバ番号“１”は障害検出サーバ９００ｂであり、サーバ番号“２”は障害検出サーバ９００ｃである。
【０１４２】
この場合、図１８の情報処理システムに比べて、送信される通知データの数およびデータ量は減る。障害検出サーバ９００ｂ，９００ｃのパターン検出に用いられないメッセージ番号は、送信されないためである。
【０１４３】
しかし、障害検出サーバ９００ｂ，９００ｃの両方がメッセージ番号“２”を含むパターンを検出する場合、メッセージ番号“２”の配布先にサーバ番号“１”、“２”が登録される。例えば、監視対象サーバ８００ｃが“３，５，１，２，３，６，９，２，５”のメッセージ番号を通知するとする。このとき、障害検出サーバ９００ｂがメッセージ番号“２，３，４，５，６”を収集し、障害検出サーバ９００ｃがメッセージ番号“２，３，８”を収集するとする。すると、結局、監視対象サーバ８００ｃはメッセージ番号“２”、“３”の通知データを複製して、障害検出サーバ９００ｂ，９００ｃに重複して送信することになる。
【０１４４】
一方、第２の実施の形態の情報処理システムでは、このような通知データの複製や通知データの重複送信を行わずに済む。よって、図１９の情報処理システムと比較しても、ネットワークの負荷の増大を抑えられる。
【０１４５】
更に、図１９の情報処理システムでは、パターンテーブル９１０ｂ，９１０ｃに新たなパターンを追加したり既存のパターンを変更したりするとき、監視対象サーバ８００ｃ，８００ｄ，８００ｅが保持する配布表８１０の更新作業が発生する。サーバ数が多くなるほど、その作業コストは増大し得る。
【０１４６】
これに対し、第２の実施の形態の情報処理システムでは、障害原因のパターンを追加／変更する場合に、配布表の更新を行わずに済む。よって、稼働監視のための作業負担を軽減できる。
【０１４７】
このように、第２の実施の形態の情報処理システムによれば、障害パターン検出の分散処理を効率的に行うことができる。
［第３の実施の形態］
次に、第３の実施の形態を説明する。前述の第２の実施の形態との相違点を主に説明し、同様の事項に関しては説明を省略する。
【０１４８】
第２の実施の形態では、同一のメッセージ番号を１つの前段検出サーバで収集するために配布表１３１で１つのメッセージ番号に対して、１つのサーバ番号を対応付けるものとした。一方、配布表１３１を用いないでメッセージデータの送信先を決定してもよい。第３の実施の形態では、そのための機能を提供する。
【０１４９】
ここで、第３の実施の形態は第２の実施の形態と比べてメッセージ配布の処理が異なる。それ以外のシステムや装置の構成に関しては第２の実施の形態と同一であるため、同一の名称・符号を用いて各構成を指し示すものとする。
【０１５０】
図２０は、第３の実施の形態のメッセージ配布の例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。ただし、ステップＳ１１，Ｓ１２，Ｓ１４の処理は、図１１のステップＳ１１，Ｓ１２，Ｓ１４の処理と同一であるため説明を省略する。
【０１５１】
（ステップＳ１３ａ）メッセージ送信部１５０は、メッセージテキストの変換により取得したメッセージ番号を２で除した剰余を求める。そして、求めた剰余に基づいて決定されるサーバ番号の前段検出サーバをメッセージデータの送信先と決定する。例えば、剰余が奇数であれば前段検出サーバ２００、剰余が偶数であれば前段検出サーバ２００ａとする。
【０１５２】
このように、メッセージ送信部１５０は、配布表１３１を用いずに、メッセージデータの送信先を決定することもできる。このため、前段検出サーバ２００，２００ａに配布表１３１を設ける手間を省ける。前段検出サーバ２００，２００ａが検出を担当する候補パターンは、前段検出サーバ２００，２００ａで収集されるメッセージ番号に合わせて割り当てればよい。
【０１５３】
例えば、前段検出サーバがＭ台（Ｍは２以上の整数）存在する場合には、メッセージ番号をＭで除した剰余を求める。その場合、求めた剰余と等しいサーバ番号の前段検出サーバを通知先と決定することが考えられる（この場合、サーバ番号“０”〜“Ｍ−１”を予め各前段検出サーバに割り当てる）。
【０１５４】
［第４の実施の形態］
次に、第４の実施の形態を説明する。前述の第２，第３の実施の形態との相違点を主に説明し、同様の事項に関しては説明を省略する。
【０１５５】
ここで、監視対象サーバ１００，１００ａ，１００ｂでは、メッセージの種類によって、その出現頻度が異なることがある。すると、出現頻度の高いメッセージデータが何れかの前段検出サーバに偏って送信されることがある。その場合、当該前段検出サーバの負荷が高まる可能性がある。そこで、第４の実施の形態ではデータ収集の偏りを平準化して、前段検出サーバの負荷を分散させる機能を提供する。
【０１５６】
第４の実施の形態の情報処理システムは、図２で説明した第２の実施の形態の情報処理システムと同様である。第２の実施の形態の情報処理システムとの相違点は、第４の実施の形態の情報処理システムでは配布表作成サーバ５００を設ける点である。配布表作成サーバ５００は、ネットワーク１０に接続される。配布表作成サーバ５００のハードウェア例は、図３で説明した前段検出サーバ２００のハードウェア例と同様である。その他の装置などは、第２の実施の形態と同一の符号・名称を用いて表すものとする。
【０１５７】
図２１は、第４の実施の形態のソフトウェア例を示す図である。図２１に示すユニットの一部または全部は、監視対象サーバ１００，１００ａ，１００ｂ、前段検出サーバ２００，２００ａ，後段検出サーバ３００および配布表作成サーバ５００が実行するプログラムのモジュールであってもよい。また、図２１に示すユニットの一部または全部は、ＦＰＧＡやＡＳＩＣなどの電子回路であってもよい。監視対象サーバ１００ａ，１００ｂも監視対象サーバ１００と同様のユニットを用いて実装できる。前段検出サーバ２００ａも前段検出サーバ２００と同様のユニットを用いて実装できる。
【０１５８】
ここで、監視対象サーバ１００および後段検出サーバ３００のソフトウェア例は、図４で説明した内容と同様である。
前段検出サーバ２００は、記憶部２１０、候補検出部２２０およびメッセージ頻度通知部２３０を有する。記憶部２１０および候補検出部２２０は、図４で説明した内容と同様である。
【０１５９】
メッセージ頻度通知部２３０は、監視対象サーバ１００，１００ａ，１００ｂから受信したメッセージデータに基づいて、メッセージ番号ごとの出現頻度を取得する。メッセージ頻度通知部２３０は、その結果を記憶部２１０に格納する。メッセージ頻度通知部２３０は、取得した出現頻度の情報を配布表作成サーバ５００に定期的に送信する。
【０１６０】
配布表作成サーバ５００は、記憶部５１０、メッセージ頻度取得部５２０、パターン再分割部５３０および配布表作成部５４０を有する。
記憶部５１０は、分割前パターンテーブルを記憶する。分割前パターンテーブルは、メッセージ番号の組み合わせに対する障害内容を登録したテーブルである。以下では、分割前パターンテーブルに登録されたメッセージ番号の組み合わせを分割前パターンと呼ぶことがある。
【０１６１】
メッセージ頻度取得部５２０は、前段検出サーバ２００，２００ａからメッセージ番号ごとの出現頻度の情報を定期的に受信する。メッセージ頻度取得部５２０は、当該出現頻度の情報を、パターン再分割部５３０に出力する。
【０１６２】
パターン再分割部５３０は、メッセージ番号ごとの出現頻度を集計する。パターン再分割部５３０は、当該集計結果に基づき、前段検出サーバ２００，２００ａにメッセージ番号を割り当てる。このとき、両サーバが担当するメッセージ番号の出現頻度ができるだけ均等になるようにする。パターン再分割部５３０は、割り当て結果に基づいて候補パターンおよび合成パターンを生成する。パターン再分割部５３０は、生成した候補パターンを前段検出サーバ２００，２００ａに送信し、候補パターンテーブル２１１，２１１ａを更新する。パターン再分割部５３０は、生成した合成パターンを後段検出サーバ３００に送信し、合成パターンテーブル３１１を更新する。また、パターン再分割部５３０は、前段検出サーバ２００，２００ａに対するメッセージ番号の割り当て結果を配布表作成部５４０に通知する。
【０１６３】
配布表作成部５４０は、パターン再分割部５３０によるメッセージ番号の割り当て結果に基づいて、配布表を作成する。配布表作成部５４０は、作成した配布表を監視対象サーバ１００，１００ａ，１００ｂに送信し、監視対象サーバ１００，１００ａ，１００ｂが保持する配布表を更新する。
【０１６４】
図２２は、第４の実施の形態の分割前パターンテーブルの例を示す図である。分割前パターンテーブル５１１は、記憶部５１０に格納される。分割前パターンテーブル５１１は、障害番号、枝番号、分割前パターンおよび障害内容の項目を含む。
【０１６５】
障害番号の項目には、障害番号が登録される。枝番号の項目には、枝番号が登録される。分割前パターンの項目には、分割前パターンが登録される。障害内容の項目には、システムの障害の内容が登録される。
【０１６６】
例えば、障害番号“１”の枝番号“１−１”の分割前パターンが“２，４，６”であり、障害内容が“ＷｅｂサービスＸＸＸ  利用不可”である。これは、分割前パターン“２，４，６”のメッセージ番号の組み合わせに対して、障害内容“ＷｅｂサービスＸＸＸ  利用不可”が対応付けられていることを示す。
【０１６７】
図２３は、第４の実施の形態のメッセージ頻度テーブルの例を示す図である。メッセージ頻度テーブル５１２は、記憶部５１０に格納される。メッセージ頻度テーブル５１２は、パターン再分割部５３０がメッセージ番号ごとの出現頻度を集計したものである。メッセージ頻度テーブル５１２は、メッセージ番号および出現頻度の項目を含む。
【０１６８】
メッセージ番号の項目には、メッセージ番号が登録される。出現頻度の項目には、前段検出サーバ２００，２００ａで取得された出現頻度の集計結果が登録される。例えば、メッセージ番号“６”は出現頻度“６１”である。メッセージ頻度テーブル５１２では、レコードが出現頻度の降順にソートされている。
【０１６９】
次に、第４の実施の形態の情報処理システムの配布表更新の手順を説明する。ここで、第４の実施の形態の障害検出ための処理手順は、図１１〜図１３で説明した第２の実施の形態の各手順と同様である。
【０１７０】
図２４は、第４の実施の形態の配布表更新の例を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。
（ステップＳ４１）メッセージ頻度取得部５２０は、前段検出サーバ２００，２００ａからメッセージ番号ごとの出現頻度の情報を取得し、パターン再分割部５３０に出力する。取得する周期は、情報処理システムの運用に応じて決定する。例えば、２４時間ごと、１週間ごとなどとすることができる。
【０１７１】
（ステップＳ４２）パターン再分割部５３０は、取得した出現頻度の情報に基づいて、メッセージ番号ごとの出現頻度を集計する。パターン再分割部５３０は、メッセージ頻度テーブル５１２に集計結果を登録する。
【０１７２】
（ステップＳ４３）パターン再分割部５３０は、前段検出サーバ２００，２００ａが担当するメッセージ番号の出現頻度が均等になるように、両サーバにメッセージ番号を割り当てる。例えば、出現頻度の降順にソートされたメッセージ頻度テーブル５１２の各メッセージ番号につき、上から順に、“６，７，２”を前段検出サーバ２００に、“３，５，４”を前段検出サーバ２００ａに、割り当てることが考えられる。前段検出サーバが３以上ある場合にも、出現頻度でソートされた順に割り当てていけばよい。
【０１７３】
（ステップＳ４４）パターン再分割部５３０は、記憶部５１０に記憶された分割前パターンテーブル５１１を参照し、ステップＳ４３のメッセージ番号の割り当て結果に基づいて、候補パターンおよび合成パターンを再作成する。例えば、ステップＳ４３で示したメッセージ番号の割り当て例でいえば、枝番号“１−１”につき、候補パターン“２，６”を作成し、前段検出サーバ２００に割り当てる。同様に、枝番号“１−１”につき、候補パターン“４”を作成し、前段検出サーバ２００ａに割り当てる。そして、当該枝番号“１−１”につき、合成パターン“１：１−１，２：１−１”を作成し、後段検出サーバ３００に割り当てる。
【０１７４】
（ステップＳ４５）パターン再分割部５３０は、作成した候補パターンを前段検出サーバ２００，２００ａに送信し、前段検出サーバ２００，２００ａが保持する候補パターンテーブル２１１，２１１ａを更新する。パターン再分割部５３０は、作成した合成パターンを後段検出サーバ３００に送信し、後段検出サーバ３００が保持する合成パターンテーブル３１１を更新する。
【０１７５】
（ステップＳ４６）パターン再分割部５３０は、ステップＳ４３のメッセージ番号の割り当て結果を配布表作成部５４０に通知する。配布表作成部５４０は、当該割り当て結果に基づいて配布表を作成する。
【０１７６】
（ステップＳ４７）配布表作成部５４０は、作成した配布表を監視対象サーバ１００，１００ａ，１００ｂに送信し、監視対象サーバ１００，１００ａ，１００ｂが保持する配布表を更新する。
【０１７７】
このようにして、配布表作成サーバ５００は、メッセージ番号の出現頻度に応じて、監視対象サーバ１００，１００ａ，１００ｂの配布表を更新する。また、配布表作成サーバ５００は、配布先の割り当て結果に応じて、分割前パターンテーブル５１１に登録された分割前パターンを分割し、検出すべき候補／合成パターンを前段検出サーバ２００，２００ａおよび後段検出サーバ３００に再割り当てする。このとき、配布表では、メッセージ番号と前段検出サーバ２００，２００ａが１対１に対応付けられる。すなわち、前段検出サーバ２００，２００ａのそれぞれに割り当てられるメッセージ番号の集合につき、要素（メッセージ番号）の重複はない。
【０１７８】
また、配布表作成サーバ５００は、前段検出サーバ２００，２００ａが担当するメッセージ番号の出現頻度が均等になるよう、メッセージ番号を割り当てる。すなわち、何れかの前段検出サーバにメッセージデータが集中しないよう制御する。これにより、前段検出サーバ２００，２００ａの負荷を動的に平準化できる。
【０１７９】
［第５の実施の形態］
次に、第５の実施の形態を説明する。前述の第２〜第４の実施の形態との相違点を主に説明し、同様の事項に関しては説明を省略する。
【０１８０】
第２，第４の実施の形態では、前段検出サーバ２００，２００ａおよび後段検出サーバ３００の２段階の例を説明した。ここで、検出したい障害の数が多くなると、前段検出サーバ２００，２００ａで検出する候補パターンの数が多くなり、前段検出サーバ２００，２００ａや後段検出サーバ３００によるパターンの判定処理の負荷が大きくなる可能性がある。そこで、前段検出サーバを更に設け、後段検出サーバ３００に候補パターンを組み合わせる前に、候補パターンの絞り込みを行う複数段の検出サーバを設けてもよい。このようにすれば、各検出サーバの負荷を軽減できる。そこで、第５の実施の形態では３段階以上の複数段階で障害を検出する機能を提供する。
【０１８１】
第５の実施の形態の情報処理システムは、図２で説明した第２の実施の形態の情報処理システムの各サーバに加えて、前段検出サーバ２００ｂ，２００ｃおよび中段検出サーバ３００ａ，３００ｂを有する。前段検出サーバ２００ｂ，２００ｃおよび中段検出サーバ３００ａ，３００ｂは、ネットワーク１０に接続される。前段検出サーバ２００ｂ，２００ｃおよび中段検出サーバ３００ａ，３００ｂのハードウェア例は、図３で説明した前段検出サーバ２００のハードウェア例と同様である。その他の装置などは、第２の実施の形態と同一の符号・名称を用いて表すものとする。
【０１８２】
図２５は、第５の実施の形態のソフトウェア例を示す図である。図２５に示すユニットの一部または全部は、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃ、中段検出サーバ３００ａ，３００ｂおよび後段検出サーバ３００が実行するプログラムのモジュールであってもよい。また、図２５に示すユニットの一部または全部は、ＦＰＧＡやＡＳＩＣなどの電子回路であってもよい。前段検出サーバ２００ａ，２００ｂ，２００ｃも前段検出サーバ２００と同様のユニットを用いて実装できる。中段検出サーバ３００ｂも中段検出サーバ３００ａと同様のユニットを用いて実装できる。なお、監視対象サーバ１００，１００ａ，１００ｂは、第２の実施の形態で説明したユニットを含む。
【０１８３】
ここで、前段検出サーバ２００のソフトウェア例は、図４で説明した内容と同様である。ただし、記憶部２１０は、候補パターン通知データを中段検出サーバ３００ａ，３００ｂの何れに送信するかを登録した候補パターンの配布表を記憶する。候補検出部２２０は、当該候補パターンの配布表を参照して、候補パターン通知データを中段検出サーバ３００ａ，３００ｂの何れかに送信する。
【０１８４】
また、後段検出サーバ３００のソフトウェア例は、図４で説明した内容と同様である。ただし、候補合成部３２０は、中段検出サーバ３００ａ，３００ｂから受信した候補パターン通知データの組み合わせに基づいて、合成パターンを検出する。
【０１８５】
中段検出サーバ３００ａは、記憶部３１０ａおよび候補合成部３２０ａを有する。
記憶部３１０ａは、候補パターンテーブルを記憶する。記憶部３１０ａの候補パターンテーブルは、検出した合成パターンに対応する候補パターンの枝番号を登録したものである。また、記憶部３１０ａは、候補パターン通知データを記憶する。
【０１８６】
候補合成部３２０ａは、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃから受信した候補パターン通知データを記憶部３１０ａに格納する。
候補合成部３２０ａは、記憶部３１０ａに記憶された候補パターンテーブルに基づいて、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃから通知された候補パターンの集合のうちから合成パターンを検出する。候補合成部３２０ａは、検出した合成パターンに対応する候補パターン通知データを後段検出サーバ３００に送信する。このように、候補合成部３２０ａは、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃから通知された候補パターンを集約して新たな候補パターンを生成する。候補合成部３２０ａは、候補パターンの絞り込みを行っているということもできる。
【０１８７】
図２６は、第５の実施の形態の候補パターンテーブル（前段）の例を示す図である。図２６（Ａ）は前段検出サーバ２００が記憶部２１０に保持する候補パターンテーブル２１２を例示している。図２６（Ｂ）は前段検出サーバ２００ａが自身の記憶部に保持する候補パターンテーブル２１２ａを例示している。図２６（Ｃ）は前段検出サーバ２００ｂが自身の記憶部に保持する候補パターンテーブル２１２ｂを例示している。図２６（Ｄ）は前段検出サーバ２００ｃが自身の記憶部に保持する候補パターンテーブル２１２ｃを例示している。候補パターンテーブル２１２，２１２ａ，２１２ｂ，２１２ｃは、障害番号、関連メッセージ、枝番号および候補パターンの項目を含む。各項目の内容は、図７で説明した候補パターンテーブル２１１の各項目の内容と同様である。
【０１８８】
図２７は、第５の実施の形態の候補パターンテーブル（中段）の例を示す図である。図２７（Ａ）は中段検出サーバ３００ａが記憶部３１０ａに保持する候補パターンテーブル３１１ａを例示している。図２７（Ｂ）は中段検出サーバ３００ｂが自身の記憶部に保持する候補パターンテーブル３１１ｂを例示している。候補パターンテーブル３１１ａ，３１１ｂは、障害番号、枝番号および合成パターンの項目を含む。
【０１８９】
障害番号の項目には、障害番号が登録される。枝番番号の項目には、枝番号が登録される。合成パターンの項目には、合成パターンが登録される。
例えば、候補パターンテーブル３１１ａでは、障害番号“１”の枝番号“１−２”の合成パターンが“１：１：１−２，１：２：１−２”である。ここで“１：１：１−２”の表記は、最前部の“１：１”が前段検出サーバのサーバ番号（ここでは、前段検出サーバ２００）を示す。また、最後部の“１−２”は前段検出サーバで検出された候補パターンに対応する枝番号を示す。すなわち、“１：１：１−２”の表記は、前段検出サーバ２００で検出された枝番号“１−２”の候補パターンを示す。
【０１９０】
ここで、第５の実施の形態では、前段検出サーバ２００のサーバ番号は“１：１”である。前段検出サーバ２００ａのサーバ番号は“１：２”である。前段検出サーバ２００ｂのサーバ番号は“２：１”である。前段検出サーバ２００ｃのサーバ番号は“２：２”である。中段検出サーバ３００ａのサーバ番号は“１”である。中段検出サーバ３００ｂのサーバ番号は“２”である。
【０１９１】
よって、候補パターンテーブル３１１ａの合成パターン“１：１：１−２，１：２：１−２”は、枝番号“１−２”の候補パターンの情報を前段検出サーバ２００，２００ａから取得したときに検出し得る。
【０１９２】
また、例えば、候補パターンテーブル３１１ａでは、枝番号“１−３”の合成パターンが“１：２：１−３”である。この合成パターンは、枝番号“１−３”の候補パターンの情報を前段検出サーバ２００ａから取得したときに検出し得る。
【０１９３】
更に、候補パターンテーブル３１１ａでは、枝番号“１−１”の合成パターンが設定なし“−”である。
なお、後段検出サーバ３００が記憶部３１０に保持する合成パターンテーブル３１１は、図８で説明した内容と同様である。ただし、当該合成パターンテーブル３１１中のサーバ番号（合成パターンの“：”コロンの前側の数字）が示すサーバが異なる。すなわち、サーバ番号“１”は中段検出サーバ３００ａを示す。サーバ番号“２”は中段検出サーバ３００ｂを示す。
【０１９４】
以上に示した候補パターンテーブル２１２，２１２ａ，２１２ｂ，２１２ｃ，３１１ａ，３１１ｂには、２以上の複数の障害番号に対応する候補／合成パターンが登録され得る。
【０１９５】
図２８は、第５の実施の形態の候補パターン通知データの例を示す図である。図２８（Ａ）は、前段検出サーバ２００，２００ａ，２００ｂから中段検出サーバ３００ａ，３００ｂに送信される候補パターン通知データ７００を例示している。候補パターン通知データ７００の各項目の設定内容は、図１０で説明した通りである。
【０１９６】
候補パターン通知データ７００ｄ，７００ｅ，７００ｆは、実際の値が設定された場合を例示している。図９で説明したメッセージデータ６００ｄが前段検出サーバ２００で、メッセージデータ６００ａが前段検出サーバ２００ａで、メッセージデータ６００ｂ，６００ｃが前段検出サーバ２００ｂで、それぞれ収集された場合の例である。
【０１９７】
候補パターン通知データ７００ｄは、サーバ番号が“１：１”、始めの時間が“２０１１／７／２５  １０：５８：３４”、終わりの時間が“２０１１／７／２５  １０：５８：３４”、枝番号が“１−２”である。候補パターン通知データ７００ｄは、メッセージデータ６００ｄに基づいて、候補検出部２２０により生成され、中段検出サーバ３００ａに送信される。
【０１９８】
なお、前段検出サーバ２００が保持する候補パターンの配布表には、候補パターン“１：１：１−２”、“１：２：１−２”の送信先として、中段検出サーバ３００ａが登録されている。候補検出部２２０は、当該配布表に基づいて、候補パターン通知データ７００ｄの送信先を決定できる（以下、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃによる候補パターン通知データの送信先も同様に決定される）。あるいは、配布表を用いずに、自身のサーバ番号（例えば、“１：１”）のコロン“：”の前方の番号（例えば、“１”）を送信先サーバのサーバ番号（例えば、“１”）としてもよい。
【０１９９】
候補パターン通知データ７００ｅは、サーバ番号が“１：２”、始めの時間が“２０１１／７／２５  １０：５８：３０”、終わりの時間が“２０１１／７／２５  １０：５８：３０”、枝番号が“１−２”である。候補パターン通知データ７００ｅは、メッセージデータ６００ａに基づいて、前段検出サーバ２００ａの候補検出部により生成され、中段検出サーバ３００ａに送信される。
【０２００】
候補パターン通知データ７００ｆは、サーバ番号が“２：１”、始めの時間が“２０１１／７／２５  １０：５８：３２”、終わりの時間が“２０１１／７／２５  １０：５８：３３”、枝番号が“１−２”である。候補パターン通知データ７００ｆは、メッセージデータ６００ｂ，６００ｃに基づいて、前段検出サーバ２００ｂの候補検出部により生成され、中段検出サーバ３００ｂに送信される。
【０２０１】
図２８（Ｂ）は、中段検出サーバ３００ａ，３００ｂから後段検出サーバ３００に送信される候補パターン通知データ７００を例示している。候補パターン通知データ７００の各項目の設定内容は、図１０で説明した通りである。
【０２０２】
候補パターン通知データ７００ｇ，７００ｈは、実際の値が設定された場合を例示している。
候補パターン通知データ７００ｇは、サーバ番号が“１”、始めの時間が“２０１１／７／２５  １０：５８：３０”、終わりの時間が“２０１１／７／２５  １０：５８：３４”、枝番号が“１−２”である。候補パターン通知データ７００ｇは、候補パターン通知データ７００ｄ，７００ｅに基づいて、候補合成部３２０ａにより生成され、後段検出サーバ３００に送信される。
【０２０３】
候補パターン通知データ７００ｈは、サーバ番号が“２”始めの時間が“２０１１／７／２５  １０：３８：３２”、終わりの時間が“２０１１／７／２５  １０：５８：３３”、枝番号が“１−２”である。候補パターン通知データ７００は、候補パターン通知データ７００ｆに基づいて、中段検出サーバ３００ｂの候補合成部により生成され、後段検出サーバ３００に送信される。
【０２０４】
なお、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃおよび中段検出サーバ３００ａ，３００ｂにおいて、ある障害番号につき何れの枝番号の候補パターンも検出できない場合には、後段の検出サーバに否定パターンを通知する。否定パターンを通知する際に用いる候補パターン通知データは、図１０で説明した候補パターン通知データ７００ｃと同様である。
【０２０５】
次に、第５の実施の形態の情報処理システムの処理手順を説明する。ここで、第５の実施の形態の監視対象サーバ１００，１００ａ，１００ｂによるメッセージ配布の手順は、図１１で説明した手順と同様である。
【０２０６】
また、第５の実施の形態の前段検出サーバ２００，２００ａ，２００ｂ，２００ｃによる候補パターン検出の手順は図１２で説明した手順と同様である。ただし、図９で説明したメッセージデータ６００ｄが前段検出サーバ２００で、メッセージデータ６００ａが前段検出サーバ２００ａで、メッセージデータ６００ｂ，６００ｃが前段検出サーバ２００ｂで、それぞれ収集されたものとする。第５の実施の形態の前段検出サーバ２００，２００ａ，２００ｂ，２００ｃは、候補パターン通知データを中段検出サーバ３００ａ，３００ｂの何れかに送信する。すると、中段検出サーバ３００ａ，３００ｂは、受信した候補パターン通知データを蓄積する。
【０２０７】
更に、第５の実施の形態の後段検出サーバ３００による障害検出の手順は図１３で説明した手順と同様である。ただし、第５の実施の形態の後段検出サーバ３００は、中段検出サーバ３００ａ，３００ｂから受信した候補パターン通知データを蓄積する。そして、後段検出サーバ３００は、蓄積した当該候補パターン通知データに基づいて障害を検出する。
【０２０８】
以下、中段検出サーバ３００ａによる候補パターン検出の手順を説明する。中段検出サーバ３００ｂの処理手順も中段検出サーバ３００ａと同様である。
図２９は、第５の実施の形態の候補パターン検出の例を示すフローチャートである。以下、図２９に示す処理をステップ番号に沿って説明する。
【０２０９】
（ステップＳ５１）管理端末装置４００は、中段検出サーバ３００ａにタイムウィンドウを入力する。候補合成部３２０ａは、タイムウィンドウの入力を受け付ける。なお、中段検出サーバ３００ａ，３００ｂに入力するタイムウィンドウの時間範囲は、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃおよび後段検出サーバ３００に入力するタイムウィンドウの時間範囲と同一とする。ただし、少なくとも一部が重複した異なる時間範囲でもよい。管理端末装置４００は、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃおよび後段検出サーバ３００に対するタイムウィンドウの入力と同時に中段検出サーバ３００ａ，３００ｂにタイムウィンドウを入力してもよい。その場合、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃから送信される候補パターン通知データを一通り受信した後に、以降のステップＳ５２を開始する。
【０２１０】
（ステップＳ５２）候補合成部３２０ａは、記憶部３１０ａに記憶された候補パターン通知データを参照して、終わりの時間に設定された時間がタイムウィンドウ内である全ての候補パターン（候補パターン列）を取得する。
【０２１１】
（ステップＳ５３）候補合成部３２０ａは、記憶部３１０ａに記憶された候補パターンテーブル３１１ａを参照して、障害番号を１つ選択する。
（ステップＳ５４）候補合成部３２０ａは、候補パターンテーブル３１１ａを参照して、候補パターン列が当該障害番号の枝番号に対応する何れかの合成パターンと一致するか否か判定する。何れかの合成パターンと一致する場合、処理をステップＳ５５に進める。
【０２１２】
（ステップＳ５５）候補合成部３２０ａは、記憶部３１０ａに記憶された候補パターン通知データを参照して、当該障害番号の否定パターンがあるか否か判定する。否定パターンがない場合、処理をステップＳ５６に進める。否定パターンがある場合、処理をステップＳ５８に進める。
【０２１３】
（ステップＳ５６）候補合成部３２０ａは、記憶部３１０に記憶された候補パターン通知データを参照して、検出した合成パターンの要素となる候補パターンに対応する始めの時間および終わりの時間を抽出する。候補合成部３２０ａは、抽出した時間のうち、最も早い時間および最も遅い時間の両方がタイムウィンドウ内に含まれるか否か判定する。含まれる場合、処理をステップＳ５７に進める。含まれない場合、処理をステップＳ５８に進める。なお、ステップＳ５４では、複数の合成パターンが検出されることもある。その場合、複数の合成パターンの何れかがタイムウィンドウ内に含まれれば、処理をステップＳ５７に進める。一方、複数の合成パターンの全てがタイムウィンドウに含まれなければ、処理をステップＳ５８に進める。
【０２１４】
（ステップＳ５７）候補合成部３２０ａは、候補パターン列から検出した合成パターン（タイムウィンドウ内に含まれるもののみ）について、候補パターン通知データを生成し、後段検出サーバ３００に送信する。例えば、候補パターン列が“１：１：１−２”および“１：２：１−２”の組み合わせである場合、候補合成部３２０ａは候補パターン通知データ７００ｇを後段検出サーバ３００に送信する。他の枝番号の合成パターンがある場合には、当該合成パターンに対応する候補パターンに関しても候補パターン通知データを生成して後段検出サーバ３００に送信する。ここで、例えば、候補パターンテーブル３１１ａの枝番号“１−１”のように、何れの候補パターンも取得できていない場合に、ステップＳ５４で合成パターンと一致すると判断することもある。この場合、候補合成部３２０ａは後段検出サーバ３００に対する候補パターンの通知は行わない。
【０２１５】
（ステップＳ５８）候補合成部３２０ａは、ステップＳ５３で選択した障害番号について否定パターン用の通知データを生成し、後段検出サーバ３００に送信する。例えば、候補パターンテーブル３１１ａによれば、障害番号“１”には枝番号“１−１”、“１−２”、“１−３”がある。その場合、否定パターンが通知されるのは、障害番号“１”に対し、これら全枝番号の合成パターンを候補パターン列から検出できなかったとき（ステップＳ５４  Ｎｏ）である。または、候補パターン通知データとして障害番号“１”の否定パターン“¬１”を取得しているとき（ステップＳ５５  Ｎｏ）である。すると、候補合成部３２０ａは、障害番号“１”の否定パターン“¬１”を設定した候補パターン通知データ７００ｃを生成して後段検出サーバ３００に送信する。
【０２１６】
（ステップＳ５９）候補合成部３２０ａは、ステップＳ５３で選択した障害番号を処理済とする。候補合成部３２０ａは、候補パターンテーブル３１１ａを参照して、次の障害番号（未処理の障害番号）があるか否かを判定する。次の障害番号がある場合、処理をステップＳ５３に進める。次の障害番号がない場合、処理を終了する。
【０２１７】
このようにして、中段検出サーバ３００ａ，３００ｂで、前段検出サーバ２００，２００ａ，２００ｂ，２００ｃから受信した候補パターンの組み合わせに基づき、候補パターンの絞り込みが行われる。
【０２１８】
なお、上記ステップＳ５２では、候補合成部３２０ａは、記憶部３１０ａに記憶された候補パターン通知データを参照して、始めの時間および終わりの時間の両方がタイムウィンドウ内である全ての候補パターン（候補パターン列）を取得してもよい。その場合、ステップＳ５６をスキップして、ステップＳ５７に進んでもよい。
【０２１９】
ここで、大規模な情報処理システムでは、監視すべき障害内容も多量となる可能性がある。このとき、より多くのメッセージデータを収集するために前段検出サーバの数を増やすことで、各前段検出サーバの負荷を分散できる。また、中段検出サーバを設けて段階的に障害候補を絞り込むことで、後段検出サーバの負荷を分散できる。このようにして、各検出サーバの処理負担を効率的に軽減することができる。
【０２２０】
なお、ここでは３段階の場合を例示したが、中段検出サーバを複数段設けて４段階以上としてもよい。例えば、Ｎ（Ｎは３以上の整数）段階とする場合、第１段目に３以上の前段検出サーバ群を設ける。第２段目から第Ｎ−１段目（Ｎ＝３のときは第２段目）に中段検出サーバ群を設ける。中段検出サーバ群は１段当たり１以上の中段検出サーバを含む。そして、第Ｎ段目（最終段目）に後段検出サーバを設ける。検出サーバの段数は、運用に応じて、各検出サーバが過負荷とならないよう柔軟に決定することができる。
【符号の説明】
【０２２１】
１  情報処理装置
２，２ａ，３  ノード
Ｍ１，Ｍ２，Ｍ３  メッセージ
Ｘ，Ｘ１，Ｘ２  集合
Ｙ１，Ｙ２，Ｙ３，Ｚ  障害候補の情報
【図１】
0005741418.tif 000002
【図２】
0005741418.tif 000003
【図３】
0005741418.tif 000004
【図４】
0005741418.tif 000005
【図５】
0005741418.tif 000006
【図６】
0005741418.tif 000007
【図７】
0005741418.tif 000008
【図８】
0005741418.tif 000009
【図９】
0005741418.tif 000010
【図１０】
0005741418.tif 000011
【図１１】
0005741418.tif 000012
【図１２】
0005741418.tif 000013
【図１３】
0005741418.tif 000014
【図１４】
0005741418.tif 000015
【図１５】
0005741418.tif 000016
【図１６】
0005741418.tif 000017
【図１７】
0005741418.tif 000018
【図１８】
0005741418.tif 000019
【図１９】
0005741418.tif 000020
【図２０】
0005741418.tif 000021
【図２１】
0005741418.tif 000022
【図２２】
0005741418.tif 000023
【図２３】
0005741418.tif 000024
【図２４】
0005741418.tif 000025
【図２５】
0005741418.tif 000026
【図２６】
0005741418.tif 000027
【図２７】
0005741418.tif 000028
【図２８】
0005741418.tif 000029
【図２９】
0005741418.tif 000030