以下、本実施形態について、図面を参照しながら、詳細に説明する。
実施形態に係る動作履歴収集装置1は、障害が発生した旨のメッセージを受信すると、そのメッセージを解析して障害が発生したノード(障害発生ノード)を特定する。次に、動作履歴収集装置1は、障害発生ノードの近傍に位置するノード(近傍ノード)に対して、各々のノードのシステムログなどの動作履歴に異常が検出されるかの判定をするように要求する。また、障害発生ノードに対しての通信頻度が所定の閾値より大きいノードに対しても、動作履歴収集装置1は、動作履歴に異常が検出されるかの判定を要求する。判定が要求されたノードで、動作履歴からエラーメッセージなどの異常を通知する記録が検出された場合、そのノードは動作履歴収集装置1によって動作履歴を収集される対象として指定される。動作履歴収集装置1は、動作履歴の収集対象として指定されたノードの動作履歴を収集する。すなわち、動作履歴収集装置1は、近傍ノードや障害発生ノードとの通信頻度が一定以上のノードであり、かつ、動作履歴に異常が検出されたノードを、動作履歴の取得対象のノードとして指定し、指定したノードの動作履歴を収集する。
動作履歴収集装置1を用いたネットワークでは、障害が発生した場合、障害発生ノードに合わせて、障害発生ノードの近傍ノードや障害発生ノードとの通信頻度が一定以上のノードを抽出することができる。さらに、動作履歴収集装置1は、近傍ノードや障害発生ノードとの通信頻度が一定以上のノードの中から、動作履歴に異常が検出されたノードを動作履歴の検出対象とする。このため、動作履歴収集装置1を用いたネットワークでは、障害が発生するノードに対応させてシステムログなどの動作履歴の収集対象となるノードを事前に設定するなどの事前調査をしなくてもよく、簡便に動作履歴を収集することができる。
ここで、障害が発生した原因の解析やネットワークの復旧に有用なノードの動作履歴には、障害が発生したことによって通常と異なるメッセージなどが記録されている可能性が高いと考えられる。従って、動作履歴収集装置1は、異常が検出されたノードの動作履歴を収集することにより、障害の原因解析やネットワークの復旧に有用である可能性の高い動作履歴を収集することができる。さらに、異常が検出されたノードを動作履歴の収集対象とするので、障害が発生したときに収集するログの量を限定することもできる。
なお、以下の記載でも、障害発生ノードの近傍に接続されているノードのことを「近傍ノード」と記載する。また、ネットワーク中で障害発生ノードを基準とした接続関係を元に、システムログの収集対象とされうる位置にあるノードを、「障害発生ノードの近傍に位置するノード」と記載することがある。例えば、障害発生ノードのIPアドレスと第1〜第3オクテットが共通のノードについて、障害が発生したときにシステムログを収集するシステムでは、障害発生ノードと第1〜第3オクテットが共通のノードは、障害発生ノードの近傍ノードとなる。また、障害が発生したときにシステムログを収集する範囲をセグメントとして、予め決めておき、障害発生ノードと同一のセグメントについてシステムログを収集するシステムでは、障害発生ノードと同一のセグメントにあるノードが近傍ノードとなる。
図1は、動作履歴収集装置1を使用したネットワークの一例を示す図である。図1に示すネットワークには、動作履歴収集装置1、運用管理サーバ2、サーバ3(3a〜3e)、ネットワーク装置4(4a、4b)が含まれる。ここで、サーバ3の一部を、ユーザ端末などに置き換え、ユーザ端末などを含むネットワークとすることもできる。また、実装形態に合わせて、運用管理に用いられるプログラム等を動作履歴収集装置1や他のサーバ3に導入することもでき、その場合には、運用管理サーバ2を動作履歴収集装置1やサーバ3と同じノードにしたネットワークにすることもできる。以下の説明では、運用管理サーバ2が動作履歴収集装置1やサーバ3と別のノードとしてネットワークに含まれている場合について述べる。
動作履歴収集装置1は、ネットワークに含まれるサーバ3a〜3eのシステムログやアクセスログなどの任意の種類の動作履歴を収集することができるが、以下の説明では、システムログを収集する場合の例について具体的に述べる。また、動作履歴収集装置1は、外部ネットワーク5やネットワーク装置4cを介して、例えば遠隔地などに設置されているサーバ3(3f〜3h)の動作履歴を収集することもできる。
運用管理サーバ2は、ネットワーク中のサーバ3で発生した障害を検出し、動作履歴収集装置1に障害が発生したことを通知する。運用管理サーバ2が検出する障害は、例えば、ネットワーク上のハードウェアに起因する障害や、ネットワーク上のノードがアプリケーションを動作させたときに発生した障害などの任意の障害とすることができる。なお、運用管理サーバ2は、検出した障害を通知するメッセージや検出した障害に関する情報を、運用管理サーバ2のメモリ中のデータ領域に格納することもできる。
図1では、「20.100.1.X」のように、各ノードのIPアドレスの第3オクテットまでを示しており、第4オクテットは各ノードによって異なる値に設定される。図1に示すように、動作履歴収集装置1と運用管理サーバ2を「20.100.1.X」に配置している構成は一例であって、動作履歴収集装置1や運用管理サーバ2は、ネットワーク上の任意の位置に配置することができる。また、ネットワーク装置4も、ネットワークの接続にあわせた任意のネットワーク装置を用いることができる。サーバ3は、アプリケーションサーバ、ウェブサーバ、データベースサーバ、メールサーバ、運用管理サーバなどとすることができるが他の任意のサーバとすることもできる。図1では、サーバ3aをデータサーバ、サーバ3b、3cをウェブサーバ、サーバ3d〜3hをアプリケーションサーバとしたときの例を示している。なお、図1では、サーバ3a〜3hの各サーバに対応するノード名を「ap00001」などとして記載している。
図2は、動作履歴収集装置1の構成の一例を説明する図である。動作履歴収集装置1は、CPU11、メモリ12、出入力装置13、外部記憶装置14、読み取り装置15、ネットワーク接続装置17を備える。
CPU11は、メモリ12を利用して、システムログを収集する処理を実行する。メモリ12は、例えば半導体メモリとしてもよく、RAM領域とROM領域を含んでおり、動作履歴の収集を実行するためのプログラム20や構成管理データベース31などの記憶データ30を格納する。プログラム20は、メッセージ解析モジュール21、ノード指定モジュール22、および、動作履歴収集モジュール23を含み、さらに収集履歴比較モジュール24も含むこともある。出入力装置13は、外部からのデータの入力や外部へのデータの出力に用いられる。外部記憶装置14は、例えば、ハードディスクなどであり、図2ではメモリ12に格納されているプログラム20や記憶データ30などを格納することもできる。読み取り装置15は、CPU11の指示に従って、例えばPCカードなどの半導体デバイスとして実現される可搬記憶媒体16にアクセスする。なお、可搬記憶媒体16は、磁気的作用や光学的作用により情報が出入力される任意の媒体とすることができる。ネットワーク接続装置17は、CPU11の指示により、ネットワークを介してデータを送受信する。例えば、ネットワーク接続装置17は、動作履歴収集装置1からサーバ3への要求メッセージの送信やデータの受信などを行う。
CPU11は、メッセージ解析部、ノード指定部、動作履歴収集部、および、収集履歴比較部を含む。ここで、CPU11はプログラム20を実行することにより、メッセージ解析機能、ノード指定機能、動作履歴収集機能、収集履歴比較機能を実現する。なお、後述するように、収集履歴比較部はオプションとすることができる。
メッセージ解析部は、運用管理サーバ2から動作履歴収集装置1に通知された障害通知メッセージを解析して、障害が発生しているノード(障害発生ノード)を特定する。発生ノードの特定方法については後述する。
ノード指定部は、障害発生ノードの近傍に接続されているノードに対して、異常が発生しているかの判定結果を要求し、さらに、障害発生ノードとの通信頻度が閾値以上のノードに対しても、異常が発生しているかの判定結果を要求する。また、異常が発生しているノードに対しては、発生した異常は障害発生ノードで発生した障害に起因して発生したかの判定結果も要求することができる。なお、ノード指定部は、近傍ノードなど、判定結果を要求する対象となるノードを選択する際に、適宜、構成管理データベース31を用いる。また、ノード指定部は、障害発生ノードに通信頻度が閾値以上のノードを通知するように要求する。ノード指定部は、判定結果を要求したノードから受信した応答メッセージに応じて、システムログを収集する対象のノードを決定する。ノード指定部の動作については後で詳しく述べる。また、後述するように、関連性マップテーブル33が用いられる場合、ノード指定部は、システムログの収集対象としたノードの組み合わせを発生した障害と対応付けて、関連性マップテーブル33に記録する。
動作履歴収集部は、ノード指定部でシステムログの収集対象に決定されたノードにシステムログを記録したデータの送信を要求して、システムログを収集する。収集履歴比較部は、ノード指定部が作成した調査対象ノードリスト32の内容と、関連性マップを比較する。
記憶データ30には、構成管理データベース31、調査対象ノードリスト32、関連性マップテーブル33を含めることができるが、関連性マップテーブル33はオプションとすることもできる。構成管理データベース31は、ネットワーク中のノードのIPアドレスとそのノードにつけられたノード名を一意に対応付ける情報を含む。調査対象ノードリスト32は、動作履歴に障害が含まれるかの調査の対象となるノードと、そのノードをシステムログの収集対象とするかを記録する。関連性マップテーブル33は、障害が発生したときにシステムログを収集したノードの履歴と発生した障害を対応付けて記録したテーブルである。これらのテーブルやその使用方法などは後で詳しく述べる。なお、これらのテーブルには、上記の情報のほかの情報も含めることができる。さらに、記憶データ30には、hostsファイルのようなIPアドレスとノード名の対応を記録したファイルを含めることができる。
図3は、ネットワークに含まれるサーバの構成の一例を示す図である。ネットワークに含まれるサーバは、図1の例では、サーバ3と運用管理サーバ2である。運用管理サーバ2やサーバ3は、CPU41、メモリ42、出入力装置43、外部記憶装置44、読み取り装置45、ネットワーク接続装置47を備える。メモリ42は、プログラム50や記憶データ53を格納しており、プログラム50は、異常履歴検出モジュール51と通信頻度解析モジュール52を含む。CPU41は、メモリ42を利用して動作履歴収集装置1からの要求を処理する。出入力装置43、外部記憶装置44、読み取り装置45、可搬記憶媒体46、ネットワーク接続装置47は、先に述べた出入力装置13、外部記憶装置14、読み取り装置15、可搬記憶媒体16、ネットワーク接続装置17と同様である。なお、運用管理サーバ2やサーバ3は、ネットワーク接続装置47を介して動作履歴収集装置1や他のサーバ3などと通信する。
CPU41は、異常履歴検出部と通信頻度解析部を含む。ここで、CPU41は、プログラム50を実行することにより、異常履歴検出機能と通信頻度解析機能を実現する。異常履歴検出部は、動作履歴収集装置1からの判定要求に応じて、システムログに記録されている異常を示すメッセージを検出し、メッセージが検出されたかの判定結果を動作履歴収集装置1に送信する。また、異常履歴検出部は、発生した異常が障害発生ノードで発生した障害に起因して発生したかの判定を行う場合には、その判定も行うことができる。
通信頻度解析部は、動作履歴収集装置1からの要求に応じて、通信頻度解析部が動作しているノードとの通信頻度が閾値よりも高いノードを動作履歴収集装置1に通知する。後述する実施形態では、障害発生ノードの通信頻度解析部が、障害発生ノードとの通信頻度が閾値よりも高いノードを動作履歴収集装置1に通知する。記憶データ53には、CPU41の動作などに用いられるデータや、ネットワーク中のノードのIPアドレスとノード名を対応付ける情報などを含めることができる。また、異常履歴検出部の動作に用いられる異常履歴確認フラグなどのフラグを、記憶データ53に記憶させることもできる。
<第1の実施形態>
第1の実施形態として、動作履歴収集装置1がメッセージ解析部、ノード指定部、動作履歴収集部を備える場合について述べる。また、第1の実施形態では、記憶データ30のうち構成管理データベース31と調査対象ノードリスト32は使用されるが、関連性マップテーブル33は使用されないため、関連性マップテーブル33を記憶していない動作履歴収集装置1で実施できる。この例では、システムの監視プログラムを運用管理サーバ2上で動作させており、障害に関する情報をそのソフトウェアで用いられるデータ領域に出力ログとして記録しているものとする。ここで、出力ログには、障害通知メッセージの他に、運用管理サーバ2で動作するシステム監視プログラムの実行により出力されたメッセージが含まれているものとする。
図4は、障害発生ノードの特定方法の一例を説明する図である。動作履歴収集装置1は、運用管理サーバ2から障害が発生したことを通知されると、メッセージ解析部を起動させる。メッセージ解析部は、運用管理サーバ2のデータ領域から出力ログを取得する。ここで、メッセージ解析部は、出力ログに含まれる1つのセンテンスなどの出力ログの一部分を取得することもできる。
メッセージ解析部は、障害通知メッセージに含まれる単語を予め記憶しているか、もしくは、適宜、記憶データ30から読み込むことによって取得する。例えば、障害通知メッセージに「ERROR」、「WARNING」などの単語、「ERR」などの略語があるという設定を、メッセージ解析部に用いることができる。この場合、「2009/1/10 12:00:00 ap00001 ERR APL001 インターフェイス異常が発生しました。」というメッセージを取得すると、メッセージ解析部は、「ERR」を検出することにより、障害通知メッセージを取得したと判定する。
障害通知メッセージを取得すると、メッセージ解析部は図4に示すように、障害通知メッセージを時刻やノードを特定する情報やエラーの内容を示すメッセージなどの情報の種類別に分割する。なお、メッセージ解析部が障害通知メッセージを分割する分割方法は任意に変更することができ、例えば、障害通知メッセージの全体を単語単位に分割することもできる。メッセージ解析部は、分割されたメッセージからノード名を抽出し、得られたノード名を障害発生ノードのノード名として特定する。図4の例では、障害通知メッセージに「ap00001」が含まれていることから、「ap00001」のノード名が割り当てられているサーバ3eで障害が発生したことが特定される。
また、メッセージ解析部は、記憶データ30に記憶されている情報を用いて、ノード名に対応するIPアドレスを求め、特定したノード名と共に、ノード指定部に通知する。例えば、記憶データ30のhostsファイルでは、「ap00001」のノード名が割り当てられているノードのIPアドレスが「20.100.2.1」であることが記録されているとする。すると、メッセージ解析部は、ノード指定部に「ap00001」と「20.100.2.1」を、障害発生ノードを特定する情報として通知する。
図5は、構成管理データベース31の一例を示す図である。障害発生ノードの通知を受けると、ノード指定部は、構成管理データベース31を用いて障害発生ノードの近傍に接続されているノードを検索する。図5に示す構成管理データベース31には、ノード名、IPアドレスとセグメントが記録されているが、ノード指定部は、セグメント情報を含まない構成管理データベース31を用いて隣接ノードを検出することもできる。ここでは、IPアドレスを用いて近傍ノードを検索するときのノード指定部の動作について述べる。また、この例では、障害発生ノードのIPアドレスと第1〜第3オクテットが共通するノードを近傍ノードとするものとする。
ノード指定部は、メッセージ解析部から障害発生ノードのIPアドレスを通知されると、構成管理データベース31のIPアドレスの欄を参照し、障害発生ノードと第1〜第3オクテットが共通しているIPアドレスが割り当てられたノードを近傍ノードとして抽出する。ノード指定部は、抽出したノードのIPアドレスとノード名のうちの少なくとも一方を調査対象ノードリスト32に記録して、記憶データ30に記憶する。
例えば、「20.100.2.1」というIPアドレスが割り当てられているサーバ3eが障害発生ノードとして通知されると、ノード指定部は、図5に示す構成管理データベース31のIPアドレスの欄を参照し、「20.100.2.」を含むノードを抽出する。図5の例では、ノード名がap00002、wb00001、wb00002のノードは、IPアドレスの第1〜第3オクテットが「20.100.2.」障害発生ノードと同じであるので、調査対象ノードとして記録される。なお、ここで調査対象ノードに設定されたノードは、図1のサーバ3b〜3dである。
図6に、調査対象ノードリスト32の一例を示す。図6に示すリストでは、調査対象ノードとそれらのノードのシステムログを収集するかを表すフラグが含まれている。収集対象フラグは、システムログの収集対象を識別するためのフラグで、「1」に設定されているノードはシステムログの収集の対象となる。収集対象外フラグは、システムログの収集対象ではないノードを識別するために用いるフラグで、「1」に設定されているノードはシステムログの収集対象とされない。また、収集対象フラグと収集対象外フラグの両方が「0」の場合は、システムログの収集とするかの判定が行われていないことを表す。そこで、ノード指定部は、近傍ノードなどのノード名を調査対象ノードリスト32に記録し、収集対象フラグと収集対象外フラグをいずれも「0」にセットする。
次に、ノード指定部は、調査対象ノードの異常履歴検出部に対して、システムログにエラーなどの異常が記録されているかの判定を要求する。例えば、「wb00002」については、収集対象フラグと収集対象外フラグの両方が「0」であるので、ノード指定部は、wb00002からシステムログの調査結果を受信していない。そこで、wb00002の異常履歴検出部にシステムログに異常が記録されているかの判定結果を要求する。ここで、「異常」は、例えば、運用管理サーバ2やサーバ3が正常に動作しているときには検出されない内容のログとすることができる。以下の説明では、障害発生ノード以外のサーバ3などで「ERROR」、「WARNING」などの語が記録されているログが観測されたときに、サーバ3などで異常が検出されたものとするが、「異常」と判断される事象は、実装に合わせて変更することができる。
ノード指定部は、さらに、異常履歴検出部から通知された情報に基づいて、適宜、調査対象ノードリスト32を変更する。例えば、「ap00002」の異常履歴検出部から、ap00002のシステムログ中に異常を示す記録が検出された旨の通知を受けると、ノード指定部は、システムログの収集対象のノードとしてap00002を指定する。すると、ノード指定部は、ap00002について図6に示すように、収集対象フラグを「1」、収集対象外フラグを「0」に設定する。また、「wb00001」のシステムログからは異常を示す記録が検出されなかったことを示す通知を受けると、ノード指定部は、wb00001のシステムログを収集しないことを決定する。すると、ノード指定部は、収集対象外フラグを「1」、収集対象フラグを「0」に設定する。
また、ノード指定部は、障害発生ノードとの通信頻度が閾値以上のノードを、障害発生ノードであるap00001の通信頻度解析部に要求する。通信頻度解析部は、ap00001のアクセスログを参照して、アクセスログに記録されているノードごとに通信回数を集計する。また、通信頻度解析部は、予め閾値を保持していて、その閾値と通信回数を比較し、通信回数が閾値を上回ったノードを、ノード指定部に通知する。なお、予め、通信頻度解析部が検索するアクセスログの量を制限する条件を通信頻度解析部に記憶させることもできる。例えば、障害が発生した当日のシステムログから求めた通信回数が閾値を上回ったノードをノード指定部に通知するように設定できる。また、障害発生の日からさかのぼる日数を予め通信頻度解析部に記憶させることにより、障害発生の日より前のシステムログも通信頻度解析部の解析対象とすることができる。このように、複数の日のシステムログを用いた解析を行うと、障害が発生した日に通信回数が多いノードだけでなく、他の日や日常的に障害発生ノードとの通信回数が多いノードも、システムログを収集するかの判断の対象とすることができる。
図7は、障害発生ノードとの通信頻度が閾値以上のノードを求める方法の一例を説明する図である。図7の例では、ap00001のアクセスログには、ap00010と210回、db00001と170回、ap00002と130回通信が行われていることが記録されているものとする。ここで、通信頻度解析部が保持している閾値が150回であるとすると、ap00010とdb00001が、ap00001との通信頻度が高いノードとしてノード指定部に通知される。なお、閾値は、アクセス回数以外のものにすることもできる。例えば、「障害発生ノードとのアクセス回数順にノードをリストアップしたときの上位5台」など、アクセス回数が多い順に一定の数のノードを調査対象としてノード指定部に通知するように設定することもできる。
ノード指定部は、通信頻度解析部からの通知を受けると、通知されたap00010とdb00001の2つのノードを調査対象ノードリスト32に加え、それぞれのノードがシステムログの収集対象であるかを調査する。この調査方法は、図6を参照しながら述べたのと同様の方法であり、ノード指定部は、ap00010とdb00001のそれぞれの異常履歴検出部に、システムログから異常を示すメッセージを検出できるかを問い合わせる。なお、ここで、ap00010とdb00001は、図1の3fと3aに該当する。このように、通信頻度解析部の解析結果を用いることにより、障害が発生したサーバ3eの近傍に位置するサーバ3b〜3dに加えて、サーバ3eとのアクセス回数が多いサーバ3aと3fについてもシステムログを収集する対象かを調査できる。
ノード指定部は、調査対象ノードリスト32に含まれている全てのノードについて、システムログの収集対象とするかを調査すると、収集対象に決定したノードのシステムログの収集を動作履歴収集部に要求する。調査対象ノードリスト32に記録されている各ノードの調査が終了したときに、例えばap00002、ap00010、db00001が収集対象に決定されると、動作履歴収集部はそれらのノードのシステムログを収集する。なお、ノード指定部は、調査対象ノードリスト32に記録されているノードから、システムログの収集対象とするノードを特定する度に、動作履歴収集部にシステムログの収集を要求することもできる。
以上に述べたように、本実施形態によると、動作履歴収集装置1が障害発生ノードを特定し、障害発生ノードの近傍に位置するノードと障害発生ノードとの通信頻度が閾値よりも高いノードに対して、システムログの収集対象となるかを自律的に問い合わせる。このため、ネットワーク中の各ノードについてそのノードが障害を発生したときにシステムログの収集対象とするノードを予め決定しなくても、動作履歴収集装置1が自律的に、システムログの収集対象を決定し、システムログを収集する。
さらに、動作履歴収集装置1を用いたシステムログの収集では、システムログに異常を通知するメッセージが含まれていないノードは、システムログの収集対象にはならない。従って、障害発生ノードの近傍ノードなどであっても、システムログに異常を通知するメッセージが検出されない場合には、システムログの収集対象とされない。障害の原因解析やネットワークの復旧を行うためのシステムログの解析には、障害に関連して発生した異常が検出されているシステムログを解析することが有用である。すなわち、障害と関連性のある異常が検出されていないシステムログを解析しても、障害の原因解析や障害からの復旧への有用性が低いといえる。本実施形態の動作履歴収集装置1では、システムログに異常を示すメッセージ等が含まれていないノードのシステムログを解析対象としないことにより、システムログの解析を効率的に行うことができるようにする。つまり、動作履歴収集装置1は、障害の原因解析や障害からの復旧への有用性が比較的高いと予測されるシステムログを選択的に収集することができる。
このように、システムログの収集を行うためにネットワークの調査を行わなくてもよいため、本実施形態は、大規模なネットワークや一部分が遠隔地に位置するネットワークなどであっても、動作履歴を簡便に収集することができる。さらに、システムログなどの動作履歴から異常を通知するメッセージが検出されたノードの動作履歴を収集するため、収集される動作履歴の量を制限することができる。従って、障害の発生原因の特定などのために解析する対象として有用な可能性が高い動作履歴を選択しながら、収集する動作履歴の量を制限することができ、動作履歴の解析の効率を良くすることができる。
図8は、メッセージ解析部の動作の一例を説明するフローチャートである。メッセージ解析部は、運用管理サーバ2のデータ領域に記録されている出力ログを1行取得し、「ERROR」、「WARNING」などの障害通知メッセージに含まれている語が含まれているかを確認する(ステップS1、2)。読み込んだ出力ログに「ERROR」などの語が含まれていると、メッセージ解析部は、読み込んだ出力ログは障害通知メッセージであると判定し、障害通知メッセージを単語単位に分割する(ステップS3)。次に分割したメッセージからノード名を特定し、記憶データ30に格納されているネットワーク上のノード名と比較することにより、障害発生ノードのノード名とIPアドレスを特定する(ステップS4)。障害発生ノードが特定できた場合は、メッセージ解析部は、ノード指定部を起動させて、ノード指定部に障害発生ノードのIPアドレス等を通知する(ステップS5)。メッセージ解析部は、さらに、解析していない出力ログが運用管理サーバ2に記録されているかを確認し、出力ログの解析が終了するまで、ステップS1〜S6の動作を繰り返す(ステップS6)。一方、ステップS1で読み込んだ出力ログから「ERROR」などの語が検出されない場合には、メッセージ解析部は読み込んだ出力ログのデータを破棄し、出力ログの解析が終了しているかを確認する(ステップS2、6)。
図9は、ノード指定部の動作の一例を説明するフローチャートである。なお、図9は、システムログの収集対象のノードが特定されるたびにノード指定部が動作履歴収集部にシステムログの収集を要求する動作履歴収集装置1についてのフローチャートである。ノード指定部は、調査対象ノードリスト32を初期化する(ステップS11)。障害発生ノードのIPアドレス等をメッセージ解析部から通知されると、ノード指定部は、構成管理データベース31を用いて障害発生ノードの近傍ノードを抽出し、得られた結果を調査対象ノードリスト32に記録する(ステップS12、S13)。次に、ノード指定部は、調査対象ノードリスト32に記録されているノードの異常履歴検出部に対して、そのノードのシステムログに異常が記録されているかの判定を要求し、調査対象ノードから判定結果を受信する(ステップS14、S15)。ノード指定部は、調査対象ノードから、システムログに異常が記録されている旨の通知を受けると、収集対象フラグを使って、その調査対象ノードをシステムログの収集対象に指定する(ステップS16)。さらに、ノード指定部は、動作履歴収集部に、収集対象として指定したノードのシステムログの収集を要求する(ステップS17)。一方、調査対象ノードのシステムログから異常が検出されない場合には、ノード指定部は、収集対象外フラグを用いて、その調査対象ノードのシステムログを収集しないように指定する(ステップS15、S18)。次に、ノード指定部は、障害発生ノードの通信頻度解析部に、障害発生ノードとの通信頻度が一定以上のノードを通知するように要求し、通知されたノードを調査対象ノードリスト32に加える(ステップS19、S20)。ステップS14〜S20の動作を、ノード指定部は、調査対象ノードリスト32に記録されている全てのノードに対して処理が行われるまで繰り返す。(ステップS21)。
<第2の実施形態>
第1の実施形態において、調査対象ノードのうち、システムログに異常が記録されているものをシステムログの収集対象としたが、障害に関連性の高い異常が記録されているノードをシステムログの収集対象とすることもできる。この場合には、収集されるシステムログの量を第1の実施形態よりもさらに制限することができる。第2の実施形態においても、ノード指定部、動作履歴収集部の動作は第1の実施形態で述べたのとほぼ同様である。
第2の実施形態に係る動作履歴収集装置1で動作するメッセージ解析部は、障害発生ノードを特定するときに、障害が発生した時刻を表す情報も障害通知メッセージから取得することができる。メッセージ解析部に時刻情報の表記形式を予め設定するか、記憶データ30から読み出させることにより、メッセージ解析部は、分割した障害通知メッセージから障害の発生時刻を抽出できる。メッセージ解析部は、障害の発生時刻をノード指定部に通知する。さらに、第2の実施形態では、ノード指定部は、解析などを要求するときに、異常履歴検出部や通信頻度解析部に障害の発生時刻を通知する。
図10は、第2の実施形態で用いられる異常履歴検出部が異常を検出する方法の一例を説明する図である。図10の例では、サーバ3e(ap00001)で2009年1月10日の12:00:00に障害が発生した場合について述べる。図10(a)は、障害が発生した時刻の周辺に障害発生ノードで記録されたシステムログを示す。図10(b)と図10(d)は、障害が発生した時刻の周辺に、サーバ3d(ap00002)とサーバ3c(wb00001)の各々で記録されたシステムログである。また、図10(c)と図10(e)は、障害が発生した日の前日のシステムログのうち、障害が発生した時刻と同じ時刻の周辺にサーバ3dとサーバ3cで記録された部分の例である。ここで、障害が発生した時刻の周辺のシステムログは、例えば、障害が発生した時刻の前後20分など、障害が発生した時刻を基準とした所定の時間の範囲に記録されたシステムログとすることができる。さらに、「障害が発生した時刻の15分前から障害が発生した時刻の5分後まで」など、障害が発生する前と後でシステムログの検索範囲を変更することもできる。
(1)図10(a)に示すように、ap00001で障害が発生すると、前述のように、ノード指定部は、ap00001の近傍ノードの1つであるap00002(サーバ3d)の異常履歴検出部に対して、システムログに異常が検出されているかを問い合わせる。
(2)ap00002の異常履歴検出部は、問い合わせを受けるとap00001で障害が発生した時刻(2009年1月10日の12:00:00)の周辺のシステムログを確認して、異常を示す記録があるかを判定する。図10(b)の例では、12:00:00に通信に失敗したことを示す警告が記録されている。
(3)ap00002の異常履歴検出部は、障害が発生した日の前日である2009年1月9日のシステムログについて、障害が発生した時刻と同じ時刻の周辺の記録を確認する。すると、図10(c)には、2009年1月9日の12:02:00にバッチ処理の失敗を報告するエラーが記録されている。
(4)ap00002の異常履歴検出部は、(2)と(3)で得られた結果を比較することにより、障害が発生した日のシステムログに記録されている異常であって、障害が発生する前日の同時刻やその周辺のシステムログに記録されていない異常があるかを調べる。図10(b)の12:00:00に通信に失敗したことを示す警告が記録されているのに対して、図10(c)のシステムログには同じ警告が記録されていない。そこで、異常履歴検出部は、ap00002で12:00:00に発生した通信の失敗は同時刻に定期的に発生する警告ではなく、ap00001で発生した障害に関連して発生した異常である可能性があると判断する。
(5)ap00001で発生した障害に関連して発生した異常を含むシステムログは、障害の原因解析や障害からの復旧に有用である可能性が高いため、異常履歴検出部は、ap00002をシステムログの収集の対象としてノード指定部に報告する。ノード指定部は、ap00002をシステムログの収集対象として調査対象ノードリスト32に記録し、動作履歴収集部にシステムログの収集を要求する。
(6)次に、ノード指定部は、ap00001の近傍ノードであるwb00001(サーバ3c)の異常履歴検出部に対して、システムログに異常が検出されているかを問い合わせる。
(7)wb00001の異常履歴検出部は、問い合わせを受けると2009年1月10日の12:00:00の周辺のシステムログを確認して、異常を示す記録があるかを判定する。図10(d)の例では、12:02:00にバッチ処理に失敗したことを示すエラーが記録されている。
(8)wb00001の異常履歴検出部は、障害が発生した日の前日の2009年1月9日のシステムログについて、障害が発生した時刻と同じ時刻の周辺の記録を確認する。すると、図10(e)には、2009年1月9日の12:02:00にバッチ処理の失敗を報告するエラーが記録されている。
(9)wb00001の異常履歴検出部は、(7)と(8)で得られた結果を比較することにより、障害が発生した日のシステムログに記録されている異常であり、かつ、障害が発生する前日のシステムログに記録されていない異常があるかを調べる。図10(d)と図10(e)のシステムログには、12:02:00に同じバッチ処理の失敗を報告するエラーが記録されている。そこで、異常履歴検出部は、wb00001で12:02:00に発生した通信の失敗は同時刻に定期的に発生するエラーであると判断する。すなわち、wb00001で発生したエラーはap00001で発生した障害に関連しておらず、障害の原因解析や障害からの復旧に対する有用性が低い可能性がある。なお、ここでは、図10(d)と図10(e)のいずれにも、他にエラーや警告が記録されていなかったものとする。
(10)異常履歴検出部は、wb00001はシステムログの収集の対象ではないことをノード指定部に報告する。ノード指定部は、wb00001をシステムログの収集対象外として調査対象ノードリスト32に記録する。
手順(1)〜(10)で述べたように、第2の実施形態では、障害が発生した日のシステムログだけでなく、障害が発生した日の前日のシステムログについても、障害が発生した時刻と同じ時刻に異常が発生するかを、異常履歴検出部が調べる。その結果、同時刻に定期的に発生するエラー等は、障害とは関係なく発生していると判断する。一方、障害が発生した日のシステムログに記録されている警告などであって、かつ、障害が発生した日の前日のシステムログに記録されていない警告などは、障害の発生に関係している可能性があると判断する。そして、動作履歴収集装置1は、障害の発生に関係している可能性のあるシステムログを収集することにより、第1の実施形態に比べて収集するシステムログの量を制限することができる。さらに、収集されたシステムログは、障害の発生に関連して観測されたエラーなどを含んでいる可能性が高いものであるため、第1の実施形態の動作履歴収集装置1を用いたときに比べて、障害の原因解析などのためにシステムログを解析する際の利便性も大きい。
手順(2)などで、障害が発生した時刻の周辺のシステムログを検索するとき、異常履歴検出部は、障害が発生した時刻のログの前後100行など、予め、検索する範囲を指定する情報を保持しているものとする。また、検索する範囲の指定方法は任意であり、例えば、異常履歴検出部に一定の時間範囲を記憶させておき、障害が発生した時刻を基準として、その一定の時間範囲に入る時刻に記録されたログを検索する対象とすることもできる。例えば、障害が発生した時刻の10分前から障害が発生した時刻の10分後までに観測された異常を記録したログを検索の対象とすることができる。
異常履歴検出部は、障害の発生に関連した異常がシステムログに記録されているかを確認するときに、「異常履歴確認フラグ」などのフラグを用いて手順(2)や手順(3)での検出結果を保持することもできる。異常履歴確認フラグが「1」の場合には、障害が発生した日のシステムログに、定期的に発生している異常以外の異常が含まれる可能性があることを示す。一方、異常履歴確認フラグが「0」の場合には、障害が発生した日のシステムログに含まれている異常は、過去において発生している異常であることを示す。例えば、図10を参照しながら述べた例では、手順(2)でap00002に異常が発生していることが確認されているので、異常履歴検出部は、異常履歴確認フラグを「1」に設定する。手順(4)においてap00002で発生した警告は定期的に発生する警告ではないことが確認されると、異常履歴検出部は、異常履歴確認フラグを「1」にしたままにし、ap00002がシステムログの収集対象であることをノード指定部に報告する。一方、wb00001の異常履歴検出部は、手順(7)では、異常履歴確認フラグを「1」に設定するが、手順(9)において手順(7)で検出されたエラーが定期的に観測されるものであることを確認すると、異常履歴確認フラグを「0」に変更する。
図11は、異常履歴検出部の動作の一例を説明するフローチャートである。図11を参照しながら、障害が発生した日とその前日のシステムログに加えて、障害が発生した日の前の週のシステムログも用いて、異常履歴検出部が動作する場合の例について述べる。なお、障害が発生した日のシステムログと比較する対象として、障害が発生した日の前日や前週のシステムログを用いているのは一例である。障害に関連して異常が発生しているかを確認するために用いるシステムログは、実装に応じて任意の日のシステムログとすることができる。
異常履歴検出部は、異常履歴確認フラグを初期化する(ステップS31)。次に、障害が発生した時刻の周辺のシステムログから「ERROR」や「WARNING」などの語を含むメッセージが抽出されると、異常履歴確認フラグを「1」に設定する(ステップS32〜S34)。次に、異常履歴検出部は、障害が発生した日の前の日のシステムログを参照し、障害が発生した時刻と同時刻の周辺に、抽出されたメッセージと同じメッセージが検出されるかを調べる(ステップS35)。すなわち、障害が発生した時刻の周辺のシステムログに記録されている異常と同じ異常が、障害が発生する前日から同時刻周辺に繰り返して発生している異常であるかを確認する。ステップS35の条件に該当するメッセージがシステムログに含まれていない場合、異常履歴検出部は、異常履歴確認フラグを「1」のまま保持する(ステップS36、S37)。さらに、異常履歴検出部は、障害が発生した日の一週間前のシステムログを参照し、抽出されたメッセージと同じメッセージが検出されるかを調べる(ステップS38)。すなわち、障害が発生した時刻の周辺のシステムログに記録されている異常と同じ異常が、一週間ごとに同時刻周辺に繰り返して発生する異常であるかを確認する。ステップS38の条件に該当するメッセージがシステムログに含まれていない場合、異常履歴検出部は、異常履歴確認フラグを「1」のままで保持し、そのノードをシステムログの収集対象とする(ステップS39、S40)。一方、ステップS36、S39のいずれかで、抽出されたメッセージと同じメッセージがシステムログから確認された場合、異常履歴検出部は、異常履歴確認フラグを「1」から「0」に変更する(ステップS42、43)。また、ステップS33で「ERROR」などの語を含むメッセージが抽出されない場合も、異常履歴検出部は、異常履歴確認フラグを「0」に設定する(ステップS33、S41)。異常履歴確認フラグの値が「0」であれば、異常履歴検出部は、そのノードをシステムログの収集対象としないことを、ノード指定部に報告する。
図11を参照して、近傍ノードの異常履歴検出部が動作する方法について述べたが、障害発生ノードとの通信頻度が閾値以上のノードにおいても、異常履歴検出部は同様に動作する。第2の実施形態の通信頻度解析部は、障害が発生した時刻に障害発生ノードとの通信頻度が閾値以上のノードを、調査対象ノードとしてノード指定部に通知する。
図12は、第2の実施形態で用いられる通信頻度解析部の動作の一例を説明するフローチャートである。図12の例では、通信頻度解析部は、m、n、rの3つの変数を用いて、障害発生ノードとの通信頻度が一定以上のノードを求める。mとrは、予め、通信頻度解析部に設定されているか、もしくは、通信頻度解析部が記憶データ53から読み出すことができるようにメモリ42に記憶されている。ここで、この例では、通信頻度として、アクセス数を用いるものとする。mは、通信頻度を調査する日数を示し、通信頻度解析部は、障害が発生した日を基準としてm日までさかのぼった日のシステムログから障害が発生した日のシステムログを用いて通信頻度を計算する。nは、m日分のシステムログが処理されているかを判定するために用いる変数である。rは、調査対象ノードとするかを判断するための閾値であり、通信頻度解析部は、アクセス数が上位のr台のノードを調査対象ノードとして特定する。
通信頻度解析部は、最初にnの値を「0」に初期化する(ステップS51)。次に、まず、通信頻度解析部の処理対象とする日のシステムログのうち、障害が発生した時刻と同時刻の周辺の内容から、ノードごとのアクセス数を求め、nを1だけインクリメントする(ステップS52、S53)。nとmの値を比較し、nがm以上ではない場合、通信頻度解析部の処理対象とする日のシステムログのうち、まだ処理対象となっていない日のシステムログについて、ステップS52、S53の処理を繰り返す(ステップS52〜54)。nとmの値が等しくなると、対象とするシステムログの処理が終了するので、ステップS52〜54の処理で得られた結果から、上位r台のノードを調査対象ノードとして特定する(ステップS55)。
図12に示す動作をする通信頻度解析部は、前述のとおり、システムログのうちの障害が発生した時刻の周辺の記録を検索するため、障害が発生した時刻の周辺でのアクセス数が閾値を超えたノードを検出する。障害が発生した時刻に障害発生ノードとのアクセスが多いノードでは、障害に関連して異常が発生する可能性が高い。したがって、図12の動作を行う通信頻度解析部がシステムログの収集対象として検出したノードは、障害が発生した日のシステムログ全体を用いて求めた場合に比べて、異常が発生しているノードである可能性が高くなる。なお、図12に示した動作を行う通信頻度解析部は、第1の実施形態に係る動作履歴収集装置1で用いることもできる。この場合、メッセージ解析部が障害の発生時刻を検出し、ノード指定部から障害発生ノードの通信頻度解析部に障害の発生時刻が通知される。
<第3の実施形態>
第3の実施形態では、過去に行われた収集結果を用いたシステムログの収集について述べる。第3の実施形態では、過去に収集されたシステムログと重複するシステムログの収集を避けることにより、システムログの収集量を簡便に制限することができる。
第3の実施形態に係る動作履歴収集装置1では、メッセージ解析部、ノード指定部、動作履歴収集部に加えて、収集履歴比較部が動作する。また、記憶データ30に記憶されている関連性マップテーブル33が使用される。
図13は、関連性マップテーブルの一例を表す図である。関連性マップテーブルには、関連性マップと発生キーワードが記録されている。また、関連性マップテーブルには、その他の情報を含めることもでき、図13の例では、関連例マップと発生キーワードの他に、その関連性マップが用いられた障害の最新の発生日時や障害発生ノードが記録されている。なお、発生キーワードは、障害通知メッセージに含まれるメッセージや、障害の種類を特定するための単語や文字列とすることができる。
関連性マップには、動作履歴収集装置1でシステムログなどの動作履歴を収集したときの条件が記録されている。動作履歴の収集が行われたときの条件には、動作履歴の収集が行われたノードと障害発生ノードの履歴が含まれるが、他の任意の情報を加えることもできる。関連性マップは、例えば、コード配列を固定したコードとすることができる。例えば、図1に示すネットワークでの収集履歴を記録する関連性マップは、各桁の数値を左から順に
ap00001、ap00002、wb00001、wb00002、db00001、um00001、ap00010、ap00011、ap00012
の9台のノードの状態に対応させた9桁のコードとすることができる。また、コードに記録される数値は、ノードが取りうる状態に対応させた任意の値とすることができ、
発生ノード : 2
システムログの収集対象となったノード : 1
システムログの収集対象ではないノード : 0
のように、予め設定できる。例えば、ap00001で障害が発生し、ap00002、wb00002、db00001、ap00010の4台のノードのシステムログが収集されることが調査対象ノードリスト32に記録されている場合には、「210110100」というコードとなる。
次に、収集履歴比較部が行う調査対象ノードリスト32と関連性マップの比較について述べる。収集履歴比較部は、ノード指定部から調査対象ノードリスト32と過去の収集履歴の比較を要求される。このとき、ノード指定部は、収集履歴比較部に障害発生ノードを通知するものとする。収集履歴比較部は、前述のコード配列の配列順とコードに記録される数値の種類を予め記憶しており、調査対象ノードリスト32を関連性マップの表記方法に変換して関連性マップと比較したときの適合率を求める。ここで、適合率は、例えば、収集履歴比較部が求めたコードと関連性マップが一致した桁数の全体の桁数に占める割合として以下の式から計算することができる。
適合率(%)=(値が一致した桁の数)/(関連性マップの桁数)×100
また、収集履歴比較部は、適合閾値を記憶することができる。ここで、適合閾値は、適合率を用いて過去に類似事象があるかを判断するために用いられる閾値である。以下の記載では、過去の収集履歴との適合率が適合閾値以上であり、かつ、発生した障害が同じ障害である場合を、「過去に類似事象が発生している」と記載することがある。収集履歴比較部は、過去に類似事象が発生している場合には、システムログの収集を行わないようにノード指定部に通知する。
図14は、第3の実施形態での動作履歴収集装置1の動作の一例を説明するフローチャートである。ステップS61はメッセージ解析部の動作、ステップS62、S63とS67〜S70はノード指定部の動作、S64、S65は収集履歴比較部の動作であり、S66は動作履歴収集部の動作である。図13と図14を参照しながら、第3の実施形態の動作について詳しく述べる。また、以下の例では、適合率が70%以上で、発生した障害が同じ種類であるときに、収集履歴比較部は、過去に類似事象が起こっていると判定するものとする。
さらに、図14のフローチャートと図14の説明で述べる例では、ノード指定部は複数の調査対象ノードに対してシステムログの収集対象であるかの判定結果を同時に要求することができる場合について示している。第1および第2の実施形態に係る動作履歴収集装置1においても、図14に示すのと同様に、ノード指定部は複数の対象ノードに同時に判定結果を要求し、それぞれのノードから通知された結果を同時に処理して調査対象ノードリスト32を更新できる。また、第3の実施形態に係る動作履歴収集装置1でも、後で述べるように、ノード指定部は対象ノードの1つずつに判定結果を要求することもできる。
メッセージ解析部による障害発生ノードの特定と、ノード指定部による近傍ノードの特定などは第1もしくは第2の実施形態での動作と同様とすることができる(ステップS61、S62)。ここでは、ap00001が障害発生ノード、ap00002、wb00001、wb00002が近傍ノードとして特定されたものとする。
次に、ノード指定部は、近傍ノードのそれぞれにシステムログの収集対象であるかの判定を要求し、近傍ノードから通知された判定結果に基づいて調査対象ノードリスト32を更新する(ステップS63)。システムログの収集対象であるかの判定は、前述のとおり、近傍ノードのシステムログに異常が検出されるかによって行われ、第1と第2の実施形態で述べたいずれの方法を用いてもよい。ここでは、ap00002は収集対象ノードで、wb00001とwb00002は収集対象でなかったものとする。
収集履歴比較部は、調査対象ノードリスト32の内容をコードに変換して適合率を計算する(ステップS64)。なお、ノード指定部は、収集履歴比較部に適合率の計算を要求するときに、障害発生ノードと発生キーワードを通知する。ap00001が障害発生ノードであることと近傍ノードの3台について収集対象ノードかが分かっているので、収集履歴比較部は、
2100
というコードを生成する。この4桁のコードを図13の関連性マップテーブルに記録されている関連性マップの各々と比較して適合率を計算する。項番1に記録されている関連性マップと比較すると、最初の2桁が一致するが、関連性マップは9桁あるため、適合率は22%である。次に、項番2に記録されている関連性マップと比較すると、4桁が一致するので適合率は44%である。収集履歴比較部は、同様に、他の関連性マップとの適合率も計算する。
次に、収集履歴比較部は、得られた適合率と適合閾値を比較し、さらに、発生キーワードも比較することによって、過去に類似事象が起こっているかを確認する(ステップS65)。ここでは、図13に記載されている関連性マップのいずれとも適合率は70%未満であるため、収集履歴比較部は、過去に類似事象は起こっていないと判定する。
過去に類似事象が起こっていないと判定されると、ノード指定部の要求に応じて、動作履歴収集部は、収集対象ノードのシステムログを収集する(ステップS66)。ここで、動作履歴収集部は、システムログを一時ファイルとして記憶データ30に格納することもできる。
ノード指定部は、障害発生ノードに、障害発生ノードとの通信頻度が閾値を超えているノードの通知を要求し、障害発生ノードからの通知に応じて調査対象ノードリスト32を更新する(ステップS67、S68)。この動作は、第1の実施形態で述べたノード指定部や通信頻度解析部の動作と同様である。
次に、ノード指定部は、調査対象ノードリスト32に記録されているノードのうち、収集対象とするかの判定が行われていないノードがあるかを判断する(ステップS69)。この判断手法は、第1の実施形態で述べたとおりの手法とすることができる。ここでは、障害発生ノードとの通信頻度が閾値以上であったノードについては、判定が行われていないため、ステップS63に戻る。
ステップS63での判定の結果、再度調査対象ノードリスト32が変更される。ここで、ap00010とap00011が収集対象ノードとして検出され、他のノードは収集対象とならなかったとする。すると、ステップS64で収集履歴比較部は、
210000110
というコードを生成する。すると、ステップS65で収集履歴比較部は、得られたコードが項番2に記録されている関連性マップと88%の適合率であることを算出し、発生キーワードを比較する。
ノード指定部から通知された発生キーワードが「APL002」である場合は、項番2に記録されている発生キーワードと一致するので、収集履歴比較部は、過去に類似事象があると判断し、システムログの収集を終了する(ステップS65)。このとき、適宜、ステップS66で生成された一時ファイルなどを削除するように設定することもできる。
一方、発生キーワードが項番2に記録されている発生キーワードと一致しない場合には、過去に類似事象が起こっていないと判断され、ステップS66〜S68の処理を繰り返す(ステップS65〜S68)。調査対象ノードリスト32に記録されているノードで判定されていないノードがない場合には、ノード指定部は、調査対象ノードリスト32の内容をコードに変換し、関連性マップテーブル33に記録する(ステップS70)。なお、ノード指定部は、収集履歴比較部に変換したコードを要求し、収集履歴比較部から通知されたコードを関連性マップテーブル33に記録することもできる。
図15は、収集履歴比較部の動作の一例を説明するフローチャートである。収集履歴比較部は、調査対象ノードリスト32が更新されるまで待機する(ステップS81、S82)。調査対象ノードリスト32が更新されると、収集履歴比較部は、その内容をコードに変換し、関連性マップテーブル33に記録されている関連性マップとの適合率を計算する(ステップS83)。適合閾値以上(t%)の適合率があると、その関連性マップに対応付けられた発生キーワードと、ノード指定部から通知された発生キーワードが一致するかを確認する(ステップS84、S85)。両者の発生キーワードが一致すると、収集履歴比較部は、過去に類似事象があったと判断して、ノード指定部にその旨を通知する(ステップS87)。一方、発生キーワードが不一致の場合は、収集履歴比較部は、過去に類似事象がないと判断し、その旨を通知する(ステップS86、S88)。また、適合率が適合閾値未満の場合も、収集履歴比較部は、過去に類似事象がないと判断し、その旨を通知する(ステップS84、S88)。なお、図15に示した動作は収集履歴比較部の動作の一例である。例えば、S81とS82を変更することよって、収集履歴比較部が適合率を計算する条件を変更できるなど、収集履歴比較部の動作を変形することができる。
図16は、ノード指定部の動作の一例を説明するフローチャートである。ここで、図16の動作をするノード指定部が備えられている動作履歴収集装置1では、収集履歴比較部の動作が図15のフローチャートから変形されている。この動作履歴収集装置1に含まれる収集履歴比較部は、ステップS81とS82で調査対象ノードリスト32が更新されているかを確認せず、ノード指定部から過去事象があるかの問い合わせを受けたかを確認する。すなわち、収集履歴比較部は、ノード指定部から類似事象があるかの問い合わせを受けると、過去に類似事象が起こっているかを確認する。また、図16では、ノード指定部は、システムログに異常が検出されたかの判定要求は、1回に1つの調査対象ノードに対して行う場合の例について述べる。
ステップS91〜S93では、図9のステップS11〜S13の動作として説明した動作と同様に、調査対象ノードリスト32の初期化や近傍ノードの記録などが行われる。ノード指定部は、調査対象ノードリスト32に記録されたノードの1つに、システムログに異常を示すメッセージが記録されているかの判定を要求する(ステップS94)。次に、ノード指定部は、収集履歴比較部に、過去に類似事象が発生しているかを問い合わせる(ステップS95)。収集履歴比較部は、図15のステップS83〜S88に述べた方法で過去に類似事象があったかを確認して、結果をノード指定部に通知する。類似事象が無く、判定を要求されたノードで異常を示すメッセージが検出されたことが通知されると、ノード指定部は、異常を示すメッセージが検出されたノードについて収集対象フラグを立てる(ステップS96〜S98)。さらに、ノード指定部は、収集対象フラグを立てたノードについてのシステムログの収集を動作履歴収集部に要求する(ステップS99)。一方、類似事象は無く、判定を要求されたノードでシステムログに異常を示すメッセージが検出されなかったことが通知されると、ノード指定部は、通知を受けたノードについて収集対象外フラグを立てる(ステップS96、S97、S100)。
次に、ノード指定部は、障害発生ノードに対して、障害発生ノードとの通信頻度が閾値を超えているノードの通知を要求し、通知されたノードを調査対象ノードリスト32に記録する(ステップS101、S102)。ノード指定部は、調査対象ノードリスト32に記載されているノードのうち、収集対象とするかの判定が行われていないノードがあるかを確認し、判定が行われていないノードがある場合は、ステップS94〜S103の処理を繰り返す。一方、調査対象ノードリスト32に記載されているノードがいずれも収集対象となるかの判定を行っている場合には、関連性マップテーブル33を更新して終了する(ステップS103、S104)。
さらに、ステップS96で、収集履歴比較部によって過去に類似事象が発生したことを通知されたときには、システムログの収集を中断し、収集ずみのシステムログや作成した一時ファイルなどを削除する(ステップS96、S105)。その後、ノード指定部は、関連性マップテーブル33を更新する(ステップS104)。この場合の関連性マップテーブル33の更新は、例えば、関連性マップテーブル33の最新発生時刻の変更とすることができる。なお、先に図14を参照しながら述べたように、類似事象が発見された場合には関連性マップテーブル33の更新を行わないようにすることもできる。
このような実施形態とすることにより、過去に類似した事象が起こっているシステムログが重複して収集されることを避けることができる。また、動作履歴収集装置1は、過去にシステムログの収集対象となったノードと、システムログの収集対象としようとするノードの比較などを行うことにより、システムログを重複して収集することを自律的に回避する。従って、本実施形態によると、システムログの収集対象のノードやシステムログを収集する条件を、オペレータなどが障害発生ノード別に求めることなく、簡便にシステムログを収集することができる。
<その他>
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
以上の説明では、IPアドレスの第1〜第3オクテットが共通するノードを検索することにより、近傍ノードを求める方法について述べたが、近傍ノードは、共通のセグメント中のノードとすることもできる。図5に示したように、構成管理データベース31において、各ノードが属するセグメントを記録している場合には、障害発生ノードと同一のセグメントに属するノードを近傍ノードとすることができる。この場合、ノード指定部は、メッセージ解析部から通知された障害発生ノードのIPアドレスをキーとして、障害発生ノードの属するセグメントを特定する。さらに、ノード指定部は、構成管理データベース31のセグメントの欄を検索し、障害発生ノードと同一のセグメントに属するノードを近傍ノードとして指定する。例えば、ap00001が障害発生ノードであると、ノード指定部は、ap00001と同一セグメントに属するap00002、wb00001、wb00002を近傍ノードとする。このように、セグメントに応じて近傍ノードを指定すると、第1〜第3オクテットが異なるノードであっても近傍ノードとして指定することができる。そこで、例えば、同一のセグメントに256台以上のノードが属している場合や、同一のセグメントにIPアドレスの第1〜第3オクテットが異なるノードが混在している場合などでも、ノード指定部は、近傍ノードを指定することができる。
また、近傍ノードを障害発生ノードと同一のサブネットに属するノードとすることもできる。この場合、ノード指定部は、サブネットの設定を知るために、予めネットマスクを記憶しているか、記憶データ30から読み出す。次に、メッセージ解析部から障害発生ノードを通知されると、ノード指定部は、障害発生ノードと同一のサブネットに属するノードを構成管理データベース31から抽出する。例えば、図1に示すネットワークでap00001が障害発生ノードであるとする。ネットマスクが「255.255.255.0」である場合、ノード指定部は構成管理データベース31を確認し、第1〜第3オクテットがap00001と同じ「20.100.2.」であるap00002、wb00001、wb00002を近傍ノードとする。一方、ネットマスクが「255.255.0.0」である場合、ノード指定部は、第1および第2オクテットがap00001と同じ「20.100.」であるノードを近傍ノードとする。すると、ap00002、wb00001、wb00002に加えて、db00001とum00001を近傍ノードとする。
さらに、ノード指定部は、ホップ数を用いて近傍ノードを指定することもできる。ノード指定部は、ホップ数による判定では、ネットワーク装置4で区切られたネットワークの境界の数に応じてホップ数を決定する。このとき構成管理データベース31において、各ノードやネットワーク装置4を収容するネットワーク装置4を各ノードなどに対応付けて記録することができる。例えば、ap00001が障害発生ノードでホップ数が1のノードを近傍ノードとするとき、ネットワーク装置4bに収容されているノードが近傍ノードとなる。またホップ数が2の場合には、ノード指定部は、ネットワーク装置4bなどを収容しているネットワーク装置は4aであることを求め、ネットワーク装置4aに収容されているノードを近傍ノードとして指定する。
第3の実施形態の説明では、関連性マップを使用したときの収集履歴の記録について述べたが、収集履歴の記録方法は関連性マップの作成には限られない。例えば、障害発生ノードや収集対象となったノードのノード名などを記録したリストなどの形で、収集が行われたときの条件を記録することもできる。
また、以上の説明では、通信頻度解析部は、通信頻度をアクセス数として求める場合について述べたが、一定時間でのアクセス数として通信頻度を求めることもできる。かかる場合には、通信頻度解析部は、予め、アクセス数を求める時間範囲を記憶しているか、ノード指定部から指定される。
さらに、第1および第3の実施形態において、第2の実施形態と同様に、障害が発生した時刻を基準とした所定の時間の範囲のシステムログを検索するように異常履歴検出部を変形することもできる。
上述の各実施形態に対し、さらに以下の付記を開示する。
(付記1)
ネットワークで障害が発生したことを通知するメッセージを解析して、前記障害が発生した障害発生ノードを特定する解析手段、
前記障害発生ノードの近傍ノードと、前記障害発生ノードとの通信頻度が所定の閾値より大きいノードを表すアクセスノードとに対して、各々のノードの動作履歴に異常が検出されるかの判定を要求する判定要求を送信し、前記判定要求を受けたノードの動作履歴に前記異常が検出されたことを示す異常検出メッセージを受信すると、前記異常が検出されたノードを、前記動作履歴の取得対象のノードに指定するノード指定手段、
前記ノード指定手段で指定されたノードの前記動作履歴を収集する動作履歴収集手段
を備えることを特徴とする動作履歴収集装置。
(付記2)
前記ノード指定手段は、前記障害が発生した時刻を基準とした所定の時間の範囲に前記異常が検出されるかの判定を要求する
ことを特徴とする付記1に記載の動作履歴収集装置。
(付記3)
前記ノード指定手段は、前記近傍ノードおよび前記アクセスノードに対して、前記障害が発生した時刻を基準とした所定の時間の範囲に記録された異常が、前記障害に関連した異常であるかの判定をさらに要求し、
前記記録された異常が前記動作履歴に定期的に記録されていない場合に、前記異常を検出したノードは、前記判定要求への返信として前記異常検出メッセージを送信する
ことを特徴とする付記1乃至2に記載の動作履歴収集装置。
(付記4)
前記近傍ノードおよび前記アクセスノードは、前記障害が発生した日より前の日の前記異常が発生した時刻と同じ時刻を基準とした時間範囲に、前記異常が検出されていない場合、前記異常が前記障害に関連した異常であると判定する
ことを特徴とする付記3に記載の動作履歴収集装置。
(付記5)
第1の障害の発生に起因して前記動作履歴が収集されたノードを、収集履歴として記録する収集履歴記録手段と、
第2の障害の発生に起因して前記異常検出メッセージを送信したノードと前記収集履歴に含まれるノードの一致率を算出する比較手段をさらに備え、
前記動作履歴収集手段は、前記一致率が所定の割合より小さい場合に、前記ノード指定手段で指定されたノードの動作履歴を収集する
ことを特徴とする付記1乃至4に記載の動作履歴収集装置。
(付記6)
前記メッセージ解析手段は、前記ネットワークで発生した前記第1および第2の障害の種類を特定し、
前記収集履歴記録手段は、前記収集履歴を、前記第1の障害の種類と関連付けて記録し、
前記動作履歴収集手段は、前記一致率が所定の割合より小さく、かつ、前記第1の障害と前記第2の障害が一致しない場合に、前記第2の障害の発生に起因して前記ノード指定手段で指定されたノードの動作履歴を収集する
ことを特徴とする付記5に記載の動作履歴収集装置。
(付記7)
ネットワークに含まれるノードの履歴を収集する履歴収集ノードは、前記ネットワークで障害が発生したことを通知するメッセージを解析して、前記障害が発生した障害発生ノードを特定し、
前記履歴収集ノードは、前記障害発生ノードの近傍ノードと、前記障害発生ノードとの通信頻度が所定の閾値より大きいノードを表すアクセスノードとに対して、各々のノードの動作履歴に異常が検出されるかの判定を要求する判定要求を送信し、
前記判定要求を受けたノードの前記動作履歴に異常が検出されたことを示す異常検出メッセージを受信すると、前記異常が検出されたノードを、前記動作履歴の取得対象のノードに指定し、
前記指定されたノードで記録された動作履歴を収集する
ことを特徴とする動作履歴収集方法。
(付記8)
ネットワークに含まれるコンピュータを、
前記ネットワークで障害が発生したことを通知するメッセージを解析して、前記障害が発生した障害発生ノードを特定するメッセージ解析手段、
前記障害発生ノードの近傍ノードと、前記障害発生ノードとの通信頻度が所定の閾値より大きいノードを表すアクセスノードとに対して、各々のノードの動作履歴に異常が検出された場合に異常検出メッセージを送信することを要求する要求メッセージを送信する送信手段、および、
前記異常検出メッセージを受信すると、前記異常検出メッセージを送信したノードで記録された動作履歴を収集する動作履歴収集手段
として機能させることを特徴とする動作履歴収集プログラム。