処理中

しばらくお待ちください...

設定

設定

出願の表示

1. WO2013121529 - コンピュータプログラムおよび監視装置

Document

明 細 書

発明の名称 コンピュータプログラムおよび監視装置

技術分野

0001  

背景技術

0002   0003   0004   0005   0006   0007  

先行技術文献

特許文献

0008  

発明の概要

発明が解決しようとする課題

0009   0010   0011   0012   0013   0014   0015   0016   0017   0018  

課題を解決するための手段

0019  

図面の簡単な説明

0020  

発明を実施するための形態

0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036  

実施例 1

0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173   0174   0175   0176   0177   0178   0179   0180   0181   0182   0183   0184   0185   0186   0187   0188   0189   0190   0191   0192   0193   0194   0195   0196   0197   0198   0199   0200   0201   0202   0203   0204   0205   0206   0207   0208   0209   0210   0211   0212   0213   0214   0215   0216   0217   0218   0219   0220   0221   0222   0223   0224   0225   0226   0227   0228   0229   0230   0231   0232   0233   0234   0235   0236   0237   0238   0239   0240   0241   0242   0243   0244   0245   0246   0247   0248   0249   0250   0251   0252   0253   0254   0255   0256   0257   0258   0259   0260   0261   0262   0263   0264   0265   0266   0267   0268   0269   0270   0271   0272   0273   0274   0275   0276   0277   0278   0279   0280   0281   0282   0283   0284   0285   0286   0287   0288   0289   0290   0291   0292   0293   0294   0295   0296   0297   0298   0299   0300   0301   0302   0303   0304   0305   0306   0307   0308   0309   0310   0311   0312   0313   0314   0315   0316   0317   0318   0319   0320   0321   0322  

実施例 2

0323   0324   0325   0326   0327   0328   0329   0330   0331   0332   0333   0334   0335   0336   0337   0338   0339   0340   0341   0342   0343   0344   0345   0346   0347   0348   0349   0350   0351   0352   0353   0354   0355   0356   0357   0358   0359   0360   0361   0362   0363   0364   0365   0366   0367   0368   0369   0370   0371   0372   0373   0374   0375   0376   0377   0378   0379   0380   0381   0382   0383   0384   0385   0386   0387   0388   0389   0390   0391   0392   0393   0394   0395   0396   0397   0398   0399   0400   0401   0402   0403   0404   0405   0406   0407   0408   0409   0410   0411   0412   0413   0414   0415   0416   0417   0418   0419   0420   0421   0422   0423   0424   0425   0426   0427   0428   0429   0430   0431   0432   0433   0434   0435   0436   0437   0438   0439   0440   0441   0442   0443   0444   0445   0446   0447   0448   0449   0450   0451   0452   0453   0454   0455   0456   0457   0458   0459   0460   0461   0462   0463   0464   0465   0466   0467   0468  

符号の説明

0469  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15  

図面

1   2   3   4   5   6A   6B   6C   6D   6E   6F   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26A   26B   27   28   29   30A   30B   31A   31B   32  

明 細 書

発明の名称 : コンピュータプログラムおよび監視装置

技術分野

[0001]
 本発明は、コンピュータプログラムおよび監視装置に関する。

背景技術

[0002]
 IT(ITはInformation Technologyの略)システムは、ネットワークを介して様々なIT装置が接続することで複雑化および大規模化している。ITシステムで生じる障害は、ネットワークを介して様々なIT装置に影響を与える。
[0003]
 これらの障害の原因箇所と原因事象とを特定する根本原因分析技術として、特許文献1には、IT装置から受信する障害内容に基づいて、障害の根本原因箇所と原因事象とを分析する障害分析技術が開示されている。IT装置は、障害が発生した場合に、その障害をイベント情報として、コンピュータに通知する。
[0004]
 従来の障害分析技術において、障害分析を行う管理プログラムは、管理対象装置における各種状態情報(特に障害情報)をイベント化し、イベントDB(データベース)に情報を蓄積する。
[0005]
 管理プログラムは、相関ルールを有している。相関ルールは、1つのコンポーネントで発生する原因イベントと、それによって引き起こされている関連イベント群とを、IF-THEN形式で記述したものである。
[0006]
 管理プログラムは、管理対象装置から取得した複数のイベントと相関ルールを元に、管理対象装置で発生している複数の障害に対する原因イベントを推定する。管理対象となる各々のITシステム毎に、システムトポロジは大幅に変化し得る。ここで、システムトポロジとは、各管理コンポーネント間の関係を意味し、以下、省略してトポロジと呼ぶことがある。
[0007]
 システムトポロジは大きく変化する可能性があるため、管理プログラムは、トポロジから独立した形式で記述された障害伝搬モデル(以下、一般ルールと呼ぶことがある)を有する。さらに、管理プログラムは、管理対象となるITシステムのトポロジを含めた構成情報を有しており、障害伝搬モデルと構成情報を元に管理対象の環境に基づいた相関ルールを生成する。

先行技術文献

特許文献

[0008]
特許文献1 : 特開2010-86115号公報

発明の概要

発明が解決しようとする課題

[0009]
 最近のITシステムでは、HA(High Availability)構成、または、負荷分散構成が採用される傾向にある。HA構成とは、ITシステムの一部に障害が発生した場合においても、ITシステム全体の正常性を維持し続けられるようにするため、予備装置または予備の装置部品を用意して冗長性を持たせる構成である。負荷分散構成とは、アプリケーション、装置、装置を構成する部品のスケーラビリティを向上させるために、複数の装置または装置部品に処理を分散させる構成である。
[0010]
 冗長構成(HA構成)または負荷分散構成のように、複数の管理コンポーネントで或る1つの仮想的なアプリケーションまたは装置(以下、仮想コンポーネントと呼ぶことがある)を実現する構成の場合、障害が伝搬するパターンを以下のように分けて考えることができる。
[0011]
 そのような構成の場合、1つの管理コンポーネントで生じたイベントが、1つまたは複数の他の管理コンポーネントでのイベントを引き起こすという、障害伝搬パターンが考えられる。これだけでなくさらに、複数の管理コンポーネントでそれぞれ生じたイベントの組合せが、異なる管理コンポーネントのイベントを引き起こすという、他の障害伝搬パターンも考えられる。複数イベントの組合せによる障害伝搬パターンには、以下の2種類の場合が考えられる。
[0012]
 (a)冗長構成または負荷分散構成によって実現される或る仮想コンポーネントに対して、その仮想コンポーネントを実現する全ての管理コンポーネントにおいてイベントが発生すると、他の管理コンポーネントにおけるイベントを引き起こす場合。
[0013]
 (b)冗長構成または負荷分散構成によって実現される或る仮想コンポーネントに対して、その仮想コンポーネントを実現する複数の管理コンポーネントのうち一定数以上の管理コンポーネントにおいてイベントが発生すると、他の管理コンポーネントの障害を引き起こす場合。
[0014]
 前記(a)の障害伝搬パターンの例としては、次のようなものが挙げられる。例えば、負荷分散構成をとっているWebサーバによって提供されるWebサービスにおいては、Webサービスを構成する全てのWebサーバにおいて故障イベントが発生すると、クライアントコンピュータにおいてWebサービスへのアクセスエラーが発生する。
[0015]
 また、(b)の障害伝搬パターンの例としては、次のようなものが挙げられる。例えば、負荷分散構成をとっているWebサーバによって提供されるWebサービスにおいて、いずれか複数のWebサーバで故障イベントが発生すると、クライアントコンピュータにおいてWebサービスの性能エラーが発生する。
[0016]
 上述した従来技術では、ITシステムを構成する監視対象装置において発生する障害の原因を解析するための技術について述べている。従来技術では、装置に発生するイベント種別の相関関係をIF-THENルールで定義し、また、ルールを適用すべき監視対象装置のトポロジ条件を予め定義しておく。これにより、従来技術では、監視対象装置の構成情報から、監視対象環境に依存したルールを自動で生成する。そして、従来技術では、自動生成したルールと複数の監視対象装置から受信したイベントとを元に、障害原因を解析する。
[0017]
 しかし、従来技術は、前記のような、複数の管理コンポーネントのイベントの組合せが原因となって他の管理コンポーネントに障害を引き起こすパターンの根本原因分析については考慮していない。そのため、従来技術では、冗長構成または負荷分散構成を有するITシステムに対応した根本原因分析を行うためのルールを生成することができず、改善の余地がある。
[0018]
 本発明は、上記の問題に鑑みてなされたもので、予め設定される所定数以上の第2イベントが複数の監視対象のうち予めグループ化された複数の所定の監視対象について発生した場合は、当該第2イベントが原因となって第1イベントが発生したと推定することができるようにしたコンピュータプログラムおよび監視装置を提供することにある。

課題を解決するための手段

[0019]
 本発明の一つの観点に係るコンピュータプログラムは、コンピュータを、複数の監視対象を含む計算機システムを監視するための監視装置として機能させるためのコンピュータプログラムであって、複数の監視対象に関する構成情報を記憶する構成情報記憶部と、複数の監視対象のいずれかに生じ得る第1イベントと、第1イベントの原因となり得る第2イベントとを予め関連づける一般ルールであって、予め設定される所定数以上の第2イベントが複数の監視対象のうち予めグループ化された複数の所定の監視対象について発生した場合は、当該第2イベントが原因となって第1イベントが発生したと推定するための一般ルールを、記憶する一般ルール記憶部と、複数の監視対象で発生したイベントに関するイベント情報を記憶するイベント情報記憶部と、一般ルールと構成情報とに基づいて作成される相関ルールであって、イベント情報の示すイベントのうち第2イベントに対応するイベントが所定数以上検出された場合は、イベント情報の示すイベントのうち第1イベントに対応するイベントが発生することを示す相関ルールを生成する相関ルール生成部と、受信されたイベント情報と相関ルールとに基づいて、受信されたイベント情報の示すイベントが発生した原因を解析するための解析部と、を備える。

図面の簡単な説明

[0020]
[図1] 本発明の方法および装置が適用できるハードウェアおよび論理構成の一例を示す。
[図2] 情報システムにおける機能関係の一例を示す。
[図3] 構成情報テーブルの一例を示す。
[図4] 一般ルールリポジトリの一例を示す。
[図5] トポロジ生成方式リポジトリの一例を示す。
[図6A] 相関ルールリストの例を示す。
[図6B] 相関ルールリストの他の例を示す。
[図6C] 相関ルールリストのさらに他の例を示す。
[図6D] 相関ルールリストのさらに別の例を示す。
[図6E] 相関ルールリストのさらに他の例を示す。
[図6F] 相関ルールリストの他の例を示す。
[図7] 相関ルールメモリ関連付けの一例を示す。
[図8] イベントメッセージの例示的なデータ構造を示す。
[図9] イベントキューテーブルの例示的なデータ構造を示す。
[図10] イベント消去設定テーブルの例示的なデータ構造を示す。
[図11] イベント消去タスクテーブルの例示的なデータ構造を示す。
[図12] 一般ルール検索テーブルの例示的なデータ構造を示す。
[図13] イベント受信プログラムおよび相関ルール生成プログラムの処理例を示す。
[図14] ルール展開処理の処理例を示す。
[図15] 複合伝搬条件付一般ルール展開処理の処理例を示す。
[図16] 結論イベントに対するルール展開処理の処理例を示す。
[図17] 相関ルールメモリ生成プログラムの処理例を示す。
[図18] イベント書込プログラムの処理例を示す。
[図19] マッチング率評価プログラムの処理例を示す。
[図20] イベント消去プログラムの処理例を示す。
[図21] 外部モジュールがディスプレイに表示する画面例を示す。
[図22] 実施例2における監視対象のハードウェアおよび論理構成の一例を示す。
[図23] 実施例2における構成情報テーブルの一例を示す。
[図24] 実施例2における一般ルールリポジトリの一例を示す。
[図25] 実施例2におけるトポロジ生成方式リポジトリの一例を示す。
[図26A] 実施例2における相関ルールリストの一例を示す。
[図26B] 相関ルールリストの他の例を示す。
[図27] 実施例2における相関ルールメモリ関連付けの一例を示す。
[図28] 実施例2における複合伝搬条件付一般ルール展開処理の処理例を示す。
[図29] 実施例2における相関ルールメモリ生成プログラムの処理例を示す。
[図30A] 実施例2マッチング率評価プログラムのフローチャートを示す。
[図30B] 図30Aに続くフローチャートを示す。
[図31A] 期待イベントとして提示する条件要素と提示しない条件要素との一例を示す。
[図31B] 図31Aと同様の説明図。
[図32] 外部モジュールがディスプレイに表示する情報を取得する処理のフローチャートを示す。

発明を実施するための形態

[0021]
 本発明の以下の詳細な説明において、開示の一部をなす添付図面を参照するが、これらは本発明を実施できる例示的な実施形態を示すものであって本発明を限定するものではない。これらの図面において、複数の図を通じて同一の符号は同一の構成要素を示している。更に、詳細な説明は各種の例示的な実施形態を提供するが、以下に記述および図示するように、本発明は本明細書に記述および図示する実施形態に限定されるものではなく、当業者には公知または将来公知となる他の実施形態に拡張できる点に注意されたい。
[0022]
 本明細書において「一実施形態」または「本実施形態」に言及する場合、当該実施形態との関連で記述されている特定の特徴、構造または特性は、本発明の少なくとも1つの実施形態に含まれることを意味しており、本明細書の各所でこれらの語句が出現しても必ずしも全て同一の実施形態を指している訳ではない。
[0023]
 また、以下の詳細な説明において、本発明を完全に理解されるよう多くの具体的な詳細事項を開示している。しかし、当業者には明らかなように、本発明を実施するためにこれらの具体的な詳細事項の全てが必要な訳ではない。他の状況において、本発明を無用に分かり難くしないよう、公知の構造、材料、回路、処理およびインタフェースについては詳細に記述せず、および/またはブロック図の形式で示す場合がある。
[0024]
 さらに、以下の詳細な説明のある部分は、コンピュータ内部の動作のアルゴリズムおよび記号的表現として示す。これらのアルゴリズム的記述および記号表現は、データ処理技術に精通した当業者が自身の発明の本質を他の当業者に最も効果的に伝達すべく用いる手段である。アルゴリズムとは、所望の最終状態または結果に達する一連の定義されたステップである。本発明において、実行されるステップは、有形の結果を実現するための有形の量を物理的に操作することを要求する。
[0025]
 通常、但し必須ではないが、これらの量は、保存、転送、結合、比較、および他の操作が可能な電気または磁気信号の形式をなす。原理的に共通に利用できるとの理由で、これらの信号をビット、値、要素、記号、文字、項目、数、命令等と称することが往々にして便利であることがわかっている。しかし、これらの全ておよび同様の項目は、適切な物理量に関連付けられるべきものであり、これら物理量に付けられた便宜的なラベルに過ぎないことに留意すべきである。
[0026]
 特に別途明言しない限り、以下の記述から明らかなように、本明細書の記述を通じて、「処理する」、「計算する」、「算出する」、「判定する」、「表示する」等の用語を用いた説明は、コンピュータシステムまたは当該コンピュータシステムのレジスタおよびメモリ内の物理的(電子的)な量として表現されたデータを操作して、当該コンピュータシステムのメモリまたはレジスタまたは他の情報記憶、伝送または表示装置内の物理量として同様に表現された他のデータに変換する他の情報処理装置の動作および処理を含んでいてよい。
[0027]
 本発明はまた、本明細書における動作を実行する装置に関する。この装置は、必要な目的のために特別に構築されてもよいし、または、1つ以上のコンピュータプログラムにより選択的に起動または再設定される1つ以上の汎用コンピュータを含んでいてもよい。そのようなコンピュータプログラムは、例えば、光ディスク、磁気ディスク、読出し専用メモリ、ランダムアクセスメモリ、固体装置およびドライブ等のコンピュータ可読記憶媒体、または電子情報の保存に適している他の任意の媒体に保存できるが、これらに限定されない。さらに、そのようなコンピュータプログラムを格納した記憶媒体と、コンピュータプログラムを送信するCPUと、を含む配信計算機によって、コンピュータプログラムを送信してもよい。
[0028]
 本明細書に示すアルゴリズムおよびディスプレイは、いかなる特定のコンピュータまたは他の装置にも本質的には関係していない。各種の汎用システムを、本明細書の教示によるプログラムおよびモジュールと共に用いてもよいが、所望の方法ステップを実行するためのより特化した装置を構築した方が便利なことが分かる場合がある。これら各種のシステムの構造は以下に開示する説明で明らかになる。本発明はまた、いかなる特定のプログラミング言語も前提としては記述していない。以下に記述するように、本発明の教示を実行するために各種のプログラミング言語を用いてもよいことが理解されよう。プログラム言語の命令は、1つ以上の処理装置、例えば中央処理装置(CPU)、プロセッサ、またはコントローラにより実行できる。
[0029]
 以下でより詳しく述べるように、本発明の例示的な実施形態は、複数の管理コンポーネントにおけるイベントの組合せが他の管理コンポーネントのイベントに伝搬する障害伝搬パターン(以下、複合障害伝搬パターンと呼ぶことがある)の障害が発生した際に、根本原因分析を可能とする、根本原因分析を実行する装置、方法、およびコンピュータプログラムを提供する。
[0030]
 本実施形態では、サーバコンピュータ、ネットワークスイッチ、ストレージ装置、各装置を構成する部品機器、各装置上で動作するプログラム、プログラムによって提供される情報処理サービスを、管理コンポーネントと総称することがある。
[0031]
 例示的な実施形態によれば、障害原因を分析するためのプログラムである分析エンジンは各々のイベントを受け取った各時点で、受信したイベントに関連する一般ルールと、装置やアプリケーションの冗長構成や負荷分散構成の関係情報などを含めたトポロジ情報を元に、相関ルールメモリを生成する。
[0032]
 一般ルールとは、具体的なトポロジから独立した形式で記述された障害伝搬モデルであり、各々の一般ルールは、該当する一般ルールを適用すべきトポロジの情報を取得するための各々のトポロジ生成方式情報(以下、省略してトポロジ生成方式と呼ぶことがある)を持つ。
[0033]
 これらの実施形態では、複数の管理コンポーネントにおけるイベントの組合せが他の管理コンポーネントのイベントに伝搬する伝搬条件を、一般ルールに記述する。これにより実施形態では、相関ルールメモリを生成する際に、一般ルールに記述された伝搬条件を解析し、一般ルールを適用すべきトポロジ情報をトポロジ生成方式から取得することで、複合障害伝搬パターンに対する根本原因分析を可能とする相関ルールを生成する。そして、実施形態では、その相関ルールと監視対象から受信した複数のイベントを元に、根本原因を特定する。
[0034]
 本願明細書に開示される技術は、サーバコンピュータ、ネットワーク装置、ストレージ装置、各装置を構成する部品機器、各装置上で動作するプログラム、プログラムによって提供される情報処理サービスを含むITシステムの運用を管理する運用管理方法、装置、システム、プログラム、プログラムを含む媒体およびプログラムの配布装置に関する。
[0035]
 一般ルールに対して、複数の管理コンポーネントのイベントの組合せが他の管理コンポーネントのイベントを引き起こす障害伝搬パターンを示す条件を設定することで、監視対象システムのトポロジ情報を元に根本原因分析を行うための相関ルールと、相関ルールメモリとを生成できる。
[0036]
 これにより、本実施形態では、複数の管理コンポーネントにおけるイベントの組合せが、他の管理コンポーネントのイベントを引き起こす障害伝搬パターンに対しても、根本原因を自動的に分析できる。この結果、本実施例では、冗長構成または負荷分散構成をとったITシステムを管理対象とした、根本原因分析を実現できる。
実施例 1
[0037]
 <ハードウェアおよび論理構成>
[0038]
 図1に、本発明の実施形態を実装可能な情報システムの例示的なハードウェアアーキテクチャおよび論理構成を示す。図中では、構成要素の名称を適宜省略して記載する。
[0039]
 図1のシステムは、監視コンピュータ101、1つ以上のネットワークスイッチまたは他のネットワーク装置103、LAN(ローカルエリアネットワーク)105等のネットワークを介して通信すべく接続する1つ以上のコンピュータまたは他のコンピュータ102を含む。
[0040]
 監視コンピュータ101は、CPU111、メモリ112、ハードディスクドライブ(HDD)113等の記憶媒体、ビデオインターフェース114、およびシステムバス116を介して接続するネットワークインターフェース115(I/F)を含む汎用コンピュータであってよい。
[0041]
 監視コンピュータ101は、一つのコンピュータから構成されてもよいし、複数のコンピュータを連携させて構成してもよい。監視コンピュータ101は、システム管理者との間で情報を交換するためのユーザインターフェース部を備えることもできる。または、監視コンピュータ101と図外の管理端末とを有線または無線で接続し、システム管理者は管理端末の有するユーザインターフェース部を利用して監視コンピュータ101に情報を入出力する構成でもよい。
[0042]
 監視コンピュータ101の論理モジュールおよびデータ構造は、相関ルールメモリ121、相関ルールメモリ生成プログラム122、イベント受信プログラム123、イベント書込プログラム124、マッチング率評価プログラム125、相関ルールリスト126、イベント消去プログラム127、外部モジュール128、相関ルール生成プログラム129、一般ルール検索テーブル131、イベントキューテーブル132、イベント消去設定テーブル133、イベント消去タスクテーブル134、トポロジ生成方式リポジトリ135、一般ルールリポジトリ136、および構成情報テーブル137を含む。
[0043]
 相関ルールメモリ121は、イベントの状態および根本原因分析の結果として導かれた相関ルールを表すオブジェクトモデルを保存する。相関ルールメモリ121、相関ルールメモリ生成プログラム122、イベント受信プログラム123、イベント書込プログラム124、マッチング率評価プログラム125、相関ルールリスト126、イベント消去プログラム127、外部モジュール128、および相関ルール生成プログラム129は、メモリ112または他の計算機可読媒体に保存され、CPU111により実行される。
[0044]
 以下に記述する一般ルール検索テーブル131、イベントキューテーブル132、イベント消去設定テーブル133、イベント消去タスクテーブル134、トポロジ生成方式リポジトリ135、一般ルールリポジトリ136、および構成情報テーブル137のデータ構造は、ディスク113または他の適当な計算機可読媒体に保存されていてよい。
[0045]
 監視コンピュータ101は、LAN105と通信するためのネットワークインターフェース115を有する。これにより、監視コンピュータ101は、サーバ102またはネットワークスイッチ103のような、監視対象である動作管理コンポーネントから、LAN105を介してイベントメッセージを受信する。ディスプレイ117はビデオインターフェース114に接続されていて、外部モジュール128からの根本原因分析の結果および他の情報を管理者に提示するために用いられる。
[0046]
 各サーバ102は、当技術分野で知られているように、アプリケーション等を実行させている監視対象ノードであってよい。サーバ102は、CPU146、メモリ/ストレージ147、ハードディスクドライブ(HDD)143等の記憶媒体、およびネットワークインターフェース142を含む汎用コンピュータであってよい。各サーバ102は、監視エージェント141を含むこともできる。監視エージェント141は、特定の状態変化が検出された場合に、LAN105を介して監視コンピュータ101にイベントメッセージを送る。
[0047]
 あるいは、いずれか1台のサーバ102上の監視エージェント141が、ネットワークスイッチ103の状態を監視することができる。さらに、或る場合には、ネットワークスイッチ103は自身の監視エージェントを有していてよい。
[0048]
 例示する実施形態において、各サーバ102は、メモリ147上で動作するアプリケーション148を有する。アプリケーション148は、LAN105およびネットワークスイッチ103aを介して、クライアントコンピュータ153にWebサービスを提供するためのコンピュータプログラムである。各Webサービス提供用のアプリケーション148a、148b、148cは、Web三階層構成のアプリケーションであってよい。
[0049]
 さらに、各サーバ102では、HA(High Availability)プログラム149がメモリ147上で動作することもできる。HAプログラム149は、アプリケーション148の高可用性を実現する監視対象アプリケーションであってよい。各サーバ102上で動作するHAプログラム149同士で、アプリケーション148またはサーバ102の、動作状況情報を交換する。
[0050]
 HAプログラム149は、アプリケーション148によるサービスの提供が不可となった場合に、予備系のサーバ102d上でアプリケーション148を起動させて、サービス提供を続行するアプリケーションであってもよい。本実施形態では、HAプログラム149は、3台の現用系サーバ102a~102cと1台の予備系サーバ102dとの、いわゆる3対1構成によって、アプリケーションの可用性を向上させている。現用系サーバおよび予備系サーバの台数は、何台であってもよい。
[0051]
 クライアントコンピュータ153は、監視対象ノードの一つである。クライアントコンピュータ153は、サーバ102上で動作するアプリケーション148にアクセスすることで、Webサービス(以下、サービスと略記する場合がある)を利用する。
[0052]
 クライアントコンピュータ153は、サーバ102からWebサービスの提供を受けるために、アプリケーション148にアクセスする。クライアントコンピュータ153は、サービスが正常に動作しているかを監視するための疑似クライアントコンピュータであってもよい。また、クライアントコンピュータ153は、クライアントコンピュータ153の状態を監視して監視コンピュータ101にイベントを報告できる監視エージェント141を含んでいてよい。
[0053]
 本実施形態においては、サーバ102、クライアントコンピュータ153、ネットワークスイッチ103を監視対象ノードの一例として挙げているが、これらに限らず、例えば、ストレージ装置、または、その他のITシステムを構成する管理コンポーネントを監視対象ノードとしてもよい。
[0054]
 <機能関係ブロック図>
[0055]
 図2のブロック図は、監視システム201内の例示的な機能関係を示す。図2において、監視コンピュータ101のモジュールおよびデータ構造を含む監視システム201は、サーバ102、ネットワークスイッチ103等の複数の監視対象202を監視すべく、構成される。
[0056]
 監視システム201において、イベント受信プログラム123は、監視対象202を含むITシステムの監視対象部分からイベントメッセージを受信して、これらのイベントメッセージをイベントキューテーブル132に保存する。例えば、サーバ102、クライアントコンピュータ153、およびスイッチ103上の監視エージェント141は、イベントが生起すると、そのイベントに応じたイベントメッセージをイベント受信プログラム123に送信することができる。
[0057]
 相関ルール生成プログラム129は、イベントキューテーブル132からイベントメッセージを取得して、取得したイベントメッセージを解析するために必要な一般ルール名を一般ルール検索リポジトリ131から検索して取得する。相関ルール生成プログラム129は、イベントメッセージに対応する一般ルールを一般ルールリポジトリ136から読み込む。
[0058]
 相関ルール生成プログラム129はまた、取得した一般ルール名を元に、該当するトポロジ生成方式をトポロジ生成方式リポジトリ135から取得する。そして、相関ルール生成プログラム129は、取得したトポロジ生成方式と、イベントが生起した管理コンポーネントの情報とを元に、イベントの発生した管理コンピュータを含むトポロジ情報を、構成情報テーブル137から取得する。
[0059]
 相関ルール生成プログラム129は、一般ルールリポジトリ136から読み込んだ一般ルールと構成情報テーブル137から取得したトポロジ情報とから相関ルールを生成し、相関ルールリスト126に追加する。相関ルールメモリ生成プログラム122は、相関ルール生成プログラム129から相関ルールリスト126を受け取り、相関ルールメモリ121を生成する。
[0060]
 イベント書込プログラム124は、相関ルール生成プログラム129が処理したイベントメッセージを取得して、取得したイベントメッセージを含む情報を相関ルールメモリ121に書き込む。さらに、イベント書込プログラム124は、イベント消去設定テーブル133の設定に従い、イベント消去タスクテーブル134内にイベント消去タスクを生成する。
[0061]
 イベント書込プログラム124は、自プログラム124のプロセス終了時に、マッチング率を評価するためのプログラム125を起動する。マッチング率の値は、新規イベントの発生により変化する可能性がある。従って、マッチング率評価プログラム125は、イベントの入力に関連する各相関ルールについてのマッチング率を評価する。
[0062]
 マッチング率評価プログラム125は、1つ以上の外部モジュール128を起動してもよい。外部モジュール128の一例として、根本原因に関する情報をディスプレイ117に表示するモジュールがある。
[0063]
 イベント消去プログラム127はタイマーにより起動され、イベント消去タスクテーブル134に基づいて周期的にタスクを実行する。イベント消去プログラム127は、以前に生起したイベントを、そのイベント発生からの経過時間に基づいて消去する。
[0064]
 <構成情報テーブル>
[0065]
 図3に、監視コンピュータ101に常駐する構成情報テーブル137の例示的なデータ構造を示す。構成情報テーブル137は、一般ルールから相関ルールを生成する際に、一般ルールを適用する監視対象管理コンポーネントのトポロジ情報を検索し、取得するために利用される。
[0066]
 構成情報の例として、コンピュータ102,153に関する情報を格納したコンピュータ管理表300aと、ネットワークスイッチ103に関する情報を格納したネットワークスイッチ管理表300bを挙げる。
[0067]
 図3の上側に示すように、コンピュータ管理表300aは、管理コンポーネント識別子301aと、管理コンポーネント種別302aと、提供サービス303と、アクセスサービス304と、接続スイッチ305とを備える。
[0068]
 管理コンポーネント識別子301aには、管理対象である各コンピュータを一意に識別するための値を格納する。管理コンポーネント種別302aには、該当する管理コンポーネントの種別を表す情報を格納する。提供サービス303には、該当するコンピュータ上で動作するアプリケーションが提供するサービス名を格納する。アクセスサービス304は、該当するコンピュータ上で動作するアプリケーションがアクセスするサービス名を格納する。接続スイッチ305には、該当するコンピュータが接続するネットワークスイッチ103を識別する管理コンポーネント識別子を格納する。
[0069]
 図3の下側に示すネットワークスイッチ管理表300bは、管理コンポーネント識別子301bと、管理コンポーネント種別302bと、接続コンピュータ306を含む。管理コンポーネント識別子301bには、各ネットワークスイッチ103を識別するための一意な値を格納する。管理コンポーネント種別302bには、該当する管理コンポーネントの種別を表す値を格納する。接続コンピュータ306には、該当するネットワークスイッチが接続されているコンピュータの管理コンポーネント識別子を格納する。
[0070]
 構成情報テーブル137から、トポロジ情報を取得することができる。本実施形態においては、トポロジ情報は、構成情報テーブル137から取得される2つ以上のエントリと、それらエントリ間の関係情報とから構成される。
[0071]
 例えば、コンピュータ管理表300aのエントリ311に着目すると、管理コンポーネント識別子301aは「ServerA」であり、接続ネットワークスイッチ305には管理コンポーネント識別子「NwSwitchA」が含まれている。一方、ネットワークスイッチ管理表300bにおいて管理コンポーネント識別子301bが「NwSwitchA」であるエントリ321に着目すると、接続コンピュータ306には管理コンポーネント識別子「Client」が含まれている。従って、エントリ311-エントリ321-エントリ315という、サーバとネットワークスイッチに関する接続関係を表すトポロジ情報を取得することができる。
[0072]
 本実施形態では、構成情報テーブル137は、監視対象装置に関する情報と装置間の接続関係情報とを管理するデータベーステーブルとしているが、これに限らない。構成情報を管理しているものであれば、記憶メディアまたは記憶デバイス、格納方法、格納する各項目のデータ表現形式およびデータ構造は問わない。また、構成情報には、装置および装置間の接続関係だけでなく、例えば、サービス、アプリケーション、サブネットなどの機器以外の情報を含めてもよい。
[0073]
 <一般ルールリポジトリおよび一般ルール>
[0074]
 図4を参照して、一般ルールについて説明する。一般ルールとは、具体的なトポロジから独立した形式で記述される障害伝搬モデルである。
[0075]
 図4は、一般ルールリポジトリ136に常駐する一般ルールの例を示す。一般ルール400aは、複合障害伝搬パターンの障害に対する根本原因分析に利用する一般ルールの例である。一般ルール400aは、複数のコンピュータのNIC障害(ネットワークインターフェース障害)の組合せが根本原因であることを示唆する一般ルールの例である。
[0076]
 こうした障害解析において根本原因を特定するためのルールは、発生すると予測されるイベントの組合せと、根本原因となる障害のペアとを、イベント相関に基づいて、IF-THEN形式で示すことが多い。
[0077]
 IF-THEN形式のルール表現においては、“もしもIF部分に記述された条件が成立するならば、THEN部分が真である”のような意味のルールを表記する。一般ルールは、1つ以上の条件要素を含んでいてよい。
[0078]
 本実施形態では、エキスパートシステムなどの一般的なルールと同様にIF-THENの形式でルールが記述されているものとする。一般ルールのIF部の条件部分には、ルールの適用対象となる管理コンポーネントを決定する条件と、管理コンポーネントで生起するイベントに関する情報とが予め定義されている。また、一般ルールのTHEN部の結論部分には、ルールの適用対象となる管理コンポーネントを決定する条件と、障害の原因に関する情報とが予め定義されている。
[0079]
 なお、ルールの記述形式自体はIF-THEN形式でなくてもよく、一般ルールのIF部の条件要素、または、THEN部の対象となる管理コンポーネントが特定できる何かしらの条件が、予め定義されていればよい。
[0080]
 また、一般ルールの条件要素に、「複合伝搬条件」を記述することができる。複合伝搬条件は、“複合伝搬条件を設定した条件要素が示すイベント種別が、複合伝搬条件により指定された所定数以上、異なる管理コンポーネントにおいて発生した場合、THEN部分が真である“のような意味を持つ。
[0081]
 なお、一般ルールは図4に挙げられたものに限られず、さらに多くのルールがあっても構わない。一般ルールリポジトリ136は複数の一般ルールを含んでも良い。
[0082]
 一般ルールは、フィールド411,412,413を含む。フィールド411は、一般ルールの識別子となる一般ルール名を登録する。フィールド412は、”IF-THEN”形式で記載したイベント伝播モデルのIF部に相当する観測イベント種別を登録する。フィールド413は、”IF-THEN”形式で記載した一般ルールのTHEN部に相当する原因イベント種別を登録するTHEN部である。以下、フィールド412をIF部412と、フィールド413をTHEN部413と呼ぶことがある。一般ルールにおいて、THEN部413のステータスが正常になった場合は、IF部412の問題も解決しているという関係にある。
[0083]
 図4には、監視サーバ101が有する一般ルールの具体例を幾つか示している。一般ルール名が「GeneralRule1」で示される一般ルール400aを説明する。その一般ルール400aでは、IF部412aとして「アクセスサービスが特定サービスServiceXであるコンピュータにおける(%ServiceX%)AveResponseTime_Err(サービスの平均レスポンスタイム増加エラー)」と、「提供サービスが特定サービスServiceXであるコンピュータにおけるNic_Err(NIC障害エラー)」とを検知した場合に、「提供サービスがServiceXのコンピュータにおけるNic_Err(NIC障害エラー)」が原因と結論付けている。
[0084]
 一般ルール400aに記述された複合伝搬条件431は、「IF部412aに記述された条件432を満たすコンピュータが複数存在する場合、それらコンピュータのうち所定数(2台以上)のコンピュータでイベントNic_Errが生起し、かつ他の条件要素が真となった場合に、THEN部分が真であると推定できる」ことを示す。
[0085]
 なお、複合伝搬条件431は、「2>=」のように、数値と不等号の組合せで表現することもできるし、百分率などの割合を示す値として表現してもよい。また、所定数は「2」に限らず、1以上の値でもよい。
[0086]
 また、複合伝搬条件431の数値部分を変数とし、監視対象環境に応じてユーザが入力したり、監視対象装置またはアプリケーションから情報を取得して監視対象毎に自動的に設定したりしてもよい。
[0087]
 例えば、図1に示すHAプログラム149の持つ設定情報から、コンピュータ102a、102b、102c、102dが3対1の冗長構成であることを取得し、この情報に基づいて、複合伝搬条件「2>=」を導出してもよい。「>=」にあたる部分は、以上、以下、超、未満、等価などの、不等号または等号を表す他の記号を用いてもよい。
[0088]
 IF部412aに記述された「アクセスサービス=%ServiceX%」、「提供サービス=%ServiceX%」、および「(%ServiceX%)AveResponseTime_Err」における、“%ServiceX%”を説明する。この値“%ServiceX%”は、監視対象環境に依存しない固定値であってもよいし、変数であってもよい。その値を変数とする場合は、相関ルールを生成する時に、構成情報テーブル137および受信したイベントメッセージなどの情報から、コンピュータが提供またはアクセスするサービスの識別子を取得して、一般ルール400aに代入してもよい。本実施形態では、“%ServiceX%”を変数として説明する。
[0089]
 <トポロジ生成方式リポジトリおよびトポロジ生成方式>
[0090]
 図5は、監視サーバ101が有するトポロジ生成方式リポジトリ135内のトポロジ生成方式情報の構成例を示す図である。
[0091]
 トポロジ生成方式は、監視対象となる複数の管理コンポーネント間での関係を示す情報(トポロジ情報)を、監視サーバ101が構成情報に基づいて生成するための手段を定義した情報である。
[0092]
 トポロジ生成方式500は、フィールド511,512,513,514,515を含んでいる。フィールド511は、トポロジ生成方式500を適用する一般ルールの識別子を格納する。フィールド512には、トポロジ情報を生成する際の起点となる管理コンポーネントの条件が登録される。起点となる管理コンポーネントの条件には、管理コンポーネント種別および管理コンポーネントが持つ属性が含まれる。フィールド513には、トポロジ情報を生成する際の終点となる管理コンポーネントの条件(管理コンポーネント種別および管理コンポーネントが持つ属性)が登録される。
[0093]
 フィールド514には、起点コンポーネントから終点コンポーネントに至るまでの間に経由する管理コンポーネントの条件(管理コンポーネント種別および管理コンポーネントが持つ属性)を登録する。フィールド515には、起点コンポーネントと終点コンポーネントの間のトポロジを生成する条件を登録する。
[0094]
 図5は、監視サーバ101の具備するトポロジ生成方式の具体例を示している。例えば、トポロジ生成方式500aは、相関ルール生成プログラム129が一般ルールGeneralRule1(図4における一般ルール400a)から相関ルールを生成する際に利用するトポロジ生成方式である。
[0095]
 トポロジ生成方式500aは、GeneralRule1を適用するトポロジ情報を取得する際には、一方のコンピュータが起点となり、他方のコンピュータが終点となるトポロジであって、一方のコンピュータの提供サービス名が他方のコンピュータのアクセスサービス名と等しい組み合わせを、構成情報テーブル137から検索して取得可能であることを示す。
[0096]
 なお、トポロジ生成方式500aに記述された「(Computer.アクセスサービス)=%ServiceX%」、および「(Computer.提供サービス)=%ServiceX%」における“%ServiceX%”は、監視対象環境によらない固定値であってもよいし、変数であってもよい。変数の場合は、トポロジ情報を取得する前に、構成情報テーブル137および受信したイベントメッセージなどの情報から、コンピュータが提供するサービスの識別子またはアクセスするサービスの識別子を取得して、トポロジ生成方式500aに代入してもよい。本実施形態では、変数として説明する。
[0097]
 トポロジ生成方式500bは、相関ルール生成プログラム129が一般ルールGeneralRule2から相関ルールを生成する際に利用するトポロジ生成方式である。
[0098]
 トポロジ生成方式500bは、GeneralRule2に適用するトポロジ情報を取得する際には、起点管理コンポーネント条件512bと終点管理コンポーネント条件513bと経由管理コンポーネント条件514bとを満たし、かつ、トポロジ生成条件515bを満たす組み合わせを、構成情報テーブル137から検索することで取得できることを示している。
[0099]
 トポロジ生成条件515bは、一方のコンピュータに接続されるネットワークスイッチが、監視対象内のいずれかのネットワークスイッチの管理コンポーネント識別子と等しく、かつそのネットワークスイッチの接続されているコンピュータが他方のコンピュータの管理コンポーネント識別子と等しく、一方のコンピュータの提供サービス名が他方のコンピュータのアクセスサービス名と等しい組み合わせであること、を定義している。
[0100]
 なお、本実施形態では、各コンピュータ間にネットワークスイッチが1台しか無い構成を例に挙げて説明している。コンピュータ間にネットワークスイッチまたは他のネットワーク機器が複数ある構成の場合は、トポロジ生成条件515に、「ネットワーク機器以外の装置との接続を見つけるまで接続関係を辿る」などの生成条件を含めてもよい。
[0101]
 <相関ルール>
[0102]
 図6A~図6Fに、相関ルールの構成例を示す。それら相関ルールは、相関ルールメモリ121に格納される。
[0103]
 相関ルールは、一般ルール400と構成情報テーブル137から取得したトポロジ情報とを元に生成される。相関ルールは、トポロジに依存する複数イベントの相関関係を表したルールである。図6A~図6Fは、図4の一般ルール400と図5の構成情報テーブル137とから生成される、相関ルール600a~600qの例を示す。
[0104]
 一般に、相関ルール600は、2つの部分、すなわち「IF」部と呼ばれる第1の部分601と、「THEN」部と呼ばれる第2の部分602とに分けることができる。IF部601は、1つ以上の条件要素を含んでいてよい。例えば、相関ルール600aは、IF部601に3つの条件を含む。
[0105]
 3つの条件とは、「<Client (WebService)AveResponseTime_Err(クライアントコンピュータのWebサービス平均レスポンスタイム増加エラー)>」、「<ServerA Nic_Err(サーバAのNIC障害エラー)>」、および「<ServerB Nic_Err(サーバBのNIC障害エラー)>」、である。従って、「Nic_Err(NIC障害エラー)」のようなエラーイベントが「サーバA」から受信された場合に、条件「<ServerA Nic_Err>」は真になる。
[0106]
 IF部601に記載された全ての条件が真ならば、特定のルールに従いTHEN部602の結論要素は真であると推定される。例えば、相関ルール600aは結論要素「<ServerA Nic_Err>」を有する。
[0107]
 従って、相関ルール600aによれば、サーバAおよびサーバBがNIC障害エラーを報告し、かつ、クライアントコンピュータ153がWebサービスの平均レスポンスが増加したというエラーを報告した場合に、それらエラーの根本原因が、サーバAにおけるNIC障害であることを示す。
[0108]
 IF部601およびTHEN部602の、各要素は、監視対象の管理コンポーネントを識別する識別子と、イベントの種別を表すイベント種別を含む。例えば、相関ルール600aの条件要素「<ServerA Nic_Err>」は、サーバAを識別する識別子「ServerA」とNIC障害を表すイベント種別「Nic_Err」を含む。
[0109]
 相関ルール600が複数の結論を有する場合もあり得る。すなわち、THEN部602が複数の管理コンポーネントにおける事象を指摘する場合等である。例えば、各々のIF部601に同じ条件を有するが各々のTHEN部602には異なる結論を有する、複数の相関ルールを定義することが好ましい場合には、相関ルールのTHEN部602が複数の結論を有してよい。
[0110]
 例えば、「IF A B C THEN X(A B CならばX)」および「IF A B C THEN Y(A B CならばY)」のような2つの相関ルールがある場合、これらのルールを結合して1つのルール「IF A B C THEN X Y(A B CならばXおよびY)」として定義できる。
[0111]
 図6Aは、サーバA(102a)が根本原因となる場合の3つの相関ルール600a~600cを示す。図6Bは、サーバB(102b)が根本原因となる場合の3つの相関ルール600d~600fを示す。図6Cは、サーバC(102c)が根本原因となる場合の3つの相関ルール600g~600iを示す。図6Dは、サーバD(102d)が根本原因となる場合の3つの相関ルール600j~600lを示す。
[0112]
 図6A~図6Dに示す各相関ルールは、一般ルール400aと構成情報テーブル137とに基づいて得られる。上述の通り、一般ルール400aでは、複合伝搬条件431として、2つ以上のサーバでNICエラーが発生することを規定している。
[0113]
 そこで、本実施形態では、監視対象の各サーバが根本原因となり得る場合を自動的に抽出し、全ての組み合わせについて相関ルールを生成する。例えば、サーバA(102a)が根本原因となり得る2台のサーバの組み合わせは、サーバA(102a)とサーバB(102b)、サーバA(102a)とサーバC(102c)、サーバA(102a)とサーバD(102d)の3つである。従って、それら3つの組み合わせごとに、それぞれ相関ルール600a~600cを作成する。サーバB(102b)、サーバC(102c)、サーバD(102d)が根本原因となる組み合わせも、それぞれ3つずつとなる。
[0114]
 図6Eは、ネットワークスイッチ103が根本原因となる場合の1つの相関ルール600mを示す。相関ルール600mは、一般ルール400bと構成情報テーブル137とに基づいて生成される。
[0115]
 図6Fは、ネットワークスイッチとサーバの両方にエラー(イベント)が生じた場合に対応するための相関ルール600n~600qを示す。それら相関ルール600n~600qは、一般ルール400cと構成情報テーブル137とに基づいて生成される。
[0116]
 <相関ルールメモリ>
[0117]
 相関ルールメモリ121には、相関ルールを表すオブジェクトモデルが保存される。図7に、相関ルールメモリ121に保存されたオブジェクトモデル(相関ルール)間の関連付けの例を示す。
[0118]
 図7には、4種類のオブジェクト、すなわち、条件オブジェクト701(a~g)、演算子オブジェクト702(a~h)、相関ルールオブジェクト703(a~f)、および結論オブジェクト704(a,b)が示されている。これらのオブジェクト701~704およびその接続は、相関ルールメモリ生成プログラム122により生成される。
[0119]
 条件オブジェクト701は、4種の属性を備える。4種類の属性とは、管理コンポーネントを識別する「管理コンポーネント識別子」、イベントの種別である「イベント種別」、イベントが受信された日時である「受信日時」、および条件に割り当てられた重み値である。
[0120]
 演算子オブジェクト702は「Not」属性を有し、真または偽のいずれかの値をとり得る。例えば、相関ルール600に書かれた条件要素が「<NOT ServerA Nic_Err(サーバAのNIC障害エラーではない)>」等の指定された「NOT」単項演算子である場合、この属性の値は「真」に設定される。これに対し、相関ルールに書かれた条件要素が指定された「NOT」単項演算子ではない場合、属性の値は「偽」に設定される。
[0121]
 相関ルールオブジェクト703は、特定の相関ルールの識別子を指定する「ルール名」、および相関ルールの正確さの確率を示す「ルールマッチング率」(RMR)を含む。相関ルールオブジェクト703に接続された演算子オブジェクト702と、さらにその演算子オブジェクト702に接続された条件オブジェクト701とが、1つの相関ルールの条件要素(IF部)を示す。また、相関ルールオブジェクト703に接続された結論オブジェクト704が、1つの相関ルールの結論要素(THEN部)であることを示す。相関ルールオブジェクト703のRMR値は、相関ルールオブジェクト703に接続された条件オブジェクト701の「重み」から算出される。
[0122]
 結論オブジェクト704は、3種の属性を有する。3種類の属性とは、相関ルールが適用される管理コンポーネントを識別する「管理コンポーネント識別子」、エラーの原因を識別する「原因」、および正確さの確率を示す「マッチング率」(MR)である。
[0123]
 換言すれば、MR値は、この結論がイベントの根本原因である確度を示す。このオブジェクトモデルは、条件要素と結論要素の重複なしに形成される。相関ルールメモリ生成プログラム122は、条件オブジェクト701を生成する際に重複を除外する。これにより、イベント書込プログラム124は、受信した1つのイベントに対してイベントを何回も書く必要が無い。
[0124]
 相関ルールは、1つの相関ルールオブジェクト703に対して、結論オブジェクト704と演算子オブジェクト702とを接続し、さらに演算子オブジェクト702に条件オブジェクト701を接続することにより表される。
[0125]
 例えば、相関ルールオブジェクト703aは、演算子オブジェクト702a、702b、702cとの3つの接続を有する。各演算子オブジェクト702は、ちょうど1つの条件オブジェクト701に接続している。従って、「相関ルール600a」のIF部は3つの条件からなることがわかる。さらに、相関ルールオブジェクト703aは、結論オブジェクト704aとも接続している。従って、「相関ルール600a」のTHEN部は、<ServerA Nic_Err>となる。
[0126]
 相関ルールオブジェクト703bもまた、演算子オブジェクト702b、702c、702dとの3つの接続を有し、かつ結論オブジェクト704aとの接続を有する。演算子オブジェクト702b、702c、および結論オブジェクト704aは、相関ルールオブジェクト703a、703bにより共有される。
[0127]
 本実施形態における「ルールマッチング率」とは、相関ルールの条件要素の総数を構成する要素のうちどの要素が真になるかに従う率で計算される確度である。ルールマッチング率(RMRと略記する場合がある)は、真となる条件要素の数を条件要素の総数で割った値として求められる(RMR=真の条件要素数/条件要素の総数)。
[0128]
 また、本実施形態における「マッチング率」とは、結論オブジェクト704が接続する各相関ルールオブジェクト703が有する「ルールマッチング率」のうちの最大値とする確度である。マッチング率(MRと略記する場合がある)は、次式にしたがって算出することができる。
[0129]
  MR=Max(接続する相関ルールオブジェクトのRMR)
[0130]
 図7において、条件要素701a~701cは真であり、相関ルール600aの条件要素の総数は3である。従って、3つの条件要素のうちの3つの条件要素が真であるから、分析エンジンは、相関ルール600aのルールマッチング率を、(3/3)=1.0と計算する。
[0131]
 相関ルール600bに関しては、条件要素の総数は3であり、そのうち真の条件要素の数は2つしかない。従って、ルールマッチング率は、0.66(=2/3)となる。
[0132]
 同様にして、図7によれば、結論オブジェクト704aに接続している残りの相関ルール600cのルールマッチング率は0.66、相関ルール600nのルールマッチング率は0.50である。
[0133]
 従って、この場合、結論704aのマッチング率について結果的に得られる値は、相関ルールオブジェクト703aの有するルールマッチング率の最大値である3/3=1.0である。
[0134]
 同様にして、結論704bのマッチング率は0.50である。従って、マッチング率を設定することにより、分析エンジンは、管理コンポーネントのうちの1つに関するイベントメッセージが分析エンジンに送られない場合に生じ得るように、たとえ1つの条件要素が真で無い場合でも、最も確率が高い結論を決定できる。例えば、管理コンポーネントが監視システム201にエラーイベントメッセージを送信せずに故障した場合などで、一部の条件要素が真でない状況が生じ得るが、マッチング率を設定することで、そのような状況にも対応することができる。
[0135]
 <イベントメッセージ>
[0136]
 図8に、イベントメッセージ805のデータ構造の一例を示す。イベント受信プログラム12は、監視対象ノードに設けられた監視エージェント等から、イベントメッセージ805を受信する。
[0137]
 イベントメッセージ805は、3種類の情報を備えている。3種類の情報とは、すなわち、「管理コンポーネント種別」801、「管理コンポーネント識別子」802、および「イベント種別」803である。
[0138]
 管理コンポーネント種別801とは、コンピュータ、ネットワークスイッチまたはストレージ等のように、イベントメッセージが関係する管理コンポーネントの種別である。管理コンポーネント識別子802とは、ITシステム環境において特定の管理コンポーネントを識別できる一意な識別子である。イベント種別803とは、生起したイベントの種別を示す。
[0139]
 <イベントキューテーブル>
[0140]
 図9に、監視コンピュータ101に常駐するイベントキューテーブル132の例示的なデータ構造を示す。イベント受信プログラム123は、監視対象202からイベントメッセージ805を受信したならば、イベント情報をこのテーブルに入れる。イベントキューテーブル132は、報告されたイベントのキューのリストを生成するため、イベントの入力-出力順序は先入れ先出し(FIFO)原則に従う。
[0141]
 イベントキューテーブル132は、4つのカラムを備える。4つのカラムとは、すなわち、管理コンポーネント種別901、管理コンポーネント識別子902、イベント種別903、受信日時904である。
[0142]
 管理コンポーネント種別901は、イベントを生成した管理コンポーネントの種別である。管理コンポーネント識別子902は、管理コンポーネントを一意に識別するための情報である。イベント種別903は、生起したイベントの種別を示す。受信日時904は、イベントメッセージが受信された日時を示す。
[0143]
 管理コンポーネント種別901、管理コンポーネント識別子902、およびイベント種別903は、受信されたイベントメッセージ805から取得される。受信日時904は、イベント受信プログラム123がイベントメッセージを受信した日時である。
[0144]
 イベントキューテーブル132は、相関ルール生成プログラム129のバッファとして機能する。相関ルール生成プログラム129は、イベントキューテーブル132からイベント情報を取得し、取得したイベント情報に関連する一般ルール400を読み込んで、相関ルールのルールメモリを生成する。
[0145]
 <イベント消去設定テーブル>
[0146]
 図10に、監視コンピュータ101に常駐するイベント消去設定テーブル133の例示的なデータ構造を示す。イベント消去設定テーブル133は、有効期間(生存時間)を指定するイベント消去プログラム127の設定情報を含む。イベント消去設定テーブル133は、受信されたイベントの各々に対して指定する有効期間を決定すべくイベント書込プログラム124により使用される。
[0147]
 イベント消去設定テーブル133において、管理コンポーネント種別1001は、イベントメッセージが生成された管理コンポーネントの種別を示し、イベント種別1002はイベントの種別を示し、有効期間1003はイベントが考慮対象であり続ける時間(すなわちイベントの有効期間)を示す。
[0148]
 有効期間1003は、管理コンポーネントの種別とイベント種別の組合せの各々に対して定義される。有効期間1003は、イベントメッセージを受信した時点から、相関ルールメモリ121からイベントを削除する時点までの期間である。例えば、有効期間が10分である場合、イベントが受信された10分後に、対応する条件オブジェクト701内の重み値を0.0とする。
[0149]
 <イベント消去タスクテーブル>
[0150]
 図11に、監視コンピュータ101に常駐するイベント消去タスクテーブル134のデータ構造の一例を示す。本実施形態では、イベント消去タスクテーブル134を用いて、各々の受信されたイベントの有効期間を管理する。
[0151]
 イベント消去タスクテーブル134は、イベントが受信されるとイベント書込プログラム124により書き込まれる。イベント消去タスクテーブル134は、イベントの消去を開始する時点を決定すべく、イベント消去プログラム127により使用される。
[0152]
 イベント消去タスクテーブル134は、開始日時1101、管理コンポーネント識別子1102、およびイベント種別1103を含む。開始日時1101は、イベント消去タスクを開始すべき日時である。開始日時1101は、式「受信日時904+有効期間1003」により計算される。管理コンポーネント識別子1102は、管理コンポーネントを一意に識別する識別子である。イベント種別1103は、イベントメッセージを生起させたイベントの種別である。
[0153]
 イベント消去プログラム127は、管理コンポーネント識別子1102およびイベント種別1103に基づいて、対象とする条件オブジェクト701を識別する。従って、イベント消去タスク表134の管理コンポーネント識別子1102およびイベント種別1103は、イベントキューテーブル132の管理コンポーネント識別子902およびイベント種別903から転記される。
[0154]
 <一般ルール検索テーブル>
[0155]
 図12に、監視コンピュータ101に常駐する一般ルール検索テーブル131の例示的なデータ構造を示す。本実施形態では、相関ルール生成プログラム129が取得したイベントの原因を解析するための相関ルールのみを、一般ルールと構成情報から生成するという、随時生成の形態をとる。つまり、本実施形態では、管理コンポーネントからイベントメッセージを受信するごとに、相関ルールを生成する。これにより、必要な相関ルールだけを必要なときに生成することができ、相関ルールメモリ121の記憶容量を効率的に使用することができる。
[0156]
 なお、監視対象のITシステムで使用する可能性のある相関ルールの全部または一部を事前に作成して記憶しておく構成でもよい。
[0157]
 一般ルール検索テーブル131は、受信したイベントの原因を解析するために必要となる一般ルールを検索すべく、相関ルール生成プログラム129によって使用される。一般ルール検索テーブル131は、管理コンポーネント種別1201と、イベント種別1202と、一般ルール名1203を有する。
[0158]
 管理コンポーネント種別1201は、イベントメッセージが生成された管理コンポーネントの種別である。イベント種別1202は、イベントメッセージを生起させたイベントの種別である。一般ルール名1203は、一般ルールを一意に識別する名称である。
[0159]
 一般ルール名1203は、管理コンポーネント種別とイベント種別の組合せの各々に対して定義される。また、一般ルール名1203は、一般ルール400が持つフィールド411に格納される「一般ルール名」と、トポロジ生成方式500が持つフィールド511に格納される「対応一般ルール」と同等の識別子である。
[0160]
 相関ルール生成プログラム129は、イベントキューテーブル132の管理コンポーネント種別901およびイベント種別903の、値をキーとして、一般ルール検索テーブル131の管理コンポーネント種別1201およびイベント種別1202を検索する。この検索により、相関ルール生成プログラム129は、展開すべき一般ルールに対応する一般ルール名1203を取得する。
[0161]
 また、相関ルール生成プログラム129は、生成された相関ルールの結論要素の管理コンポーネント種別およびイベント種別の、値をキーとして、一般ルール検索テーブル131の管理コンポーネント種別1201およびイベント種別1202を検索し、展開すべき一般ルールに対応する一般ルール名を取得する。
[0162]
 <イベント受信プログラム及び相関ルール生成プログラム>
[0163]
 図13に、監視コンピュータ101内で、イベント受信プログラム123、および相関ルール生成プログラム129により実行される、イベント受信の処理例および相関ルール生成の処理例のフローチャートを示す。
[0164]
 イベント受信プログラム123は、監視対象202の1つからイベントメッセージを受信することにより処理を開始する。
[0165]
 ステップS1301において、イベント受信プログラム123は、監視対象202からイベントメッセージ805を受信する。
[0166]
 ステップS1302において、イベント受信プログラム123は、ステップS1301で受信したこのイベントメッセージ805の情報を、管理コンポーネント種別901、管理コンポーネント識別子902、イベント種別903として、現在日時を受信日時904として、イベントキューテーブル132内の新規レコードにそれぞれ格納して、処理を終了する。
[0167]
 例えば、図8のイベントメッセージ805に示すイベントを受信した場合、イベントキューテーブル132には、図9のエントリ911の情報が追加される。
[0168]
 ステップS1311において、相関ルール生成プログラム129は、処理のためイベントキューテーブル132から1つのエントリを取得する。
[0169]
 ステップS1312において、相関ルール生成プログラム129は、ステップS1311で取得したエントリから、管理コンポーネント種別901、管理コンポーネント識別子902、およびイベント種別903を取得する。
[0170]
 ステップS1313において、相関ルール生成プログラム129は、一般ルール検索テーブル131から、ステップS1312で取得した管理コンポーネント種別901およびイベント種別903に対応する全ての一般ルール名1203を取得する。
[0171]
 ステップS1314において、相関ルール生成プログラム129は、ステップS1313で取得した全ての一般ルール名1203に対応する一般ルール400を、一般ルールリポジトリ136から取得する。
[0172]
 ステップS1315において、相関ルール生成プログラム129は、ステップS1314で取り出された全ての一般ルール400に対して、ステップS1316乃至ステップS1317の処理を繰り返す。
[0173]
 ステップS1316において、相関ルール生成プログラム129は、ステップS1312で取得された管理コンポーネント種別901、管理コンポーネント識別子902、およびイベント種別903と、ステップS1315で取得された特定の一般ルール400とをパラメータとして渡すことで、図14のステップS1411~S1420に示す「ルール展開処理」を実行する。
[0174]
 ステップS1317において、相関ルール生成プログラム129は、図16のステップS1611~ステップS1618に示す「結論イベントに対するルール展開処理」を実行する。
[0175]
 ステップS1318において、相関ルール生成プログラム129は、「ルール展開処理」および「結論イベントに対するルール展開処理」がそれぞれ生成した相関ルールリスト126をパラメータとして渡すことにより、相関ルールメモリ生成プログラム122を起動する。
[0176]
 ステップS1319において、相関ルール生成プログラム129は、ステップS1311で取得したイベントキューテーブル132のエントリをパラメータとして渡すことにより、イベント書込プログラム124を起動する。
[0177]
 例えば、相関ルール生成プログラム129が、図9のエントリ911をイベントキューテーブル132から取得する(ステップS1311)。相関ルール生成プログラム129は、エントリ911の管理コンポーネント種別「Computer」、管理コンポーネント識別子「ServerA」、およびイベント種別「Nic_Err」を取得する(ステップS1312)。
[0178]
 相関ルール生成プログラム129は、一般ルール検索テーブル131から、管理コンポーネント種別が「Computer」であって、かつイベント種別が「Nic_Err」であるエントリ1211、1212を取得し、それらエントリ1211、1212から一般ルール名1203の情報「GeneralRule1」および「GeneralRule3」を取得する(ステップS1313)。
[0179]
 次に、相関ルール生成プログラム129は、一般ルールリポジトリ136から「GeneralRule1」または「GeneralRule3」の名前を持つ一般ルール400a、400cを取得する(ステップS1314)。相関ルール生成プログラム129は、取得した一般ルール400a、400cとエントリ911とに対して、ルール展開処理を行う(ステップS1316)。
[0180]
 上述の通り、本実施形態では、監視対象202からイベント(エラーイベントメッセージ)を受信すると、相関ルールの生成処理129が開始される。これに代えて、例えば監視コンピュータ101の起動時に、全ての一般ルールを全ての管理コンポーネントに対して展開し、障害解析に必要となる相関ルールを事前に全て生成してもよい。または、相関ルールの全てを事前に生成するのではなく、一部の相関ルールについてイベント受信前に生成し、その他の相関ルールについては、イベント受信時に生成する構成でもよい。
[0181]
 図14に、図13の相関ルール生成プログラム129のステップS1316と図16の「結論イベントに対するルール展開処理」のステップS1618とで実行される、ルール展開処理のフローチャートを示す。
[0182]
 ステップS1411で、「ルール展開処理」は、一般ルール400、管理コンポーネント種別、管理コンポーネント識別子、イベント種別をパラメータとして受信する。
[0183]
 ステップS1412において、「ルール展開処理」は、ステップS1411で取得した一般ルール400の構文を解析する。
[0184]
 ステップS1413において、「ルール展開処理」は、一般ルール400の一般ルール名411に格納された一般ルール名に対応するトポロジ生成方式500を、トポロジ生成方式リポジトリ135から取得する。
[0185]
 ステップS1414で、「ルール展開処理」は、ステップS1411で取得した管理コンポーネント識別子に対応するエントリを、構成情報テーブル137から取得する。
[0186]
 ステップS1415で、「ルール展開処理」は、ステップS1413で取得したトポロジ生成方式500の示す手段に基づいて、構成情報テーブル137からステップS1414で取得したエントリに対応する起点管理コンポーネントのエントリを取得する。
[0187]
 ステップS1416において、「ルール展開処理」は、ステップS1413で取得したトポロジ生成方式500で示された手段に基づき、ステップS1415で取得した起点管理コンポーネントのエントリを起点として、対応する全てのトポロジ情報を構成情報テーブル137から取得する。
[0188]
 ステップS1417において、「ルール展開処理」は、ステップS1416で取得したトポロジ情報の全てに対して、ステップS1418乃至ステップS1420の処理を繰り返す。
[0189]
 ステップS1418において、「ルール展開処理」は、ステップS1411で取得した一般ルール400のIF部412内のいずれかの条件要素に、複合伝搬条件が設定されているか否かを調べる。複合伝搬条件が設定されているならば(S1418:YES)、処理はステップS1420へ進む。複合伝搬条件が設定されていない場合(S1418:NO)、処理はステップS1419に進む。
[0190]
 ステップS1419において、「ルール展開処理」は、ステップS1411で取得した一般ルール400の条件要素および結論要素と、ステップS1416で取得した特定のトポロジ情報に含まれる管理コンポーネント識別子とに対応した、相関ルール600を生成し、相関ルールリスト126に追加する。
[0191]
 ステップS1420において、「ルール展開処理」は、ステップS1411で取得した一般ルール400と、ステップS1413で取得したトポロジ生成方式500と、ステップS1416で取得した特定のトポロジ情報とを、パラメータとして渡すことで、図15のステップS1511~S1523に示す「複合伝搬条件付一般ルール展開処理」を実行する。
[0192]
 図15に、図14のステップS1420で述べた、複合伝搬条件付一般ルール展開処理のフローチャートを示す。
[0193]
 ステップS1511で、「複合伝搬条件付一般ルール展開処理」は、一般ルール400、トポロジ生成方式500、およびトポロジ情報をパラメータとして受信する。
[0194]
 ステップS1513において、「複合伝搬条件付一般ルール展開処理」は、ステップS1511で取得したトポロジ情報から、構成情報テーブル137内の所定エントリを全て取得する。所定エントリとは、一般ルール400内のIF部412の条件要素のうち複合伝搬条件431が設定されていない条件要素に記述された管理コンポーネント条件に対応する構成情報テーブル137のエントリである。
[0195]
 ステップS1514において、「複合伝搬条件付一般ルール展開処理」は、ステップS1511で取得したトポロジ情報と異なるトポロジ情報であって、かつステップS1513で取得した構成情報テーブル137の所定エントリを含む全てのトポロジ情報を、ステップS1511で取得したトポロジ生成方式500で示された手段に基づいて、構成情報テーブル137から取得する。
[0196]
 ステップS1515において、「複合伝搬条件付一般ルール展開処理」は、ステップS1511で取得した一般ルール400の条件要素に設定された複合伝搬条件431が持つ所定値Xを取得する。
[0197]
 ステップS1516において、「複合伝搬条件付一般ルール展開処理」は、ステップS1514で取得した全てのトポロジ情報から、(X-1)個のトポロジ情報を1組とする組合せを全て抽出する。
[0198]
 ステップS1517において、「複合伝搬条件付一般ルール展開処理」は、ステップS1516で抽出した全てのトポロジ情報組合せに対して、ステップS1518乃至ステップS1523の処理を繰り返す。
[0199]
 ステップS1518において、「複合伝搬条件付一般ルール展開処理」は、ステップS1516で抽出した特定のトポロジ情報組合せの中の全トポロジ情報に含まれる管理コンポーネント識別子と、ステップS1511で取得したトポロジ情報に含まれる管理コンポーネント識別子と、ステップS1511で取得した一般ルール400のIF部412の情報を元に、相関ルールのIF部601を生成する。
[0200]
 ステップS1519において、「複合伝搬条件付一般ルール展開処理」は、ステップS1511で取得したトポロジ情報に含まれる管理コンポーネント識別子と、ステップS1511で取得した一般ルール400のTHEN部413の情報とを元に、相関ルールのTHEN部1902を生成する。
[0201]
 ステップS1520において、「複合伝搬条件付一般ルール展開処理」は、ステップS1518で生成した相関ルールのIF部601と、ステップS1519で生成した相関ルールのTHEN部602とを統合し、相関ルール600を生成して、相関ルールリスト126に追加する。
[0202]
 ステップS1521において、「複合伝搬条件付一般ルール展開処理」は、ステップS1516で抽出した特定のトポロジ情報の組合せに含まれる全てのトポロジ情報に対して、ステップS1522乃至ステップS1523の処理を繰り返す。
[0203]
 ステップS1522において、「複合伝搬条件付一般ルール展開処理」は、特定のトポロジ情報に含まれる管理コンポーネント識別子と、ステップS1511で取得した一般ルール400のTHEN部413の情報とに基づいて、相関ルールのTHEN部602を生成する。
[0204]
 ステップS1523において、「複合伝搬条件付一般ルール展開処理」は、ステップS1518で生成した相関ルールのIF部601と、ステップS1522で生成した相関ルールのTHEN部602とを統合し、相関ルール600を生成して、相関ルールリスト126に追加する。
[0205]
 例えば、ルール展開処理は、図4の一般ルール400aと、図9のエントリ911の管理コンポーネント種別「Computer」、管理コンポーネント識別子「ServerA」、およびイベント種別「Nic_Err」とをパラメータとして受信し、一般ルール400aの構文を解析する(ステップS1411~S1412)。
[0206]
 ルール展開処理は、一般ルール400aの一般ルール名「GeneralRule1」をキーとしてトポロジ生成方式リポジトリ135から、トポロジ生成方式500aを取得する(ステップS1413)。
[0207]
 ルール展開処理は、管理コンポーネント識別子「ServerA」をキーとして、構成情報テーブル137からエントリ311を取得する(ステップS1414)。さらに、ルール展開処理は、トポロジ生成方式500aの起点管理コンポーネント条件512aを確認する。起点管理コンポーネント条件512aでは、管理コンポーネント種別が「Computer」、かつ属性「提供サービス」が特定のサービス「ServiceX」であることが条件となっている。
[0208]
 そこで、ルール展開処理は、エントリ311を確認する。そのエントリ311では、提供サービス303の値に「WebService」が設定されている。従って、ルール展開処理は、起点管理コンポーネントがServerA自身であることを知る(ステップS1415)。
[0209]
 なお、ステップS1411で取得した管理コンポーネント識別子が起点管理コンポーネントの識別子でない場合、ルール展開処理は、トポロジ生成条件515aに示された手段に基づいて、構成情報テーブル137から起点管理コンポーネントに対応するエントリを取得する。
[0210]
 また、本実施形態では、%ServiceX%を変数として扱い、受信したイベントメッセージと関連する管理コンポーネントを元に、その変数の値を一般ルールまたはトポロジ生成方式に代入している。そのため、%ServiceX%に対して、本実施形態では「WebService」を代入する。
[0211]
 ルール展開処理は、トポロジ生成方式500aのトポロジ生成条件515aに従い、ServerAの提供サービス「WebService」に対して、アクセスサービス304が「WebService」となっている全てのComputerを構成情報テーブル137から検索する。これにより、クライアントコンピュータ153に関する構成情報であるエントリ315が1つ見つかる。
[0212]
 従って、ルール展開処理は、一般ルール400aを展開するためのトポロジとして、起点をエントリ311(ServerA)、終点をエントリ315(Client)とする、1組のトポロジ情報「エントリ311-エントリ315」を取得する(ステップS1416)。
[0213]
 一般ルール400aには、2つ目の条件要素に対して複合伝搬条件431が設定されている。そこで、ルール展開処理は、一般ルール400aと取得したトポロジ情報「エントリ311-エントリ315」とをパラメータとして、複合伝搬条件付一般ルール展開処理に渡して起動する(ステップS1417~S1420)。
[0214]
 複合伝搬条件付一般ルール展開処理は、一般ルール400a(%ServiceX%に値「WebService」代入済み)、トポロジ情報「エントリ311-エントリ315」、およびトポロジ生成方式500a(%ServiceX%に値「WebService」代入済み)を、パラメータとして受信する(ステップS1511)。
[0215]
 複合伝搬条件付一般ルール展開処理(以下、条件付き展開処理と略記する場合がある)は、ステップS1511で取得したトポロジ情報「エントリ311-エントリ315」の中から、一般ルール400aの複合伝搬条件431がない条件要素「Computer.アクセスサービス=WebService  (WebService)AveResponseTime_Err」が示す管理コンポーネントの条件に該当するエントリ315を取得する(ステップS1513)。
[0216]
 条件付き展開処理は、終点管理コンポーネントであるエントリ315に対して、トポロジ生成条件515aの「Computer.提供サービス=WebService」に基づき、構成情報テーブル137から、提供サービス303が「WebService」となっているエントリ(ただし、エントリ311を除く)を探す。
[0217]
 条件付き展開処理は、検索されたServerB、ServerC、ServerDに対して、トポロジ情報「エントリ312-エントリ315」、「エントリ313-エントリ315」、「エントリ314-エントリ315」を得る(ステップS1514)。
[0218]
 次に、条件付き展開処理は、一般ルール400aから、複合伝搬条件に設定されている数値「2」を取得し、その値から1を引いた値「1」を得る。
[0219]
 条件付き展開処理は、その値「1」を元に、トポロジ情報「エントリ312-エントリ315」、「エントリ313-エントリ315」、「エントリ314-エントリ315」の中から、「1」個を選ぶ組合せを1組として、抽出する(ステップS1515,S1516)。すなわち、条件付き展開処理は、組合せトポロジ“「エントリ312-エントリ315」”、“「エントリ313-エントリ315」”、“「エントリ314-エントリ315」”を抽出する。
[0220]
 なお、複合伝搬条件に設定されている数値が「3」の場合、組合せ“「エントリ312-エントリ315」,「エントリ313-エントリ315」”、“「エントリ313-エントリ315」,「エントリ314-エントリ315」”、“「エントリ312-エントリ315」,「エントリ314-エントリ315」”が抽出される。
[0221]
 次に、条件付き展開処理は、抽出した組合せの中から1組を選択する処理を全ての組合せに対して行う(ステップS1517)。
[0222]
 例えば、条件付き展開処理は、組合せ“「エントリ312-エントリ315」”を選択した場合、一般ルール400aのIF部412と、トポロジ情報「エントリ311-エントリ315」と、「エントリ312-エントリ315」に含まれるエントリとから、Client(エントリ315)の「(WebService)AveResponseTime_Err」とServerA(エントリ311)の「Nic_Err」とServerB(エントリ312)の「Nic_Err」とを条件部分とするIF部601(図6)を生成する(ステップS1518)。
[0223]
 次に、条件付き展開処理は、トポロジ情報「エントリ311-エントリ315」と、一般ルール400aとにより、ServerA(エントリ311)の「Nic_Err」を結論部分とするTHEN部602(図6)を生成し、相関ルール600aを相関ルールリスト126に追加する(ステップS1519~ステップS1520)。
[0224]
 条件付き展開処理は、抽出した組合せ“「エントリ312-エントリ315」”の中から、トポロジ情報を1つ選択する。ここでの説明では、組合せの中にトポロジ情報は1つしかないため、条件付き展開処理は、「エントリ312-エントリ315」を選択する(ステップS1521)。
[0225]
 条件付き展開処理は、選択したトポロジ情報「エントリ312-エントリ315」と一般ルール400aとにより、ServerB(エントリ312)の「Nic_Err」を結論部分とするTHEN部(図6)を生成することで、相関ルール600dを生成し、相関ルールリスト126に追加する(ステップS1522,S1523)。
[0226]
 ステップS1517のループとステップS1521のループとを繰り返すと、図6の相関ルールのうち、相関ルール600a~600cと、相関ルール600d、600g、600jとがそれぞれ生成されて、相関ルールリスト126に追加される。
[0227]
 図16に、図13のステップS1317で述べた「結論イベントに対するルール展開処理」のフローチャートを示す。
[0228]
 ステップS1611において、「結論イベントに対するルール展開処理」は、相関ルールリスト126に含まれる相関ルール600のTHEN部602の結論要素を重複なく全て取得する。
[0229]
 ステップS1612において、「結論イベントに対するルール展開処理」は、ステップS1611で取得した全てのTHEN部602の結論要素に対して、ステップS1613乃至ステップS1618の処理を繰り返す。
[0230]
 ステップS1613で、「結論イベントに対するルール展開処理」は、ステップS1611で取得した特定の結論要素に記録された管理コンポーネント識別子を取得する。
[0231]
 ステップS1614において、「結論イベントに対するルール展開処理」は、構成情報テーブル137からステップS1613で取得した管理コンポーネント識別子に対応するエントリを取得し、エントリ内の管理コンポーネント種別302を取得する。
[0232]
 ステップS1615において、「結論イベントに対するルール展開処理」は、一般ルール検索テーブル131から、ステップS1614で取得したコンポーネント種別302と、ステップS1611で取得した特定の結論要素に記録されたイベント種別とに対応する、一般ルール名1203を全て取得する。
[0233]
 ステップS1616において、「結論イベントに対するルール展開処理」は、一般ルールリポジトリ136から、ステップS1615で取得した一般ルール名1203に対応する一般ルール400を取得する。
[0234]
 ステップS1617において、「結論イベントに対するルール展開処理」は、ステップS1616で取得した全ての一般ルール400に対して、ステップS1618の処理を繰り返す。
[0235]
 ステップS1618において、「結論イベントに対するルール展開処理」は、ステップS1616で取得した特定の一般ルール400と、ステップS1613で取得した管理コンポーネント識別子と、ステップS1614で取得した管理コンポーネント種別と、ステップS1611で取得した相関ルールの特定の結論要素に記録されたイベント種別とを、パラメータとして渡すことで、図14のステップS1411~S1420に示す「ルール展開処理」を実行する。
[0236]
 例えば、相関ルールリスト126内に、図6の相関ルール600a~600cと、相関ルール600d、600g、600jとが存在する場合を説明する。この場合、結論要素を重複なく全て取得すると、「ServerA Nic_Err」、「ServerB Nic_Err」、「ServerC Nic_Err」、「ServerD Nic_Err」となる(ステップS1611)
[0237]
 結論イベントに対するルール展開処理は、取得した結論要素の中から1つを選択する(ステップS1612)。例えば、ステップS1612で「ServerB Nic_Err」を選択した場合、結論イベントに対するルール展開処理は、その結論要素内の管理コンポーネント識別子「ServerB」を取得する(ステップS1613)。
[0238]
 さらに、結論イベントに対するルール展開処理は、構成情報テーブル137からServerBをキーとしてエントリ312を取得し、そのエントリ312から管理コンポーネント種別「Computer」を得る(ステップS1614)。
[0239]
 結論イベントに対するルール展開処理は、図12の一般ルール検索テーブル131から「Computer」と結論要素のイベント種別「Nic_Err」とをキーとして検索して、エントリ1211とエントリ1212を得る。結論イベントに対するルール展開処理は、エントリ1211,1212から、一般ルール名1203の「GeneralRule1」と「GeneralRule3」とを得る(ステップS1615)。
[0240]
 結論イベントに対するルール展開処理は、一般ルールリポジトリ136から、取得した一般ルール名「GeneralRule1」または「GeneralRule3」の名前を持つ、一般ルール400a、400cを取得する(ステップS1616)。
[0241]
 結論イベントに対するルール展開処理は、一般ルール400a、400cに対して、1つを選択する処理を全ての一般ルールに対して行う(ステップS1617)。例えば、一般ルール400aを選択した場合、結論イベントに対するルール展開処理は、図14のルール展開処理を実行し、一般ルール400aと、管理コンポーネント種別「Computer」と、管理コンポーネント識別子「ServerB」およびイベント種別「Nic_Err」とをパラメータとして渡す(ステップS1618)。
[0242]
 その結果、図6の相関ルール600d~600f、600h、600kが相関ルールリスト126に追加される。なお、ステップS1617において、一般ルール400cを選択した場合、相関ルール600pが相関ルールリスト126に追加される。
[0243]
 <相関ルールメモリ生成プログラム>
[0244]
 図17に、相関ルールメモリ生成プログラム122により実行される相関ルールメモリ生成処理のフローチャートを示す。相関ルールメモリ生成プログラム122は、相関ルール生成プログラム129により起動されるべく構成されていてよい。
[0245]
 ステップS1711において、相関ルールメモリ生成プログラム122は、相関ルールリスト126をパラメータとして受け取る。
[0246]
 ステップS1712において、相関ルールメモリ生成プログラム122は、ステップS1711で取得した相関ルールリスト126内に含まれる全ての相関ルール600に対して、ステップS1713乃至ステップS1724の処理を繰り返す。
[0247]
 次に、ステップS1713において、相関ルールメモリ生成プログラム122は、ステップS1711で取得した相関ルールリスト126内の特定の相関ルール600の構文を解析する。
[0248]
 ステップS1714において、相関ルールメモリ生成プログラム122は、特定の相関ルール600に対応する相関ルールオブジェクト703が相関ルールメモリ121内に既に存在するか否かを調べる。存在するならば(S1714:YES)、処理はステップS1715乃至ステップS1724をスキップして、ステップS1725へ進む。存在しない場合(S1714:NO)、処理はステップS1715に進む。
[0249]
 ステップS1715において、相関ルールメモリ生成プログラム122は、特定の相関ルール600のIF部601に含まれる全ての条件要素に対して、ステップS1716乃至ステップS1718の処理を繰り返す。
[0250]
 ステップS1716において、相関ルールメモリ生成プログラム122は、特定の条件要素に対応する条件オブジェクト701が相関ルールメモリ121内に存在するか否かを調べる。
[0251]
 ステップS1717において、相関ルールメモリ生成プログラム122が対応する条件オブジェクト701を見つけられなかった場合(S1717:NO)、処理はステップS1718へ進む。一方、条件オブジェクト701が見つかった場合(S1717:YES)、処理はステップS1718を実行せず、次の処理へ進む。
[0252]
 ステップS1718において、相関ルールメモリ生成プログラム122は、特定の条件要素のための、条件オブジェクト701および演算子オブジェクト702を相関ルールメモリ121内に生成し、それら新たに生成された条件オブジェクト701と演算子オブジェクト702とを互いに接続する。
[0253]
 ステップS1719において、相関ルールメモリ生成プログラム122は、特定の相関ルール600に対応した相関ルールオブジェクト703を生成し、次いで全ての関連する演算子オブジェクト702を接続する。
[0254]
 ステップS1720において、相関ルールメモリ生成プログラム122は、特定の相関ルール600のTHEN部602から結論要素を取得する。
[0255]
 ステップS1721において、相関ルールメモリ生成プログラム122は、ステップS1720の結論要素に対応する結論オブジェクト704が相関ルールメモリ121内に存在するか否かを調べる。
[0256]
 ステップS1722において、相関ルールメモリ生成プログラム122が対応する結論オブジェクト704を見つけられなかった場合(S1722:NO)、処理はステップS1723へ進む。一方、結論オブジェクト704が見つかった場合(S1722:YES)、処理はステップS1724へ進む。
[0257]
 ステップS1723において、相関ルールメモリ生成プログラム122は、ステップS1720で取得した結論要素のための結論オブジェクト704を、相関ルールメモリ121内に生成する。
[0258]
 ステップS1724において、相関ルールメモリ生成プログラム122は、ステップS1719で生成した相関ルールオブジェクト703に、関連する結論オブジェクト704を接続する。
[0259]
 ステップS1725において、相関ルールメモリ生成プログラム122は、ステップS1713乃至ステップS1724で処理を行った全ての相関ルール600を相関ルールリスト126から削除する。
[0260]
 例えば、相関ルールメモリ生成プログラム122は、相関ルールリスト126をパラメータとして受信し、その相関ルールリスト126内に、図6の相関ルール600aがある場合、相関ルール600aを選択する(ステップS1711~S1712)。
[0261]
 相関ルールメモリ生成プログラム122は、相関ルール600aの構文を解析する。構文解析の結果、IF部601に条件要素「ServerA Nic_Err」と「ServerB Nic_Err」と「Client (WebService)AveResponseTime_Err」とが記録されており、THEN部602に結論要素「ServerA Nic_Err」が記録されていることがわかる。
[0262]
 そこで、相関ルールメモリ生成プログラム122は、相関ルールメモリ121を検索して、相関ルールオブジェクト703のうち、演算子オブジェクト702(ただし、Not属性がFalse)を介して、条件オブジェクト701の管理コンポーネント識別子とイベント種別の組合せが、ServerA-Nic_Err、ServerB-Nic_Err、Client―(WebService)AveResponseTime_Errとなる条件オブジェクト701と接続しており、かつ管理コンポーネント識別子とイベント種別の組合せが、ServerA-Nic_Errの結論オブジェクト704に接続している相関ルールオブジェクト703を探す。該当する相関ルールオブジェクト703が存在しない場合は、相関ルールメモリ生成プログラム122は、相関ルールメモリ121内に、相関ルールオブジェクト703を生成する(ステップS1713~ステップS1724)。
[0263]
 図7に示すように、相関ルール600aの条件オブジェクト701は、701a、701b、および701cである。これらの条件オブジェクト701a~701cは、各々演算子オブジェクト702a~702cに接続している。相関ルール600aの結論オブジェクト704は704aである。
[0264]
 従って、相関ルールオブジェクト703aに対して、接続704a~703a~702a~701a、704a~703a~702b~701b、および704a~703a~702c~701cが、相関ルール600aのために生成されなければならない。
[0265]
 同様に、相関ルール600bの条件オブジェクト701は、701b、701c、および701dである。従って、条件オブジェクト701b、および701cは、相関ルール600aの条件オブジェクトと重なっている。この場合、相関ルールオブジェクト703aと相関ルールオブジェクト703bとは、対応する演算子オブジェクト702b~702cおよび条件オブジェクト701b~701cを共有するように生成されて、互いに接続される。
[0266]
 また、相関ルールオブジェク600および相関ルール600bは、結論オブジェクト704aを共有している。相関ルール600mの条件オブジェクトは条件オブジェクト701bおよび701gであり、条件オブジェクト701bは相関ルール600aの条件オブジェクトと重なっている。この場合、結論オブジェクト704aと結論オブジェクト704bとは、対応する演算子オブジェクト702b、および条件オブジェクト701bを共有する。
[0267]
 相関ルールメモリ生成プログラム122は、相関ルールリスト126内の全ての相関ルール600に対して、図7に示すような相関ルールメモリを生成した場合、当該相関ルールリスト126内の相関ルールを全て削除する(ステップS1725)。
[0268]
 本実施形態では、ステップS1714で、相関ルールメモリ121を検索する際に、条件オブジェクト701、演算子702、結論オブジェクト704が全て、相関ルールのIF部601の条件要素になっているか、およびTHEN部602の結論要素と一致するかを調べたが、これに限らず、相関ルールを一意に特定できる検索条件であればよい。
[0269]
 <イベント書込プログラム>
[0270]
 図18に、イベント書込プログラム124により実行されるイベント書込み処理のフローチャートを示す。
[0271]
 ステップS1811において、イベント書込プログラム124は、パラメータとして受信したイベントキューテーブル132のエントリから、管理コンポーネント種別901、管理コンポーネント識別子902、イベント種別903、および受信日時904をそれぞれ取得する。
[0272]
 ステップS1812において、イベント書込プログラム124は、相関ルールメモリ121内で、ステップS1811で取得したものと同一の、管理コンポーネント識別子およびイベント種別を有する条件オブジェクト701を決定する。
[0273]
 ステップS1813において、イベント書込プログラム124は、ステップS1811で取得した受信日時904の値を、ステップS1812で決定された条件オブジェクト701の「受信日時」属性に設定する。
[0274]
 ステップS1814において、イベント書込プログラム124は、ステップS1812で取得した条件オブジェクト701の「重み」属性に「1.0」を設定する。
[0275]
 ステップS1815において、イベント書込プログラム124は、イベント消去設定テーブル133から、ステップS1811取得した管理コンポーネント種別901およびイベント種別903に対応する、有効期間1003を取得する。
[0276]
 ステップS1816において、イベント書込プログラム124は、イベント消去タスクテーブル134にタスクエントリを生成することにより、開始日時1101に指定された日時にイベント消去プログラムがイベント消去タスクを実行できる。
[0277]
 例えば、イベントキューテーブル132内の処理対象エントリが図9のエントリ911である場合、管理コンポーネント種別はComputerであり、イベント種別はNic_Errである。
[0278]
 次に、Nic_Errが生じているコンピュータについて、エントリ1011においてイベント消去設定テーブル133を参照することにより、有効期間1003は10分であることがわかる。従って、本実施形態では、ステップS1816でイベント消去タスクテーブル134内に生成されたタスクエントリは、開始日時1101=「受信日時」+10分;管理コンポーネント識別子1102=「ServerA」;イベント種別1103=「Nic_Err」となろう。
[0279]
 ステップS1817において、イベント書込プログラム124は、マッチング率評価プログラム125を起動し、ステップ1812で決定された条件オブジェクト701をパラメータとして渡す。処理されるエントリが図9のエントリ911である上述の例では、パラメータは、図7の条件オブジェクト701aとなる。マッチング率評価プログラム125を起動させた後、イベント書込プログラム124は本処理を終了する。
[0280]
 <マッチング率評価プログラム>
[0281]
 図19に、マッチング率評価プログラム125により実行されるマッチング率評価を実行する処理のフローチャートを示す。マッチング率評価プログラム125は、イベント書込プログラム123またはイベント消去プログラム127により起動されて、処理を開始する。
[0282]
 ステップS1901において、マッチング率評価プログラム125は、イベント書込プログラム123またはイベント消去プログラム127により起動されると、特定の条件オブジェクト701をパラメータとして受信する。
[0283]
 ステップS1902で、マッチング率評価プログラム125は、受信した特定の条件オブジェクト701に接続する演算子オブジェクト702を取得する。
[0284]
 ステップS1903において、マッチング率評価プログラム125は、ステップS1902で取得された特定の演算子オブジェクト702に接続するための相関ルールオブジェクト703を取得する。
[0285]
 ステップS1904において、マッチング率評価プログラム125は、ステップS1903で取得された相関ルールオブジェクト703に接続するための結論オブジェクト704を取得する。
[0286]
 ステップS1905において、マッチング率評価プログラム125は、ステップS1904で取得された結論オブジェクト704の全てに対して、ステップS1906乃至ステップS1911の処理を繰り返す。
[0287]
 ステップS1906において、マッチング率評価プログラム125は、特定の結論オブジェクト704に接続する相関ルールオブジェクト703を全て取得する。
[0288]
 ステップS1907において、マッチング率評価プログラム125は、ステップS1906で取得された相関ルールオブジェクト703の全てに対して、ステップS1908乃至ステップS1910の処理を繰り返す。
[0289]
 ステップS1908において、マッチング率評価プログラム125は、特定の相関ルールオブジェクト703から他の任意の演算子オブジェクト702まで、次いで任意の演算子オブジェクト702から他の任意の条件オブジェクト701まで、接続を辿る。これにより、マッチング率評価プログラム125は、ステップS1906で取得した特定の相関ルールオブジェクト703と合わせて、全ての条件オブジェクト701を取得する。
[0290]
 ステップS1909において、マッチング率評価プログラム125は、ステップS1908で取得した全ての条件オブジェクト701の重み値の合計を計算する。
[0291]
 例えば、図7に示す例において、相関ルールオブジェクト703aは演算子オブジェクト702a~702cに接続している。演算子オブジェクト702a~702cは各々条件オブジェクト701a~701cに接続している。条件オブジェクト701a~701cの各々は1.0の重み値を有する。従って、本実施形態では、重みの合計は3.0に等しくなる。
[0292]
 ステップS1910において、マッチング率評価プログラム125は、式「RMR=重みの合計/条件オブジェクトの数」に従い、ルールマッチング率(RMR)の値を計算して、その計算結果を、対応する相関ルールオブジェクト703のRMR属性に設定する。例えば、図7に示すように、相関ルールオブジェクト703aのRMRは、1.0(=3.0/3)に等しくなる。
[0293]
 ステップS1911において、マッチング率評価プログラム125は、式「MR=Max(接続する相関ルールオブジェクトのRMR)」に従い、マッチング率(MR)の値を計算し、その計算結果を、対応する結論オブジェクト704のMR属性に設定する。
[0294]
 例えば、図7に示すように、結論オブジェクト704aに接続する相関ルールオブジェクトは703a~703dであり、それぞれのRMRは703aが1.00、703bが0.66、703cが0.66、703dが0.50である。従って、結論オブジェクト704aのMRは、1.0(=3.0/3)に等しくなる。
[0295]
 ステップS1912において、マッチング率評価プログラム125は、マッチング率がパラメータとして計算された結論オブジェクト704を渡すことにより、外部モジュール128を起動して、処理を終了させる。
[0296]
 <外部モジュール>
[0297]
 外部モジュール128の例として、根本原因分析の結論として得られた結果をディスプレイ117に表示するためのモジュールを説明する。図7の相関ルールメモリ121を得た場合において、画面モジュール128がディスプレイ117に表示する分析結果の例を図21に示す。
[0298]
 図21に示すように、外部モジュール128が表示する分析結果表示画面2100は、根本原因評価箇所2101と、原因状態2102と、マッチング率2103および発生現象2104を含んでよい。
[0299]
 根本原因評価箇所2101は、結論オブジェクト704の属性「管理コンポーネント識別子」によって識別される管理コンポーネントの名前を表示する。原因状態2102は、エラーの原因を識別する属性「原因」が示す状態を表示する。マッチング率2103は、正確さの確率を表示する。発生現象2104は、根本原因箇所2101で原因状態2012が発生することに起因して発生した、他の障害または状態を表示する。
[0300]
 図32に、図21の画面2100を表示するために外部モジュール128により実行される処理のフローチャートを示す。
[0301]
 ステップ3211において、外部モジュール128は、結論オブジェクト704をパラメータとして受信する。
[0302]
 ステップ3212において、外部モジュール128は、受信した結論オブジェクト704の全てに対して、ステップS3213乃至ステップS3215の処理を繰り返す。
[0303]
 ステップ3213において、外部モジュール128は、特定の結論オブジェクト704から他の相関ルールオブジェクト703まで、次いで相関ルールオブジェクト703から他の演算子オブジェクト702まで、さらに任意の演算子オブジェクト702から他の任意の条件オブジェクト701まで、接続を辿ることにより、結論オブジェクト704と合わせて、全ての条件オブジェクト701を取得する。
[0304]
 ステップS3214において、外部モジュール128は、ステップS3213で取得した条件オブジェクト701のうち、受信済みのイベントであって、かつ、特定の結論オブジェクト704が示す原因によって発生するイベントであることを示す条件オブジェクト701を抽出する。
[0305]
 ステップS3215において、外部モジュール128は、特定の結論オブジェクト704の属性が持つ情報と、ステップS3214で取得した全ての条件オブジェクト701の属性が持つ情報とから、分析結果表示画面2100に表示するための情報を生成し、画面2100を更新する。
[0306]
 例えば、外部モジュール128が図7に示す結論オブジェクト704aをパラメータとして受信した場合、結論オブジェクト704aに関連し、かつ受信済みイベントを示す条件オブジェクト701は、条件オブジェクト701a~701cである。
[0307]
 また、条件オブジェクト701a~701cのうち、結論オブジェクト704aが示す原因によって引き起こされるイベントを示す条件オブジェクト701は、「Client (WebService)AveResponseTime_Err((クライアントコンピュータのWebサービス平均レスポンスタイム増加エラー))を示す条件オブジェクト701bである。
[0308]
 結論オブジェクト704aが示す原因によって引き起こされるイベントであるか否かの判断方法を説明する。例えば、条件オブジェクト701aは、図4の一般ルール400aの条件要素「Computer.提供サービス=%ServiceX% Nic_Err」を元に生成されており、かつ、条件要素「Computer.提供サービス=%ServiceX% Nic_Err」は、一般ルール400aのTHEN部413aの結論要素が示す管理コンポーネントの状態と等しい。よって、条件オブジェクト701aが示すイベントは、結論オブジェクト704aが示す原因によって引き起こされるイベントではないと判断できる。
[0309]
 外部モジュール128は、以上の処理によって、取得した条件オブジェクト701aと結論オブジェクト704aが持つ属性の情報を元に、図21の行2111が示す情報を画面に表示する。
[0310]
 図21では、ある管理コンポーネントで発生したイベントに対して、複数の管理コンポーネントにおける障害の組み合わせが原因である場合においても、原因となる管理コンポーネントまたは原因状態を組み合わせで表示せずに個別に表示している。これに対し、例えば、図21の行2111において、根本原因箇所2101に「サーバAとサーバB」などのように、管理コンポーネントの組み合わせを表示してもよい。同様に原因状態2102も、原因状態の情報を組み合わせで表示してもよい。
[0311]
 <イベント消去プログラム>
[0312]
 図20に、監視コンピュータ101内でイベント消去プログラム127により実行されるイベント消去を実行する処理例のフローチャートを示す。イベント消去プログラム127は本処理を周期的に、例えば所定の間隔で開始する。
[0313]
 ステップS2001で、イベント消去プログラム127は、イベント消去タスクテーブル134を参照し、開始日時1101が最も早い1つのタスクエントリを選択する。
[0314]
 ステップS2002において、イベント消去プログラム127は、当該タスクエントリの開始日時1101が現在の日時と同一であるか、または現在の日時より以前であるか否かを調べる。現在の日時と同一またはより以前である場合(S2002:YES)、処理はステップS2003へ進む。一方、イベント消去タスクテーブル134に現在の日時と同一またはより以前のエントリが存在しない場合(S2002:NO)、この時点および処理でイベントを消去する必要がないため、終了する。
[0315]
 ステップS2003において、イベント消去プログラム127は、当該エントリの管理コンポーネント識別子1102およびイベント種別1103を取得する。
[0316]
 ステップS2004において、イベント消去プログラム127は、相関ルールメモリ121を参照して、ステップS2003で取得された管理コンポーネント識別子1102およびイベント種別1103に対応する、条件オブジェクト701を取得する。
[0317]
 ステップS2005において、イベント消去プログラム127は、ステップS2004で取得した条件オブジェクト701の重み値を「0.0」に設定する
[0318]
 ステップS2006において、イベント消去プログラム127は、イベント消去タスクテーブル134から対象タスクエントリを削除する。
[0319]
 ステップS2007において、イベント消去プログラム127は、ステップS2004で取得した条件オブジェクト701をパラメータとして渡すことにより、マッチング率評価プログラム125を起動する。従って、イベント消去プログラム127が条件オブジェクト701の重み値を下げることにより、対応する結論オブジェクト704のマッチング率を下げることがわかる。
[0320]
 上の開示から明らかなように、本実施形態では、複数の管理コンポーネントのイベントの組合せが1つの管理コンポーネントに伝搬する障害伝搬パターンに対して、根本原因分析を実行することができる。
[0321]
 本実施形態では、監視対象のシステムトポロジに依存しない障害伝搬モデルである一般ルールにおいて、上記障害伝搬パターンを識別するための条件を設定する。これにより、本実施形態では、監視対象システムのトポロジ情報に基づいて根本原因分析を行うための具体的な相関ルールと相関ルールメモリとを生成して、根本原因を分析できる。
[0322]
 本実施形態においては、受信したイベントについての相関ルールを、一般ルールとトポロジ情報とから随時生成する場合を説明したが、これに代えて、監視対象に対する全ての相関ルールを、イベントの受信前に事前に作成する構成でもよい。
実施例 2
[0323]
 実施例2を説明する。実施例2では、他の相関ルール生成処理と、他のマッチング率評価処理とについて説明する。
[0324]
 実施例1では、複数の管理コンポーネントのイベントの組合せが原因であることを示す一般ルール400aに対して、全ての管理コンポーネントの組合せについてそれぞれ相関ルールを生成していた。しかし、全ての組合せに対して各々相関ルールを生成した場合、相関ルールリスト126および相関ルールメモリ121に生成する、データ量が大きくなるため、メモリ112の容量が不足する可能性がある。また、1つの結論要素に関する相関ルールの数が多いため、1つの結論要素に対するマッチング率を計算するために時間がかかる。
[0325]
 上記の課題を解決するため、実施例2では、相関ルールと相関ルールメモリの、それぞれの構造および生成処理と、マッチング評価率の計算処理とを変更する。変更後の相関ルールの構造を図26(図26A、図26B)、相関ルールメモリの構造を図27、相関ルール生成処理における複合伝搬条件付き一般ルール展開処理を図28、相関ルールメモリ生成処理を図29、マッチング評価率の計算処理を図30(図30A、図30B)に、それぞれ示す。
[0326]
 その他のデータの構造や処理は実施例1と同様である。ただし、実施例2では、根本原因分析の対象となる監視対象と障害発生パターンを、実施例1とは異なるものを例に挙げて説明する。実施例2を説明するための監視対象の例示的なハードウェアおよび論理構成の例を図22、構成情報テーブルの例を図23、一般ルールリポジトリ136内における一般ルールの例を図24、トポロジ生成方式リポジトリ135内におけるトポロジ生成方式の例を図25に、それぞれ示す。
[0327]
 <監視対象のハードウェアおよび論理構成>
[0328]
 図22に、本実施形態を説明するための監視対象の例示的なハードウェアアーキテクチャおよび論理構成を示す。
[0329]
 各サーバ2201(p~s)、2231は、アプリケーション等を実行させる監視対象ノードであってよい。サーバ2201、2231は、CPU2202、メモリ/ストレージ2204、およびネットワークインターフェース2203を含む汎用コンピュータであってよい。
[0330]
 各サーバ2201、2231は、実施例1と同様に、監視エージェント2205を含んでもよい。監視エージェント2205は、特定の状態変化が検出された場合に、LAN2241を介して、監視コンピュータ101にイベントメッセージを送信する。
[0331]
 本実施形態では、一例として、サーバ2201はDNS(Domain Name System)サーバ2211を備えており、サーバ2231はメールサーバ2232を備える。DNSサーバ2211は、LAN2241を介してメールサーバ2232に、DNSサービスを提供する。DNSサーバ2211をアプリケーション2211と呼ぶ場合がある。また、サーバをコンピュータと呼ぶ場合がある。
[0332]
 一例として、ロードバランサ2221は、アプリケーション2211が提供するDNSサービスのスケーラビリティを向上させるための装置であってよい。ロードバランサ2221は、DNSサービスに対するリクエストを一度集約し、それらリクエストを特定の規則に従ってサーバ2201p~サーバ2201sのいずれかに振り分ける。リクエストを受領したアプリケーション2211は、リクエスト発行元であるメールサーバ2232に対して、DNSサービスを提供する。このように、ロードバランサ2221は、各サーバ2201の負荷を分散させることで、DNSサービスのスケーラビリティ向上を実現する装置であってよい。
[0333]
 本実施形態では、DNSサービスを提供する4台のサーバ2201と1台のロードバランサ2221とによって、DNSサービスのスケーラビリティを向上させている。これに限らず、ロードバランサ2221、サーバ2201の台数は何台でもよい。また、DNSサービス以外のサービスを提供してもよい。さらに、サーバ2231とロードバランサ2221との間、各サーバ2201とロードバランサ2221の間には、それぞれ一つまたは複数のネットワークスイッチが設けられてもよい。
[0334]
 <構成情報テーブル>
[0335]
 図23に、本実施形態に係る構成情報テーブル137のデータ構造を示す。本実施形態においても、実施例1と同様に、構成情報テーブル137は、一般ルールから具体的なトポロジに依存した相関ルールを生成する際に、一般ルールを適用する監視対象管理コンポーネントのトポロジ情報を検索するために利用する。
[0336]
 本実施形態の構成情報の例として、コンピュータ(サーバ2201、2231)に関する情報を格納したコンピュータ管理表2300aの各項目と、ロードバランサ2221に関する情報を格納したロードバランサ管理表2300cの各項目とを、挙げる。
[0337]
 コンピュータ管理表2300aが有するカラムのうち2301a、2302a、2303、2304は、実施例1におけるコンピュータ管理表300aの301a、302a、303、304と同一構造を有する。但し、実施例1の管理表300aに登録されているデータと図23のコンピュータ管理表2300aに登録されているデータとはそれぞれ異なることがある。
[0338]
 また、コンピュータ管理表2300aは、カラム2305を有する。カラム2305は、該当するコンピュータ2201が接続するロードバランサ2221を識別するための管理コンポーネント識別子を格納しており、接続ロードバランサ2305と呼ばれる。
[0339]
 ロードバランサ管理表2300cは、各ロードバランサ2221を識別するための一意な値を格納する管理コンポーネント識別子2301cと、該当する管理コンポーネントの種別を表す管理コンポーネント種別2302cと、該当するロードバランサ2221が接続するコンピュータ2201、2231の管理コンポーネント識別子を格納する接続コンピュータ2306、という3つのカラムで構成されている。
[0340]
 本実施形態においても、実施例1と同様に、構成情報テーブル137からトポロジ情報を取得することができる。
[0341]
 <一般ルール>
[0342]
 図24に、本実施形態に係る一般ルールのデータ構造を示す。本実施形態においても、実施例1と同様に、一般ルールは、具体的なトポロジから独立した形式で記述される障害伝搬モデルである。
[0343]
 図24の一般ルール2400は、複合障害伝搬パターンの障害に対する根本原因分析に利用するための一般ルールの例である。一般ルール2400は、コンピュータ2201のNIC障害の組合せが根本原因であることを示唆する。図24の一般ルール2400は、実施例1における図4の一般ルール400と同一構造を有する。但し、実施例1の一般ルール400に登録されている情報と図24の一般ルール2400に登録されている情報とは異なることがある。
[0344]
 図24が示す一般ルール、つまり一般ルール名2411がGeneralRule11で示される一般ルール2400を説明する。IF部2412として、「アクセスサービスが特定のサービスServiceXであるコンピュータにおけるServiceResponseTime_ThresholdErr(サービスレスポンスタイム閾値超過エラー)」と、「提供サービスが特定のサービスServiceXであるコンピュータにおける(Nic_Err(NIC障害エラー)」とを検知したとき、が条件として規定されている。
[0345]
 THEN部2413では、IF部2412の条件が満たされた場合、「提供サービスがServiceXのコンピュータにおける(Nic_Err(NIC障害エラー)」が原因である結論付けている。
[0346]
 図24の一般ルール2400に記述された複合伝搬条件2431は、実施例1の図4における複合伝搬条件431と同様の意味を持つデータである。
[0347]
 また、“%ServiceX%”に関しても、実施例1の図4における一般ルール400に記述されたものと同様の意味を持つデータである。 
[0348]
 <トポロジ生成方式>
[0349]
 図25に、本実施形態に係るトポロジ生成方式情報の構成例を示す。本実施形態においても、実施例1と同様に、トポロジ生成方式情報は、構成情報に基づき、監視対象となる複数の管理コンポーネント間での関係(トポロジ)の情報を生成するための手段を定義した情報である。
[0350]
 図25のトポロジ生成方式2500は、実施例1における図5のトポロジ生成方式500と同一構造2511~2515を有する。但し、実施例1のトポロジ生成方式500に登録される情報と図25のトポロジ生成方式2500に登録される情報とは、異なることがある。
[0351]
 図25のトポロジ生成方式2500は、相関ルール生成プログラム129が一般ルールGeneralRule11から相関ルールを生成する際に、利用するトポロジ生成方式である。
[0352]
 図25に示すトポロジ生成方式2500は、GeneralRule11に適用するトポロジ情報について、以下のことを示している。そのトポロジ情報は、一方のコンピュータが起点となり、ロードバランサが経由点となり、他方のコンピュータが終点となるトポロジであることを示している。さらに、そのトポロジ情報は、一方のコンピュータの接続ロードバランサが監視対象内のいずれかのロードバランサの管理コンポーネント識別子と等しく、かつそのロードバランサの接続コンピュータが他方のコンピュータの管理コンポーネント識別子と等しく、かつ一方のコンピュータの提供サービス名が他方のコンピュータのアクセスサービス名と等しい組み合わせを構成情報テーブル137から検索することにより取得可能であること、示している。
[0353]
 なお、本実施形態において、実施例1と同様に、トポロジ生成方式に記述された(Computer.アクセスサービス)=%ServiceX%、および(Computer.提供サービス)=%ServiceX%における“%ServiceX%”は、監視対象環境によらない固定値であってもよいし、変数でもよい。変数とする場合、トポロジ情報取得前に、構成情報テーブル137または受信したイベントメッセージなどから、コンピュータが提供またはアクセスするサービスの識別子を取得して、トポロジ生成方式2500に代入してもよい。本実施形態では、変数として説明する。
[0354]
 <相関ルール>
[0355]
 図26(図26A、図26B)に、本実施形態を説明するための相関ルールリスト126に保存された相関ルールの例示的な構成図を示す。
[0356]
 図26は、図24の一般ルール2400と図23の構成情報テーブル137から生成される相関ルール2600(a~d)の例を示す。実施例1と同様に、相関ルール2600は2つの部分、即ちIF部2611とおよびTHEN部2612に分けられる。また、実施例1と同様に、IF部2611は、1つ以上の条件要素を含んでいてよい。
[0357]
 実施例1と異なる構造は、IF部の条件要素の一部がORグループ2601に属する点である。本実施形態においては、相関ルール2600は、IF部の条件要素の一部がORグループ2601に属していることを示す識別情報を有する。さらに、相関ルール2600は、各ORグループ2601の最大重みを表す情報を有する。
[0358]
 すなわち、ORグループ2601に属する条件要素が示すイベントのうち、生起したイベント数が、ORグループ2601に設定された最大重み2602の値以上となった場合に、ORグループ2601が1つの条件要素として条件を成立させたとみなす。また、1つのORグループは最大で、最大重み2602値分の条件要素と同等の重みを持つ。
[0359]
 例えば、相関ルール2600aは、IF部に2つの条件、すなわち「<ServerXServiceResponseTime_ThresholdErr(サーバXのサービスレスポンスタイム閾値超過エラー)>」および「<ServerP Nic_Err(サーバPのNIC障害エラー)>」を有する。さらに、相関ルール2600aのIF部は、最大重み2602が「1」であるORグループ2601を有する。そのORグループ2601には3つの条件、すなわち、「<ServerQ Nic_Err(サーバQのNIC障害エラー)>」、「<ServerR Nic_Err(サーバRのNIC障害エラー)>」、および「<ServerS Nic_Err(サーバSのNIC障害エラー)>」が属する。
[0360]
 従って、実施例1と同様に、「Nic_Err(NIC障害エラー)」のようなエラーイベントが「サーバP」(図22の2201p)から受信された場合に、条件「<ServerP Nic_Err>」は真になる。
[0361]
 また、「Nic_Err(NIC障害エラー)」のようなエラーイベントが「サーバQ」、「サーバR」、または「サーバS」のいずれか1台以上から受信された場合には、ORグループは真になる。
[0362]
 IF部の全ての条件が真ならば、特定のルールに従いTHEN部の結論要素は真であると推定される。例えば、相関ルール2600aは結論要素「<ServerP Nic_Err>」を有する。従って、相関ルール2600aによれば、サーバXがサービスレスポンスタイムの閾値超過を示すエラーを報告し、サーバPがNIC障害エラーを報告し、かつ、サーバQまたはサーバRまたはサーバSのいずれか1つがNIC障害エラーを報告した場合に、その根本原因はサーバPにおけるNIC障害であると推定される。
[0363]
 本実施形態においても、実施例1と同様に、相関ルール2600のIF部とTHEN部内の各要素は、監視対象の管理コンポーネントを識別する識別子と、イベントの種別を表すイベント種別とを含む。
[0364]
 <相関ルールメモリ>
[0365]
 図27に、本実施形態に係る相関ルールメモリ121に保存された、オブジェクトモデルの関連付けの例を示す。
[0366]
 図27には、5種類のオブジェクト、すなわち、条件オブジェクト2701、演算子オブジェクト2702、相関ルールオブジェクト2703、結論オブジェクト2704、およびORグループオブジェクト2705が示されている。これらのオブジェクトおよびその接続は、相関ルールメモリ生成プログラム122により生成される。
[0367]
 条件オブジェクト2701、演算子オブジェクト2702、相関ルールオブジェクト2703、結論オブジェクト2704は、実施例1の図7の条件オブジェクト701、演算子オブジェクト702、相関ルールオブジェクト703、結論オブジェクト704と同様の属性を有する。
[0368]
 実施例1と異なる点は、相関ルールメモリ121にORグループオブジェクト2705が存在し得る点と、ORグループオブジェクト2705を追加する場合は相関ルールオブジェクト2703と演算子オブジェクト2702の間にORグループオブジェクト2705が接続される点である。
[0369]
 ORグループオブジェクト2705は、2種の属性を有する。2種類の属性とは、ORグループオブジェクト2705に割り当て可能な最大の重み値である「最大重み」(MaxWeight)と、ORグループオブジェクト2705に割り当てられた重み値である「重み」である。
[0370]
 ORグループオブジェクト2705の「最大重み」の値には、相関ルール2600の最大重み2602の値が設定される。ORグループオブジェクト2705は、演算子オブジェクト2702と接続され、さらに演算子オブジェクト2702は条件オブジェクト2701と接続される。ORグループオブジェクト2705の属性「重み」は、ORグループオブジェクト2705に接続された条件オブジェクト2701の「重み」の合計と、「最大重み」のうち、小さい方の値が設定される。
[0371]
 実施例1と同様に、本実施形態においても、相関ルールオブジェクト2703に接続された結論オブジェクト2704が1つの相関ルールの結論要素であることを示す。また、相関ルール2600にORグループ2601が存在しない場合、実施例1と同様に、相関ルールオブジェクト2703に接続された演算子オブジェクト2702と、さらに演算子オブジェクト2702に接続された条件オブジェクト2701が1つの相関ルールの条件要素を示す。
[0372]
 相関ルール2600にORグループ2601が存在する場合は、相関ルールオブジェクト2703にORグループオブジェクト2705が接続される。また、ORグループ2601に属する条件要素に対応する演算子オブジェクト2702はORグループオブジェクト2705接続され、さらに演算子オブジェクト2702に条件オブジェクト2701が接続される。
[0373]
 ORグループに属さない条件要素は、実施例1と同様に、相関ルールオブジェクト2703に演算子オブジェクト2702が接続され、さらに演算子オブジェクト2702に条件オブジェクト2701が接続される。
[0374]
 本実施形態においても実施例1と同様に、このオブジェクトモデルは、条件要素と結論要素の重複なしに形成される。相関ルールメモリ生成プログラム122は、条件オブジェクト2701を生成する際に重複を除外する。
[0375]
 例えば、相関ルールオブジェクト2703aは、演算子オブジェクト2702a、2702b、ORグループオブジェクト2705aとの3つの接続を有する。また、ORグループオブジェクト2705aは、演算子オブジェクト2702c、2702d、2702eとの3つの接続を有する。各演算子オブジェクト2702は、ちょうど1つの条件オブジェクト2701に接続している。従って、「相関ルール2600a」のIF部は2つの条件と1つのORグループからなり、ORグループには3つの条件が属する。
[0376]
 また、相関ルールオブジェクト2703aは、結論オブジェクト2704aと接続している。相関ルールオブジェクト2703bもまた、演算子オブジェクト2702b、2702e、ORグループオブジェクト2705bとの3つの接続を有し、ORグループオブジェクト2705bは演算子オブジェクト2702a、2702c、2702dとの3つの接続を有する。従って、演算子オブジェクト2702a~2702eは、相関ルールオブジェクト2703a,2703b、およびORグループオブジェクト2705a、2705bにより共有される。
[0377]
 また、本実施形態においても、「ルールマッチング率」は、相関ルールの条件要素の総数を構成する要素のうちどの要素が真になるかに従う率で計算される確度である。ただし、ORグループに属する条件要素の総数は、ORグループオブジェクト2705の「最大重み」属性に設定された値とする。
[0378]
 従って、ルールマッチング率を計算する式は、以下のように変更される。
[0379]
 RMR=(ORグループ外の真の条件要素数+ORグループの重み)/(ORグループ外の条件要素の総数+ORグループの最大重み)
[0380]
 例えば、図27において、条件要素2701c,2701dは真である。従って、ORグループオブジェクト2705aに属する条件要素の重みの合計は1.0+1.0=2.0であり、また、ORグループオブジェクト2705aの「最大重み」は1.0であるから、分析エンジンはORグループオブジェクト2705aの「重み」属性に、値の小さい方の1.0という値を設定する。
[0381]
 また、相関ルール2600aの条件要素2701a、2701bも真であり、相関ルール2600aの条件要素の総数はORグループに属するものを除くと2つ、相関ルール2600aが有するORグループの「最大重み」は1.0である。従って、分析エンジンは、相関ルール2600aのルールマッチング率を、(2+1.0)/(2+1.0)=1.0として計算する。
[0382]
 本実施形態においても、実施例1と同様に、分析エンジンは「ルールマッチング率」および「マッチング率」を計算する。これにより、管理コンポーネントのうちの1つに関するイベントメッセージが分析エンジンに送られない場合に生じ得るように、たとえ1つの条件要素が真で無い場合でも、最も確率が高い結論を決定できる。
[0383]
 <相関ルール生成プログラム>
[0384]
 実施例1では、監視コンピュータ101内で、相関ルール生成プログラム129により実行される相関ルール生成の処理例を図13、図14、図15、図16に示した。
[0385]
 本実施形態において、相関ルール生成プログラム129により実行される処理のうち、実施例1と異なる点は、図15に示された「複合伝搬条件付一般ルール展開処理」のみである。従って、図28に、相関ルール生成プログラム129により実行される複合伝搬条件付一般ルール展開処理のフローチャートを示す。
[0386]
 ステップS2811で、「複合伝搬条件付一般ルール展開処理」は、一般ルール2400、トポロジ生成方式2500、およびトポロジ情報をパラメータとして受信する。以下、条件付き展開処理と呼ぶことがある。
[0387]
 ステップS2812において、条件付き展開処理は、所定エントリをステップS2811で取得したトポロジ情報から全て取得する。ここで、所定エントリとは、一般ルール2400内のIF部の条件要素のうち、複合伝搬条件2431が設定されていない条件要素に記述された管理コンポーネント条件に対応する、構成情報テーブル137のエントリである。
[0388]
 ステップS2813において、条件付き展開処理は、ステップS2811で取得したトポロジ情報と異なるトポロジ情報であって、かつステップS2812で取得した構成情報テーブル137のエントリを含む全てのトポロジ情報を、ステップS2811で取得したトポロジ生成方式2500で示された手段に基づいて、構成情報テーブル137から取得する。
[0389]
 ステップS2814において、条件付き展開処理は、ステップS2811とステップS2813とでそれぞれ取得した全てのトポロジ情報に対して、ステップS2815乃至ステップS2822の処理を繰り返す。
[0390]
 ステップS2815において、条件付き展開処理は、特定のトポロジ情報に含まれる管理コンポーネント識別子と、ステップS2811で取得した一般ルール2400のIF部の情報とを元に、相関ルールのIF部を生成する。
[0391]
 ステップS2816において、条件付き展開処理は、特定のトポロジ情報に含まれる管理コンポーネント識別子と、ステップS2811で取得した一般ルール2400のTHEN部の情報とを元に、相関ルール2600のTHEN部を生成する。
[0392]
 ステップS2817において、条件付き展開処理は、ステップS2811で取得した一般ルール2400に対して、複合伝搬条件2431が設定された条件要素に対応する管理コンポーネント識別子を、ステップS2811とステップS2813で取得したトポロジ情報のうち、特定のトポロジ情報を除く全トポロジ情報から抽出する。
[0393]
 ステップS2818において、条件付き展開処理は、ステップS2817で抽出した管理コンポーネント識別子と、S2811で取得した一般ルール2400のIF部の情報とを元に、相関ルールの条件要素を生成し、ステップS2815で生成した相関ルール2600のIF部に追加する。
[0394]
 ステップS2819において、条件付き展開処理は、ステップS2818で追加した条件要素をORグループ2601としてグループ化し、該当する条件要素がORグループ2601に属すること識別するための情報を相関ルールに付加する。
[0395]
 ステップS2820において、条件付き展開処理は、ステップS2811で取得した一般ルール2400の複合伝搬条件2431に設定されている数値Xを取得する。
[0396]
 ステップS2821において、条件付き展開処理は、ステップS2819で設定したORグループ2601の最大重み2602を、数値「X-1」として設定する。
[0397]
 ステップS2822において、条件付き展開処理は、ステップS2815で生成し、ステップS2818およびステップS2819で情報を追加した相関ルール2600のIF部と、ステップS2816で生成した相関ルール2600のTHEN部とを統合することで、相関ルール2600を生成する。条件付き展開処理は、生成した相関ルール2600を相関ルールリスト126に追加する。
[0398]
 例えば、条件付き展開処理は、図24の一般ルール2400(%ServiceX%に値「DNSService」代入済み)と、図25のトポロジ生成方式2500(%ServiceX%に値「DNSService」, %ServiceY%に値「MailService」代入済み)と、トポロジ情報「エントリ2311-エントリ2321-エントリ2315」をパラメータとして受信する(ステップS2811)。
[0399]
 条件付き展開処理は、ステップS2811で取得したトポロジ情報エントリ2311-エントリ2321-エントリ2315」の中から、一般ルール2500の複合伝搬条件2431が設定されていない条件要素「Computer.アクセスサービス=DNSService ServiceResponseTime_ThresholdErr」が示す管理コンポーネントの条件に該当するエントリ2315を取得する(ステップS2812)。
[0400]
 条件付き展開処理は、トポロジ生成方式2500において、終点管理コンポーネントであるエントリ2315に対して、トポロジ生成条件2515の「(Computer.接続ロードバランサ)=(LB.管理コンポーネント識別子))に基づき、構成情報テーブル137のエントリ2315の接続ロードバランサ2305に格納された識別子が「LoadBalancerA」であるため、ロードバランサ管理表2300cから「LoadBalancerA」の識別子を持つエントリを取得する。その結果、条件付き展開処理は、エントリ2321を取得する。
[0401]
 さらに、条件付き展開処理は、トポロジ生成条件の2515の「(LB.接続コンピュータ)=(Computer.管理コンポーネント識別子)」と「(Computer.提供サービス)=(Computer.アクセスサービス)」とに基づいて、エントリ2321の接続コンピュータ2306に格納された識別子であって、かつコンピュータ管理表2300aの提供サービス2303が「DNSService」となっているエントリ(ただし、エントリ2311を除く)を探す。
[0402]
 その結果、検索されたServerQ、ServerR、ServerSに対して、条件付き展開処理は、「トポロジ情報「エントリ2312-エントリ2321-エントリ2315」、「エントリ2313-エントリ2321-エントリ2315」、「エントリ2314-エントリ2321-エントリ2315」を得る(ステップS2813)。
[0403]
 条件付き展開処理は、ステップS2811とステップS2813で取得したトポロジ情報のうちいずれか1つを選択する。例えば、トポロジ情報「エントリ2311-エントリ2321-エントリ2315」を選択した場合、条件付き展開処理は、一般ルール2400のIF部と、トポロジ情報に含まれるエントリとから、ServerX(エントリ2315)の「ServiceResponseTime_ThresholdErr」とServerP(エントリ2311)の「Nic_Err」を条件部分とする、図26のIF部2611を生成する(ステップS2814~ステップS2815)。
[0404]
 条件付き展開処理は、トポロジ情報「エントリ2311-エントリ2321-エントリ2315」と、一般ルール2400とにより、ServerP(エントリ2311)の「Nic_Err」を結論部分とする、図26のTHEN部2612を生成する(ステップS2816)。
[0405]
 条件付き展開処理は、選択しなかった残りのトポロジ情報から、一般ルール2400の条件要素「Computer.提供サービス=DNSService Nic_Err」に該当する管理コンポーネント識別子ServerQ、ServerR、ServerSを取得する(ステップS2817)。
[0406]
 条件付き展開処理は、一般ルール2400のIF部と、取得した管理コンポーネント識別子とから、ServerQ、ServerR、ServerSそれぞれの「Nic_Err」を相関ルール2600aの条件要素として生成する。条件付き展開処理は、それら生成した条件要素をORグループとしてグループ化し、ORグループ22601を、相関ルール2600のIF部に追加する(ステップS2818~S2819)。
[0407]
 条件付き展開処理は、一般ルール2400の複合伝搬条件2431に設定されている数値「2」を取得し、取得した値から(2-1)=1を算出し、ORグループ2601の最大重み2602に数値1を設定する(ステップS2820~S2821)。条件付き展開処理は、生成した相関ルールのIF部2611、2601とTHEN部2612とを統合して相関ルール2600aを生成し、その相関ルール2600aを相関ルールリスト126に追加する(ステップS2822)。
[0408]
 <相関ルールメモリ生成プログラム>
[0409]
 図29に、本実施形態に係る相関ルールメモリ生成プログラム122により実行される相関ルールメモリ生成の処理例のフローチャートを示す。
[0410]
 ステップS2911において、相関ルールメモリ生成プログラム122は、相関ルールリスト126をパラメータとして受け取る。
[0411]
 ステップS2912において、相関ルールメモリ生成プログラム122は、ステップS2911で取得した相関ルールリスト126内に含まれる全ての相関ルール2600に対して、ステップS2913乃至ステップS2920の処理を繰り返す。
[0412]
 ステップS2913において、相関ルールメモリ生成プログラム122は、ステップS2911で取得した相関ルールリスト126内の特定の相関ルール2600の構文を解析する。
[0413]
 ステップS2914において、相関ルールメモリ生成プログラム122は、実施例1の図17に示すステップS1714~ステップS1718と同等の処理を実行して、相関ルールメモリ121に条件オブジェクト2701と演算子オブジェクト2702とを生成し、それらオブジェクト2701,2702を互いに接続する。
[0414]
 ステップS2915において、相関ルールメモリ生成プログラム122は、特定の相関ルール2600に対応する相関ルールオブジェクト2703を、相関ルールメモリ121内に生成する。
[0415]
 ステップS2916において、相関ルールメモリ生成プログラム122は、特定の相関ルール2600にORグループ2601が存在するかを調べる。ORグループ2601が存在しないならば(S2916:NO)、処理はステップS2917乃至ステップS2919をスキップして後述のステップS2921へ進む。ORグループが存在する場合(S2916:YES)、処理はステップS2917に進む。
[0416]
 ステップS2917において、相関ルールメモリ生成プログラム122は、相関ルールメモリ121内にORオブジェクト2705を生成し、そして、特定の相関ルール2600のORグループ2601に属する条件要素に該当する全て演算子オブジェクト2702を接続する。
[0417]
 ステップS2918において、相関ルールメモリ生成プログラム122は、特定の相関ルール2600からORグループ2601の最大重み2602を取得し、ステップS2917で生成したORオブジェクト2705の「最大重み」属性に設定する。
[0418]
 ステップS2919において、相関ルールメモリ生成プログラム122は、ステップS2917で生成したORオブジェクト2705とステップS2915で生成した相関ルールオブジェクト2703とを接続する。
[0419]
 ステップS2921において、相関ルールメモリ生成プログラム122は、ステップS2915で生成した相関ルールオブジェクト2703と、関連する演算子オブジェクト2702とを接続する。
[0420]
 ステップS2920において、相関ルールメモリ生成プログラム122は、実施例1の図17に示すステップS1720~ステップS1724と同等の処理を実行し、相関ルールオブジェクト2703と関連する結論オブジェクト2704とを接続する。
[0421]
 ステップS2921において、相関ルールメモリ生成プログラム122は、ステップS2913乃至ステップS2920で処理を行った相関ルールリスト126内の全ての相関ルール2600を削除する。
[0422]
 例えば、相関ルールメモリ生成プログラム122が、パラメータとして受信した相関ルールリスト126内に図2の相関ルール2600aが存在しており、相関ルールメモリ生成プログラム122が相関ルール2600aを選択したとする。
[0423]
 この時、相関ルールメモリ121内には、図27に示す相関ルール2600aに対応する相関ルールオブジェクト2703aが生成される。また、図27に示すように、相関ルール2600aの条件オブジェクト2701は、2701a~2701eである。
[0424]
 これらの条件オブジェクト2701a~2701eは、各々演算子オブジェクト2702a~2702eに接続している。相関ルール2600aの結論オブジェクト2704は2704aである。また、相関ルール2600aはORグループ2601を有するため、相関ルールメモリ121内にはORグループオブジェクト2705aが生成される。
[0425]
 相関ルール2600aのORグループに属する条件要素に対応する条件オブジェクト2701は、2701c、2701d、2701eである。従って、相関ルールオブジェクト2703aに対し、接続2704a~2703a~2702a~2701a、2704a~2703a~2702b~2701b、2704a~2703a~2705a~2702c~2701c、2704a~2703a~2705a~2702d~2701d、2704a~2703a~2705a~2702e~2701eが、相関ルール2600aのために生成されなければならない。
[0426]
 同様に、相関ルール2600bが選択された場合は、相関ルールオブジェクト2703bが生成され、相関ルール2600bの条件オブジェクト2701も、2701a~2701eである。また、相関ルール2600bもORグループを有するため、ORオブジェクト2705bが生成され、相関ルール2600bのORグループに属する条件要素に対応する条件オブジェクト2701は2701a、2701c、2701dである。
[0427]
 従って、条件オブジェクト2701a~2701eは相関ルール2600bのものと重なっている。この場合、相関ルールオブジェクト2703a、2703bとORオブジェクト2705a、2705bは、対応する演算子オブジェクト2702a~2702eおよび条件オブジェクト2701a~2701bを共有する。
[0428]
 <マッチング率評価プログラム>
[0429]
 図30(図30A、図30B)に、本実施形態に係るマッチング率評価プログラム125により実行されるマッチング率評価を実行するフローチャートを示す。
[0430]
 ステップS3001において、マッチング率評価プログラム125は、イベント書込プログラム123またはイベント消去プログラム127により起動されると特定の条件オブジェクト2701をパラメータとして受信する。以下、マッチング率評価プログラム125を評価プログラム125と略す場合がある。
[0431]
 ステップS3002において、評価プログラム125は、パラメータとして渡された特定の条件オブジェクト2701に接続する演算子オブジェクト2702を取得する。
[0432]
 ステップS3003において、評価プログラム125は、ステップS3002で取りだされた特定の演算子オブジェクト2702に接続する相関ルールオブジェクト2703、またはORグループオブジェクト2705を、全て取得する。
[0433]
 ステップS3004において、評価プログラム125は、ステップS3003で取得したORグループオブジェクト2705に接続する相関ルールオブジェクト2703を全て取得する。
[0434]
 ステップS3005において、評価プログラム125は、ステップS3003またはステップS3004で取得した相関ルールオブジェクト2703に接続する結論オブジェクト704を取得する。
[0435]
 ステップS3006において、評価プログラム125は、ステップS3005で取り出された結論オブジェクト2704全てに対して、ステップS3007乃至ステップS3019の処理を繰り返す。
[0436]
 ステップS3007において、評価プログラム125は、特定の結論オブジェクト2704に接続する相関ルールオブジェクト2703を全て取得する。
[0437]
 ステップS3008において、評価プログラム125は、ステップS3007で取り出された相関ルールオブジェクト2703全てに対して、ステップS3009乃至ステップS3018の処理を繰り返す。
[0438]
 ステップS3009において、評価プログラム125は、特定の相関ルールオブジェクト2703から他の任意の演算子オブジェクト2702まで、次いで任意の演算子オブジェクト2702から他の任意の条件オブジェクト2701まで、接続を辿ることにより、ステップS3007で取得した特定の相関ルールオブジェクト2703と合わせて、全ての条件オブジェクト2701を取得する。
[0439]
 ステップS3010において、評価プログラム125は、ステップS3009で取得した全ての条件オブジェクト2701の重み値の合計を計算する。例えば、図27に示す例において、相関ルールオブジェクト2703aは演算子オブジェクト2702a、2702bに接続している。演算子オブジェクト2702a、2702cは各々条件オブジェクト2701a、2701bに接続している。条件オブジェクト2701a、2701bの各々は1.0の重み値を有し、従って本例で重みの合計は2.0に等しくなる。
[0440]
 ステップS3011において、評価プログラム125は、特定の相関ルールオブジェクト2703にORグループオブジェクト2705が接続しているか否かを調べる。接続していないならば(S3011:NO)、処理はステップS3012乃ステップS3017の処理を実行せずに次の処理へ進む。さもなければ(S3011:YES)、処理はステップS3012に進む。
[0441]
 ステップS3012において、評価プログラム125は、特定の相関ルールオブジェクト2703に接続するORグループオブジェクト2705全てに対して、ステップS3013乃至ステップS3017の処理を繰り返す。
[0442]
 ステップS3013において、評価プログラム125は、特定のORグループオブジェクト2705から他の任意の演算子オブジェクト2702まで、次いで任意の演算子オブジェクト2702から他の任意の条件オブジェクト2701まで、接続を辿ることにより、特定のORグループオブジェクト2705と合わせて、全ての条件オブジェクト2701を取得する。
[0443]
 ステップS3014において、評価プログラム125は、ステップS3013で取得した全ての条件オブジェクト2701の重み値の合計を計算する。
[0444]
 ステップS3015において、評価プログラム125は、ステップS3014で算出した条件オブジェクト2701の重み値の合計と、ステップS3013において取得した特定のORグループオブジェクトの「最大重み」属性に格納された値とを比較し、ステップS3013で算出した重み値の合計の方が大きいか否かを調べる。大きいならば(S3015:YES)、処理はステップS3016に進む。さもなければ(S3015:NO)処理はステップS3017に進む。
[0445]
 ステップS3016において、評価プログラム125は、ステップS3013において取得した特定のORグループオブジェクト2705の「最大重み」属性に格納された値を、特定のORグループオブジェクト2705の「重み」属性に設定する。
[0446]
 ステップS3017において、評価プログラム125は、ステップS3014で算出した条件オブジェクト2701の重み値の合計を、ステップS3013において取得した特定のORグループオブジェクト2705の「重み」属性に設定する。
[0447]
 例えば、図27に示す例において、相関ルールオブジェクト2703aは、ORグループオブジェクト2705aと接続している。ORグループオブジェクト2705aは、演算子オブジェクト2702c~2702eに接続している。演算子オブジェクト2702c~2702eは、各々条件オブジェクト2701c~2701eに接続している。条件オブジェクト2701c、2701dの各々は1.0の重み値を有し、条件オブジェクト2701eは0.0の重み値を有する。従って本例で重みの合計は2.0となる。
[0448]
 一方、ORグループオブジェクト2705aの「最大重み」属性には、1.0が設定されている。従って、ORグループオブジェクト2705aが有する条件オブジェクト2701の重み値の合計の方が、ORグループオブジェクト2705aの「最大重み」属性の値より大きいため(S3015:YES)、ORグループオブジェクト2705aの「重み」属性には値「1.0」を格納する(S3016)。
[0449]
 図30Bに示すステップS3018で、評価プログラム125は、式「RMR=(ORグループ外の真の条件要素数+ORグループの重み)/(ORグループ外の条件要素の総数+ORグループの最大重み)」に従い、ルールマッチング率(RMR)の値を計算し、その結果を、対応する相関ルールオブジェクト2703のRMR属性に設定する。
[0450]
 例えば、図27に示すように、ORグループ外の真の条件要素数は、条件オブジェクト2701a、2701bの2つであり、ORグループの重みはORグループオブジェクト2705aの「重み」属性の値から1.0であり、ORグループ外の条件要素の総数は2701a、2701bの2つであり、ORグループの最大重みはORグループオブジェクト2705aの「最大重み」属性の値から1.0である。従って、相関ルールオブジェクト2703aのRMRは、1.0(すなわち3.0/3.0)になる。
[0451]
 ステップS3019において、評価プログラム125は、式「Max(接続する相関ルールオブジェクトのRMR)」に従い、マッチング率(MR)の値を計算して、その結果を、対応する結論オブジェクト2704のMR属性に設定する。
[0452]
 例えば、図27に示すように、結論オブジェクト2704aに接続する相関ルールオブジェクトは2703aであり、RMRは1.00であるため、結論オブジェクト2704aのMRは1.0(すなわち3.0/3.0)になる。
[0453]
 ステップS3020において、評価プログラム125は、マッチング率がパラメータとして計算された結論オブジェクト2704を渡すことにより、外部モジュール128を起動して、処理を終了させる。
[0454]
 上の開示から明らかなように、本実施形態では、実施例1と同様に、複数の管理コンポーネントのイベントの組合せが1つの管理コンポーネントに伝搬する障害伝搬パターンに対しても、根本原因分析を実行することができる。これに加えて、実施例2では、実施例1と比べて、相関ルールを生成する数を削減することができ、分析エンジンが消費するメモリ容量およびマッチング率の計算処理時間を削減することができる。
[0455]
 実施例1、実施例2の両方において、分析エンジン(監視システム201)は、分析の各結論に対してマッチング率を設定することにより、管理コンポーネントのうちの1つに関するイベントメッセージが分析エンジンに送られない場合に生じ得るように、たとえ1つの条件要素が真で無い場合でも、最も確率が高い結論を決定できる。
[0456]
 また、確率が高い結論を決定するだけでなく、1つの結論に関連する条件要素のうち、一部が真である場合に、真でない条件要素が示すイベントを、受信が期待されるイベント(以下、期待イベントと呼ぶことがある)を提示することができる。
[0457]
 すなわち、ある結論が真の原因であった場合に、その結論が示すイベントが生起することによって必ず引き起こされるイベントを、その結論に関連する全ての相関ルールの条件要素に基づいて事前に導き出す。それらのうち真でない条件要素が示すイベントを期待イベントとして提示し、期待イベントが実際に生起しているかどうかを別の手段でもって確認させることで、結論に対する確度の精度を上げることができる。
[0458]
 実施例1、実施例2で示した本実施形態においては、複合障害伝搬パターンでない障害パターンを分析するための相関ルールに対して、相関ルールの結論要素が真の原因であった場合に、相関ルールの条件要素が示すイベントは必ず生起する。
[0459]
 しかし、複合障害伝搬パターンを分析するための相関ルールは、相関ルールの結論が真の原因であった場合に、全ての条件要素が必ず真となるわけではない。なぜなら、複合障害伝搬パターンにおいては、複数のイベントの組合せが原因となる障害伝搬パターンであるため、相関ルールにおける1つの結論が真の原因であったとしても、全ての条件要素が示すイベントを引き起こすかどうかは他のイベントが生起しているか否かによって異なるためである。
[0460]
 従って、本実施形態においては、相関ルールの条件要素が示すイベントのうち、期待イベントとして提示するかどうかを、受信したイベント群から判定する処理を含んでいてもよい。
[0461]
 例えば、図31(図31A、図31B)は、図7の相関ルールメモリ121に保存されたオブジェクトモデルの相関ルールメモリ関連付けの例のうち、相関ルール600aを表すオブジェクトを示す。
[0462]
 図31のオブジェクトモデルにおいて、条件オブジェクト701a、701cは、一般ルール400aのIF部412aの条件要素のうち、複合伝搬条件431が設定された条件要素と構成情報テーブル137の情報から生成された相関ルール600aの条件要素である。
[0463]
 従って、図31Aに示すように、相関ルール600aにおいては、条件オブジェクト701a、701cの両方が真となった場合に、条件オブジェクト701bを結論オブジェクト704aの期待イベントとして提示してよいことが、一般ルール400aから判断することができる。
[0464]
 また、図31Bに示すように、条件オブジェクト701a、701cのうち片方のみが真となっている場合には、条件オブジェクト701bを結論オブジェクト704aの期待イベントとして提示しないことを一般ルール400aから判断することができる。
[0465]
 また、どの条件要素が真となった場合に、どの条件要素を期待イベントとして表示可能かどうかの判定条件は、相関ルールオブジェクト703の生成時に、相関ルールオブジェクト703に格納し、相関ルールメモリ121内の情報のみで判断可能となるようにしてもよい。
[0466]
 なお、本実施形態に記載された構成は、以下のように、計算機システムの監視方法として表現することもできる。
[0467]
 表現1.複数の監視対象を含む計算機システムをコンピュータを用いて監視するための監視方法であって、
 前記コンピュータは、所定のコンピュータプログラムを実行するためのマイクロプロセッサと、前記マイクロプロセッサにより使用されるメモリと、前記マイクロプロセッサが前記複数の監視対象から情報を取得するための通信インターフェース部とを備え、
 前記マイクロプロセッサが前記所定のコンピュータプログラムを実行することで、前記コンピュータは、
 前記複数の監視対象に関する構成情報を取得して前記メモリに記憶し、
 前記複数の監視対象のいずれかに生じ得る第1イベントと、前記第1イベントの原因となり得る第2イベントとを予め関連づける一般ルールであって、予め設定される所定数以上の前記第2イベントが前記複数の監視対象のうち予めグループ化された複数の所定の監視対象について発生した場合は、当該第2イベントが原因となって前記第1イベントが発生したと推定するための一般ルールを、前記メモリに記憶し、
 前記複数の監視対象で発生したイベントに関するイベント情報を前記通信インターフェース部を介して受信し、前記メモリに記憶させるイベント情報記憶ステップと、
 前記一般ルールと前記構成情報とに基づいて作成される相関ルールであって、前記イベント情報の示すイベントのうち前記第2イベントに対応するイベントが前記所定数以上検出された場合は、前記イベント情報の示すイベントのうち前記第1イベントに対応するイベントが発生することを示す相関ルールを所定タイミングで生成し、
 受信された前記イベント情報と前記相関ルールとに基づいて、受信された前記イベント情報の示すイベントが発生した原因を解析し、
 解析結果を外部装置に出力する、監視方法。
[0468]
 表現2.
 前記所定のタイミングは、前記イベント情報を受信した場合であり、
 前記コンピュータは、受信したイベント情報に関する相関ルールのみを、前記イベント情報を受信したときに生成する、
表現1に記載の監視方法。

符号の説明

[0469]
 101:監視コンピュータ、102:サーバ、103:ネットワークスイッチ、141:監視エージェント、153:クライアントコンピュータ、201:監視システム、202:監視対象、2201:サーバ(DNSサーバ)、2221:ロードバランサ、2231:サーバ(メールサーバ)

請求の範囲

[請求項1]
 コンピュータを、複数の監視対象を含む計算機システムを監視するための監視装置として機能させるためのコンピュータプログラムであって、
 前記複数の監視対象に関する構成情報を記憶する構成情報記憶部と、
 前記複数の監視対象のいずれかに生じ得る第1イベントと、前記第1イベントの原因となり得る第2イベントとを予め関連づける一般ルールであって、予め設定される所定数以上の前記第2イベントが前記複数の監視対象のうち予めグループ化された複数の所定の監視対象について発生した場合は、当該第2イベントが原因となって前記第1イベントが発生したと推定するための一般ルールを、記憶する一般ルール記憶部と、
 前記複数の監視対象で発生したイベントに関するイベント情報を記憶するイベント情報記憶部と、
 前記一般ルールと前記構成情報とに基づいて作成される相関ルールであって、前記イベント情報の示すイベントのうち前記第2イベントに対応するイベントが前記所定数以上検出された場合は、前記イベント情報の示すイベントのうち前記第1イベントに対応するイベントが発生することを示す相関ルールを生成する相関ルール生成部と、
 受信された前記イベント情報と前記相関ルールとに基づいて、受信された前記イベント情報の示すイベントが発生した原因を解析するための解析部と、
を備える、コンピュータプログラム。
[請求項2]
 前記解析部による解析結果を出力するための出力部を、前記コンピュータ上にさらに実現させる、
請求項1に記載のコンピュータプログラム。
[請求項3]
 前記相関ルール生成部は、前記イベント情報が受信されると、受信された前記イベント情報に関連する相関ルールを生成して、前記コンピュータの有するメモリに格納する、
請求項2に記載のコンピュータプログラム。
[請求項4]
 前記相関ルール生成部は、受信した前記イベント情報に関連する前記相関ルールを生成する前に、前記相関ルールが前記メモリに格納されているかを判定し、前記相関ルールが前記メモリに格納されていると判定した場合は、前記相関ルールを前記メモリに格納しない、
請求項3に記載のコンピュータプログラム。
[請求項5]
 前記解析部は、前記イベント情報の示す前記イベントのうち前記第1イベントに対応するイベントの発生数が前記所定の監視対象の数に占める割合を示すマッチング率を算出し、前記マッチング率を保存する、
請求項4に記載のコンピュータプログラム。
[請求項6]
 前記解析部は、前記マッチング率の高い順番に、前記イベント情報の示す前記イベントの発生原因であると推定される前記第2イベントを前記出力部により出力させる、
請求項5に記載のコンピュータプログラム。
[請求項7]
 受信された前記イベント情報には所定の有効期間が設定されており、
 前記解析部は、受信された前記イベント情報に所定の重み値を設定して前記イベント情報の示すイベントの原因を推定するようになっており、
 前記有効期間を過ぎた前記イベント情報の示すイベントの重み値は低下される、
請求項6に記載のコンピュータプログラム。
[請求項8]
 前記有効期間を過ぎた前記イベント情報の示す前記イベントの重み値は最低値に設定されて、前記イベントが発生しなかったものとして扱われる、
請求項7に記載のコンピュータプログラム。
[請求項9]
 前記一般ルールは、前記複数の監視対象のうち前記第1イベントに対応するイベントの発生した監視対象と前記所定の監視対象との接続関係を規定するトポロジ条件を示すトポロジ条件情報を含んでおり、
 前記相関ルール生成部は、前記イベント情報に示すイベントに対応する前記トポロジ条件情報に基づいて前記構成情報を検索することにより、前記トポロジ条件情報に対応する前記構成情報と前記一般ルールとに基づいて、前記相関ルールを生成する、
請求項8に記載のコンピュータプログラム。
[請求項10]
 前記相関ルールは、前記所定の監視対象がそれぞれ前記第1イベントに対応するイベントの発生原因になる場合について生成される、
請求項9に記載のコンピュータプログラム。
[請求項11]
 前記相関ルールは、前記所定の監視対象についてあり得る、前記所定数の組み合わせの全てについてそれぞれ生成される、
請求項10に記載のコンピュータプログラム。
[請求項12]
 前記相関ルールは、前記所定数の組み合わせの全てのうち、前記所定の監視対象が共通する相関ルールを1つの相関ルールとしてまとめて生成される、
請求項11に記載のコンピュータプログラム。
[請求項13]
 複数の監視対象を含む計算機システムを監視するための監視装置であって、
 所定のコンピュータプログラムを実行するためのマイクロプロセッサと、前記マイクロプロセッサにより使用されるメモリと、前記マイクロプロセッサが前記複数の監視対象から情報を取得するための通信インターフェース部とを備え、
 前記マイクロプロセッサが前記所定のコンピュータプログラムを実行することで、
 前記複数の監視対象に関する構成情報を取得して前記メモリに記憶させる構成情報記憶ステップと、
 前記複数の監視対象のいずれかに生じ得る第1イベントと、前記第1イベントの原因となり得る第2イベントとを予め関連づける一般ルールであって、予め設定される所定数以上の前記第2イベントが前記複数の監視対象のうち予めグループ化された複数の所定の監視対象について発生した場合は、当該第2イベントが原因となって前記第1イベントが発生したと推定するための一般ルールを、前記メモリに記憶させる一般ルール記憶ステップと、
 前記複数の監視対象で発生したイベントに関するイベント情報を前記通信インターフェース部を介して受信し、前記メモリに記憶させるイベント情報記憶ステップと、
 前記一般ルールと前記構成情報とに基づいて作成される相関ルールであって、前記イベント情報の示すイベントのうち前記第2イベントに対応するイベントが前記所定数以上検出された場合は、前記イベント情報の示すイベントのうち前記第1イベントに対応するイベントが発生することを示す相関ルールを生成する相関ルール生成ステップと、
 受信された前記イベント情報と前記相関ルールとに基づいて、受信された前記イベント情報の示すイベントが発生した原因を解析するための解析ステップと、
 前記解析ステップによる解析結果を表示装置に表示するための出力ステップと、
を実行する監視装置。
[請求項14]
 前記相関ルール生成ステップは、前記イベント情報が受信されると、受信された前記イベント情報に関連する相関ルールを生成して、前記メモリに格納する、
請求項13に記載の監視装置。
[請求項15]
 前記解析ステップは、
  前記イベント情報の示す前記イベントのうち前記第1イベントに対応するイベントの発生数が前記所定の監視対象の数に占める割合を示すマッチング率を算出し、
  前記マッチング率の高い順番に、前記イベント情報の示す前記イベントの発生原因であると推定される前記第2イベントを前記表示装置に表示させる、
請求項14に記載の監視装置。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6A]

[ 図 6B]

[ 図 6C]

[ 図 6D]

[ 図 6E]

[ 図 6F]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15]

[ 図 16]

[ 図 17]

[ 図 18]

[ 図 19]

[ 図 20]

[ 図 21]

[ 図 22]

[ 図 23]

[ 図 24]

[ 図 25]

[ 図 26A]

[ 図 26B]

[ 図 27]

[ 図 28]

[ 図 29]

[ 図 30A]

[ 図 30B]

[ 図 31A]

[ 図 31B]

[ 図 32]