(57)【要約】【課題】  大量のメッセージから対処が必要な異常を示すメッセージを正確に検出するメッセージ異常自動判別装置、方法、及びプログラムを提供する。【解決手段】  上記課題を解決するために、メッセージ異常自動判別装置１は、メッセージを収集するメッセージ収集部２と、収集したメッセージからパターンを抽出する学習部３と、通常パターンを記憶する通常パターン記憶部４と、収集したメッセージと通常パターンとを照合してメッセージ異常を検出する照合部５と、異常をディスプレイ９等に出力する警告部６と、通常パターンに関する定義データを格納する定義部７と、を備える。【選択図】図１
2006318071.tif 000002
【特許請求の範囲】
【請求項１】
分散システムで生成されたメッセージを収集するメッセージ収集処理と、
前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージの発生回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを記憶する通常パターン記憶手段を参照し、前記メッセージ収集処理で収集したメッセージの識別子と一致する識別子を検索し、該当する識別子が存在する場合には該識別子が示すメッセージの発生回数をカウントし、該発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断する照合処理と、
を情報処理装置に行なわせることを特徴とするメッセージ異常自動判別のためのプログラム。
【請求項２】
前記通常パターンは、
所定の規則に応じて分類した日付を示す複数の曜日等データと、
該曜日等データが示す日付若しくは該日付の所定の時間を任意に分割して得る時間帯を示す複数の時間帯データと、
該時間帯データが示す時間帯における前記メッセージ情報データと、
で構成されることを特徴とする付記１４に記載のメッセージ異常自動判別のためのプログラム。
【請求項３】
前記メッセージ情報データは、
所定の階層数の階層を有する木構造であり、
前記照合処理は、
前記メッセージ収集処理で収集したメッセージの識別子と一致する識別子を、前記照合処理が前回発生回数をカウントしたメッセージ情報データを起点とし、該起点の直下の階層のメッセージ情報データの識別子から検索する、
ことを特徴とする付記１４に記載のメッセージ異常自動判別のためのプログラム。
【請求項４】
前記照合処理が異常と判断したメッセージを出力する警告処理、を更に情報処理装置に行なわせることを特徴とする付記１４に記載のメッセージ異常自動判別のためのプログラム。
【請求項５】
分散システムで生成されたメッセージを収集するメッセージ収集部と、
前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージの発生回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを記憶する通常パターン記憶部と、
該通常パターン記憶部に格納された前記通常パターンを参照し、前記メッセージ収集部で収集したメッセージの識別子と一致する識別子を検索し、該当する識別子が存在する場合には該識別子が示すメッセージの発生回数をカウントし、該発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断する照合部と、
を備えることを特徴とするメッセージ異常自動判別装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の情報処理装置等からなる分散システムにおいて発生するメッセージの異常を検出するメッセージ異常自動判別装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
近年の情報処理システムは、所定の機能を実現するために複数の情報処理装置やソフトウェア等が相互に連携して動作する分散システムの形態を採用することが多い。
分散システムの場合、分散システムを構成する情報処理装置若しくは情報処理装置を構成する各ハードウェアやソフトウェアから様々なメッセージが大量に出力されるため、これらのメッセージを収集して１つのコンソールに表示する機能が提供される。
【特許文献１】特開２００１−２９２１４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、分散システムから出力されるメッセージは、大量であるためコンソールに表示されたとしても、どのメッセージが本当に重要なのか分かりにくいという問題がある。
特許文献１には、障害メッセージの特徴が予め登録されたパターンファイルを監視手段に備え、運転状況メッセージとパターンファイルの個々のパターンとを比較して障害メッセージか否かを判別する障害検出システムについて開示されている。
【０００４】
しかし、現状の運用管理ツールには、重要でないメッセージをフィルタリングする機能があるが、どのメッセージを出力し、どのメッセージを出力しないかという定義（フィルタリング定義）は、メッセージ毎に手動で行なう必要がある。メッセージの種類が大量にある上、どれが重要かという判断が難しく、実際の定義は困難である。
【０００５】
また、通常、メッセージには、その重要度を示す重要度コード（３段階の場合には、「情報レベル」、「警告レベル」、「重大レベル」など）が付加されるのが一般的であるが、同一のメッセージであっても、システム環境（システム接続形態／運用形態等）によって、その重要性が異なる場合がある。
【０００６】
例えば、「ＨＴＴＰサービスを停止しました」という「情報レベル」のメッセージは、夜間の業務終了時の意図的な停止時には問題ないが、通常運用時に出力された時には、オペミス（操作ミス）か何らかの障害であり、緊急に対処しなければならない重大メッセージである。
【０００７】
さらに、１つのメッセージのみでは、その本当の重要性が分からず、複数メッセージのパターンで判断する必要がある場合がある。
例えば、以下の３つのメッセージ
（Ａ）「送信要求が異常復帰」、
（Ｂ）「再送に成功」、
（Ｃ）「ネットワーク通信遅延」、
について、メッセージ（Ａ）−（Ｂ）の順に出力された場合は、特に対処の必要がない。しかし、メッセージ（Ａ）−（Ｃ）の順で出力され、メッセージ（Ｂ）が出力されない場合は、何らかの異常があるとみなし、調査の必要があると考えられる。また、メッセージ（Ａ）−（Ｂ）のパターンでも、短時間に大量に出力された場合には、何らかの異常があると考えられ、調査の必要がある。
【０００８】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、フィルタリング定義等の特別な設定をすることなく、大量のメッセージから対処が必要な異常を示すメッセージを正確に検出するメッセージ異常自動判別装置、方法、及びプログラムを提供することである。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明に係るメッセージ異常自動判別装置は、分散システムで生成されたメッセージを収集するメッセージ収集部と、前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージの発生回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを記憶する通常パターン記憶部と、該通常パターン記憶部に格納された前記通常パターンを参照し、前記メッセージ収集部で収集したメッセージの識別子と一致する識別子を検索し、該当する識別子が存在する場合には該識別子が示すメッセージの発生回数をカウントし、該発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断する照合部と、を備える。
【００１０】
本発明によると、照合部が、メッセージ収集部が収集したメッセージと、分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせである通常パターンと、を照合し、該当するメッセージの発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断するので、分散システムが正常に運用された場合に生成されるメッセージ及び連続したメッセージの組み合わせと異なるメッセージを、対処が必要な異常を示すメッセージとして検出することが可能となる。
【００１１】
さらに、本発明に係るメッセージ異常自動判別処理は、前記分散システムで生成されたメッセージを収集するメッセージ収集処理と、前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージの発生回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを記憶する通常パターン記憶手段を参照し、前記メッセージ収集処理で収集したメッセージの識別子と一致する識別子を検索し、該当する識別子が存在する場合には該識別子が示すメッセージの発生回数をカウントし、該発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断する照合処理と、を情報処理装置に行なわせるメッセージ異常自動判別方法、又はメッセージ異常自動判別のためのプログラムによって実現することが可能である。
【発明の効果】
【００１２】
以上のように、本発明によると、フィルタリング定義等の特別な設定をすることなく、大量のメッセージから対処が必要な異常を示すメッセージを正確に検出するメッセージ異常自動判別装置、方法、及びプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態について図１〜図１２に基づいて説明する。
図１は、本発明に係る実施例の全体の構成例を示す図である。
図１に示すメッセージ異常自動判別装置１は、分散システム８が出力するメッセージを収集するメッセージ収集部２と、メッセージ収集部２で収集したメッセージからパターンを抽出する学習部３と、学習部３で抽出したパターン（以下、「通常パターン」という）を記憶する通常パターン記憶部４と、メッセージ収集部２で収集したメッセージと通常パターン記憶部４に格納されている通常パターンとを照合してメッセージ異常を検出する照合部５と、照合部５で検出した異常をディスプレイ９等に出力する警告部６と、通常パターンに関する定義データが格納されている定義部７と、を備えている。
【００１４】
ここで、分散システム８は、複数のサーバ１０やストレージ１２をネットワーク１１等で接続してなるシステムであり、各サーバ１０を構成するハードウェア、ＯＳ、ミドルウェア、及びアプリケーション等やストレージ１２から直接又はネットワーク１１等を介してメッセージ収集部２にメッセージが出力される。
【００１５】
メッセージ収集部２は、分散システム８からのメッセージを収集して、学習モード時には学習部３に出力し、運用モード時には照合部５に出力する。
学習部３は、定義部７を参照して連続メッセージの最大数（以下、「最大メッセージ数」という）を取得する。そして、メッセージ収集部２から送られるメッセージについて、１から最大メッセージ数までの組み合わせパターン（通常パターン）を抽出すると共に、通常パターンを構成する各メッセージの出現回数（この時の出現回数を「合計回数」という）をカウントする。
【００１６】
そして、検出した通常パターンと合計回数を、通常パターン記憶部４の所定のアドレスに記憶する。
一方、照合部５は、通常パターン記憶部４を参照し、メッセージ収集部２から送られるメッセージに該当する通常パターンを検索する。そして、該当する通常パターンがある場合には、当該メッセージの出現回数（この時の出現回数を、「発生回数」という）をカウントする。さらに、当該メッセージの平均回数（合計回数を学習回数で除した値）を参照し、発生回数と定義部７の定義に基づいて当該メッセージが異常であるか否かを判別する。
【００１７】
警告部６は、照合部５からのメッセージ異常を検出した旨の通知に応じて、ディスプレイ９への表示、所定の電話番号への通報、所定のメールアドレスへのメール送信等によって警告を行なう。
【００１８】
以上に説明したように、本実施例に係るメッセージ異常自動判別装置１は、学習モードと運用モードの２つのモードを備える。
また、図１に示した本実施例に係るメッセージ異常自動判別装置１には、分散システム８を構成する各サーバ１０（サーバ１０を構成するアプリケーション、ミドルウェア、ＯＳ、及びハードウェア）から直接メッセージ収集部２がメッセージを収集する場合について示されているが、サーバ１０からネットワーク１１を介してメッセージを収集してもよいのは当然である。
【００１９】
なお、本実施例に係るメッセージ異常自動判別装置１は、一般的な情報処理装置によって実現することが可能である。
図２は、本実施例に係るメッセージ異常自動判別装置１の構成例を示している。
【００２０】
図２に示すメッセージ異常自動判別装置１は、メッセージ異常自動判別装置１を構成する各構成要素を制御すると同時に、プログラムに記載された命令に従って学習部３や照合部５等の処理を実行するＣＰＵ２０と、ＣＰＵ２０の処理に必要なデータを一時的に格納するメモリ２１と、プログラムや通常パターン等を記憶する外部記憶装置２２と、ネットワーク１１を介して分散システム８と接続するためのネットワーク接続装置２３と、各装置間でデータを送受信するためのバス（データバス）２４と、を少なくとも備えている。
【００２１】
また、図２に示すメッセージ異常自動判別装置１は、ＣＰＵ２０に対して学習モードと運用モードとを切換えを指示する等の入力処理や、専用線等を利用してサーバ１０から直接メッセージを収集するための入力装置２５と、警告部６で出力するメッセージをディスプレイ９に表示するための出力装置２６と、フレキシブルディスクやＣＤ−ＲＯＭ等の可搬記憶媒体２７を駆動するための媒体駆動装置２８と、を更に備えている。
【００２２】
以上に説明したよう、図１に示した構成するメッセージ収集部２、学習部３、照合部５、及び警告部６は、プログラムに記載された命令をＣＰＵ２０が実行することによって実現することが可能である。また、通常パターン記憶部４及び定義部７は、メモリ２１又は外部記憶装置２２によって実現することが可能である。
【００２３】
なお、本実施例に係るメッセージ異常自動判別装置１の処理の主体は、ＣＰＵ２０であるが、以下、説明を簡単にするためにＣＰＵ２０が実現する処理部（例えば、メッセージ収集部２、学習部３、照合部５等）を処理の主体として説明する。
【００２４】
以下、図３〜図７に基づいて本実施例に係るメッセージ異常自動判別装置１の処理の概要について説明し、図８Ａ〜図１２に基づいてより詳細なメッセージ異常自動判別装置１の処理を説明する。
【００２５】
図３は、本実施例に係るメッセージ異常自動判別装置１の学習モード時の処理の概要を示すフローチャートである。
ステップＳ３０１において、分散システム８を構成するサーバ１０若しくはサーバ１０を構成するハードウェア、ＯＳ、ミドルウェア、及びアプリケーション、ネットワーク１１、ストレージ１２（ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）等を含む）が、例えば、ネットワーク通信が不能となる等を検出すると、メッセージを生成する。
【００２６】
分散システム８においてメッセージが発生すると、メッセージ異常自動判別装置１のメッセージ収集部２は、メッセージが発生した装置からメッセージを収集する。そして、学習部３に当該メッセージを通知（送信）する（ステップＳ３０２）。
【００２７】
学習部３は、メッセージ収集部２から送られたメッセージから通常パターンを抽出すると共に、通常パターンを構成するメッセージの発生回数をカウントし、当該通常パターンを通常パターン記憶部４に格納する（ステップＳ３０３）。
【００２８】
図４は、本実施例に係るメッセージ異常自動判別装置１の運用モード時の処理の概要を示すフローチャートである。
ステップＳ４０１において、分散システム８からメッセージが発生すると、メッセージ収集部２は、処理をステップＳ４０２に移行してメッセージの収集処理を開始する。
【００２９】
そして、分散システム８からのメッセージを収集すると共に、照合部５に収集したメッセージを通知（送信）する。
メッセージ収集部２からメッセージを受信すると、照合部５は、処理をステップＳ４００３に移行する。そして、通常パターン記憶部４に記憶されている通常パターンを参照して、メッセージ収集部２から送られるメッセージに該当するメッセージが存在するか否かのチェックを行なう。
【００３０】
そして、ステップＳ４０４において、該当するメッセージが存在し、かつメッセージ異常を検出しない場合には、ステップＳ４０９に処理を移行して正常に終了する。
また、ステップＳ４０４において、該当するメッセージが存在しない、又は、メッセージ異常を検出した場合には、処理をステップＳ４０５に移行して、既に警告済みのメッセージ異常であるか否かをチェックする。警告済みの場合には、処理をステップＳ４０９に移行して正常終了し、警告済みでない場合には、処理をステップＳ４０６に移行する。
【００３１】
そして、ステップＳ４０６において、照合部５は、運用管理者等の設定によって警告抑止されているか否かをチェックする。警告抑止の設定がされている場合には、処理をステップＳ４０９に移行して正常終了し、警告抑止の設定がされていない場合には、ステップＳ４０３で検出したメッセージ異常の情報を警告部６に通知して処理をステップＳ４０７に移行する。
【００３２】
ステップＳ４０７において、警告部６は、照合部５から通知されたメッセージ異常を、ディスプレイ９に表示、所定の電話番号に電話で通報、又は、所定のアドレスにメールで通報する。
【００３３】
そして、以後の当該警告を抑止するか否かの問い合せをディスプレイ９に表示して、運用管理者等に警告抑止の設定を促す。運用管理者等によって当該設定が完了すると、処理をステップＳ４０９に移行して終了する。
【００３４】
なお、ステップＳ４０５において、メッセージ異常を検出したメッセージが警告済みか否かは、例えば、既に警告済みのメッセージを外部記憶装置２３に格納しておき、メッセージ異常を検出したメッセージと照合することによって判断すればよい。
【００３５】
また、ステップＳ４０６における警告抑止の設定は、例えば、警告抑止をするメッセージ毎のフラグを外部記憶装置２３に格納し、メッセージ異常を検出したメッセージと照合することによって判断すればよい。
【００３６】
図５は、本実施例に係るメッセージ異常自動判別装置１の学習部３が生成する通常パターンの構成例を示す図である。
図５に示す通常パターンは、曜日や祝日、月末日等を示す曜日等データ５０と、各曜日等データ５０の時間帯を示す時間帯データ５１と、各時間帯データ５１が示す時間帯にメッセージ収集部２が収集したメッセージに関する情報を格納する木構造のメッセージ情報データ５２と、で構成されている。
【００３７】
さらに、曜日等データ５０、時間帯データ５１、及び各階層のメッセージ情報データ５２の格納位置（アドレス）を示す曜日等ポインタ５３、時間帯ポインタ５４、及びメッセージ情報ポインタ５５を備えている。
【００３８】
なお、以下の説明において、例えば、メッセージ情報データ５２（ｍ）ａは、第ｍ階層の特定のメッセージ情報データ５２を示す（ｍは整数）。また、メッセージ情報データ５２（ｍ）は、第ｍ階層の任意のメッセージ情報データ５２を示す。
【００３９】
また、例えば、メッセージ情報ポインタ５５（ｎ）は、第ｎ階層のメッセージ情報ポインタ５５を示す（ｎは整数）。
曜日等データ５０は、曜日や日曜祝日、月末（以下、「曜日等」という）を定義する。したがって、各曜日データ５０ａ〜５０ｎには、曜日等を示すデータが格納される（例えば、月曜日を示す曜日等データ５０ａや日曜祝日を示す曜日等データ５０ｎ）。
【００４０】
時間帯データ５１は、時間帯を定義すると共に、学習回数を示すデータを備える。
時間帯は、１日又は分散システム８の運用時間を所定の時間で分割した時間帯を定義する。図５に示す時間帯データ５１は、１日を３０分間隔で分割した時間帯「ＡＭ８：００〜８：３０」の時間帯データ５１ａと時間帯「ＡＭ８：３０〜９：００」の時間帯データ５１ｂを示している。
【００４１】
また、学習回数は、学習モード時に当該時間帯で学習を行なった回数を示している。例えば、曜日等データ５０ａ配下の時間帯データ５１ａに示す学習回数「２」は、「月曜日のＡＭ８：００〜８：３０」の時間帯での学習を２回実施したことを示している。
【００４２】
メッセージ情報データ５２は、メッセージから生成する識別子と、学習モード時にメッセージ収集部２が収集したメッセージの合計回数と、合計回数と学習回数から算出する平均回数と、運用モード時におけるメッセージ収集部２が収集したメッセージの発生回数と、を備える。
【００４３】
また、メッセージ情報データ５２は、各時間帯データ５１で定義された時間帯にメッセージ収集部２が収集したメッセージのパターンに応じた木構造を有し、定義部７で定義される最大連続メッセージ数だけ階層構造が生成される（例えば、定義部７で定義される最大連続メッセージ数が３の場合には、階層構造も３層となる）。
【００４４】
例えば、時間帯データ５１ａ配下のメッセージ情報データ５２（１）ａは、当該時間帯における２回の学習で、当該メッセージを４回検出したことを示している。また、その平均回数は２回（＝合計回数４回／学習回数２回）となる。
【００４５】
また、このメッセージ情報データ５２（１）ａは、発生回数が３であることから、運用モード時に当該メッセージを３回検出していることを示している。
曜日等ポインタ５３及び時間帯ポインタ５４には、メッセージ異常自動判別装置１が有するタイマー機能等から取得した現在の曜日等及び時刻に対応する特定の曜日等データ５０及び時間帯データ５１の格納位置（アドレス）が格納される（以下、この処理を「位置づける」という）。
【００４６】
また、メッセージ情報ポインタ５５は、各階層に１つ設けられ、各階層において、最後に検出したメッセージのメッセージ情報データ５２を位置づける。
ここで、図５に示した通常パターンは木構造となっているので、曜日等データ５０は、各曜日等データ５０配下の時間帯データ５１へのポインタを備え、時間帯データ５１は、各時間帯データ５１配下のメッセージ情報データ５２（第１階層）へのポインタを備え、メッセージ情報データ５２は、各メッセージ情報データ５２配下のメッセージ情報データ５２へのポインタを備えている。
【００４７】
ただし、図５に示した構造に限定する趣旨ではない。例えば、曜日等データ５０及び時間帯データ５１を、曜日等と曜日等に対応する時間帯とのデーブル構造にし、メッセージ情報データ５２のみ木構造の構成としてもよい。
【００４８】
図６は、本実施例に係るメッセージデータの構成例を示す図である。
図６に示すメッセージデータは、リソース名とメッセージ識別子とからなるヘッダ（以下、単に「識別子」という）と、メッセージデータと、で構成されている。
【００４９】
リソース名は、メッセージを生成する装置、又はプログラムを識別するために予め割り当てた識別名である。例えば、図１に示した各サーバ１０又はサーバ１０のアプリケーション、ミドルウェア、ＯＳ、ハードウェアや、ネットワーク１１、ストレージ１２ごとに割り当てられる。
【００５０】
したがって、リソース名には、図６の例１に示すようにサーバ１０等のホスト名（例えば、ＳＶ０１）を使用してもよいし、例２に示すようにホスト名＋ソフト名（例えば、ＳＶ０１−Ｓｏｆｔ０１）を使用してもよい。
【００５１】
また、メッセージ識別子は、メッセージの内容を識別するために予め割り当てられる識別子である。
図７は、本実施例に係る定義部７の構成例を示している。
【００５２】
図７に示す定義部７は、最大連続メッセージ数と、下限基準値と、上限基準値と、から構成される。
最大連続メッセージ数は、学習部３及び照合部５が、連続していると認識するメッセージの最大値である。例えば、最大連続メッセージ数が３の場合、学習部３は、メッセージ収集部２から送られるメッセージが、１又は２〜３の連続したメッセージと認識するので、１又は２〜３の連続したメッセージの組み合わせを抽出して通常パターンを生成する。したがって、この時のメッセージ情報データ５２は、３階層の構成となる。
【００５３】
下限基準値及び上限基準値は、照合部５が、メッセージ収集部２が収集したメッセージがメッセージ異常か否かを判別する閾値に使用される。
図８Ａ及び８Ｂは、本実施例に係るメッセージ異常自動判別装置１の学習モード時における処理の詳細を示すフローチャートである。
【００５４】
メッセージ異常自動判別装置１が学習モードに設定されると、学習部３は、学習処理を開始して処理をステップＳ８０１に移行する。
ステップＳ８０１において、学習部３は、メッセージ異常自動判別装置１が有するタイマー機能等から現在の曜日等を取得する。さらに、ステップＳ８０２において、メッセージ異常自動判別装置１が有するタイマー機能等から現在の時刻を取得する。
【００５５】
現在の曜日等及び時刻を取得すると、学習部３は、処理をステップＳ８０３に移行する。
ステップＳ８０３において、学習部３は、曜日等ポインタ５３及び時間帯ポインタ５４が位置づけている曜日等データ５０及び時間帯データ５１が示す曜日等及び時間帯と、ステップＳ８０１及びＳ８０２で取得した現在の曜日等及び時刻（時間帯）と、が一致するかチェックする。
【００５６】
一致している場合には、処理をステップＳ８０６に移行する。また、一致していない場合には、処理をステップＳ８０４に移行し、ステップＳ８０１及びＳ８０２で取得した曜日等及び時刻に該当する曜日等データ５０及び時間帯データ５１に曜日等ポインタ５４及び時間帯ポインタ５５を位置づける。
【００５７】
そして、該当する時間帯の時間帯データ５１の学習回数に１を加えた値を格納し（ステップＳ８０５）、処理をステップＳ８０６に移行する。
ステップＳ８０６において、学習部３は、収集したメッセージから識別子を生成する。例えば、図６に示したようにリソース名とメッセージ識別子とから識別子（例えば、ＳＶ０１１００１）を生成する。
【００５８】
識別子を生成すると、学習部３は、処理をステップＳ８０７に移行する。そして、通常パターン記憶部４に格納されている通常パターンを参照し、当該時間帯ポインタ５４が位置づけるメッセージ情報データ５２群（第１階層に限る）から、当該識別子を検索キーとして同一の識別子を有するメッセージ情報データ５２を検索する。
【００５９】
該当するメッセージ情報データ５２がない場合には、当該時間帯の時間帯データ５１配下に新たなメッセージ情報データ５２を生成する。そして、生成したメッセージ情報データ５２を初期化し、識別子を格納する。
【００６０】
該当するメッセージ情報データ５２を検出、又は新たにメッセージ情報データ５２を生成すると、学習部３は、処理をステップＳ８０８に移行する。
ステップＳ８０８において、学習部３は、ステップＳ８０７で検出又は新たに生成したメッセージ情報データ５２の合計回数に１を加え、処理をステップＳ８０９に移行する。
【００６１】
ステップＳ８０９において、学習部３は、仮メッセージ情報ポインタ５７（１）を生成し、ステップＳ８０７で検出又は新たに生成したメッセージ情報データ５２に位置づける。
【００６２】
仮メッセージ情報ポインタ５７（１）の位置づけが完了すると、学習部３は、処理をステップＳ８１０に移行する。
ステップＳ８１０において、学習部３は、第１階層のメッセージ情報ポインタ５５（１）が位置づけているメッセージ情報データ５２の位置（アドレス）を取得し（以下、この処理を「起点にする」という）、処理をステップＳ８１１に移行する。
【００６３】
ステップＳ８１１において、学習部３は、ステップＳ８１０で取得したメッセージ情報データ５２配下であって、第２階層（起点となる階層の次の階層）のメッセージ情報データ５２について検索キーと一致するメッセージ情報データ５２を検索する。
【００６４】
そして、該当するメッセージ情報データ５２がない場合には、新たにメッセージ情報データ５２を作成する。そして、生成したメッセージ情報データ５２を初期化して識別子を格納する。
【００６５】
該当するメッセージ情報データ５２を検出、又は新たにメッセージ情報データ５２を生成すると、学習部３は、処理をステップＳ８１２に移行する。
ステップＳ８１２において、学習部３は、仮メッセージ情報ポインタ５７（２）を生成し、ステップＳ８１１で検索又は新たに生成したメッセージ情報データ５２に位置づける。そして、当該メッセージ情報データ５２の合計回数に１を加た値を格納する（ステップＳ８１３）。
【００６６】
以上の処理が終了すると、学習部３は、処理をステップＳ８１４に移行する。そして、全ての階層のメッセージ情報ポインタ５５について、ステップＳ８１１〜Ｓ８１３の処理が完了したかチェックする。
【００６７】
処理が完了していない階層のメッセージ情報ポインタ５５がある場合には、処理をステップＳ８１５に移行して、次の階層のメッセージ情報ポインタ５５を起点にする。
また、学習部３は、ステップＳ８１５で起点としたメッセージ情報ポインタ５５が最下位層のポインタか否かをチェックする。最下位層である場合には、処理をステップＳ８１７に移行し、最下位層でない場合には、処理をステップＳ８１１に移行して、ステップＳ８１１〜Ｓ８１６の処理を繰返し行なう。
【００６８】
ステップＳ８１７において、学習部３は、最下位層のメッセージ情報ポインタ５５を削除して処理をステップＳ８１８に移行する。
ステップＳ８１８において、学習部３は、全ての階層について、仮メッセージ情報ポインタ５７が位置づけるメッセージ情報データ５２にメッセージ情報ポインタ５５を位置づける。そして、全ての階層の仮メッセージ情報ポインタ５７を削除して処理を終了する。
【００６９】
図９Ａ及び９Ｂは、学習モード時に生成されるメッセージ情報データ５２の具体例を示す図である。
図９Ａ及び９Ｂに示す具体例（ａ）〜（ｅ）は、学習モード時にメッセージ収集部２がメッセージを収集して通常パターンを抽出する過程を示している。なお、説明を簡単にするために、メッセージ情報データ５２の構成のみを図に示している。
【００７０】
図９Ａ及び９Ｂに示す具体例（ａ）〜（ｅ）は、メッセージ収集部２が、識別子「ＳＶ０１１００１」を有するメッセージａ、識別子「ＳＶ０１１００２」を有するメッセージｂ、及び識別子「ＳＶ０１１００３」を有するメッセージｃを、以下の順に収集した場合に、学習部３が生成するメッセージ情報データ５２（通常パターンの一部）を示している。
【００７１】
具体例（ａ）：最初にメッセージａを収集。
具体例（ｂ）：具体例（ａ）の状態でメッセージｂを収集。
具体例（ｃ）：具体例（ｂ）の状態でメッセージｃを収集。
【００７２】
具体例（ｄ）：具体例（ｃ）の状態でメッセージａを収集。
具体例（ｅ）：具体例（ｄ）の状態でメッセージｃを収集。
以下、各具体例を図８Ａ及び８Ｂに示したフローチャート（ステップＳ８０６〜Ｓ８１８）に基づいて説明する。
【００７３】
具体例（ａ）において、メッセージ収集部２がメッセージａを収集して学習部３に通知すると、学習部３は、メッセージａのヘッダ部から識別子「ＳＶ０１１００１」を生成する（ステップＳ８０６）。そして、この識別子を検索キーとして、第１階層のメッセージ情報データ５２から該当する識別子を持つメッセージ情報データ５２を検索する。
【００７４】
学習開始時は、現在の時間帯の時間帯データ５１配下にメッセージ情報データ５２が存在しないので、新たにメッセージ情報データ５２（１）ａを生成し、初期化後に識別子「ＳＶ０１１００１」を格納する（ステップＳ８０７）。
【００７５】
そして、メッセージ情報データ５２（１）ａの合計回数に１を加えた値を格納する。メッセージ情報データ５２（１）ａの場合には、０に初期化されているため、合計回数は１となる（ステップＳ８０８）。
【００７６】
そして、仮メッセージ情報ポインタ５７（１）を生成して当該メッセージ情報データ５２（１）ａに位置づける（ステップＳ８０９）。
具体例（ａ）では、他にメッセージ情報ポインタ５５が存在しないので、仮メッセージ情報ポインタ５７（１）をメッセージ情報ポインタ５５（１）に変更して処理を終了する（ステップＳ８１８）。
【００７７】
具体例（ｂ）において、メッセージ収集部２がメッセージｂを収集して学習部３に通知すると、学習部３は、メッセージｂのヘッダ部から識別子「ＳＶ０１１００２」を生成する（ステップＳ８０６）。そして、この識別子を検索キーとして、第１階層のメッセージ情報データ５２から該当する識別子を持つメッセージ情報データ５２を検索する。
【００７８】
第１階層には、識別子「ＳＶ０１１００２」を持つメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（１）ｂを生成し、初期化して識別子「ＳＶ０１１００２」を格納する（ステップＳ８０７）。そして、メッセージ情報データ５２（１）ｂの合計回数に１を加えた値を格納する（ステップＳ８０８）。
【００７９】
そして、仮メッセージ情報ポインタ５７（１）を生成して当該メッセージ情報データ５２（１）ｂに位置づける（ステップＳ８０９）。
次に、第１階層のメッセージ情報ポインタ５５（１）を検索する。具体例（ａ）では、メッセージ情報データ５２（１）ａを位置づけるメッセージ情報ポインタ５５（１）が存在するので、メッセージ情報データ５２（１）ａを起点とする（ステップＳ８１０）。
【００８０】
そして、メッセージ情報データ５２（１）配下の第２階層について、検索キーと一致する識別子を有するメッセージ情報データ５２を検索する。具体例（ｂ）では、該当するメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（２）ａを生成し、初期化して識別子「ＳＶ０１１００２」を格納する（ステップＳ８１１）。
【００８１】
そして、仮メッセージ情報ポインタ５７（２）を生成して当該メッセージ情報データ５２（２）ａに位置づける（ステップＳ８１２）。
そして、メッセージ情報データ５２（２）ａの合計回数に１を加えた値を格納し（ステップＳ８１３）、全ての階層のメッセージ情報ポインタ５５についてステップＳ８１１〜ステップＳ８１３の処理を行なったかチェックする（ステップＳ８１４）。
【００８２】
具体例（ｂ）の場合には、全ての階層のメッセージ情報ポインタ５５について処理を行なったので、仮メッセージ情報ポインタ５７（１）が位置づけるメッセージ情報データ５２（１）ｂにメッセージ情報ポインタ５５（１）を位置づけ、仮メッセージ情報ポインタ５７（２）が位置づけるメッセージ情報データ５２（２）ａにメッセージ情報ポインタ５５（２）を位置づける。
【００８３】
そして、仮メッセージ情報ポインタ５７（１）及び５７（２）を削除して処理を終了する。
具体例（ｃ）において、メッセージ収集部２がメッセージｃを収集して学習部３に通知すると、学習部３は、メッセージｃのヘッダ部から識別子「ＳＶ０１１００３」を生成する（ステップＳ８０６）。そして、この識別子を検索キーとして、第１階層のメッセージ情報データ５２から該当する識別子を持つメッセージ情報データ５２を検索する。
【００８４】
第１階層には、識別子「ＳＶ０１１００３」を持つメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（１）ｃを生成し、初期化して識別子「ＳＶ０１１００３」を格納する（ステップＳ８０７）。そして、メッセージ情報データ５２（１）ｃの合計回数に１を加えた値を格納する（ステップＳ８０８）。
【００８５】
そして、仮メッセージ情報ポインタ５７を生成して当該メッセージ情報データ５２（１）ｃに位置づける（ステップＳ８０９）。
次に、第１階層のメッセージ情報ポインタ５５（１）を検索する。具体例（ｂ）では、メッセージ情報データ５２（１）ｂを位置づけるメッセージ情報ポインタ５５（１）が存在するので、メッセージ情報データ５２（１）ｂを起点とする（ステップＳ８１０）。
【００８６】
そして、メッセージ情報データ５２（１）ｂ配下の第２階層について、検索キーと一致する識別子を有するメッセージ情報データ５２を検索する。具体例（ｂ）では、該当するメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（２）ｂを生成し、初期化して識別子「ＳＶ０１１００３」を格納する（ステップＳ８１１）。
【００８７】
そして、仮メッセージ情報ポインタ５７（２）を生成して当該メッセージ情報データ５２（２）ｂに位置づける（ステップＳ８１２）。
そして、メッセージ情報データ５２（２）ｂの合計回数に１を加えた値を格納し（ステップＳ８１３）、全てのメッセージ情報ポインタ５５についてステップＳ８１１〜ステップＳ８１３の処理を行なったかチェックする（ステップＳ８１４）。
【００８８】
具体例（ｂ）の場合には、第２階層に、メッセージ情報データ５２（２）ａを位置づけるメッセージ情報ポインタ５５（２）があるので、メッセージ情報データ５２（２）ａを起点とする（ステップＳ８１５）。
【００８９】
そして、当該メッセージ情報データ５２（２）ａ配下の第３階層について、検索キーと一致する識別子を有するメッセージ情報データ５２を検索する（ステップＳ８１１）。具体例（ｂ）では、該当するメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（３）ａを生成し、初期化して識別子「ＳＶ０１１００３」を格納する。
【００９０】
そして、仮メッセージ情報ポインタ５７（３）を生成して当該メッセージ情報データ５２（３）ａに位置づけ（ステップＳ８１２）、メッセージ情報データ５２（３）ａの合計回数に１を加えた値を格納する。
【００９１】
最後に、仮メッセージ情報ポインタ５７（１）が位置づけるメッセージ情報データ５２（１）ｃにメッセージ情報ポインタ５５（１）を位置づけ、仮メッセージ情報ポインタ５７（２）が位置づけるメッセージ情報データ５２（２）ｂにメッセージ情報ポインタ５５（２）を位置づけ、仮メッセージ情報ポインタ５７（３）が位置づけるメッセージ情報データ５２（３）ａにメッセージ情報ポインタ５５（３）を位置づける。
【００９２】
そして、仮メッセージ情報ポインタ５７（１）〜５７（３）を削除して処理を終了する。
具体例（ｄ）において、メッセージ収集部２がメッセージａを収集して学習部３に通知すると、学習部３は、メッセージａのヘッダ部から識別子「ＳＶ０１１００１」を生成する（ステップＳ８０６）。そして、この識別子を検索キーとして、第１階層のメッセージ情報データ５２から該当する識別子を持つメッセージ情報データ５２を検索する（ステップＳ８０７）。
【００９３】
第１階層には、識別子「ＳＶ０１１００１」を持つメッセージ情報データ５２（１）ａがあるので、当該メッセージ情報データ５２（１）ａの合計回数に１を加えた値２を格納し（ステップＳ８０８）、仮メッセージ情報ポインタ５７を生成して当該メッセージ情報データ５２（１）ａを位置づける（ステップＳ８０９）。
【００９４】
次に、第１階層のメッセージ情報ポインタ５５（１）を検索する。具体例（ｃ）では、メッセージ情報データ５２（１）ｃを位置づけるメッセージ情報ポインタ５５（１）が存在するので、メッセージ情報データ５２（１）ａを起点とする（ステップＳ８１０）。
【００９５】
そして、メッセージ情報データ５２（１）ａ配下の第２階層について、検索キーと一致する識別子を有するメッセージ情報データ５２を検索する。具体例（ｃ）では、該当するメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（２）ｃを生成し、初期化して識別子「ＳＶ０１１００１」を格納する（ステップＳ８１１）。
【００９６】
そして、仮メッセージ情報ポインタ５７（２）を生成して当該メッセージ情報データ５２（２）ｃに位置づける（ステップＳ８１２）。
そして、メッセージ情報データ５２（２）ｃの合計回数に１を加えた値を格納し（ステップＳ８１３）、全てのメッセージ情報ポインタ５５についてステップＳ８１１〜ステップＳ８１３の処理を行なったかチェックする（ステップＳ８１４）。
【００９７】
具体例（ｃ）の場合には、第２階層に、メッセージ情報データ５２（２）ｂを位置づけるメッセージ情報ポインタ５５（２）があるので、メッセージ情報データ５２（２）ｂを起点とする（ステップＳ８１５）。
【００９８】
そして、当該メッセージ情報データ５２（２）ｂ配下の第３階層について、検索キーと一致する識別子を有するメッセージ情報データ５２を検索する（ステップＳ８１１）。具体例（ｂ）では、該当するメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（３）ｂを生成し、初期化して識別子「ＳＶ０１１００１」を格納する。
【００９９】
そして、仮メッセージ情報ポインタ５７（３）を生成して当該メッセージ情報データ５２（３）ｂに位置づけ（ステップＳ８０９）、当該メッセージ情報データ５２（３）ｂの合計回数に１を加えた値を格納する（ステップＳ８１３）。
【０１００】
最後に、仮メッセージ情報ポインタ５７（１）が位置づけるメッセージ情報データ５２（１）ａにメッセージ情報ポインタ５５（１）を位置づけ、仮メッセージ情報ポインタ５７（２）が位置づけるメッセージ情報データ５２（２）ｃにメッセージ情報ポインタ５５（２）を位置づけ、仮メッセージ情報ポインタ５７（３）が位置づけるメッセージ情報データ５２（３）ｂにメッセージ情報ポインタ５５（３）を位置づける。
【０１０１】
そして、仮メッセージ情報ポインタ５７（１）〜５７（３）を削除して処理を終了する。
具体例（ｅ）において、メッセージ収集部２がメッセージｃを収集して学習部３に通知すると、学習部３は、メッセージｃのヘッダ部から識別子「ＳＶ０１１００３」を生成する（ステップＳ８０６）。そして、この識別子を検索キーとして、第１階層のメッセージ情報データ５２から該当する識別子を持つメッセージ情報データ５２を検索する（ステップＳ８０７）。
【０１０２】
第１階層には、識別子「ＳＶ０１１００３」を持つメッセージ情報データ５２（１）ｃがあるので、当該メッセージ情報データ５２（１）ｃの合計回数に１を加えた値２を格納し（ステップＳ８０８）、仮メッセージ情報ポインタ５７（１）を生成して当該メッセージ情報データ５２（１）ｃを位置づける（ステップＳ８０９）。
【０１０３】
次に、第１階層のメッセージ情報ポインタ５５（１）を検索する。具体例（ｄ）では、メッセージ情報データ５２（１）ａを位置づけるメッセージ情報ポインタ５５（１）が存在するので、メッセージ情報データ５２（１）ａを起点とする（ステップＳ８１０）。
【０１０４】
そして、メッセージ情報データ５２（１）ａ配下の第２階層について、検索キーと一致する識別子を有するメッセージ情報データ５２を検索する。具体例（ｄ）では、該当するメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（２）ｄを生成し、初期化して識別子「ＳＶ０１１００３」を格納する（ステップＳ８１１）。
【０１０５】
そして、仮メッセージ情報ポインタ５７（２）を生成して当該メッセージ情報データ５２（２）ｄに位置づける（ステップＳ８１２）。
そして、メッセージ情報データ５２（２）ｄの合計回数に１を加えた値を格納し（ステップＳ８１３）、全てのメッセージ情報ポインタ５５についてステップＳ８１１〜ステップＳ８１３の処理を行なったかチェックする（ステップＳ８１４）。
【０１０６】
具体例（ｄ）の場合には、第２階層に、メッセージ情報データ５２（２）ｃを位置づけるメッセージ情報ポインタ５５（２）があるので、メッセージ情報データ５２（２）ｃを起点とする（ステップＳ８１５）。
【０１０７】
そして、当該メッセージ情報データ５２（２）ｃ配下の第３階層について、検索キーと一致する識別子を有するメッセージ情報データ５２を検索する（ステップＳ８１１）。具体例（ｄ）では、該当するメッセージ情報データ５２はないので、新たにメッセージ情報データ５２（３）ｃを生成し、初期化して識別子「ＳＶ０１１００３」を格納する。
【０１０８】
そして、仮メッセージ情報ポインタ５７（３）を生成して当該メッセージ情報データ５２（３）ｃに位置づけ（ステップＳ８０１２）、当該メッセージ情報データ５２（３）ｂの合計回数に１を加えた値を格納する（ステップＳ８１３）。
【０１０９】
最後に、仮メッセージ情報ポインタ５７（１）が位置づけるメッセージ情報データ５２（１）ｃにメッセージ情報ポインタ５５（１）を位置づけ、仮メッセージ情報ポインタ５７（２）が位置づけるメッセージ情報データ５２（２）ｄにメッセージ情報ポインタ５５（２）を位置づけ、仮メッセージ情報ポインタ５７（３）が位置づけるメッセージ情報データ５２（３）ｃにメッセージ情報ポインタ５５（３）を位置づける。
【０１１０】
そして、仮メッセージ情報ポインタ５７（１）〜５７（３）を削除して処理を終了する。
図１０は、学習モードから運用モードへの切換え処理を示すフローチャートである。
【０１１１】
入力装置２５から、学習モードから運用モードに切換える指示を行なうと、ＣＰＵ２０は、学習モードから運用モードへの切換え処理を開始する（ステップＳ１０００）。
ステップＳ１００１において、曜日等ポインタ５３を月曜日を示す曜日等データ５０に位置づける。そして、ステップＳ１００２において、時間帯ポインタ５４を時間帯「ＡＭ０：００〜０：３０」を示す時間帯データ５１に位置づける。
【０１１２】
さらに、ステップＳ１００３において、第１階層のメッセージ情報ポインタ５５（１）を最初のメッセージ情報データ５２（１）に位置づける。
そして、ステップＳ１００４において、ＣＰＵ２０は、時間帯ポインタ５４が位置づける時間帯データ５１の学習回数と、メッセージ情報ポインタ５７（１）が位置づけるメッセージ情報データ５２（１）の合計回数を読み出し、「合計回数÷学習回数」を計算して平均回数を算出する。そして、算出した平均回数を当該メッセージ情報データ５２（１）の平均回数に格納する。
【０１１３】
以上の平均回数算出処理を、当該時間帯データ５１配下の全階層のメッセージ情報データ５２について行なう（ステップＳ１００５）。そして、当該時間帯データ５１配下の全てのメッセージ情報データ５２について平均回数の算出が完了すると、ＣＰＵ２０は、処理をステップＳ１００６に移行する。
【０１１４】
ステップＳ１００６において、ＣＰＵ２０は、当該時間帯ポインタ５４を次の時間帯を示す時間帯データ５１ｂに設定する。そして、当該曜日等データ５０配下の全ての時間帯データ５１について、ステップＳ１００４〜ステップＳ１００５の平均回数算出処理を行なう（ステップＳ１００７）。
【０１１５】
さらに、ＣＰＵ２０は、当該曜日等ポインタ５３を次の曜日等を示す曜日等データ５０に設定し（ステップＳ１００８）、全ての曜日等データ５０についてステップＳ１００４〜１００８の処理が完了するまでステップＳ１００４〜１００８の処理を繰返す（ステップＳ１００９）。
【０１１６】
以上の処理によって、通常パターンの全てのメッセージ情報データ５２の平均回数の算出が完了すると、ＣＰＵ２０は、曜日等ポインタ５３、時間帯ポインタ５４をクリアして処理を終了する。
【０１１７】
図１１Ａ及び１１Ｂは、本実施例に係るメッセージ異常自動判別装置１の運用モード時における処理の詳細を示すフローチャートである。
メッセージ異常自動判別装置１が運用モードに設定されると、照合部５は、照合処理を開始して処理をステップＳ１１０１に移行する。
【０１１８】
ステップＳ１１０１において、照合部５は、メッセージ異常自動判別装置１が有するタイマー機能等から現在の曜日等を取得する。さらに、ステップＳ１１０２において、メッセージ異常自動判別装置１が有するタイマー機能等から現在の時刻を取得する。
【０１１９】
現在の曜日等及び時刻を取得すると、照合部５は、処理をステップＳ１１０３に移行する。そして、曜日等ポインタ５３及び時間帯ポインタ５４が位置づける曜日等データ５０及び時間帯データ５１に対応する曜日等及び時間帯（時刻）と、ステップＳ１１０１及びＳ１１０２で取得した現在の曜日等及び時刻と、が一致しているかチェックする。
【０１２０】
一致している場合には、処理をステップＳ１１０８に移行する。また、一致していない場合には、処理をステップＳ１１０４に移行する。
ステップＳ１１０４において、照合部５は、定義部７の所定のアドレスに格納されている下限基準値（％）を参照する。そして、時間帯ポインタ５４が位置づける時間帯データ５１配下の全てのメッセージ情報データ５２について、平均回数に下限基準値を乗じた値（以下、「下限閾値」という）と発生回数とを比較する。
【０１２１】
比較の結果、発生回数が下限閾値以下でない場合には、処理をステップＳ１１０７に移行する。また、比較の結果、発生回数が下限閾値以下の場合には、当該曜日等データ５０及び時間帯データ５１が示す曜日等及び時間帯のメッセージに異常があったと判断する。
【０１２２】
すなわち、通常パターンを構成する各メッセージの出現回数が、通常より少ないためメッセージに異常があると判断する。
そして、異常検出フラグをＯＮにして、処理をステップＳ１１０７に移行する（ステップＳ１１０５、Ｓ１１０６）。なお、異常検出フラグは、例えば、メモリ２１に専用の領域を確保すればよい。
【０１２３】
ステップＳ１１０７において、照合部５は、ステップＳ１１０１及びＳ１１０２で取得した現在の曜日等及び時刻に該当する曜日等データ５０及び時間帯データ５１に曜日等ポインタ５３及び時間帯ポインタ５４を位置づける。
【０１２４】
曜日等ポインタ５３及び時間帯ポインタ５４が位置づけられると、照合部５は、以下に示すステップＳ１１０８〜Ｓ１１１３の処理で当該時間帯ポインタ５４配下における第１階層のメッセージ情報データ５２について所定の処理を行なう。
【０１２５】
ステップＳ１１０８において、照合部５は、収集したメッセージから識別子を生成する。そして、識別子を検索キーとして当該時間帯ポインタ５４配下の第１階層のメッセージ情報データ５２を検索する（ステップＳ１１０９）。
【０１２６】
該当するメッセージ情報データ５２が見つからない場合には、処理をステップＳ１１２５に移行してメッセージ異常を警告する。
また、該当するメッセージ情報データ５２が見つかった場合には、処理をステップＳ１１１１に移行し、当該メッセージ情報データ５２の発生回数に１を加えた値を格納する。
【０１２７】
さらに、照合部５は、定義部７の所定のアドレスに格納されている上限基準値（％）を参照する。そして、当該メッセージ情報データ５２について、平均回数に上限基準値を乗じた値（以下、「上限閾値」という）と発生回数とを比較する（ステップＳ１１１２）。
【０１２８】
比較の結果、発生回数が上限閾値以上でない場合には、処理をステップＳ１１１３に移行する。また、比較の結果、発生回数が上限閾値以下の場合には、当該曜日等データ５０及び時間帯データ５１が示す曜日等及び時間帯のメッセージに異常があったと判断する。
【０１２９】
すなわち、通常パターンを構成する各メッセージの出現回数が、通常より多いためメッセージに異常があると判断する。そして、処理をステップＳ１１２５に移行してメッセージ異常を警告する。
【０１３０】
ステップＳ１１１３において、照合部５は、仮メッセージ情報ポインタ５７（１）を生成し、当該メッセージ情報データ５２に位置づける。
以上のステップＳ１１０８〜Ｓ１１１３の処理によって、当該時間帯ポインタ５４配下における第１階層のメッセージ情報データ５２について所定の処理が完了すると、照合部５は、以下に示すステップＳ１１１４〜Ｓ１１２３の処理で当該時間帯ポインタ５４配下の第２階層以降のメッセージ情報データ５２について処理の処理を行なう。
【０１３１】
ステップＳ１１１４において、照合部５は、第１階層におけるメッセージ情報ポインタ５５（１）を検索する。そして、当該メッセージ情報ポインタ５５（１）が位置づけるメッセージ情報データ５２を起点にする。
【０１３２】
そして、当該メッセージ情報データ５２配下の階層におけるメッセージ情報データ５２について、検索キーと一致するメッセージ情報データ５２を検索する（ステップＳ１１１５）。
【０１３３】
該当するメッセージ情報データ５２が見つからない場合には、処理をステップＳ１１２５に移行する。また、該当するメッセージ情報データ５２が見つかった場合には、処理をステップＳ１１１７に移行して、当該メッセージ情報データ５２の発生回数に１を加えた値を格納する。
【０１３４】
ステップＳ１１１８において、照合部５は、当該メッセージ情報データ５２について、上限閾値を算出し、算出した上限閾値と平均回数とを比較する。
比較の結果、発生回数が上限閾値以上でない場合には、処理をステップＳ１１１３に移行する。また、比較の結果、発生回数が上限閾値以下の場合には、ステップＳ１１１２と同様に、当該曜日等データ５０及び時間帯データ５１が示す曜日等及び時間帯のメッセージに異常があったと判断し、処理をステップＳ１１２５に移行する。
【０１３５】
ステップＳ１１１９において、照合部５は、当該階層（第ｎ階層）における仮メッセージ情報ポインタ５７（ｎ）を生成する。そして、当該メッセージ情報データ５２を位置づける。
【０１３６】
全ての階層のメッセージ情報ポインタ５５について、ステップＳ１１１５〜Ｓ１１１９の処理が完了した場合には、処理をステップＳ１１２５に移行する。また、ステップＳ１１１５〜Ｓ１１１９の処理が完了していないメッセージ情報ポインタ５５がある場合には、照合部５は、処理をステップＳ１１２１に移行する。
【０１３７】
ステップＳ１１２１において、照合部５は、次の階層におけるメッセージ情報ポインタ５５を検索する。そして、当該メッセージ情報ポインタ５５が位置づけるメッセージ情報データ５２を起点とする。
【０１３８】
ステップＳ１１２２において、照合部５は、定義部７の所定のアドレスに格納されている最大連続メッセージ数を参照する。そして、当該階層の数が最大連続メッセージ数と同一の場合は、当該メッセージ情報ポインタ５５を削除して（ステップＳ１１２３）、処理をステップＳ１１２５に移行する。
【０１３９】
また、当該階層の数が最大連続メッセージ数でない場合には、処理をステップＳ１１１５に移行する。そして、全階層のメッセージ情報ポインタ５５について、ステップＳ１１１５〜Ｓ１１２２の処理を繰返すこととなる。
【０１４０】
ステップＳ１１２４において、照合部５は、照合失敗フラグがＯＮか否かをチェックする。そして、照合失敗フラグがＯＮでない場合には、正常に処理を終了する（ステップＳ１１２６）。
【０１４１】
また、照合失敗フラグがＯＮの場合には、処理をステップＳ１１２５に移行して警告部６が警告を行なって処理をステップＳ１２０６に移行する。
ステップＳ１１２６において、照合部５は、各階層に生成した仮メッセージ情報ポインタ５７が位置づけるメッセージ情報データ５２を、各階層のメッセージ情報ポインタ５５に位置づけ、全ての仮メッセージ情報ポインタ５７を削除して処理を終了する。
【０１４２】
図１２は、警告部６がディスプレイ９に警告を行なった場合の表示例を示している。
図１２に示す警告は、本実施例に係るメッセージ異常自動判別装置１が、分散システム８から生成される連続したメッセージＡ「ＳＶ０１：１００１：送信要求が異常復帰」、メッセージＢ「ＳＶ０１：１００２：再送に成功」を、所定の時間帯に１０回出現（検出）した場合の警告画面を示している。
【０１４３】
また、通常パターンの当該時間帯における連続したメッセージＡ、メッセージＢの平均回数は３回であることを示している。
なお、図１２に示した警告画面はディスプレイ９に表示したものであるが、同様の表示データを所定のメールアドレスに送信してもよい。
【０１４４】
また、図１２に示した警告画面は例示であって、これに限定する趣旨でないのは当然である。
以上に説明したように、本実施例に係るメッセージ異常自動判別装置１は、自動的に分散システム８から生成されるメッセージの通常パターンを学習するので、例えば、メッセージのフィルタリング定義のように、各メッセージ毎にメッセージを出力するか否かを手動で設定する必要がない。
【０１４５】
また、本実施例に係る学習部３は、１つのメッセージだけではなく、複数の連続するメッセージのパターンを学習して通常パターンを生成する。したがって、複数の連続したメッセージで意味を持つメッセージについて、異常か否かを判別することが可能となる。また、その結果、より複雑な分散システム８であっても、より正確な警告が可能となる。
【０１４６】
さらに、図５に示したように、本実施例係る通常パターンは、曜日等データ５０及び時間帯データ５１を備えるので、日付や曜日／時間帯ごとにメッセージパターンを学習することが可能となる。したがって、日付や曜日／時間帯ごとに異なる運用形態を持つ分散システム８にも容易に適用することが可能となる。
【０１４７】
また、本実施例に係る照合部５は、通常パターンと比較して、検出したメッセージの数が上限閾値より多い場合と、下限閾値より少ない場合と、をメッセージ異常と判断している。これにより、通常より多くのメッセージが分散システム８から生成された場合の異常だけではなく、通常出力されるべきメッセージが分散システム８から生成されない場合の異常についても検出することが可能となる。
【０１４８】
例えば、必要なサービスの起動が正常終了した旨のメッセージは、通常出力されるべきメッセージであり、このようなメッセージが分散システム８から出力されない場合の異常も検出することが可能となる。
【０１４９】
また、通常、メッセージＩＤは、リソース（例えば、サーバやソフトウェア）ごとに決まっている。そして、分散システム８では、異なるリソースから同じメッセージＩＤを持つメッセージが出力されることもあるので、メッセージの区別ができない場合がある。
【０１５０】
一方、本発明に係る識別子は、メッセージＩＤとリソース名とを備えることによって、分散システム８においても一意にメッセージを区別することができるので、正確な通常パターンの把握が可能となる効果を奏する。
【０１５１】
（付記１）  分散システムで生成されたメッセージを収集するメッセージ収集部と、
前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージの発生回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを記憶する通常パターン記憶部と、
該通常パターン記憶部に格納された前記通常パターンを参照し、前記メッセージ収集部で収集したメッセージの識別子と一致する識別子を検索し、該当する識別子が存在する場合には該識別子が示すメッセージの発生回数をカウントし、該発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断する照合部と、
を備えることを特徴とするメッセージ異常自動判別装置。
【０１５２】
（付記２）  前記通常パターンは、
所定の規則に応じて分類した日付を示す複数の曜日等データと、
該曜日等データが示す日付若しくは該日付の所定の時間を任意に分割して得る時間帯を示す複数の時間帯データと、
該時間帯データが示す時間帯における前記メッセージ情報データと、
で構成されることを特徴とする付記１に記載のメッセージ異常自動判別装置。
【０１５３】
（付記３）  前記メッセージ情報データは、
所定の階層数の階層を有する木構造であり、
前記照合部は、
前記メッセージ収集部で収集したメッセージの識別子と一致する識別子を、前記照合部が前回発生回数をカウントしたメッセージ情報データを起点とし、該起点の直下の階層のメッセージ情報データの識別子から検索する、
ことを特徴とする付記１に記載のメッセージ異常自動判別装置。
【０１５４】
（付記４）  前記照合部が異常と判断したメッセージを出力する警告部を更に備えることを特徴とする付記１に記載のメッセージ異常自動判別装置。
（付記５）  前記識別子は、メッセージの内容を識別するメッセージＩＤと、該メッセージを生成するリソース名と、で構成されることを特徴とする付記１に記載のメッセージ異常自動判別装置。
【０１５５】
（付記６）  前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージが出現する合計回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを抽出すると共に、前記合計回数をカウントする学習部、
を更に備えることを特徴とする付記１記載のメッセージ異常自動判別装置。
【０１５６】
（付記７）  前記警告部は、前記照合部が異常と判断したメッセージの出力を抑止する抑止手段を更に備えることを特徴とする付記４に記載のメッセージ異常自動判別装置。
（付記８）  分散システムで生成されたメッセージを収集するメッセージ収集処理と、
前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージの発生回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを記憶する通常パターン記憶手段を参照し、前記メッセージ収集処理で収集したメッセージの識別子と一致する識別子を検索し、該当する識別子が存在する場合には該識別子が示すメッセージの発生回数をカウントし、該発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断する照合処理と、
を情報処理装置に行なわせることを特徴とするメッセージ異常自動判別方法。
【０１５７】
（付記９）  前記通常パターンは、
所定の規則に応じて分類した日付を示す複数の曜日等データと、
該曜日等データが示す日付若しくは該日付の所定の時間を任意に分割して得る時間帯を示す複数の時間帯データと、
該時間帯データが示す時間帯における前記メッセージ情報データと、
で構成されることを特徴とする付記８に記載のメッセージ異常自動判別方法。
【０１５８】
（付記１０）  前記メッセージ情報データは、
所定の階層数の階層を有する木構造であり、
前記照合処理は、
前記メッセージ収集処理で収集したメッセージの識別子と一致する識別子を、前記照合処理が前回発生回数をカウントしたメッセージ情報データを起点とし、該起点の直下の階層のメッセージ情報データの識別子から検索する、
ことを特徴とする付記８に記載のメッセージ異常自動判別方法。
【０１５９】
（付記１１）  前記照合処理が異常と判断したメッセージを出力する警告処理、を更に情報処理装置に行なわせることを特徴とする付記８に記載のメッセージ異常自動判別方法。
【０１６０】
（付記１２）  前記識別子は、メッセージの内容を識別するメッセージＩＤと、該メッセージを生成するリソース名と、で構成されることを特徴とする付記８に記載のメッセージ異常自動判別方法。
【０１６１】
（付記１３）  前記警告処理は、前記照合処理が異常と判断したメッセージの出力を抑止する抑止処理、を更に情報処理装置に行なわせることを特徴とする付記１１に記載のメッセージ異常自動判別方法。
【０１６２】
（付記１４）  分散システムで生成されたメッセージを収集するメッセージ収集処理と、
前記分散システムが正常に運用された場合に生成される１又は２以上の連続したメッセージの組み合わせであって、該メッセージを一意に識別する識別子と該識別子が示す各メッセージの発生回数とを少なくとも有するメッセージ情報データを構成要素とする通常パターンを記憶する通常パターン記憶手段を参照し、前記メッセージ収集処理で収集したメッセージの識別子と一致する識別子を検索し、該当する識別子が存在する場合には該識別子が示すメッセージの発生回数をカウントし、該発生回数が所定の値以上若しくは以下の場合、及び該当する識別子が存在しない場合に異常と判断する照合処理と、
を情報処理装置に行なわせることを特徴とするメッセージ異常自動判別のためのプログラム。
【０１６３】
（付記１５）  前記通常パターンは、
所定の規則に応じて分類した日付を示す複数の曜日等データと、
該曜日等データが示す日付若しくは該日付の所定の時間を任意に分割して得る時間帯を示す複数の時間帯データと、
該時間帯データが示す時間帯における前記メッセージ情報データと、
で構成されることを特徴とする付記１４に記載のメッセージ異常自動判別のためのプログラム。
【０１６４】
（付記１６）  前記メッセージ情報データは、
所定の階層数の階層を有する木構造であり、
前記照合処理は、
前記メッセージ収集処理で収集したメッセージの識別子と一致する識別子を、前記照合処理が前回発生回数をカウントしたメッセージ情報データを起点とし、該起点の直下の階層のメッセージ情報データの識別子から検索する、
ことを特徴とする付記１４に記載のメッセージ異常自動判別のためのプログラム。
【０１６５】
（付記１７）  前記照合処理が異常と判断したメッセージを出力する警告処理、を更に情報処理装置に行なわせることを特徴とする付記１４に記載のメッセージ異常自動判別のためのプログラム。
【０１６６】
（付記１８）  前記識別子は、メッセージの内容を識別するメッセージＩＤと、該メッセージを生成するリソース名と、で構成されることを特徴とする付記１４に記載のメッセージ異常自動判別のためのプログラム。
【０１６７】
（付記１９）  前記警告処理は、前記照合処理が異常と判断したメッセージの出力を抑止する抑止処理、を更に情報処理装置に行なわせることを特徴とする付記１７に記載のメッセージ異常自動判別のためのプログラム。
【図面の簡単な説明】
【０１６８】
【図１】本発明に係る実施例の全体の構成例を示す図である。
【図２】本実施例に係るメッセージ異常自動判別装置の構成例を示している。
【図３】本実施例に係るメッセージ異常自動判別装置の学習モード時の処理の概要を示すフローチャートである。
【図４】本実施例に係るメッセージ異常自動判別装置の運用モード時の処理の概要を示すフローチャートである。
【図５】本実施例に係るメッセージ異常自動判別装置の学習部が生成する通常パターンの構成例を示す図である。
【図６】本実施例に係るメッセージデータの構成例を示す図である。
【図７】本実施例に係る定義部の構成例を示す図である。
【図８Ａ】本実施例に係るメッセージ異常自動判別装置の学習モード時における処理の詳細を示すフローチャートである。
【図８Ｂ】本実施例に係るメッセージ異常自動判別装置の学習モード時における処理の詳細を示すフローチャートである。
【図９Ａ】学習モード時に生成されるメッセージ情報データの具体例を示す図である。
【図９Ｂ】学習モード時に生成されるメッセージ情報データの具体例を示す図である。
【図１０】学習モードから運用モードへの切換え処理を示すフローチャートである。
【図１１Ａ】本実施例に係るメッセージ異常自動判別装置の運用モード時における処理の詳細を示すフローチャートである。
【図１１Ｂ】本実施例に係るメッセージ異常自動判別装置の運用モード時における処理の詳細を示すフローチャートである。
【図１２】本実施例に係る警告部の表示例を示す図である。
【符号の説明】
【０１６９】
１      メッセージ異常自動判別装置
２      メッセージ収集部
３      学習部
４      通常パターン
５      照合部
６      警告部
７      定義部
８      分散システム
９      ディスプレイ
１０      サーバ
１１      ネットワーク
１２      ストレージ
５０      曜日等データ
５１      時間帯データ
５２      メッセージ情報データ
５３      曜日等ポインタ
５４      時間帯ポインタ
５５      メッセージ情報ポインタ
【図１】
2006318071.tif 000003
【図２】
2006318071.tif 000004
【図３】
2006318071.tif 000005
【図４】
2006318071.tif 000006
【図５】
2006318071.tif 000007
【図６】
2006318071.tif 000008
【図７】
2006318071.tif 000009
【図８Ａ】
2006318071.tif 000010
【図８Ｂ】
2006318071.tif 000011
【図９Ａ】
2006318071.tif 000012
【図９Ｂ】
2006318071.tif 000013
【図１０】
2006318071.tif 000014
【図１１Ａ】
2006318071.tif 000015
【図１１Ｂ】
2006318071.tif 000016
【図１２】
2006318071.tif 000017