以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、情報処理装置1およびノード2,2a,3を含む。第1の実施の形態の情報処理システムは、情報処理装置1が出力する複数の種類のメッセージに基づいて情報処理装置1の障害を検出する。情報処理装置1およびノード2,2a,3は、ネットワークで接続されている。
情報処理装置1は、複数の種類のメッセージを出力する。複数の種類のメッセージとは、例えば情報処理装置1上のハードウェアやソフトウェアのログに関するメッセージである。例えば、情報処理装置1はメッセージM1,M2,M3を出力する。メッセージM1は、種類Aのメッセージである。メッセージM2は、種類Bのメッセージである。メッセージM3は、種類Dのメッセージである。情報処理装置1が出力し得るメッセージの種類の集合{A,B,C,D,E・・・}を集合Xとする。
ノード2は、複数の種類(集合X)の一部である集合X1に属する種類のメッセージを収集する。例えば、集合X1にはメッセージの種類A,B,Cが属する。情報処理装置1がメッセージM1,M2,M3を出力した場合、ノード2は、情報処理装置1からメッセージM1,M2を収集する。
ノード2は、収集した集合X1に属する種類のメッセージに基づいて障害候補の情報を生成する。障害候補の情報とは、情報処理装置1における障害の発生を示唆する情報である。例えば、障害原因を示すメッセージの種類の集合(障害パターン)の一部(部分パターン)を検出した旨を示す情報である。
より具体的には、障害番号#1で示される障害に対して障害パターン{A,B,D}が、障害番号#2で示される障害に対して障害パターン{A,E}が対応している。例えば、障害番号#1に部分パターン{A,B}を、障害番号#2に部分パターン{A}を対応付けた情報をノード2に格納しておく。ノード2が収集したメッセージM1,M2の種類の組み合わせは{A,B}であり、部分パターン{A,B}に一致し、部分パターン{A}を含む。したがって、ノード2は、障害番号#1に関する障害候補の情報Y1と、障害番号#2に関する障害候補の情報Y2と、を生成する。なお、部分パターンの検出は完全一致による検出でもよいし、部分一致による検出でもよい。ここでは、部分一致による場合を例示しており、収集したメッセージの種類の集合{A,B}に対して障害番号#2の部分パターン{B}も検出している。完全一致とする場合は当該障害番号#2の部分パターンは未検出となる。
ノード2aは、複数の種類(集合X)の一部である集合X1とは異なる集合X2に属する種類のメッセージを収集する。ここで、集合X1,X2が異なるとは、例えば、集合X1,X2に要素の重複がない(排他的である)ことを示す。例えば、集合X2にはメッセージの種類D,Eが属する。情報処理装置1がメッセージM1,M2,M3を出力した場合、ノード2aは、情報処理装置1からメッセージM3を収集する。
ノード2aは、収集した集合X2に属する種類のメッセージに基づいて障害候補の情報を生成する。ノード2aは、ノード2と同様にして障害候補の情報を生成する。
例えば、障害番号#1に部分パターン{D}を、障害番号#2に部分パターン{E}を対応付けた情報をノード2aに格納しておく。ノード2aが収集したメッセージM3の種類の組み合わせは{D}であり、部分パターン{D}に一致する。したがって、ノード2aは、障害番号#1に関する障害候補の情報Y3を生成する。
ノード3は、ノード2が生成した障害候補の情報とノード2aが生成した障害候補の情報との組み合わせに基づいて、情報処理装置1の障害を検出する。または、ノード3は、ノード2が生成した障害候補の情報とノード2aが生成した障害候補の情報とを集約した障害候補の情報Zを生成する。障害候補の情報Zは、例えば他のノードにより別の障害候補の情報と組み合わせられて、障害の検出または障害候補の情報の絞り込みに用いられる。
ここで、例えばノード2,2aの両方で障害番号#1に関する障害候補の情報Y1,Y3が生成されている。ノード3は、障害候補の情報Y1,Y3の組み合わせにより、情報処理装置1の障害番号#1の障害を検出する。一方、ノード2では障害番号#2に関する障害候補の情報Y2が生成されているが、ノード2aでは障害番号#2に関する障害候補の情報が生成されていない。このため、ノード3は障害番号#2の障害は検出しない。
また、例えば、障害番号#1に対する障害パターンが、{A,B,D,F,G,・・・}のようにA,B,D以外の種類を含む場合もある。その場合、ノード3は障害候補の情報Y1,Y3を集約して障害番号#1に関する障害候補の情報Zを生成してもよい。そして、更に後段のノードで種類F,Gのメッセージの検出結果を示す障害候補の情報などと組み合わせて障害番号#1の障害を検出してもよい。例えば、障害番号#1に対して障害候補の情報Y1,Y3の組み合わせを登録した情報をノード3に格納しておけば、ノード3は当該情報に基づいて障害候補の情報Zを生成できる。このように、ノード3は障害候補の情報Y1,Y3を障害候補の情報Zに絞り込むこともできる。
第1の実施の形態の情報処理システムによれば、ノード2により、集合X1に属する種類A,BのメッセージM1,M2が収集され、収集されたメッセージM1,M2に基づいて障害候補の情報Y1,Y2が生成される。また、ノード2aにより、集合X2に属する種類DのメッセージM3が収集され、収集されたメッセージM3に基づいて障害候補の情報Y3が生成される。ノード3により、障害候補の情報Y1,Y3の組み合わせに基づいて、情報処理装置1の障害が検出される、または、障害候補の情報Y1,Y3を集約した障害候補の情報Zが生成される。
これにより、ネットワークの負荷の増大を抑制して処理を分散できる。具体的には、同一の種類のメッセージを前段のノード2,2aの何れかで収集する(例えば、集合X1と集合X2とは要素の重複がない)。前段のノード2,2aでは自身が担当するメッセージにより障害候補の検出のみを行い、後段のノード3では前段で検出された障害候補を組み合わせて障害を検出する。ここで、障害検出の処理を分散させる場合、ある障害パターンにノードを対応付け、当該障害パターンに含まれる全てのメッセージの収集をそのノードに担当させることも考えられる。この場合、異なる障害パターンに同一種類のメッセージが含まれると、メッセージを複製して複数のノードで重複して収集することになる。すると、情報処理装置とノードとの間のネットワークの負荷が高まるおそれがあり、非効率的となる。
これに対し、第1の実施の形態の情報処理システムでは、同一種類のメッセージを異なるノードで重複して収集せずに済む。よって、メッセージを複製して収集する場合に比べて情報処理装置1とノード2,2aとの間のネットワークに流すメッセージの数やデータ量を低減でき、当該ネットワークの負荷の増大を抑制できる。また、障害候補を段階的に絞り込むようにすれば、各ノードが担当する処理負担を軽減できる。よって、障害検出のための処理を効率的に分散できる。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムでは、複数のサーバ装置(以下、サーバということがある)が提供するサービスの稼働監視が行われる。そのために、複数のサーバ装置のハードウェアやソフトウェアのログに関するメッセージを取得し、当該メッセージに基づく障害を検出する。
第2の実施の形態の情報処理システムは、監視対象サーバ100,100a,100b、前段検出サーバ200,200a,後段検出サーバ300および管理端末装置400を含む。前段検出サーバ200,200a,後段検出サーバ300および管理端末装置400は、ネットワーク10に接続されている。ネットワーク10は、例えばLAN(Local Area Network)である。監視対象サーバ100,100a,100bは、ネットワーク20に接続されている。ネットワーク20は、例えばLANである。ネットワーク10,20は、中継装置30で接続されている。中継装置30は、ネットワーク10,20間の通信を中継するスイッチまたはルータ等である。
監視対象サーバ100,100a,100bは、互いに連携して所定のサービスを実行するサーバコンピュータである。例えば、当該サービスはWebサービスである。その場合、例えば、監視対象サーバ100は、ネットワーク20に接続されたクライアント装置(図示を省略)のブラウザにGUI(Graphical User Interface)を提供するWebサーバである。例えば、監視対象サーバ100aは、Webサーバで入力された要求に基づく処理を実行するAP(APplication)サーバである。例えば、監視対象サーバ100bは、APサーバの要求に基づいてデータベースの参照・更新を行うDB(DataBase)サーバである。
監視対象サーバ100,100a,100bは、各サーバ上のハードウェアやソフトウェアに関するログを出力する。
前段検出サーバ200,200aは、監視対象サーバ100,100a,100bが出力したメッセージの情報を収集するサーバコンピュータである。前段検出サーバ200,200aは、収集したメッセージの情報から障害候補のパターンを検出し、障害候補の情報を生成する。
後段検出サーバ300は、監視対象サーバ100,100a,100bの障害を検出するサーバコンピュータである。後段検出サーバ300は、前段検出サーバ200,200aが生成した障害候補の情報を取得し、障害候補の情報の組み合わせに基づいて監視対象サーバ100,100a,100bの障害を検出する。後段検出サーバ300は、検出した障害を管理端末装置400に通知する。
管理端末装置400は、第2の実施の形態の情報処理システムの管理者が利用するクライアントコンピュータである。管理端末装置400は、後段検出サーバ300から通知された障害の内容を管理者に提示する。また、管理端末装置400は、メッセージの解析を行いたい時間範囲を前段検出サーバ200,200aおよび後段検出サーバ300に入力することもできる。以下では、当該時間範囲をタイムウィンドウと呼ぶことがある。
図3は、第2の実施の形態の前段検出サーバのハードウェア例を示す図である。前段検出サーバ200は、CPU(Central Processing Unit)201、RAM(Random Access Memory)202、HDD(Hard Disk Drive)203、画像信号処理部204、入力信号処理部205、ディスクドライブ206および通信部207を有する。各ユニットが前段検出サーバ200のバスに接続されている。監視対象サーバ100,100a,100b、前段検出サーバ200a、後段検出サーバ300および管理端末装置400も前段検出サーバ200と同様のハードウェアを用いて実装できる。
CPU201は、前段検出サーバ200の情報処理を制御するプロセッサである。CPU201は、HDD203に記憶されているプログラムやデータの少なくとも一部を読み出し、RAM202に展開してプログラムを実行する。なお、前段検出サーバ200は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
RAM202は、CPU201が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、前段検出サーバ200は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
HDD203は、OS(Operating System)プログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。HDD203は、CPU201の命令に従って、内蔵の磁気ディスクに対してデータの読み書きを行う。なお、前段検出サーバ200は、HDD以外の種類の不揮発性の記憶装置(例えば、SSD(Solid State Drive)など)を備えてもよく、複数の記憶装置を備えていてもよい。
画像信号処理部204は、CPU201の命令に従って、前段検出サーバ200に接続されたディスプレイ21に画像を出力する。ディスプレイ21としては、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイを用いることができる。
入力信号処理部205は、前段検出サーバ200に接続された入力デバイス22から入力信号を取得し、CPU201に出力する。入力デバイス22としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ206は、記録媒体23に記録されたプログラムやデータを読み取る駆動装置である。記録媒体23として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ206は、例えば、CPU201の命令に従って、記録媒体23から読み取ったプログラムやデータをRAM202またはHDD203に格納する。
通信部207は、ネットワーク10を介して監視対象サーバ100,100a,100b、後段検出サーバ300および管理端末装置400と通信を行う通信インタフェースである。通信部207は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
図4は、第2の実施の形態のソフトウェア例を示す図である。図4に示すユニットの一部または全部は、監視対象サーバ100,100a,100b、前段検出サーバ200,200aおよび後段検出サーバ300が実行するプログラムのモジュールであってもよい。また、図4に示すユニットの一部または全部は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの電子回路であってもよい。監視対象サーバ100a,100bも監視対象サーバ100と同様のユニットを用いて実装できる。前段検出サーバ200aも前段検出サーバ200と同様のユニットを用いて実装できる。
監視対象サーバ100は、ログ記憶部110、辞書記憶部120、配布表記憶部130、メッセージ変換部140およびメッセージ送信部150を有する。
ログ記憶部110は、監視対象サーバ100上のハードウェアや監視対象サーバ100が実行するソフトウェアのログを記憶する。ログは、当該ソフトウェアなど(ハードウェアのドライバプログラムやアプリケーションプログラム)が生成して出力するものである。例えば、ログは発生したイベントの内容を記述したテキストの情報(メッセージテキストと呼ぶことがある)を含む。メッセージテキストは、イベントが発生した時間を示すタイムスタンプを含む。
辞書記憶部120は、メッセージ辞書を記憶する。メッセージ辞書は、メッセージテキストをメッセージ番号に変換するためのテーブルである。
配布表記憶部130は、配布表を記憶する。配布表は、メッセージ番号に対応付けて、メッセージ番号の情報の送信先を登録したテーブルである。
メッセージ変換部140は、辞書記憶部120に記憶されたメッセージ辞書に基づいて、ログ記憶部110に記憶されたログ内のメッセージテキストをメッセージ番号に変換する。メッセージ変換部140は、メッセージ番号の情報をメッセージ送信部150に出力する。メッセージ番号の情報は、メッセージテキストに含まれていたタイムスタンプを含む。
メッセージ送信部150は、配布表記憶部130に記憶された配布表に基づいて、メッセージ変換部140から取得したメッセージ番号の情報を前段検出サーバ200,200aの何れかに送信する。以下では、メッセージ送信部150が前段検出サーバ200,200aに送信するメッセージ番号の情報をメッセージデータと呼ぶことがある。メッセージデータで示されるメッセージ番号が、当該メッセージデータの種類を示す。
前段検出サーバ200は、記憶部210および候補検出部220を有する。
記憶部210は、候補パターンテーブルを記憶する。候補パターンテーブルは、候補パターンを登録したテーブルである。候補パターンとは、障害候補のメッセージ番号の所定の集合である。また、記憶部210は、メッセージデータを記憶する。
候補検出部220は、監視対象サーバ100,100a,100bから受信したメッセージデータを記憶部210に格納する。
候補検出部220は、記憶部210に記憶された候補パターンテーブルに基づいて、監視対象サーバ100,100a,100bから通知されたメッセージ番号の集合から候補パターンを検出する。候補検出部220は、検出した候補パターンの情報を後段検出サーバ300に送信する。以下では、候補検出部220が後段検出サーバ300に送信する候補パターンの情報を候補パターン通知データと呼ぶことがある。
後段検出サーバ300は、記憶部310および候補合成部320を有する。
記憶部310は、合成パターンテーブルを記憶する。合成パターンテーブルは、合成パターンと当該合成パターンに対応する障害の内容を登録したテーブルである。ここで、合成パターンとは、候補パターンの所定の組み合わせである。また、記憶部310は、候補パターン通知データを記憶する。
候補合成部320は、前段検出サーバ200,200aから受信した候補パターン通知データを記憶部310に格納する。
候補合成部320は、記憶部310に記憶された合成パターンテーブルに基づいて、前段検出サーバ200,200aから通知された候補パターンの集合から合成パターンを検出する。候補合成部320は、検出した合成パターンに対応する障害の情報を管理端末装置400に送信する。
図5は、第2の実施の形態のメッセージ辞書の例を示す図である。メッセージ辞書121は、辞書記憶部120に格納される。メッセージ辞書121は、メッセージテキストおよびメッセージ番号の項目を含む。
メッセージテキストの項目には、メッセージテキストに含まれる文字列が登録される。メッセージ番号の項目には、メッセージ番号が登録される。例えば、メッセージテキスト“Web Down”に対してメッセージ番号“2”が登録される。
図6は、第2の実施の形態の配布表の例を示す図である。配布表131は、配布表記憶部130に格納される。配布表131は、メッセージ番号およびサーバ番号の項目を含む。
メッセージ番号の項目には、メッセージ番号が登録される。サーバ番号の項目には、配布先のサーバのサーバ番号が1つ登録される。サーバ番号は、配布先のサーバの識別情報である。ここで、サーバ番号“1”は、前段検出サーバ200を示すとする。サーバ番号“2”は、前段検出サーバ200aを示すとする。例えば、配布表131にはメッセージ番号“2”に対してサーバ番号“2”が登録される。これは、メッセージ番号“2”に関するメッセージデータを、前段検出サーバ200aに送信することを示す。
なお、登録されていないメッセージ番号“1”は収集の対象外であり、メッセージ送信部150はメッセージ番号“1”のメッセージデータを送信しない。メッセージ送信部150は、例えば、メッセージ変換部140から取得したメッセージ番号“1”の情報を破棄する。
図7は、第2の実施の形態の候補パターンテーブルの例を示す図である。図7(A)は前段検出サーバ200が保持する候補パターンテーブル211の例を示している。候補パターンテーブル211は、記憶部210に格納される。候補パターンテーブル211は、障害番号、関連メッセージ番号、枝番号および候補パターンの項目を含む。
障害番号の項目には、障害番号が登録される。障害番号は、障害の内容を識別するための番号である。関連メッセージ番号の項目には、当該障害番号に対応する障害に関連する(当該障害の候補となり得る)メッセージ番号が登録される。枝番号の項目には、枝番号が登録される。枝番号は、障害を検出するための複数のパターンを識別するための番号である。候補パターンの項目には、候補パターンが登録される。候補パターンは、メッセージ番号の集合であり、要素の順序(例えば、時系列)は問わない。
例えば、障害番号“1”という障害に関連するメッセージ番号として“3,5,7”が登録される。更に、障害番号“1”の障害を検出し得るパターンが3つ存在し、それらが枝番号“1−1”、“1−2”、“1−3”で識別される。枝番号“1−1”には候補パターンの設定はない(設定なしを示す“−”(ハイフン)が対応付けられている)。枝番号“1−2”には候補パターン“3,5”が対応付けられている。枝番号“1−3”には候補パターン“7”が対応付けられている。
図7(B)は前段検出サーバ200aが保持する候補パターンテーブル211aの例を示している。候補パターンテーブル211aは、前段検出サーバ200aの所定の記憶部に格納される。候補パターンテーブル211aのデータ構造は、候補パターンテーブル211のデータ構造と同様である。
例えば、障害番号“1”という障害に関連するメッセージ番号として“2,4,6”が登録される。障害番号“1”の障害を検出し得るパターンが枝番号“1−1”、“1−2”、“1−3”で識別される点は、候補パターンテーブル211と同様である。一方で、候補パターンテーブル211aでは、枝番号“1−1”には候補パターン“2,4,6”が対応付けられている。枝番号“1−2”には候補パターン“2,6”が対応付けられている。枝番号“1−3”には候補パターン“2,4,6”が対応付けられている。
図8は、第2の実施の形態の合成パターンテーブルの例を示す図である。合成パターンテーブル311は、記憶部310に格納される。合成パターンテーブル311は、障害番号、枝番号、合成パターンおよび障害内容の項目を含む。
障害番号の項目には、障害番号が登録される。枝番号の項目には、枝番号が登録される。合成パターンの項目には、合成パターンが登録される。合成パターンは、候補パターンの組み合わせであり、各候補パターンの順序(例えば、時系列)は問わない。障害内容の項目には、システムの障害の内容が登録される。
例えば、障害番号“1”の枝番号“1−1”の合成パターンが“2:1−1”である。ここで、“2:1−1”の表記は、“:”(コロン)の前の数字(ここでは、“2”)の部分が前段検出サーバのサーバ番号(ここでは、前段検出サーバ200a)を示す。また、“:”の後の文字(ここでは“1−1”)は前段検出サーバで検出された候補パターンに対応する枝番号を示す。すなわち、“2:1−1”の表記は、前段検出サーバ200aで検出された枝番号“1−1”の候補パターンを示す。
よって、合成パターン“2:1−1”は、枝番号“1−1”の候補パターンの情報を前段検出サーバ200aから取得したときに検出し得る。
また、例えば、障害番号“1”の枝番号“1−2”の合成パターンが“1:1−2,2:1−2”である。この合成パターンは、枝番号“1−2”の候補パターンの情報を前段検出サーバ200から取得し、かつ、枝番号“1−3”の候補パターンの情報を前段検出サーバ200aから取得したときに検出し得る。
また、例えば、合成パターンテーブル311には、障害番号“1”に対して障害内容“WebサービスXXX 利用不可”が登録される。これは、障害番号“1”の3つの枝番号の候補パターンの何れかを検出したときに“WebサービスXXX 利用不可”の障害を検出して、管理端末装置400に通知することを示す。
図9は、第2の実施の形態のメッセージデータの例を示す図である。メッセージデータ600は、メッセージ送信部150により前段検出サーバ200,200aの何れかに送信されるデータである。メッセージデータ600は、日時およびメッセージ番号の項目を含む。
日時の項目には、メッセージに関するイベントが発生した時間を示すタイムスタンプ(例えば、年月日時分秒)の情報が設定される。メッセージ番号の項目には、メッセージ番号が設定される。
メッセージデータ600a,600b,600c,600dは、実際の値が設定された場合を例示している。
メッセージデータ600aは、日時が“2011/7/25 10:58:30”(2011年7月25日10時58分30秒)、メッセージ番号が“3”である。
メッセージデータ600bは、日時が“2011/7/25 10:58:32”、メッセージ番号が“2”である。
メッセージデータ600cは、日時が“2011/7/25 10:58:33”、メッセージ番号が“6”である。
メッセージデータ600dは、日時が“2011/7/25 10:58:34”、メッセージ番号が“5”である。
ここで、配布表131によれば、メッセージ番号“3”、“5”に関するメッセージデータ600a,600dは、前段検出サーバ200(サーバ番号“1”)に送信される。また、配布表131によれば、メッセージ番号“2”、“6”に関するメッセージデータ600b,600cは、前段検出サーバ200a(サーバ番号“2”)に送信される。
図10は、第2の実施の形態の候補パターン通知データの例を示す図である。候補パターン通知データ700は、候補検出部220により後段検出サーバ300に送信されるデータである。候補パターン通知データ700は、サーバ番号、始めの時間、終わりの時間および枝番号の項目を含む。
サーバ番号の項目には、候補パターンを検出した前段検出サーバのサーバ番号が設定される。始めの時間の項目には、候補パターンとして検出されたメッセージ番号の時間のうち、最も早い時間が設定される。終わりの時間の項目には、候補パターンとして検出されたメッセージ番号の時間のうち、最も遅い時間が設定される。なお、候補パターンの要素となるメッセージ番号が1つの場合、始めの時間および終わりの時間は同一の時間が設定される。枝番号の項目には、検出した候補パターンに対応する枝番号が設定される。
候補パターン通知データ700a,700b,700cは、実際の値が設定された場合を例示している。
候補パターン通知データ700aは、サーバ番号が“1”、始めの時間が“2011/7/25 10:58:30”、終わりの時間が“2011/7/25 10:58:34”、枝番号が“1−2”である。候補パターン通知データ700aは、メッセージデータ600a,600dに基づいて、候補検出部220により生成され、後段検出サーバ300に送信される。
候補パターン通知データ700bは、サーバ番号が“2”、始めの時間が“2011/7/25 10:58:32”、終わりの時間が“2011/7/25 10:58:33”、枝番号が“1−2”である。候補パターン通知データ700bは、メッセージデータ600b,600cに基づいて、前段検出サーバ200aの候補検出部により生成され、後段検出サーバ300に送信される。
候補パターン通知データ700cは、サーバ番号が“1”、始めの時間が設定なしを示す“−”(ハイフン)、終わりの時間が設定なしを示す“−”(ハイフン)、枝番号が“¬1”(否定記号と数字“1”の結合)である。ここで、候補パターン通知データ700cは、否定パターンを通知するためのデータである。否定パターンは、ある障害に対する全枝番号の否定を示す。否定記号とともに設定される数字は障害番号である。候補パターン通知データ700cは、候補検出部220が障害番号“1”に対応する関連メッセージの一部を含むが、全ての枝番号の候補パターンを検出できなかった場合に、当該候補検出部220により生成され、後段検出サーバ300に送信される。否定パターンは、対応する候補パターンが検出できなかった場合に生成されるので、候補パターン通知データの始めの時間および終わりの時間の項目は設定なしとなる。
次に、第2の実施の形態の情報処理システムの処理手順を説明する。
図11は、第2の実施の形態のメッセージ配布の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。なお、監視対象サーバ100a,100bも監視対象サーバ100と同様の処理手順である。
(ステップS11)メッセージ変換部140は、ログ記憶部110に記憶されたログからメッセージテキストを取得する。例えば、ログには1つのメッセージテキストが所定のコード(例えば、改行コード)で区切られている。メッセージ変換部140は当該コードにより個々のメッセージテキストを区別して取得できる。
(ステップS12)メッセージ変換部140は、辞書記憶部120に記憶されたメッセージ辞書121に基づいて、取得したメッセージをメッセージ番号に変換する。メッセージ変換部140は、メッセージ番号の情報をメッセージ送信部150に出力する。例えば、メッセージ変換部140が“2011/7/25 10:58:30 ・・・HDD Fault”というメッセージを取得した場合、メッセージ番号の情報は時間“2011/7/25 10:58:30”およびメッセージ番号“3”を含む。
(ステップS13)メッセージ送信部150は、配布表記憶部130に記憶された配布表131に基づいて、メッセージ変換部140から取得したメッセージ番号の情報の送信先の前段検出サーバを決定する。
(ステップS14)メッセージ送信部150は、メッセージデータ600をステップS13で決定した送信先の前段検出サーバに送信する。例えば、メッセージ番号が“3”の場合、メッセージデータ600aを前段検出サーバ200(サーバ番号“1”)に送信する。
このようにして、ログに含まれるメッセージがメッセージ番号に変換される。メッセージデータにより、当該メッセージ番号が前段検出サーバ200,200aに通知される。配布表131では、1つのメッセージ番号が1つの前段検出サーバに対応付けられる。したがって、1つのメッセージ番号に関するメッセージデータは、1つの前段検出サーバで収集される。
なお、監視対象サーバ100,100a,100bは、ログに新たなメッセージが追加されたときに当該メッセージ通知の処理を実行する。または、所定の周期やログに所定数のメッセージが追加されたタイミングで実行してもよい。
前段検出サーバ200は、監視対象サーバ100,100a,100bから受信したメッセージデータを記憶部210に格納する。前段検出サーバ200aは、監視対象サーバ100,100a,100bから受信したメッセージデータを自身の記憶部に格納する。
図12は、第2の実施の形態の候補パターン検出の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。なお、前段検出サーバ200aも前段検出サーバ200と同様の処理手順である。
(ステップS21)管理端末装置400は、前段検出サーバ200にタイムウィンドウを入力する。タイムウィンドウは、時間範囲の情報である。タイムウィンドウは、例えば、“2011/7/25 10:58:00”〜“2011/7/25 10:59:00”の時間範囲の情報を含む。なお、前段検出サーバ200,200aには、同じタイムウィンドウを入力する。
(ステップS22)候補検出部220は、記憶部210に記憶されたメッセージデータを参照して、タイムウィンドウに含まれる全てのメッセージ番号(メッセージ番号列)を取得する。
(ステップS23)候補検出部220は、記憶部210に記憶された候補パターンテーブル211を参照して、障害番号を1つ選択する。
(ステップS24)候補検出部220は、候補パターンテーブル211を参照して、メッセージ番号列のパターンが当該障害番号の枝番号に対応する何れかの候補パターンと一致(完全一致)するか否か判定する。何れかの候補パターンと一致する場合、処理をステップS25に進める。何れの候補パターンとも一致しない場合、処理をステップS26に進める。例えば、メッセージ番号列“3,5,3,5”は、メッセージ番号“3”、“5”の組み合わせであるので、そのパターンは“3,5”である。当該パターン“3,5”は、候補パターン“3,5”と一致する。同様に、メッセージ番号列“5,3,7,3,7”のパターンは“3,5,7”である。当該パターン“3,5,7”は、候補パターン“3,5”とは一致しない。なお、候補パターンテーブル211では、枝番号“1−1”の候補パターンが“−”(設定なし)である。当該枝番号“1−1”の候補パターンについては、ステップS22で何れのメッセージ番号も取得できていない場合に、枝番号“1−1”の候補パターンと一致すると判断する。一方、ステップS22で何れかのメッセージ番号を取得している場合に、枝番号“1−1”の候補パターンと一致しないと判断する。
(ステップS25)候補検出部220は、メッセージ番号列から検出した候補パターンについて、候補パターン通知データを生成し、後段検出サーバ300に送信する。例えば、候補パターン“3,5”(枝番号“1−2”)を検出した場合、候補検出部220は候補パターン通知データ700aを後段検出サーバ300に送信する。他の枝番号の候補パターンがある場合には、その候補パターンに関しても候補パターン通知データを生成して後段検出サーバ300に送信する。ここで、例えば、ステップS24で示した枝番号“1−1”のように、何れのメッセージ番号も取得できていない場合に、候補パターンと一致すると判断することもある。この場合は例外として、候補検出部220は候補パターンの通知は行わない。
(ステップS26)候補検出部220は、ステップS23で選択した障害番号について、否定パターン用の通知データを生成し、後段検出サーバ300に送信する。例えば、障害番号“1”には、枝番号“1−1”、“1−2”、“1−3”がある。障害番号“1”に対し、これら全枝番号の候補パターンをメッセージ番号列から検出できなかったとき、候補検出部220は、障害番号“1”の否定パターン“¬1”を設定した候補パターン通知データ700cを生成して後段検出サーバ300に送信する。
(ステップS27)候補検出部220は、ステップS23で選択した障害番号を処理済とする。候補検出部220は、候補パターンテーブル211を参照して、次の障害番号(未処理の障害番号)があるか否か判定する。次の障害番号がある場合、処理をステップS23に進める。次の障害番号がない場合、処理を終了する。
このようにして、前段検出サーバ200で候補パターンが検出され、候補パターン通知データが後段検出サーバ300に送信される。前段検出サーバ200aも同様である。後段検出サーバ300は、前段検出サーバ200,200aから受信した候補パターン通知データを記憶部310に格納する。
なお、ステップS25では、何れのメッセージ番号も取得できていない場合、その旨を明示的(例えば、候補パターン“1:1−1”として)に後段検出サーバ300に通知してもよい。しかし、上述のように、候補パターンの通知を行わないようにすれば、前段検出サーバ200,200aと後段検出サーバ300との間で送受信される通信データを減らせるので、これらサーバ間のネットワークの負荷を軽減できる。
図13は、第2の実施の形態の障害検出の例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(ステップS31)管理端末装置400は、後段検出サーバ300にタイムウィンドウを入力する。候補合成部320は、タイムウィンドウの入力を受け付ける。なお、後段検出サーバ300に入力するタイムウィンドウの時間範囲は、前段検出サーバ200,200aに入力したタイムウィンドウと同一範囲とする。管理端末装置400は、前段検出サーバ200,200aに対するタイムウィンドウの入力と同時に、後段検出サーバ300にタイムウィンドウを入力してもよい。その場合、前段検出サーバ200,200aから送信される候補パターン通知データを一通り受信した後に、以降のステップS32を開始する。
(ステップS32)候補合成部320は、記憶部310に記憶された候補パターン通知データを参照して、終わりの時間に設定された時間がタイムウィンドウ内である全ての候補パターン(候補パターン列)を取得する。
(ステップS33)候補合成部320は、記憶部310に記憶された合成パターンテーブル311を参照して、障害番号を1つ選択する。
(ステップS34)候補合成部320は、合成パターンテーブル311を参照して、候補パターン列が当該障害番号の枝番号に対応する何れかの合成パターンと一致するか否か判定する。何れかの合成パターンと一致する場合、処理をステップS35に進める。何れの合成パターンとも一致しない場合、処理をステップS38に進める。
(ステップS35)候補合成部320は、記憶部310に記憶された候補パターン通知データを参照して、当該障害番号の否定パターンがあるか否か判定する。否定パターンがない場合、処理をステップS36に進める。否定パターンがある場合、処理をステップS38に進める。例えば、合成パターンテーブル311によれば、枝番号“1−1”の合成パターンは“2:1−1”である。この場合、候補パターン列に候補パターン“2:1−1”が含まれれば、ステップS34で枝番“1−1”の合成パターンが検出される。候補合成部320は、本ステップS35で障害番号“1”の否定パターンがある場合、当該合成パターンを検出していても、障害番号“1”の障害検出を抑止する。このように、否定パターンの有無により合成パターン“2:1−1”が成立しているか否かを判断できる。
(ステップS36)候補合成部320は、記憶部310に記憶された候補パターン通知データを参照して、検出した合成パターンの要素となる候補パターンに対応する始めの時間および終わりの時間を抽出する。候補合成部320は、抽出した時間のうち、最も早い時間および最も遅い時間の両方がタイムウィンドウ内に含まれるか否か判定する。含まれる場合、処理をステップS37に進める。含まれない場合、処理をステップS38に進める。
(ステップS37)候補合成部320は、ステップS33で選択した障害番号に対応する障害内容を管理端末装置400に通知する。障害の通知方法は、管理端末装置400への通知に限られない。例えば、候補合成部320は、管理者の電子メールアドレスを保持し、障害内容を記述した電子メールを当該電子メールアドレス宛に送信してもよい。
(ステップS38)候補合成部320は、ステップS33で選択した障害番号を処理済とする。候補合成部320は、合成パターンテーブル311を参照して、次の障害番号(未処理の障害番号)があるか否かを判定する。次の障害番号がある場合、処理をステップS33に進める。次の障害番号がない場合、処理を終了する。
このようにして、後段検出サーバ300で合成パターンが検出され、当該合成パターンに対応する障害が管理端末装置400に通知される。
管理者は、タイムウィンドウにより所望の時間範囲を容易に指定して、障害検出処理を行わせることができる。
また、ステップS36の処理により、ステップS34でタイムウィンドウに収まらない合成パターンを検出しても、当該合成パターンによる障害を非検出とできる。例えば、タイムウィンドウを未来にずらしながら障害検出を連続して行うと、今回指定したタイムウィンドウよりも過去の時間の候補パターン通知データ(前回分)が記憶部310に残ることがある(重複データは上書きされる)。この場合、ステップS34では今回指定したタイムウィンドウに収まらない合成パターンを検出する可能性がある。そこで、ステップS36により当該合成パターンを排除する。なお、障害検出の処理を行う前に、記憶部310に格納された候補パターン通知データをクリアするようにしてもよい。
更に、上記ステップS31において、後段検出サーバ300に入力するタイムウィンドウの時間範囲は、前段検出サーバ200,200aに入力したタイムウィンドウと少なくとも一部が重複する異なる範囲としてもよい。
また、上記ステップS32では、候補合成部320は、記憶部310に記憶された候補パターン通知データを参照して、始めの時間および終わりの時間の両方がタイムウィンドウ内である全ての候補パターン(候補パターン列)を取得してもよい。その場合、ステップS36をスキップして、ステップS37に進んでもよい。
管理端末装置400は、例えば、障害内容を示す画像を生成して、管理端末装置400のモニタに表示させ管理者に提示する。
次に、上記処理手順に基づく障害検出の具体例を説明する。
図14は、第2の実施の形態の障害検出の第1の例を示す図である。図14では、枝番号“1−2”の合成パターンを検出することで、障害番号“1”の障害を検出する場合を例示している。
監視対象サーバ100,100a,100bは、ログにメッセージが記録されると、配布表131に基づいて、当該メッセージに対応するメッセージデータを前段検出サーバ200,200aの何れかに送信する。例えば、メッセージに対応するメッセージ番号が“・・・,3,5,1,2,3,6,9,2,5,・・・”であったとする。配布表131によれば、監視対象サーバ100,100a,100bは、メッセージ番号“3”、“5”を前段検出サーバ200に通知する。同様に、メッセージ番号“2”、“6”を前段検出サーバ200aに通知する。
前段検出サーバ200,200aは、メッセージデータにより通知されたメッセージ番号とメッセージが生成された時間を保持し、蓄積する。
管理端末装置400は、タイムウィンドウW1を前段検出サーバ200,200aおよび後段検出サーバ300に入力する。タイムウィンドウW1の時間範囲には、監視対象サーバ100,100a,100bから通知された“3,5,1,2,3,6,9,2,5”のメッセージ番号が含まれている。
前段検出サーバ200では、蓄積されたメッセージデータから、タイムウィンドウW1内のメッセージ番号列として時間の早い順に“3,5,3,5”を取得する。前段検出サーバ200は、候補パターンテーブル211に基づいて、メッセージ番号列から候補パターン“3,5”を検出する。前段検出サーバ200は、サーバ番号“1”と当該候補パターンに対応する枝番号“1−2”とを含む候補パターン通知データを生成して、後段検出サーバ300に送信する。なお、候補パターン通知データに設定する始めの時間は、メッセージ番号列の中で最も早く検出された“3”に対応する時間である。終わりの時間は、メッセージ番号列の中で最も遅く検出された“5”に対応する時間である。前段検出サーバ200が通知した候補パターンを“1:1−2”と表記する。
前段検出サーバ200aでは、蓄積されたメッセージデータから、タイムウィンドウW1内のメッセージ番号列として時間の早い順に“2,6,2”を取得する。前段検出サーバ200aは、候補パターンテーブル211aに基づいて、メッセージ番号列から候補パターン“2,6”を検出する。前段検出サーバ200aは、サーバ番号“2”と当該候補パターンに対応する枝番号“1−2”とを含む候補パターン通知データを生成して、後段検出サーバ300に送信する。候補パターン通知データに設定する始めの時間は、メッセージ番号列の中で最も早く検出された“2”に対応する時間である。終わりの時間は、メッセージ番号列の中で最も遅く検出された“2”に対応する時間である。前段検出サーバ200aが通知した候補パターンを“2:1−2”と表記する。
後段検出サーバ300は、候補パターン通知データにより通知されたサーバ番号、始めの時間、終わりの時間および枝番号を保持し、蓄積する。
後段検出サーバ300は、蓄積された候補パターン通知データから、タイムウィンドウW1内の候補パターン列“1:1−2,2:1−2”を取得する。すると、後段検出サーバ300は、合成パターンテーブル311に基づき枝番号“1−2”の合成パターンを検出する。
ここで、候補パターン“1:1−2”の始めの時間および終わりの時間は、タイムウィンドウW1に含まれている。候補パターン“2:1−2”の始めの時間および終わりの時間は、タイムウィンドウW1に含まれている。よって、後段検出サーバ300は、障害番号“1”に対応する障害の内容を管理端末装置400に通知する。
図15は、第2の実施の形態の障害検出の第2の例を示す図である。図15では、障害番号“1”の障害を検出しない場合を例示している。監視対象サーバ100,100a,100b(監視対象サーバ群)が、時系列にメッセージ番号“4,9,1,2,4,6,3,2,9”を前段検出サーバ200,200aの何れかを通知する。配布表131によれば、メッセージ番号“3”を前段検出サーバ200に通知する。メッセージ番号“2”、“4”、“6”を前段検出サーバ200aに通知する。
管理端末装置400は、前段検出サーバ200,200aおよび後段検出サーバ300にタイムウィンドウW2を入力する。監視対象サーバ100,100a,100bが出力した各メッセージ番号“4,9,1,2,4,6,3,2,9”に対応する時間は、タイムウィンドウW2に含まれるとする。
前段検出サーバ200では、タイムウィンドウW2内のメッセージ番号列“3”を取得する。候補パターンテーブル211によれば、当該メッセージ番号列から得られるパターン“3”は、障害番号“1”の何れの枝番号の候補パターンにも該当しない。よって、前段検出サーバ200は、障害番号“1”の否定パターン“1:¬1”を後段検出サーバ300に通知する。
前段検出サーバ200aでは、タイムウィンドウW2内のメッセージ番号列“4,2,4,6,2”を取得する。候補パターンテーブル211aによれば、当該メッセージ番号列から得られるパターン“2,4,6”は、枝番号“1−1”、“1−3”の候補パターンに該当する。よって、前段検出サーバ200aは、候補パターン“2:1−1”および“2:1−3”を検出した旨を後段検出サーバ300に通知する。なお、枝番号“1−2”の候補パターン“2,6”は、当該メッセージ番号列から得られるパターン“2,4,6”とは異なるため、検出されない。候補パターン“2:1−1”、“2:1−3”それぞれの始めの時間および終わりの時間はタイムウィンドウW2に含まれている。
後段検出サーバ300は、前段検出サーバ200から否定パターン“1:¬1”を受信している。後段検出サーバ300は、前段検出サーバ200aから候補パターン“2:1−1”、“2:1−3”を受信している。この場合、後段検出サーバ300は、否定パターン“1:¬1”により、障害番号“1”の障害を検出しない。
図16は、第2の実施の形態の障害検出の第3の例を示す図である。図16では、枝番号“1−1”の合成パターンを検出することで、障害番号“1”の障害を検出する場合を例示している。監視対象サーバ100,100a,100b(監視対象サーバ群)が、“4,9,1,2,4,6,1,2,9”を前段検出サーバ200,200aの何れかを通知する。配布表131によれば、前段検出サーバ200に通知するメッセージ番号はない。メッセージ番号“2”、“4”、“6”を前段検出サーバ200aに通知する。
管理端末装置400は、前段検出サーバ200,200aおよび後段検出サーバ300にタイムウィンドウW3を入力する。監視対象サーバ100,100a,100bが出力した各メッセージ番号“4,9,1,2,4,6,1,2,9”に対応する時間は、タイムウィンドウW3に含まれるとする。
前段検出サーバ200では、タイムウィンドウW3内のメッセージ番号列は取得されない。この場合、前段検出サーバ200は何もしない。
前段検出サーバ200aでは、タイムウィンドウW3内のメッセージ番号列“4,2,4,6,2”を取得する。候補パターンテーブル211aによれば、当該メッセージ番号列から得られるパターン“2,4,6”は、枝番号“1−1”、“1−3”の候補パターンに該当する。よって、前段検出サーバ200aは、候補パターン“2:1−1”および“2:1−3”を検出した旨を後段検出サーバ300に通知する。候補パターン“2:1−1”および“2:1−3”それぞれの始めの時間および終わりの時間はタイムウィンドウW3に含まれている。
後段検出サーバ300は、前段検出サーバ200からは何も受信していない。後段検出サーバ300は、前段検出サーバ200aから候補パターン“2:1−1”、“2:1−3”を受信している。合成パターンテーブル311によれば、枝番号“1−1”の合成パターンは“2:1−1”である。よって、後段検出サーバ300は、当該枝番号“1−1”の合成パターンを検出する。一方、合成パターンテーブル311によれば、枝番号“1−3”の合成パターンは“1:1−3,2:1−3”である。しかし、後段検出サーバ300は、候補パターン“1:1−3”を受信していない。したがって、枝番号“1−3”の合成パターンは検出されない。
そして、後段検出サーバ300は、枝番号“1−1”の合成パターンを検出したので、障害番号“1”に対応する障害の内容を管理端末装置400に通知する。
以上のように、第2の実施の形態の情報処理システムでは、監視対象サーバ100,100a,100bが出力したメッセージデータの一部を前段検出サーバ200で収集する。一方、監視対象サーバ100,100a,100bが出力したメッセージデータの他の一部を前段検出サーバ200aで収集する。そして、前段検出サーバ200,200aは、それぞれが障害原因の候補となり得る候補パターンを検出して後段検出サーバ300に通知する。後段検出サーバ300は、候補パターンの組み合わせ(合成パターン)に基づいて、障害を検出する。
このため、第2の実施の形態の情報処理システムでは、同一種類のメッセージデータを1つの前段検出サーバで収集すれば足りる。障害の検出は、前段検出サーバ200,200aでの候補パターンの検出結果を後段で組み合わせて行えばよいためである。
更に、システムの運用に応じて、新たな障害原因のパターンを追加したい場合や、既存のパターンを変更したい場合もある。第2の実施の形態の情報処理システムでは、この場合にテーブル更新作業を省力化できるという利点もある。
図17は、第2の実施の形態のテーブルの更新例を示す図である。図17では、障害原因のパターンを追加する際に、更新しなくてよいテーブルおよび更新するテーブルを示している。新たな障害原因のパターンは、障害番号“2”の枝番号“2−2”とする。枝番号“2−2”は、障害原因パターン“2,5,8”に対応するものである。なお、図17では“メッセージ”の語を“msg”(messageの略)と略記している(以下、同様)。
図17(A)は更新対象とならないテーブルである。図17(A)では、配布表131を示している。監視対象サーバ100a,100bが保持する配布表も更新しなくてよい。
図17(B)は更新対象とするテーブルである。図17(B)では、候補パターンテーブル211,211aおよび合成パターンテーブル311を示している。
候補パターンテーブル211には、関連メッセージに“5”(追加部分R1)を、枝番号に“2−2”(追加部分R2)を、当該枝番号に対応する候補パターンに“5”(追加部分R3)を追加する。
候補パターンテーブル211aには、枝番号に“2−2”(追加部分R4)を、当該枝番号に対応する候補パターンに“2,8”(追加部分R5)を追加する。
合成パターンテーブル311には、枝番号に“2−2”(追加部分R6)を、当該枝番号に対応する合成パターンに“1:2−2,2:2−2”(追加部分R7)を追加する。
このように、更新対象とするテーブルを前段検出サーバ200,200aおよび後段検出サーバ300が保持するテーブルとし、監視対象サーバ100,100a,100bが保持する配布表は更新しなくてよい。
監視対象サーバは、システムの規模が大きくなると、その数も増加し得る。このとき、監視対象サーバの配布表を個々に更新するとなると、そのための作業コストが大きくなる可能性がある。
これに対し、第2の実施の形態の情報処理システムでは、障害原因のパターンを追加/変更する場合、監視対象サーバ100,100a,100bの配布表の更新作業を省ける。このため、障害原因のパターンを更新する際の作業コストを軽減できる。
次に、他の障害検出の方法を例示して第2の実施の形態の障害検出の方法と比較する。
図18は、メッセージ配布の第1の他の例を示す図である。図18の情報処理システムは、監視対象サーバ800,800a,800bおよび障害検出サーバ900,900aを含む。監視対象サーバ800,800a,800bは、障害検出サーバ900,900aにより監視されるサーバコンピュータである。
障害検出サーバ900,900aは、監視対象サーバ800,800a,800bにおける障害を検出するサーバコンピュータである。障害検出サーバ900,900aは、検出を担当する障害が個々に割り当てられている。
障害検出サーバ900は、障害番号“1”の障害の検出を担当する。障害検出サーバ900は、パターンテーブル910を保持する。パターンテーブル910には、障害番号“1”の障害を検出するためのメッセージ番号のパターンが登録されている。
障害検出サーバ900aは、障害番号“2”の障害の検出を担当する。障害検出サーバ900aは、パターンテーブル910aを保持する。パターンテーブル910aには、障害番号“2”の障害を検出するためのメッセージ番号のパターンが登録されている。
図18の情報処理システムでは、障害検出サーバ900,900aの両方が、自身の担当する障害を検出するために、監視対象サーバ800,800a,800bが出力した全てのメッセージデータを収集する。その場合、例えば、監視対象サーバ800は、メッセージ番号“3,5,1,2,3,6,9,2,5”を通知するための一連のメッセージデータを複製して、障害検出サーバ900,900aの両方に送信する。監視対象サーバ800a,800bも同様である。メッセージデータを複製して、同一のメッセージデータを重複して送信するのでネットワークの負荷が高まるおそれがあり、非効率的となる。
一方、第2の実施の形態の情報処理システムでは、このような通知データの複製や通知データの重複送信を行わずに済む。このため、図18の情報処理システムに比べて、ネットワークの負荷の増大を抑えられる。例えば、監視対象サーバ800が9個のメッセージ番号を通知したい場合、障害検出サーバ900,900aの2台に通知するので、9×2=18回のデータ送信が発生する。これに対し、第2の実施の形態の情報処理システムでは、9個のメッセージ番号のそれぞれを前段検出サーバ200,200aの何れかに通知すればよいので、9回のデータ送信で済む。
図19は、メッセージ配布の第2の他の例を示す図である。図19の情報処理システムは、監視対象サーバ800c,800d,800eおよび障害検出サーバ900b,900cを含む。監視対象サーバ800c,800d,800eは、障害検出サーバ900b,900cにより監視されるサーバコンピュータである。
障害検出サーバ900b,900cは、監視対象サーバ800c,800d,800eにおける障害を検出するサーバコンピュータである。障害検出サーバ900,900aは、検出を担当する障害が個々に割り当てられている。
障害検出サーバ900bは、障害番号“1”の障害の検出を担当する。障害検出サーバ900bは、パターンテーブル910bを保持する。パターンテーブル910bには、障害番号“1”の障害を検出するためのメッセージ番号のパターンが登録されている。
障害検出サーバ900cは、障害番号“2”の障害の検出を担当する。障害検出サーバ900cは、パターンテーブル910cを保持する。パターンテーブル910cには、障害番号“2”の障害を検出するためのメッセージ番号のパターンが登録されている。
図19の情報処理システムでは、障害検出サーバ900b,900cは、自身が担当するパターンに含まれるメッセージ番号のみを監視対象サーバ800c,800d,800eから収集する。そのために、監視対象サーバ800c,800d,800eは、配布表810を保持する。配布表810には、メッセージ番号に対応付けて、配布先とする障害検出サーバ(サーバ番号)が定義される。例えば、サーバ番号“1”は障害検出サーバ900bであり、サーバ番号“2”は障害検出サーバ900cである。
この場合、図18の情報処理システムに比べて、送信される通知データの数およびデータ量は減る。障害検出サーバ900b,900cのパターン検出に用いられないメッセージ番号は、送信されないためである。
しかし、障害検出サーバ900b,900cの両方がメッセージ番号“2”を含むパターンを検出する場合、メッセージ番号“2”の配布先にサーバ番号“1”、“2”が登録される。例えば、監視対象サーバ800cが“3,5,1,2,3,6,9,2,5”のメッセージ番号を通知するとする。このとき、障害検出サーバ900bがメッセージ番号“2,3,4,5,6”を収集し、障害検出サーバ900cがメッセージ番号“2,3,8”を収集するとする。すると、結局、監視対象サーバ800cはメッセージ番号“2”、“3”の通知データを複製して、障害検出サーバ900b,900cに重複して送信することになる。
一方、第2の実施の形態の情報処理システムでは、このような通知データの複製や通知データの重複送信を行わずに済む。よって、図19の情報処理システムと比較しても、ネットワークの負荷の増大を抑えられる。
更に、図19の情報処理システムでは、パターンテーブル910b,910cに新たなパターンを追加したり既存のパターンを変更したりするとき、監視対象サーバ800c,800d,800eが保持する配布表810の更新作業が発生する。サーバ数が多くなるほど、その作業コストは増大し得る。
これに対し、第2の実施の形態の情報処理システムでは、障害原因のパターンを追加/変更する場合に、配布表の更新を行わずに済む。よって、稼働監視のための作業負担を軽減できる。
このように、第2の実施の形態の情報処理システムによれば、障害パターン検出の分散処理を効率的に行うことができる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態との相違点を主に説明し、同様の事項に関しては説明を省略する。
第2の実施の形態では、同一のメッセージ番号を1つの前段検出サーバで収集するために配布表131で1つのメッセージ番号に対して、1つのサーバ番号を対応付けるものとした。一方、配布表131を用いないでメッセージデータの送信先を決定してもよい。第3の実施の形態では、そのための機能を提供する。
ここで、第3の実施の形態は第2の実施の形態と比べてメッセージ配布の処理が異なる。それ以外のシステムや装置の構成に関しては第2の実施の形態と同一であるため、同一の名称・符号を用いて各構成を指し示すものとする。
図20は、第3の実施の形態のメッセージ配布の例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。ただし、ステップS11,S12,S14の処理は、図11のステップS11,S12,S14の処理と同一であるため説明を省略する。
(ステップS13a)メッセージ送信部150は、メッセージテキストの変換により取得したメッセージ番号を2で除した剰余を求める。そして、求めた剰余に基づいて決定されるサーバ番号の前段検出サーバをメッセージデータの送信先と決定する。例えば、剰余が奇数であれば前段検出サーバ200、剰余が偶数であれば前段検出サーバ200aとする。
このように、メッセージ送信部150は、配布表131を用いずに、メッセージデータの送信先を決定することもできる。このため、前段検出サーバ200,200aに配布表131を設ける手間を省ける。前段検出サーバ200,200aが検出を担当する候補パターンは、前段検出サーバ200,200aで収集されるメッセージ番号に合わせて割り当てればよい。
例えば、前段検出サーバがM台(Mは2以上の整数)存在する場合には、メッセージ番号をMで除した剰余を求める。その場合、求めた剰余と等しいサーバ番号の前段検出サーバを通知先と決定することが考えられる(この場合、サーバ番号“0”〜“M−1”を予め各前段検出サーバに割り当てる)。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態との相違点を主に説明し、同様の事項に関しては説明を省略する。
ここで、監視対象サーバ100,100a,100bでは、メッセージの種類によって、その出現頻度が異なることがある。すると、出現頻度の高いメッセージデータが何れかの前段検出サーバに偏って送信されることがある。その場合、当該前段検出サーバの負荷が高まる可能性がある。そこで、第4の実施の形態ではデータ収集の偏りを平準化して、前段検出サーバの負荷を分散させる機能を提供する。
第4の実施の形態の情報処理システムは、図2で説明した第2の実施の形態の情報処理システムと同様である。第2の実施の形態の情報処理システムとの相違点は、第4の実施の形態の情報処理システムでは配布表作成サーバ500を設ける点である。配布表作成サーバ500は、ネットワーク10に接続される。配布表作成サーバ500のハードウェア例は、図3で説明した前段検出サーバ200のハードウェア例と同様である。その他の装置などは、第2の実施の形態と同一の符号・名称を用いて表すものとする。
図21は、第4の実施の形態のソフトウェア例を示す図である。図21に示すユニットの一部または全部は、監視対象サーバ100,100a,100b、前段検出サーバ200,200a,後段検出サーバ300および配布表作成サーバ500が実行するプログラムのモジュールであってもよい。また、図21に示すユニットの一部または全部は、FPGAやASICなどの電子回路であってもよい。監視対象サーバ100a,100bも監視対象サーバ100と同様のユニットを用いて実装できる。前段検出サーバ200aも前段検出サーバ200と同様のユニットを用いて実装できる。
ここで、監視対象サーバ100および後段検出サーバ300のソフトウェア例は、図4で説明した内容と同様である。
前段検出サーバ200は、記憶部210、候補検出部220およびメッセージ頻度通知部230を有する。記憶部210および候補検出部220は、図4で説明した内容と同様である。
メッセージ頻度通知部230は、監視対象サーバ100,100a,100bから受信したメッセージデータに基づいて、メッセージ番号ごとの出現頻度を取得する。メッセージ頻度通知部230は、その結果を記憶部210に格納する。メッセージ頻度通知部230は、取得した出現頻度の情報を配布表作成サーバ500に定期的に送信する。
配布表作成サーバ500は、記憶部510、メッセージ頻度取得部520、パターン再分割部530および配布表作成部540を有する。
記憶部510は、分割前パターンテーブルを記憶する。分割前パターンテーブルは、メッセージ番号の組み合わせに対する障害内容を登録したテーブルである。以下では、分割前パターンテーブルに登録されたメッセージ番号の組み合わせを分割前パターンと呼ぶことがある。
メッセージ頻度取得部520は、前段検出サーバ200,200aからメッセージ番号ごとの出現頻度の情報を定期的に受信する。メッセージ頻度取得部520は、当該出現頻度の情報を、パターン再分割部530に出力する。
パターン再分割部530は、メッセージ番号ごとの出現頻度を集計する。パターン再分割部530は、当該集計結果に基づき、前段検出サーバ200,200aにメッセージ番号を割り当てる。このとき、両サーバが担当するメッセージ番号の出現頻度ができるだけ均等になるようにする。パターン再分割部530は、割り当て結果に基づいて候補パターンおよび合成パターンを生成する。パターン再分割部530は、生成した候補パターンを前段検出サーバ200,200aに送信し、候補パターンテーブル211,211aを更新する。パターン再分割部530は、生成した合成パターンを後段検出サーバ300に送信し、合成パターンテーブル311を更新する。また、パターン再分割部530は、前段検出サーバ200,200aに対するメッセージ番号の割り当て結果を配布表作成部540に通知する。
配布表作成部540は、パターン再分割部530によるメッセージ番号の割り当て結果に基づいて、配布表を作成する。配布表作成部540は、作成した配布表を監視対象サーバ100,100a,100bに送信し、監視対象サーバ100,100a,100bが保持する配布表を更新する。
図22は、第4の実施の形態の分割前パターンテーブルの例を示す図である。分割前パターンテーブル511は、記憶部510に格納される。分割前パターンテーブル511は、障害番号、枝番号、分割前パターンおよび障害内容の項目を含む。
障害番号の項目には、障害番号が登録される。枝番号の項目には、枝番号が登録される。分割前パターンの項目には、分割前パターンが登録される。障害内容の項目には、システムの障害の内容が登録される。
例えば、障害番号“1”の枝番号“1−1”の分割前パターンが“2,4,6”であり、障害内容が“WebサービスXXX 利用不可”である。これは、分割前パターン“2,4,6”のメッセージ番号の組み合わせに対して、障害内容“WebサービスXXX 利用不可”が対応付けられていることを示す。
図23は、第4の実施の形態のメッセージ頻度テーブルの例を示す図である。メッセージ頻度テーブル512は、記憶部510に格納される。メッセージ頻度テーブル512は、パターン再分割部530がメッセージ番号ごとの出現頻度を集計したものである。メッセージ頻度テーブル512は、メッセージ番号および出現頻度の項目を含む。
メッセージ番号の項目には、メッセージ番号が登録される。出現頻度の項目には、前段検出サーバ200,200aで取得された出現頻度の集計結果が登録される。例えば、メッセージ番号“6”は出現頻度“61”である。メッセージ頻度テーブル512では、レコードが出現頻度の降順にソートされている。
次に、第4の実施の形態の情報処理システムの配布表更新の手順を説明する。ここで、第4の実施の形態の障害検出ための処理手順は、図11〜図13で説明した第2の実施の形態の各手順と同様である。
図24は、第4の実施の形態の配布表更新の例を示すフローチャートである。以下、図24に示す処理をステップ番号に沿って説明する。
(ステップS41)メッセージ頻度取得部520は、前段検出サーバ200,200aからメッセージ番号ごとの出現頻度の情報を取得し、パターン再分割部530に出力する。取得する周期は、情報処理システムの運用に応じて決定する。例えば、24時間ごと、1週間ごとなどとすることができる。
(ステップS42)パターン再分割部530は、取得した出現頻度の情報に基づいて、メッセージ番号ごとの出現頻度を集計する。パターン再分割部530は、メッセージ頻度テーブル512に集計結果を登録する。
(ステップS43)パターン再分割部530は、前段検出サーバ200,200aが担当するメッセージ番号の出現頻度が均等になるように、両サーバにメッセージ番号を割り当てる。例えば、出現頻度の降順にソートされたメッセージ頻度テーブル512の各メッセージ番号につき、上から順に、“6,7,2”を前段検出サーバ200に、“3,5,4”を前段検出サーバ200aに、割り当てることが考えられる。前段検出サーバが3以上ある場合にも、出現頻度でソートされた順に割り当てていけばよい。
(ステップS44)パターン再分割部530は、記憶部510に記憶された分割前パターンテーブル511を参照し、ステップS43のメッセージ番号の割り当て結果に基づいて、候補パターンおよび合成パターンを再作成する。例えば、ステップS43で示したメッセージ番号の割り当て例でいえば、枝番号“1−1”につき、候補パターン“2,6”を作成し、前段検出サーバ200に割り当てる。同様に、枝番号“1−1”につき、候補パターン“4”を作成し、前段検出サーバ200aに割り当てる。そして、当該枝番号“1−1”につき、合成パターン“1:1−1,2:1−1”を作成し、後段検出サーバ300に割り当てる。
(ステップS45)パターン再分割部530は、作成した候補パターンを前段検出サーバ200,200aに送信し、前段検出サーバ200,200aが保持する候補パターンテーブル211,211aを更新する。パターン再分割部530は、作成した合成パターンを後段検出サーバ300に送信し、後段検出サーバ300が保持する合成パターンテーブル311を更新する。
(ステップS46)パターン再分割部530は、ステップS43のメッセージ番号の割り当て結果を配布表作成部540に通知する。配布表作成部540は、当該割り当て結果に基づいて配布表を作成する。
(ステップS47)配布表作成部540は、作成した配布表を監視対象サーバ100,100a,100bに送信し、監視対象サーバ100,100a,100bが保持する配布表を更新する。
このようにして、配布表作成サーバ500は、メッセージ番号の出現頻度に応じて、監視対象サーバ100,100a,100bの配布表を更新する。また、配布表作成サーバ500は、配布先の割り当て結果に応じて、分割前パターンテーブル511に登録された分割前パターンを分割し、検出すべき候補/合成パターンを前段検出サーバ200,200aおよび後段検出サーバ300に再割り当てする。このとき、配布表では、メッセージ番号と前段検出サーバ200,200aが1対1に対応付けられる。すなわち、前段検出サーバ200,200aのそれぞれに割り当てられるメッセージ番号の集合につき、要素(メッセージ番号)の重複はない。
また、配布表作成サーバ500は、前段検出サーバ200,200aが担当するメッセージ番号の出現頻度が均等になるよう、メッセージ番号を割り当てる。すなわち、何れかの前段検出サーバにメッセージデータが集中しないよう制御する。これにより、前段検出サーバ200,200aの負荷を動的に平準化できる。
[第5の実施の形態]
次に、第5の実施の形態を説明する。前述の第2〜第4の実施の形態との相違点を主に説明し、同様の事項に関しては説明を省略する。
第2,第4の実施の形態では、前段検出サーバ200,200aおよび後段検出サーバ300の2段階の例を説明した。ここで、検出したい障害の数が多くなると、前段検出サーバ200,200aで検出する候補パターンの数が多くなり、前段検出サーバ200,200aや後段検出サーバ300によるパターンの判定処理の負荷が大きくなる可能性がある。そこで、前段検出サーバを更に設け、後段検出サーバ300に候補パターンを組み合わせる前に、候補パターンの絞り込みを行う複数段の検出サーバを設けてもよい。このようにすれば、各検出サーバの負荷を軽減できる。そこで、第5の実施の形態では3段階以上の複数段階で障害を検出する機能を提供する。
第5の実施の形態の情報処理システムは、図2で説明した第2の実施の形態の情報処理システムの各サーバに加えて、前段検出サーバ200b,200cおよび中段検出サーバ300a,300bを有する。前段検出サーバ200b,200cおよび中段検出サーバ300a,300bは、ネットワーク10に接続される。前段検出サーバ200b,200cおよび中段検出サーバ300a,300bのハードウェア例は、図3で説明した前段検出サーバ200のハードウェア例と同様である。その他の装置などは、第2の実施の形態と同一の符号・名称を用いて表すものとする。
図25は、第5の実施の形態のソフトウェア例を示す図である。図25に示すユニットの一部または全部は、前段検出サーバ200,200a,200b,200c、中段検出サーバ300a,300bおよび後段検出サーバ300が実行するプログラムのモジュールであってもよい。また、図25に示すユニットの一部または全部は、FPGAやASICなどの電子回路であってもよい。前段検出サーバ200a,200b,200cも前段検出サーバ200と同様のユニットを用いて実装できる。中段検出サーバ300bも中段検出サーバ300aと同様のユニットを用いて実装できる。なお、監視対象サーバ100,100a,100bは、第2の実施の形態で説明したユニットを含む。
ここで、前段検出サーバ200のソフトウェア例は、図4で説明した内容と同様である。ただし、記憶部210は、候補パターン通知データを中段検出サーバ300a,300bの何れに送信するかを登録した候補パターンの配布表を記憶する。候補検出部220は、当該候補パターンの配布表を参照して、候補パターン通知データを中段検出サーバ300a,300bの何れかに送信する。
また、後段検出サーバ300のソフトウェア例は、図4で説明した内容と同様である。ただし、候補合成部320は、中段検出サーバ300a,300bから受信した候補パターン通知データの組み合わせに基づいて、合成パターンを検出する。
中段検出サーバ300aは、記憶部310aおよび候補合成部320aを有する。
記憶部310aは、候補パターンテーブルを記憶する。記憶部310aの候補パターンテーブルは、検出した合成パターンに対応する候補パターンの枝番号を登録したものである。また、記憶部310aは、候補パターン通知データを記憶する。
候補合成部320aは、前段検出サーバ200,200a,200b,200cから受信した候補パターン通知データを記憶部310aに格納する。
候補合成部320aは、記憶部310aに記憶された候補パターンテーブルに基づいて、前段検出サーバ200,200a,200b,200cから通知された候補パターンの集合のうちから合成パターンを検出する。候補合成部320aは、検出した合成パターンに対応する候補パターン通知データを後段検出サーバ300に送信する。このように、候補合成部320aは、前段検出サーバ200,200a,200b,200cから通知された候補パターンを集約して新たな候補パターンを生成する。候補合成部320aは、候補パターンの絞り込みを行っているということもできる。
図26は、第5の実施の形態の候補パターンテーブル(前段)の例を示す図である。図26(A)は前段検出サーバ200が記憶部210に保持する候補パターンテーブル212を例示している。図26(B)は前段検出サーバ200aが自身の記憶部に保持する候補パターンテーブル212aを例示している。図26(C)は前段検出サーバ200bが自身の記憶部に保持する候補パターンテーブル212bを例示している。図26(D)は前段検出サーバ200cが自身の記憶部に保持する候補パターンテーブル212cを例示している。候補パターンテーブル212,212a,212b,212cは、障害番号、関連メッセージ、枝番号および候補パターンの項目を含む。各項目の内容は、図7で説明した候補パターンテーブル211の各項目の内容と同様である。
図27は、第5の実施の形態の候補パターンテーブル(中段)の例を示す図である。図27(A)は中段検出サーバ300aが記憶部310aに保持する候補パターンテーブル311aを例示している。図27(B)は中段検出サーバ300bが自身の記憶部に保持する候補パターンテーブル311bを例示している。候補パターンテーブル311a,311bは、障害番号、枝番号および合成パターンの項目を含む。
障害番号の項目には、障害番号が登録される。枝番番号の項目には、枝番号が登録される。合成パターンの項目には、合成パターンが登録される。
例えば、候補パターンテーブル311aでは、障害番号“1”の枝番号“1−2”の合成パターンが“1:1:1−2,1:2:1−2”である。ここで“1:1:1−2”の表記は、最前部の“1:1”が前段検出サーバのサーバ番号(ここでは、前段検出サーバ200)を示す。また、最後部の“1−2”は前段検出サーバで検出された候補パターンに対応する枝番号を示す。すなわち、“1:1:1−2”の表記は、前段検出サーバ200で検出された枝番号“1−2”の候補パターンを示す。
ここで、第5の実施の形態では、前段検出サーバ200のサーバ番号は“1:1”である。前段検出サーバ200aのサーバ番号は“1:2”である。前段検出サーバ200bのサーバ番号は“2:1”である。前段検出サーバ200cのサーバ番号は“2:2”である。中段検出サーバ300aのサーバ番号は“1”である。中段検出サーバ300bのサーバ番号は“2”である。
よって、候補パターンテーブル311aの合成パターン“1:1:1−2,1:2:1−2”は、枝番号“1−2”の候補パターンの情報を前段検出サーバ200,200aから取得したときに検出し得る。
また、例えば、候補パターンテーブル311aでは、枝番号“1−3”の合成パターンが“1:2:1−3”である。この合成パターンは、枝番号“1−3”の候補パターンの情報を前段検出サーバ200aから取得したときに検出し得る。
更に、候補パターンテーブル311aでは、枝番号“1−1”の合成パターンが設定なし“−”である。
なお、後段検出サーバ300が記憶部310に保持する合成パターンテーブル311は、図8で説明した内容と同様である。ただし、当該合成パターンテーブル311中のサーバ番号(合成パターンの“:”コロンの前側の数字)が示すサーバが異なる。すなわち、サーバ番号“1”は中段検出サーバ300aを示す。サーバ番号“2”は中段検出サーバ300bを示す。
以上に示した候補パターンテーブル212,212a,212b,212c,311a,311bには、2以上の複数の障害番号に対応する候補/合成パターンが登録され得る。
図28は、第5の実施の形態の候補パターン通知データの例を示す図である。図28(A)は、前段検出サーバ200,200a,200bから中段検出サーバ300a,300bに送信される候補パターン通知データ700を例示している。候補パターン通知データ700の各項目の設定内容は、図10で説明した通りである。
候補パターン通知データ700d,700e,700fは、実際の値が設定された場合を例示している。図9で説明したメッセージデータ600dが前段検出サーバ200で、メッセージデータ600aが前段検出サーバ200aで、メッセージデータ600b,600cが前段検出サーバ200bで、それぞれ収集された場合の例である。
候補パターン通知データ700dは、サーバ番号が“1:1”、始めの時間が“2011/7/25 10:58:34”、終わりの時間が“2011/7/25 10:58:34”、枝番号が“1−2”である。候補パターン通知データ700dは、メッセージデータ600dに基づいて、候補検出部220により生成され、中段検出サーバ300aに送信される。
なお、前段検出サーバ200が保持する候補パターンの配布表には、候補パターン“1:1:1−2”、“1:2:1−2”の送信先として、中段検出サーバ300aが登録されている。候補検出部220は、当該配布表に基づいて、候補パターン通知データ700dの送信先を決定できる(以下、前段検出サーバ200,200a,200b,200cによる候補パターン通知データの送信先も同様に決定される)。あるいは、配布表を用いずに、自身のサーバ番号(例えば、“1:1”)のコロン“:”の前方の番号(例えば、“1”)を送信先サーバのサーバ番号(例えば、“1”)としてもよい。
候補パターン通知データ700eは、サーバ番号が“1:2”、始めの時間が“2011/7/25 10:58:30”、終わりの時間が“2011/7/25 10:58:30”、枝番号が“1−2”である。候補パターン通知データ700eは、メッセージデータ600aに基づいて、前段検出サーバ200aの候補検出部により生成され、中段検出サーバ300aに送信される。
候補パターン通知データ700fは、サーバ番号が“2:1”、始めの時間が“2011/7/25 10:58:32”、終わりの時間が“2011/7/25 10:58:33”、枝番号が“1−2”である。候補パターン通知データ700fは、メッセージデータ600b,600cに基づいて、前段検出サーバ200bの候補検出部により生成され、中段検出サーバ300bに送信される。
図28(B)は、中段検出サーバ300a,300bから後段検出サーバ300に送信される候補パターン通知データ700を例示している。候補パターン通知データ700の各項目の設定内容は、図10で説明した通りである。
候補パターン通知データ700g,700hは、実際の値が設定された場合を例示している。
候補パターン通知データ700gは、サーバ番号が“1”、始めの時間が“2011/7/25 10:58:30”、終わりの時間が“2011/7/25 10:58:34”、枝番号が“1−2”である。候補パターン通知データ700gは、候補パターン通知データ700d,700eに基づいて、候補合成部320aにより生成され、後段検出サーバ300に送信される。
候補パターン通知データ700hは、サーバ番号が“2”始めの時間が“2011/7/25 10:38:32”、終わりの時間が“2011/7/25 10:58:33”、枝番号が“1−2”である。候補パターン通知データ700は、候補パターン通知データ700fに基づいて、中段検出サーバ300bの候補合成部により生成され、後段検出サーバ300に送信される。
なお、前段検出サーバ200,200a,200b,200cおよび中段検出サーバ300a,300bにおいて、ある障害番号につき何れの枝番号の候補パターンも検出できない場合には、後段の検出サーバに否定パターンを通知する。否定パターンを通知する際に用いる候補パターン通知データは、図10で説明した候補パターン通知データ700cと同様である。
次に、第5の実施の形態の情報処理システムの処理手順を説明する。ここで、第5の実施の形態の監視対象サーバ100,100a,100bによるメッセージ配布の手順は、図11で説明した手順と同様である。
また、第5の実施の形態の前段検出サーバ200,200a,200b,200cによる候補パターン検出の手順は図12で説明した手順と同様である。ただし、図9で説明したメッセージデータ600dが前段検出サーバ200で、メッセージデータ600aが前段検出サーバ200aで、メッセージデータ600b,600cが前段検出サーバ200bで、それぞれ収集されたものとする。第5の実施の形態の前段検出サーバ200,200a,200b,200cは、候補パターン通知データを中段検出サーバ300a,300bの何れかに送信する。すると、中段検出サーバ300a,300bは、受信した候補パターン通知データを蓄積する。
更に、第5の実施の形態の後段検出サーバ300による障害検出の手順は図13で説明した手順と同様である。ただし、第5の実施の形態の後段検出サーバ300は、中段検出サーバ300a,300bから受信した候補パターン通知データを蓄積する。そして、後段検出サーバ300は、蓄積した当該候補パターン通知データに基づいて障害を検出する。
以下、中段検出サーバ300aによる候補パターン検出の手順を説明する。中段検出サーバ300bの処理手順も中段検出サーバ300aと同様である。
図29は、第5の実施の形態の候補パターン検出の例を示すフローチャートである。以下、図29に示す処理をステップ番号に沿って説明する。
(ステップS51)管理端末装置400は、中段検出サーバ300aにタイムウィンドウを入力する。候補合成部320aは、タイムウィンドウの入力を受け付ける。なお、中段検出サーバ300a,300bに入力するタイムウィンドウの時間範囲は、前段検出サーバ200,200a,200b,200cおよび後段検出サーバ300に入力するタイムウィンドウの時間範囲と同一とする。ただし、少なくとも一部が重複した異なる時間範囲でもよい。管理端末装置400は、前段検出サーバ200,200a,200b,200cおよび後段検出サーバ300に対するタイムウィンドウの入力と同時に中段検出サーバ300a,300bにタイムウィンドウを入力してもよい。その場合、前段検出サーバ200,200a,200b,200cから送信される候補パターン通知データを一通り受信した後に、以降のステップS52を開始する。
(ステップS52)候補合成部320aは、記憶部310aに記憶された候補パターン通知データを参照して、終わりの時間に設定された時間がタイムウィンドウ内である全ての候補パターン(候補パターン列)を取得する。
(ステップS53)候補合成部320aは、記憶部310aに記憶された候補パターンテーブル311aを参照して、障害番号を1つ選択する。
(ステップS54)候補合成部320aは、候補パターンテーブル311aを参照して、候補パターン列が当該障害番号の枝番号に対応する何れかの合成パターンと一致するか否か判定する。何れかの合成パターンと一致する場合、処理をステップS55に進める。
(ステップS55)候補合成部320aは、記憶部310aに記憶された候補パターン通知データを参照して、当該障害番号の否定パターンがあるか否か判定する。否定パターンがない場合、処理をステップS56に進める。否定パターンがある場合、処理をステップS58に進める。
(ステップS56)候補合成部320aは、記憶部310に記憶された候補パターン通知データを参照して、検出した合成パターンの要素となる候補パターンに対応する始めの時間および終わりの時間を抽出する。候補合成部320aは、抽出した時間のうち、最も早い時間および最も遅い時間の両方がタイムウィンドウ内に含まれるか否か判定する。含まれる場合、処理をステップS57に進める。含まれない場合、処理をステップS58に進める。なお、ステップS54では、複数の合成パターンが検出されることもある。その場合、複数の合成パターンの何れかがタイムウィンドウ内に含まれれば、処理をステップS57に進める。一方、複数の合成パターンの全てがタイムウィンドウに含まれなければ、処理をステップS58に進める。
(ステップS57)候補合成部320aは、候補パターン列から検出した合成パターン(タイムウィンドウ内に含まれるもののみ)について、候補パターン通知データを生成し、後段検出サーバ300に送信する。例えば、候補パターン列が“1:1:1−2”および“1:2:1−2”の組み合わせである場合、候補合成部320aは候補パターン通知データ700gを後段検出サーバ300に送信する。他の枝番号の合成パターンがある場合には、当該合成パターンに対応する候補パターンに関しても候補パターン通知データを生成して後段検出サーバ300に送信する。ここで、例えば、候補パターンテーブル311aの枝番号“1−1”のように、何れの候補パターンも取得できていない場合に、ステップS54で合成パターンと一致すると判断することもある。この場合、候補合成部320aは後段検出サーバ300に対する候補パターンの通知は行わない。
(ステップS58)候補合成部320aは、ステップS53で選択した障害番号について否定パターン用の通知データを生成し、後段検出サーバ300に送信する。例えば、候補パターンテーブル311aによれば、障害番号“1”には枝番号“1−1”、“1−2”、“1−3”がある。その場合、否定パターンが通知されるのは、障害番号“1”に対し、これら全枝番号の合成パターンを候補パターン列から検出できなかったとき(ステップS54 No)である。または、候補パターン通知データとして障害番号“1”の否定パターン“¬1”を取得しているとき(ステップS55 No)である。すると、候補合成部320aは、障害番号“1”の否定パターン“¬1”を設定した候補パターン通知データ700cを生成して後段検出サーバ300に送信する。
(ステップS59)候補合成部320aは、ステップS53で選択した障害番号を処理済とする。候補合成部320aは、候補パターンテーブル311aを参照して、次の障害番号(未処理の障害番号)があるか否かを判定する。次の障害番号がある場合、処理をステップS53に進める。次の障害番号がない場合、処理を終了する。
このようにして、中段検出サーバ300a,300bで、前段検出サーバ200,200a,200b,200cから受信した候補パターンの組み合わせに基づき、候補パターンの絞り込みが行われる。
なお、上記ステップS52では、候補合成部320aは、記憶部310aに記憶された候補パターン通知データを参照して、始めの時間および終わりの時間の両方がタイムウィンドウ内である全ての候補パターン(候補パターン列)を取得してもよい。その場合、ステップS56をスキップして、ステップS57に進んでもよい。
ここで、大規模な情報処理システムでは、監視すべき障害内容も多量となる可能性がある。このとき、より多くのメッセージデータを収集するために前段検出サーバの数を増やすことで、各前段検出サーバの負荷を分散できる。また、中段検出サーバを設けて段階的に障害候補を絞り込むことで、後段検出サーバの負荷を分散できる。このようにして、各検出サーバの処理負担を効率的に軽減することができる。
なお、ここでは3段階の場合を例示したが、中段検出サーバを複数段設けて4段階以上としてもよい。例えば、N(Nは3以上の整数)段階とする場合、第1段目に3以上の前段検出サーバ群を設ける。第2段目から第N−1段目(N=3のときは第2段目)に中段検出サーバ群を設ける。中段検出サーバ群は1段当たり1以上の中段検出サーバを含む。そして、第N段目(最終段目)に後段検出サーバを設ける。検出サーバの段数は、運用に応じて、各検出サーバが過負荷とならないよう柔軟に決定することができる。