(57)【要約】【課題】監視の負荷を分散させる。【解決手段】複数のノードを含むネットワークの監視方法において、前記ネットワークに通信可能に接続され前記ネットワークの監視を行う監視装置との間の最小ホップ数の通信経路における前記監視装置との間のホップ数に応じて前記複数のノードを分類し、ホップ数が小さい側のノードが、ホップ数が大きい側のノードを監視するようにノード間で監視関係の設定を行う際に、ホップ数が同じノード間で監視負荷がバランスされるように監視可能な監視先ノードの割り振りを実施する。【選択図】図９
2018152672.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを含むネットワークに通信可能に接続され前記ネットワークの監視を行う監視装置に含まれるコンピュータに、
前記監視装置との間の最小ホップ数の通信経路における前記監視装置との間のホップ数に応じて前記複数のノードを分類する処理と、
ホップ数が小さい側のノードが、ホップ数が大きい側のノードを監視するようにノード間で監視関係の設定を行う際に、ホップ数が同じノード間で監視負荷がバランスされるように監視可能な監視先ノードの割り振りを実施する処理と、
を実行させるプログラム。
【請求項２】
前記割り振りを実施する処理において、
前記ホップ数が小さい側の複数のノードを親ノードの候補とし、
前記ホップ数が大きい側の複数のノードを親ノードによって監視される子ノードとし、
前記子ノードのうち前記通信経路において一つの親ノードの候補と接続されている第１の子ノードについては前記一つの親ノードの候補を親ノードに決定し、
前記子ノードのうち前記通信経路において複数の親ノードの候補と接続されている第２の子ノードについては前記複数の親ノードの候補のそれぞれが監視する子ノードの監視コストの合計値が少ない前記複数の親ノードの候補の一つを親ノードに決定する
処理を前記コンピュータに実行させる請求項１に記載のプログラム。
【請求項３】
前記複数のノードのそれぞれの監視コストを収集する情報項目の数、収集方法、収集の複雑度、収集時間の少なくとも一つに基づいて決定する処理
をさらに前記コンピュータに実行させる請求項１に記載のプログラム。
【請求項４】
前記割り振りの結果に基づいて、前記複数のノードのうち監視を行うノードに対し、監視対象のノードを示す情報と、監視結果を送信するノードを示す情報と、監視対象項目を示す情報を送信する処理と、
前記通信経路における１ホップ目に位置するノードから前記通信経路において前記１ホップ目に位置するノード及び前記１ホップ目に位置するノードの下流にある各ノードの監視結果を受信する処理と
を前記コンピュータに実行させる請求項１又は２に記載のプログラム。
【請求項５】
複数のノードを含むネットワークの監視方法において、
前記ネットワークに通信可能に接続され前記ネットワークの監視を行う監視装置との間の最小ホップ数の通信経路における前記監視装置との間のホップ数に応じて前記複数のノードを分類し、
ホップ数が小さい側のノードが、ホップ数が大きい側のノードを監視するようにノード間で監視関係の設定を行う際に、ホップ数が同じノード間で監視負荷がバランスされるように監視可能な監視先ノードの割り振りを実施する、
ことを特徴とする監視方法。
【請求項６】
複数のノードを含むネットワークに通信可能に接続され前記複数のノードの監視を行う監視装置において、  
前記監視装置との間の最小ホップ数の通信経路における前記監視装置との間のホップ数に応じて前記複数のノードを分類する分類部と、
ホップ数が小さい側のノードが、ホップ数が大きい側のノードを監視するようにノード間で監視関係の設定を行う際に、ホップ数が同じノード間で監視負荷がバランスされるように監視可能な監視先ノードの割り振りを行う割振部と、
を含む監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視方法，監視装置，及びプログラムに関する。
【背景技術】
【０００２】
複数のネットワーク機器（以下、「ノード」とも表記）と、各ネットワーク機器を監視・制御するネットワークコントローラ（以下、「監視サーバ」とも表記）とを含むネットワークシステムがある。  監視サーバは、例えば、いわゆるサーバ・クライアント方式によって、監視対象のノードの全てと直接に通信を行うことで監視を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１３０１４４号公報
【特許文献２】特開２０１３−４７９２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年のネットワークの大規模化によって、監視サーバの監視対象のノードの数が増加し、監視サーバの負荷が増大している。負荷の増大に対し、監視サーバの増設や高スペックの（高性能の）監視サーバの採用にて対応を図ると、設備に係るコストが増大する問題がある。
【０００５】
本発明は、監視の負荷を分散させることが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの態様は、複数のノードを含むネットワークに通信可能に接続され前記ネットワークの監視を行う監視装置に含まれるコンピュータに、前記監視装置との間の最小ホップ数の通信経路における前記監視装置との間のホップ数に応じて前記複数のノードを分類する処理と、ホップ数が小さい側のノードが、ホップ数が大きい側のノードを監視するようにノード間で監視関係の設定を行う際に、ホップ数が同じノード間で監視負荷がバランスされるように監視可能な監視先ノードの割り振りを実施する処理と、を実行させるプログラムである。
【発明の効果】
【０００７】
一側面では、監視の負荷を分散させることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態に係るネットワークシステムの一例を示す。
【図２】図２はツリーの一例を示す。
【図３】図３は監視サーバ及びノードに適用可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。
【図４】図４は、監視コスト情報の説明図である。
【図５】図５は、図１に示したネットワークシステムにおける複数のノードについてのレイヤ及び監視コストを決定した例を示す。
【図６】図６は、図５の例における子ノードの割り振りの一例を示す。
【図７】図７は、親ノード間の子ノードの割り振り方法の一例を示す図である。
【図８】図８は、親ノード間の子ノードの割り振り方法の一例を示す図である。
【図９】図９は、監視サーバ（監視サーバとして動作する情報処理装置）のＣＰＵによって実行される監視処理の一例を示すフローチャートである。
【図１０】図１０は、ノードの親ノードとしての処理例を示すフローチャートである。
【図１１】図１１は、通信断の検出時における監視サーバのＣＰＵの処理例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、実施形態に係る監視方法，監視装置，及びプログラムについて説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１０】
＜ネットワーク構成＞
図１は、実施形態に係るネットワークシステムの一例を示す。ネットワークシステムは、ネットワークを監視する監視サーバ１と、ネットワークに含まれる複数のノード２とを含む。監視サーバ１は「監視装置」の一例である。
【００１１】
複数のノード２は、監視サーバ１によって監視及び制御されるネットワーク機器である。ノード２（ネットワーク機器）は、端末装置及び中継装置を含む。端末装置は、例えば、パーソナルコンピュータ，ワークステーション，サーバマシン，タブレット端末，スマートフォン，センサノードなどと呼ばれる通信機能を有するセンサ端末などを含む。中継装置は、ルータ，レイヤ２／レイヤ３スイッチ，ＨＵＢなどを含む。但し、ネットワーク機器は上記例示以外のネットワーク機器を含み得る。ノード２間のトポロジは、各ノード２が直接に又は間接に（他のノード２を介して）監視サーバ１に接続されている限り適宜設定し得る。ノード２の数は適宜設定可能である。
【００１２】
監視サーバ１は、複数のノード２の監視及び制御を行う。監視に用いるプロトコルとして、Simple Network Management Protocol（ＳＮＭＰ），ping，テルネット（telnet）などを適用することができる。但し、上記以外のプロトコルが監視に適用されても良い。
【００１３】
実施形態における監視サーバ１は、監視サーバ１を頂点（ルート）とするツリーを形成する。図２はツリーの一例を示す。ツリーは、ツリーの末端から頂点へ向かって監視用の情報（監視情報）を転送するルートとして使用される。
【００１４】
監視サーバ１から１ホップ目に位置するノード２は「代表ノード」に設定される。代表ノード以外のノードは「一般ノード」に設定される。一般ノードは代表ノード又は他のノードに接続される。
【００１５】
図２に示すツリーの例では、２つの代表ノード＃１及び代表ノード＃２が設定されている。代表ノードが属する１ホップ目は「レイヤ１」と呼ばれる。監視サーバ１から２ホップ目以降はレイヤ２，３，・・・と呼ばれる。図２の例では、一般ノードａ〜ｅが例示されており、一般ノードａ及び一般ノードｄはレイヤ２に属する。一般ノードｂ，一般ノードｃ及び一般ノードｅはレイヤ３に属する。図２に図示された各矢印は子ノードから親ノードに向いている。
【００１６】
代表ノードは監視サーバ１との間で親子関係を形成し、一般ノードは代表ノード又は他の一般ノードとの間で親子関係を形成する。図２に示す例では、一般ノードａ〜ｅとなるノード２がある。一般ノードａは代表ノード＃１を親ノードとする子ノードとなり、一般ノードｄは代表ノード＃２を親ノードとする子ノードとなっている。一般ノードａは一般ノードｂ及び一般ノードｃの親ノードとなっており、一般ノードｄは一般ノードｅの親ノードとなっている。
【００１７】
監視サーバ１はツリーの生成（ノードの親子関係）を行い、各ノード２に監視制御用データを送信する。監視制御用データは各ノード２向けの親子関係を示すデータを含む。例えば、監視制御用データは、以下の情報を含む。
・１又は複数の監視対象の子ノードを示す情報（監視対象のノードを示す情報）
・監視結果を通知する上位レイヤのノード２又は監視サーバ１（監視結果を送信するノードを示す情報）
・監視対象項目を示す情報、例えば、監視対象の警報（アラーム）や状態などを示す情報。
【００１８】
各ノード２は、監視制御用データに従って子ノードを監視する。監視は、子ノードから監視結果の情報を収集する「状態収集」と、子ノードが自発的に送信した情報を受け取る「イベント通知」の２つを含む。各ノード２は、子ノードからの監視結果に自ノードの監視結果を追加して親ノードに送信する。
【００１９】
＜ハードウェア構成＞
図３は監視サーバ１及びノード２に適用可能な情報処理装置（コンピュータ）のハードウェア構成例を示す図である。情報処理装置１０は、一例として、バスＢ１を介して相互に接続されたCentral Processing Unit（ＣＰＵ）１１と、主記憶装置１２と、補助記憶
装置１３と、通信インタフェース（通信ＩＦ）１４と、入力装置１５と、出力装置１６と、センサ１７とを含む。
【００２０】
主記憶装置１２はプログラムの展開領域、ＣＰＵ１１の作業領域、データやプログラムの記憶領域、通信データのバッファ領域などとして使用される。主記憶装置１２は、例えばRandom Access Memory（ＲＡＭ）、ＲＡＭとRead Only Memory（ＲＯＭ）との組み合わせで形成される。
【００２１】
補助記憶装置１３はデータやプログラムの記憶領域として使用される。補助記憶装置１３は、例えば、ハードディスクドライブ（ＨＤＤ）、Solid State Drive（ＳＳＤ）、フ
ラッシュメモリ、Electrically Erasable Programmable Read-Only Memory（ＥＥＰＲＯ
Ｍ）などの不揮発性記憶媒体で形成される。主記憶装置１２及び補助記憶装置１３のそれぞれは、「記憶装置」、「記憶媒体」、「メモリ」、「記憶部」の一例である。
【００２２】
通信ＩＦ１４は通信処理を司る。通信ＩＦ１４には例えばNetwork Interface Card（ＮＩＣ）が使用される。入力装置１５は、例えば、キー、ボタン、ポインティングデバイス（マウスなど）、タッチパネル、音声入力装置（マイクロフォン）などである。出力装置１６は、例えばディスプレイ、プリンタ、スピーカ、ランプなどである。
【００２３】
ＣＰＵ１１は、補助記憶装置１３に記憶されたプログラムを主記憶装置１２にロードして実行する。プログラムの実行によって、情報処理装置１０は監視サーバ１としての動作を行う。ＣＰＵ１１は上述したツリーを生成し、ツリーに基づく監視制御データを各ノード２に送信する処理を行う。また、各ノード２での監視結果を受信し、監視結果の解析（監視）を通じてノード２やネットワークの制御を行う。ＣＰＵ１１は、プログラムの実行によって、「分類部」及び「割振部」として動作することができる。
【００２４】
ＣＰＵ１１は、「制御装置」、「制御部」、「コントローラ」、「プロセッサ」の一例である。ＣＰＵ１１は、ＭＰＵ（Microprocessor）、プロセッサとも呼ばれる。ＣＰＵ１１は、単一のプロセッサに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵがマルチコア構成を有していても良い。ＣＰＵ１１で行われる処理の少なくとも一部は、マルチコア又は複数のＣＰＵで実行されても良い。ＣＰＵで行われる処理の少なくとも一部は、ＣＰＵ以外のプロセッサ、例え
ば、Digital Signal Processor(ＤＳＰ)、Graphics Processing Unit（ＧＰＵ）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。
【００２５】
また、ＣＰＵ１１によって行われる処理の少なくとも一部は、集積回路（ＩＣ）、その他のディジタル回路で行われても良い。また、集積回路やディジタル回路はアナログ回路を含んでいても良い。集積回路は、ＬＳＩ、Application Specific Integrated Circuit
（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）を含む。ＰＬＤは、例えば、Field-Programmable Gate Array(ＦＰＧＡ)を含む。ＣＰＵ１１で行われる処理の少なく
とも一部は、プロセッサと集積回路との組み合わせにより実行されても良い。組み合わせは、例えば、マイクロコントローラ（ＭＣＵ）、ＳｏＣ（System-on-a-chip）、システムＬＳＩ、チップセットなどと呼ばれる。
【００２６】
＜監視サーバの処理＞  
次に、監視サーバ１におけるツリー及び監視制御データの生成及び送信処理について説明する。例えば、監視サーバ１として動作する情報処理装置１０の補助記憶装置１３は、図２に示す様に、トポロジ情報，ノード情報，監視コスト情報，ツリー情報などを記憶する。
【００２７】
トポロジ情報は、各ノード２の接続状態を示す。ノード情報は、各ノード２のネットワークアドレス（Internet Protocol（ＩＰ）アドレス，Media Access Control（ＭＡＣ）
アドレス），装置種別，装置構成を示す情報などを含む。監視コスト情報は、各ノード２を監視する場合に生じるコストの算出に用いる情報を含む。ツリー情報はレイヤと、各レイヤに属するノードと、ノードの親子関係を示す情報を含む。これらの情報は、ＣＰＵ１１がプログラムの実行によりツリー及び監視制御データを生成する場合に使用される。
【００２８】
＜＜各ノードの監視コストの決定＞＞
監視サーバ１は、監視対象のそれぞれのノード２に対して、監視に使用するリソース（ＣＰＵ１１やメモリ（主記憶装置１２など）の使用量）の重み付けを行う。重みは、監視に使用されるＣＰＵ１１やメモリ（主記憶装置１２など）の使用時間や使用量、データの収集時間などの監視サーバ１にかかる負荷を示す。重みを「監視コスト」と呼ぶ。
【００２９】
図４は、監視コスト情報の説明図である。監視コストは、一例として、図４の表に示すような監視コスト要素の組み合わせにより決定される。図４の例では、監視コスト要素として、「警報／状態の収集数」，「収集インタフェース」，「収集複雑度」，及び「収集時間」が例示されている。なお、監視コスト要素は、上記から選択される少なくとも一つであっても良く、上記以外の要素が採用されても良い。
【００３０】
「警報／状態の収集数」は、監視対象のアラームや状態の数（監視対象の情報項目の数の一例）を示す。収集数の増加に比例して監視コストは大きくなる。例えば、収集数がそのままコスト値に設定される。収集数が例えば１５であれば、コスト値が１５となる。
【００３１】
「収集インタフェース」は、監視情報の収集方法を示す。例えば、ＳＮＭＰのＴＲＡＰコマンドを用いて監視情報を収集する場合と、ＳＮＭＰのＧＥＴコマンドを用いて監視情報を収集する場合とがある。ＧＥＴでは、ＳＮＭＰマネージャからのリクエストに応じてＳＮＭＰエージェントが応答（監視情報）を返信する。ＴＲＡＰはＳＮＭＰエージェントが自発的に情報（監視情報）をＳＮＭＰマネージャに送信する。ＧＥＴの手順はＴＲＡＰよりも複雑であるので監視コストも高くなる。例えば、ＧＥＴに対するコスト値は１０、ＴＲＡＰに対するコスト値は２、ｐｉｎｇに対するコスト値は１、telnetに対するコスト値は２０に設定される。
【００３２】
「収集複雑度」は、収集開始から完了までのロジック（手順数：例えばコマンド実行数）を示す。手順数が多くなる程、コスト値は高くなる。例えば、コマンド実行の回数をそのままコスト値に設定可能である。
【００３３】
「収集時間」は、例えば、監視情報のリクエスト送信から応答受信までの時間を示す。収集時間が長くなる程、監視コストは上昇する。例えば、収集時間が０．１秒の場合のコスト値が１に設定され、１秒の場合のコスト値が５に設定される。但し、各監視コスト要素に対するコスト値は適宜設定可能であり、監視の負荷が大きい程コスト値が高くなるように設定されていれば良い。
【００３４】
監視サーバ１は、監視対象の各ノード２のノード情報を用いて、各ノードから監視情報を収集する場合の監視コストの値を計算する。計算式は、例えば以下を適用し得る。
監視コスト  = Σ（ｉ＋ｊ＋ｋ）× （ｈ）
但し、ｉは収集インタフェースのコスト値であり、ｊは収集複雑度のコスト値であり、ｋは収集時間のコスト値である。ｈは、ｉ，ｊ及びｋの組み合わせに対する警報/状態の
収集数である。但し、監視コストは上記計算式以外の式を用いて計算されても良い。
【００３５】
＜＜各ノードの監視レイヤの決定＞＞
監視サーバ１は、トポロジ情報を用いて、監視サーバ１から各ノード２までの最短経路のホップ数を各ノード２が属する「監視レイヤ」とする。監視サーバ１から１ホップ目の経路にあたるノードはレイヤ１となる。
【００３６】
上記したように、レイヤ１のノードを「代表ノード」と呼ぶ。２ホップ目はレイヤ２、３ホップ以降はレイヤ３…とする。レイヤ２以降のノードを「一般ノード」と呼ぶ。図５は、図１に示したネットワークシステムにおける複数のノード２についてのレイヤ及び監視コストを決定した例を示す。
【００３７】
各レイヤのノード２（監視元）は、直下のレイヤのノード２（監視先）を監視する。例えば、レイヤ１のノード２は、レイヤ２のノードを監視する。監視元のレイヤを親レイヤ、親レイヤのノード２を親ノードと呼び、監視先となったレイヤを子レイヤ、子レイヤのノード２を子ノードと呼ぶ。１つのノード２が監視する子ノードの数は２以上であっても良い。
【００３８】
＜＜各ノードの監視先を決定＞＞
親レイヤでは、親ノード間で監視コストが分散するように子レイヤのノードを決定する。例えば、図５に示す例を用いて説明する。レイヤ２の親ノード（一般ノードａ及び一般ノードｂ）に対し、レイヤ３の子ノード（一般ノードｃ，一般ノードｄ及び一般ノードｅ）を割り振ることを考える。この場合、一般ノードａの監視先の子ノードの監視コストの合計と一般ノードｂの監視先の子ノードの監視コストの合計とが近くなる（バランスする）ように割り振りが行われる（図６参照）。
【００３９】
結果の一例として、監視サーバ１は、一般ノードａの監視先（子ノード）として、一般ノードｃ及び一般ノードｄ（監視コストの合計値：１５００）を決定する。また、監視サーバ１は、一般ノードａの監視先（子ノード）として、一般ノードｃ及び一般ノードｄ（監視コストの合計値：１５００）を決定する。
【００４０】
図７及び図８は、親ノード間の子ノードの割り振り方法の一例を示す図である。最初に、監視サーバ１は、（ｉ）親レイヤに属するノード（親ノード群）と、子レイヤに属するノード（子ノード群）を取り出す。なお、図７及び図８は一例であって、図５に示したト
ポロジと異なる。
【００４１】
例えば、図７に示すように、監視サーバ１は、親レイヤ（レイヤ２）の親ノード群と子レイヤ（レイヤ３）の子ノード群のデータを取り出す。親ノード群は、親ノードＡ，親ノードＢ及び親ノードＣを含み、子ノード群は、子ノードＨ，子ノードＩ，子ノードＪ及び子ノードＫを含む。子ノードＨ，子ノードＩ，子ノードＪ及び子ノードＫの監視コストのそれぞれは、１０００，２０００，３０００，４０００であると仮定する。
【００４２】
監視サーバ１は、（ii）各子ノードに対応する親候補テーブルを生成する。図８に示すように、親候補テーブルＴ１は、親ノードの候補（監視サーバ１からの最短経路上にある直上レイヤのノード）の一覧を含む。換言すれば、親候補テーブルＴ１は、子ノードの識別情報に対応する単数又は複数の親ノード候補の識別情報を記憶する。図８には、子ノードＨ，子ノードＩ，子ノードＪ及び子ノードＫに対応する親候補テーブルＴ１１，Ｔ１２，Ｔ１３及びＴ１４が図示されている。図８に示すように、親候補テーブルＴ１は、子ノードの監視コストを記憶していても良い。
【００４３】
監視サーバ１は、（iii）以下の条件に従って、各親ノードがどの子ノードを監視する
かを示す「親ノード監視テーブル」を生成する。
（ルール１）親ノードの候補（親候補とも表記）が一つしか存在しない子ノード（第１の子ノード）は、無条件にその親ノードの監視下に入る。
（ルール２）親候補が複数存在する子ノード（第２の子ノード）は、親候補となる親ノード監視テーブルをチェックし、合計コストが一番小さい親を選択する。
【００４４】
図８に示す例では、監視サーバ１は、若い番号順で親ノードを決定している。但し、割り振りの結果がバランスする限りにおいて、親ノードの決定順は適宜変更可能である。子ノードＨに対する親ノードの候補は親ノードＡの一つである。よって、監視サーバ１はルール１に従い、子ノードＨを親ノード監視テーブルＴ２に登録する。
【００４５】
親ノード監視テーブルＴ２は、例えば、図８に示すように、親ノードの識別子に対応づけて、各子ノードの識別情報と、子ノードの監視コストの合計値（合計コスト）とが記憶される。図８には、親ノードＡ，親ノードＢ，親ノードＣに対応する親ノード監視テーブルＴ２１，Ｔ２２，Ｔ２３が図示されている。なお、親候補テーブルＴ１及び親ノード監視テーブルＴ２のそれぞれにおいて、親ノードの候補及び親ノードのそれぞれの監視コストが記憶されてもよい。
【００４６】
子ノードＩについては、親ノードの候補として、親ノードＡ，親ノードＢ，及び親ノードＣがある。監視サーバ１は、親ノード候補の合計コストを参照し、合計コストの値が小さい親ノード候補の親ノード監視テーブルＴ２に子ノードＩを登録する（ルール２）。このとき、合計コストの値が同じである複数の親ノード監視テーブルＴ２が存在する場合には、所定の優先順位に従って一つの親ノード監視テーブルＴ２に子ノードＩを登録する。この例では、親ノードの候補である親ノードＢと親ノードＣとのうち、ノード番号が若い親ノードＢの親ノード監視テーブルＴ２２に子ノードＩが登録されている。但し、優先順位は適宜設定可能である。
【００４７】
子ノードＪに対する親ノードの候補は親ノードＡの一つである。このため、監視サーバ１はルール１にしたがって、親ノード監視テーブルＴ２１に子ノードＪを登録する。監視サーバ１は親ノード監視テーブルＴ２１の合計コスト値を４０００（１０００＋３０００）に更新する。
【００４８】
子ノードＫについては、監視サーバ１は、ルール２に従って、親ノードＣに対応する親
ノード監視テーブルＴ２３に登録する。これにより、親ノードＡ，Ｂ，Ｃ間で、子ノードＨ，Ｉ，Ｊ，Ｋについての監視コストがバランスした状態で割り振られた状態となる。すなわち、親ノードＡ，Ｂ，Ｃ間で子ノードＨ，Ｉ，Ｊ，Ｋの監視に対する負荷が分散される。なお、親候補テーブルＴ１及び親ノード監視テーブルＴ２は主記憶装置１２及び補助記憶装置１３の少なくとも一方で生成され、記憶される。
【００４９】
＜ＣＰＵによる処理＞
図９は、監視サーバ１（監視サーバ１として動作する情報処理装置１０）のＣＰＵ１１によって実行される監視処理の一例を示すフローチャートである。図９に示す処理は、監視サーバ１の起動など、所定の初期トリガの入力を契機に開始される。但し、図９の処理の開始条件は上記以外であっても良い。
【００５０】
００１では、監視サーバ１のＣＰＵ１１は各ノード２の監視コストを決定する（図４等参照）。００２では、監視サーバ１のＣＰＵ１１は各ノード監視レイヤを決定する（図５参照）。００３では、監視サーバ１のＣＰＵ１１は親レイヤに属するノード２と子レイヤに属するノードとを取り出す（図７参照）。
【００５１】
００４では、監視サーバ１のＣＰＵ１１は００３で取り出した子ノードに関する親候補テーブルＴ１を生成する。００５及び００６の処理は、取り出した子ノード数分ループする。００５では、監視サーバ１のＣＰＵ１１は親ノードの候補が一つか否かを判定する。００６では、親ノードの候補が一つであると００５で判定する場合に、ＣＰＵ１１は親ノードの候補を親ノードに決定し、対応する親ノード監視テーブルＴ２に登録する。
【００５２】
００７及び００８の処理は親ノードの候補が複数である子ノード数分ループする。また、００７は親候補テーブルＴ１中の各親ノードの候補分ループする。００７において、監視サーバ１のＣＰＵ１１は合計コストが小さい親ノードの候補を選択する。００８において、監視サーバ１のＣＰＵ１１は００７で選択した親ノードの候補を親ノードとして決定し、親ノード監視テーブルＴ２に登録する。
【００５３】
００３〜００８の処理は、残りのレイヤについても実行される。すなわち、００３の処理における取り出しは、最下位のレイヤを起点に行われる。例えば、図５の例であれば、レイヤ２とレイヤ３とをそれぞれ親レイヤ及び子レイヤとするノードが取り出される。これについての割り振りが終了すると、一つ上位のレイヤについての処理が行われる。
【００５４】
図５の例であれば、レイヤ１とレイヤ２とをそれぞれ親レイヤ及び子レイヤとするノードが取り出され（００３）、００４〜００８の処理が行われる。このとき、子ノードの監視コストとして、各子ノードにぶら下がる子ノードの監視コストと自ノードの監視コストとの合計値が用いられる。００３〜００８の処理は、レイヤ１が親レイヤとして取り出されるまで繰り返し行われる。
【００５５】
このようにして、最終的に監視サーバ１を頂点とするツリーの情報（図２）が監視サーバ１で生成され、主記憶装置１２及び補助記憶装置１３の少なくとも一方（以下、「メモリ」という）に記憶される。００９では、監視サーバ１のＣＰＵ１１は各ノード２（代表及び一般ノード）に監視制御用データを送信する。監視制御用データは通信ＩＦ１４から各ノード２へ送信される。
【００５６】
各ノード２として動作する情報処理装置１０では、監視制御用データが通信ＩＦ１４で受信され、メモリ（主記憶装置１２及び補助記憶装置１３の少なくとも一方）に記憶される。各ノード２のＣＰＵ１１は、監視制御用データを用いて監視対象の情報（アラームや状態など）を監視し、監視結果（監視情報ともいう）をメモリに記憶する。
【００５７】
図１０は、ノード２の親ノードとしての処理例を示すフローチャートである。図１０の処理１はノード２のＣＰＵ１１が定期ポーリングのトリガを受けて開始する。１０１では、ＣＰＵ１１は、監視対象の各子ノードから監視情報（子ノードにおける監視対象の監視結果を示す情報）を収集する。収集は、各子ノードに監視結果の送信の要求を送信し、応答を受信することで行われる。
【００５８】
１０２では、ノード２のＣＰＵ１１は自身（自ノード）の監視情報を各子ノードから収集された監視情報に追加し、親ノード（通知先）への通知情報を生成する。１０３では、ノード２のＣＰＵ１１は通知先（親ノード）との通信が正常か否かを判定する。通信が正常と判定される場合にはＣＰＵ１１は親ノードへ通知情報を送信する（１０４）。通信が正常でないと判定される場合にはＣＰＵ１１は通知情報を退避（メモリに記憶）する（１０５）。退避されたデータは、親ノードとの通信が復旧した場合に親ノードへ送信される。
【００５９】
図１０に示す処理２は、イベントとして、子ノードから監視情報が受信されたことを契機に開始される。１１１では、ノード２のＣＰＵ１１は自身（自ノード）の監視情報を各子ノードから収集された監視情報に追加し、親ノード（通知先）への通知情報を生成する。１１１の処理は１０２の処理と同様の処理である。その後、処理が１０３に進む。
【００６０】
図１０に示す処理１及び処理２が各ノード２で実行されることによって、監視サーバ１は、各代表サーバから代表サーバ及びその下位にある一般ノードからの監視情報を含む通知情報を受信することができる。監視サーバ１は受信された監視情報を用いてネットワーク及び各ノード２の制御を行う。
【００６１】
図１１は、通信断の検出時における監視サーバ１のＣＰＵ１１の処理例を示すフローチャートである。２０１では、監視サーバ１のＣＰＵ１１は、各代表ノードから監視サーバ１への通知情報を受信する。
【００６２】
２０２では、監視サーバ１のＣＰＵ１１は、通信断となっているノードＸを特定する。例えば、図６を例に説明すると、代表ノード＃１は、ライフチェックなどの既存の方法で一般ノードａと通信できなくなったとき、「一般ノードａとの通信断」の通知を監視サーバ１へ送信する。２０２において、監視サーバ１のＣＰＵ１１は、通信断の通知が受信されているかを判定する。ここでは、ＣＰＵ１１はノードＸとして一般ノードａを特定する。
【００６３】
２０３では、監視サーバ１のＣＰＵ１１は、ノードＸが監視していたノードＹを特定する。ノードＹの特定は、ツリーの情報（ノードＸへの監視制御用データ）を用いて行うことができる。ＣＰＵ１１は、ノードＹとして、ノードＸ（一般ノードａ）の子ノードであった一般ノードｃ及び一般ノードｄを特定する。このようにして、ＣＰＵ１１はツリー上でノードＸの下流にある全てのノード２をノードＹとして検出する。
【００６４】
２０４では、監視サーバ１のＣＰＵ１１は、ノードＸ及びノードＹと通信できなくなったノード２（代表ノード＃１）を省いたツリーの情報（経路情報）を用いて、ノードＸ及びノードＹの親ノードを新たに決定する。親ノードの決定方法には、図７及び図８を用いて説明した方法を用いる。
【００６５】
２０５では、監視サーバ１のＣＰＵ１１は、ノードＸ，ノードＹ及び親ノードになったノードに監視制御用データを送信する。これによって、ノード間の通信断が発生しても、監視サーバ１への監視情報の転送経路を示すツリー情報に基づき、ツリーを修復して、監
視を継続することができる。
【００６６】
＜実施形態の作用効果＞
実施形態では、複数のノード２を含むネットワークの監視サーバ１（監視装置の一例）に含まれるＣＰＵ１１（コンピュータの一例）が以下の処理を行う。
【００６７】
ネットワークに通信可能に接続されネットワークの監視を行う監視サーバ１との間の最小ホップ数の通信経路における監視サーバ１との間のホップ数に応じて前記複数のノードを分類する。
【００６８】
ホップ数が小さい側のノードがホップ数が大きい側のノードを監視するようにノード間で監視関係の設定を行う（親子関係を設定する）際に、ホップ数が同じノード間で監視負荷がバランスされるように監視可能な監視先ノード（子ノード）の割り振りを行う。
【００６９】
実施形態によれば、監視サーバ１が監視情報の転送経路となるツリーを生成し、親ノードとなる各ノード２にツリーに基づく監視制御用データを送信する。これによって、ノード２の監視負荷を親ノードに分散させることができる。よって、監視サーバ１の負荷が軽減乃至低減される。換言すれば、監視対象の増加に伴う監視サーバ１の負荷上昇を抑えることができる。したがって、監視サーバの数を増やしたり、高性能の監視サーバを採用したりしなくとも、監視サーバ１が監視対象の各ノードから監視情報を収集することができる。すなわち、設備コストの上昇を抑えて監視対象のノード数の増加に対応することができる。
【００７０】
また、各レイヤにおいて、親ノードにぶら下がる子ノードの合計コストが親ノード間でバランスする（偏りがないようにする）ことで、同レイヤの親ノード間で負荷の偏りが発生しないようにされ、円滑な監視情報の収集が行われるようにすることができる。
【００７１】
さらに、ツリーの経路で通信断が発生した場合には、通信断を示す情報がノード２から監視サーバ１に送信され、監視サーバ１がツリーを再構築する。これによって、通信断が起きても、再構築されたツリーを用いて監視（監視情報の収集）を継続することができる。実施形態にて説明した構成は例示であり、適宜組み合わせることができる。
【符号の説明】
【００７２】
１・・・監視サーバ
２・・・ノード
１０・・・情報処理装置
１１・・・ＣＰＵ
１２・・・主記憶装置
１３・・・補助記憶装置
【図１】
2018152672.tif 000003
【図２】
2018152672.tif 000004
【図３】
2018152672.tif 000005
【図４】
2018152672.tif 000006
【図５】
2018152672.tif 000007
【図６】
2018152672.tif 000008
【図７】
2018152672.tif 000009
【図８】
2018152672.tif 000010
【図９】
2018152672.tif 000011
【図１０】
2018152672.tif 000012
【図１１】
2018152672.tif 000013