(57)【特許請求の範囲】
【請求項１】
コンピュータリソースの状況を監視して状況に応じた制御を行うコンピュータリソース制御システムであって、前記コンピュータリソース制御システムは、
複数の監視エージェントから収集された計測値と予め定義された制御ルールとを比較して、前記コンピュータリソースに対するアクションの要否を判断する管理サーバと、
前記管理サーバによって、前記コンピュータリソースに対するアクションを要すると判断された場合に、前記コンピュータリソースに対するアクションを実行するための指示を出力する実行サーバと、
前記監視エージェントと前記管理サーバと前記実行サーバとの間でデータを非同期的に交換するための分散メッセージキューサーバであって、当該分散メッセージキューサーバの状況を監視するための第１の監視エージェントを備える分散メッセージキューサーバと、
を含み、
前記分散メッセージキューサーバと、前記管理サーバと、前記実行サーバは、それぞれ仮想サーバによって構成され、
前記アクションは、前記第１の監視エージェントから収集された計測値に基づいて、前記コンピュータリソース制御システムに含まれる仮想サーバの数を増減させる処理を含む、
ことを特徴とするコンピュータリソース制御システム。
【請求項２】
前記第１の監視エージェントは、データの交換状況を監視する、
ことを特徴とする請求項１に記載のコンピュータリソース制御システム。
【請求項３】
前記アクションは、前記分散メッセージキューサーバを構成する仮想サーバの数を増減させる処理、前記管理サーバを構成する仮想サーバの数を増減させる処理、又は、前記実行サーバを構成する仮想サーバの数を増減させる処理のうち、少なくとも一つを含む、
ことを特徴とする、請求項１又は２に記載のコンピュータリソース制御システム。
【請求項４】
前記分散メッセージキューサーバは、
前記複数の監視エージェントから収集された計測値が順次入力され、前記管理サーバによって順次読み出される計測値管理キューと、
前記管理サーバからアクションの指示が順次入力され、前記実行サーバによって順次読み出される実行キューと、
前記実行サーバから前記コンピュータリソースに対するアクションを実行するための処理データが順次入力され、対応する監視エージェントによって順次読み出される管理キューと、
を備え、
前記第１の監視エージェントは、前記計測値管理キュー、前記実行キュー、及び前記管理キューの待ち行列を監視する、
ことを特徴とする請求項１乃至３のいずれかに記載のコンピュータリソース制御システム。
【請求項５】
前記コンピュータリソース制御システム内の各仮想サーバは、各仮想サーバの稼働状況をそれぞれ監視する第２の監視エージェントを含み、
前記管理サーバは、前記各仮想サーバの稼働状況に基づいて、前記コンピュータリソースに対するアクションの要否を判断する、
ことを特徴とする請求項１乃至４のいずれかに記載のコンピュータリソース制御システム。
【請求項６】
前記コンピュータリソース制御システムはさらに、
前記計測値を格納するための分散データベースサーバと、
前記複数の監視エージェントから収集された計測値を前記分散メッセージキューサーバから読み出して、前記分散データベースに登録する収集サーバと、
前記分散データベースに格納された計測値を読み出して編集し、ユーザ端末装置へ送信するダッシュボード・サーバと、
を備えることを特徴とする請求項１乃至５のいずれかに記載のコンピュータリソース制御システム。
【請求項７】
前記分散データベースサーバと、前記収集サーバと、前記ダッシュボード・サーバは、それぞれ仮想サーバによって構成され、
前記アクションは、前記分散データベースサーバを構成する仮想サーバの数を増減させる処理、前記収集サーバを構成する仮想サーバの数を増減させる処理、又は、前記ダッシュボード・サーバを構成する仮想サーバの数を増減させる処理のうち、少なくとも一つを含む、
ことを特徴とする請求項６に記載のコンピュータリソース制御システム。
【請求項８】
コンピュータリソースの状況を監視して状況に応じた制御を行う制御システムにおいて、前記制御システムの備える処理装置が処理を行う方法であって、
前記処理装置が、
複数の監視エージェントから収集された計測値と予め定義された制御ルールとを比較して、前記コンピュータリソースに対するアクションの要否を判断するステップと、
前記コンピュータリソースに対するアクションを要すると判断された場合に、前記コンピュータリソースに対するアクションを実行するための指示を出力するステップと、
前記監視エージェントと前記制御システムとの間でデータを非同期的に交換するステップと、
を備え、
前記制御システムは、複数の仮想サーバによって構成され、
第１の監視エージェントが、前記交換するステップを処理する仮想サーバの状況を監視し、
前記アクションは、前記第１の監視エージェントから収集された計測値に基づいて、前記制御システムに含まれる仮想サーバの数を増減させる処理を含む、
ことを特徴とするコンピュータリソース制御方法。
【請求項９】
前記第１の監視エージェントは、前記データの交換状況を監視する、
ことを特徴とする請求項８に記載のコンピュータリソース制御方法。
【請求項１０】
前記交換するステップと、前記判断するステップと、前記出力するステップは、それぞれ複数の仮想サーバによって分散処理され、
前記アクションは、前記交換するステップを分散処理する仮想サーバの数を増減させる処理、前記判断するステップを分散処理する仮想サーバの数を増減させる処理、又は、前記出力するステップを分散処理する仮想サーバの数を増減させる処理のうち、少なくとも一つを含む、
ことを特徴とする請求項８又は９に記載のコンピュータリソース制御方法。
【請求項１１】
前記データの非同期的な交換は、メッセージキューにより実装され、
前記第１の監視エージェントは、前記メッセージキューの待ち行列を監視する、
ことを特徴とする請求項８乃至１０のいずれかに記載のコンピュータリソース制御方法。
【請求項１２】
第２の監視エージェントは、前記制御システムを構成する複数の仮想サーバのうち少なくとも１つの稼働状況を監視し、
前記判断するステップは、前記稼働状況を利用して、前記コンピュータリソースに対するアクションの要否を判断する、
ことを特徴とする請求項８乃至１１のいずれかに記載のコンピュータリソース制御方法。
【請求項１３】
前記コンピュータリソース制御方法はさらに、
前記処理装置が、
前記複数の監視エージェントから収集された計測値を分散データベースサーバに登録するステップと、
前記分散データベースに格納された計測値を読み出して編集し、ユーザ端末装置へ送信するステップと、
を備えることを特徴とする請求項８乃至１２のいずれかに記載のコンピュータリソース制御方法。
【請求項１４】
前記登録するステップと前記送信するステップは、それぞれ複数の仮想サーバによって分散処理され、
前記アクションはさらに、前記分散データベースサーバを構成する仮想サーバの数を増減させる処理、前記登録するステップを分散処理する仮想サーバの数を増減させる処理、又は、前記登録するステップを分散処理する仮想サーバの数を増減させる処理のうち、少なくとも一つを含む、
ことを特徴とする請求項１３に記載のコンピュータリソース制御方法。
【請求項１５】
請求項８乃至１４のいずれかに記載のコンピュータリソース制御方法をコンピュータに実行させるためのプログラム。
【請求項１６】
請求項１５に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、「クラウド」という言葉で現されるような複雑化・大規模化するコンピュータリソースを安定して動作させるための、サービスレベルマネジメント技術に関する。
【背景技術】
【０００２】
従来、仮想化技術は、物理的には一台のコンピュータを、仮想的に複数台のコンピュータとして利用することを可能としている。つまり、仮想化技術によって、ハードウェアをソフトウェア化することが可能となり、サーバイメージをコピーして、必要なサーバ数を確保することができるようになっている。
【０００３】
また一方、一台の大きなサーバではなく、複数の小さなサーバに処理を分担させることにより性能を上げていく分散システムが、大量データを高速に保管・検索できる仕組みや、大規模なバッチシステムを分散して性能を上げていく仕組みなど、様々な分野で実用化されている。このような分散システムは、従来システムが一か所で行っていた機能を、複数のコンピュータで分散させながら、あたかも一台のコンピュータのように動作する。
【０００４】
このような仮想化技術や大規模分散技術等をベースにして、近年クラウドと総称されるサービスが、ネットワーク上で提供されている。主なクラウドサービスとして、例えば、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ（商標）などが知られている（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ」、［ｏｎｌｉｎｅ］、［平成２２年１０月１５日検索］、インターネット＜ＵＲＬ：http://aws.amazon.com/jp/＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、クラウド環境では、データセンター等が仮想化・分散化されているため、仮想化されたサーバ等のコンピュータリソースを動的に変化させることによって、トランザクションやデータ量の変動に対して柔軟に対応可能なシステムを構築できるのではないかと期待されている。しかしながら、仮想化・分散化された環境下では、システムのどこで何が起きているのかを正確に把握することは難しい。例えば、ＣＰＵが高負荷になる原因が、ミドルウェアのガベージコレクションによる場合もあれば、ユーザ数の増加によりトランザクションが増加している場合もあるし、外部との通信が大量に発生している場合もある。
【０００７】
近年、ますます多くのトランザクションとデータに対応することが求められている中、様々な仮想化・分散化環境に備えて、状況をリアルタイムに把握し、事態を予測、そして遅滞なく制御していく仕組みが必要とされている。このような仕組みは、クラウド環境の信頼性と性能を大きく高めていくことにつながる。しかし同時に、このような仕組みに障害が発生し、制御が滞ると、クラウドの機能は大幅に低下しかねない。そのため、コンピュータリソースを監視し、制御する仕組み自体にも、スケーラビリティと耐障害性能が要求される。
【０００８】
本発明は、かかる実情に鑑み、監視対象システムのコンピュータリソースの状況をリアルタイムに監視し、制御することのできるソリューションを提供しようとするものである。また、このようなソリューション自体に、スケーラビリティと耐障害性能を担保しようとするものである。
【課題を解決するための手段】
【０００９】
本発明の一態様によるコンピュータリソース制御システムは、コンピュータリソースの状況を監視して状況に応じた制御を行う。コンピュータリソース制御システムは、複数の監視エージェントから収集された計測値と予め定義された制御ルールとを比較して、コンピュータリソースに対するアクションの要否を判断する管理サーバと、管理サーバによって、コンピュータリソースに対するアクションを要すると判断された場合に、コンピュータリソースに対するアクションを実行するための指示を出力する実行サーバと、を含む複数のサーバを含んで構成され、コンピュータリソース制御システム内のサーバの少なくとも一つに監視エージェントを含む。これによれば、監視対象のシステムに含まれるコンピュータリソースの状況をリアルタイムに把握し、制御することができるシステムを提供できる。また、同時に、そのようなシステムに含まれるコンピュータリソースの状況をリアルタイムに監視し、制御することができる。
【００１０】
好適には、アクションは、コンピュータリソース制御システムに含まれるサーバの数を増減させる処理を含む。これによれば、投入するコンピュータリソースの量を動的に制御できる。
【００１１】
また、コンピュータリソース制御システムはさらに、監視エージェントと管理サーバと実行サーバとの間でデータを非同期的に交換するための分散メッセージキューサーバを備え、分散メッセージキューサーバは、データの交換状況を監視する監視エージェントを含むことが好ましい。これによれば、メッセージキューのデータ量に応じて、コンピュータリソースの投入量を適宜制御できるようになる。
【００１２】
さらに、分散メッセージキューサーバと、管理サーバと、実行サーバは、それぞれ複数の仮想サーバによって構成され、アクションは、分散メッセージキューサーバを構成するサーバの数を増減させる処理、管理サーバを構成するサーバの数を増減させる処理、又は、実行サーバを構成するサーバの数を増減させる処理のうち、少なくとも一つを含むことが好ましい。これによれば、単一障害点のない分散構造でシステムが構成されるため、どこか単一の機能に障害が発生しても、全体としてはダウンしないシステムを構築できる。
【００１３】
また、好適には、分散メッセージキューサーバは、複数の監視エージェントから収集された計測値が順次入力され、管理サーバによって順次読み出される計測値管理キューと、管理サーバからアクションの指示が順次入力され、実行サーバによって順次読み出される実行キューと、実行サーバからコンピュータリソースに対するアクションを実行するための処理データが順次入力され、対応する監視エージェントによって順次読み出される管理キューと、を備え、分散メッセージキューサーバに含まれる監視エージェントは、計測値管理キュー、実行キュー、及び管理キューの待ち行列を監視する。これによれば、キュー毎の待ち行列を監視することで、よりきめ細かな制御が可能になる。
【００１４】
さらに好適には、コンピュータリソース制御システム内の各サーバは、各サーバの稼働状況をそれぞれ監視する監視エージェントを含み、管理サーバは、各サーバの稼働状況に基づいて、コンピュータリソースに対するアクションの要否を判断する。これによれば、各サーバの稼働状況に応じて、インスタンスの起動や停止を行うことができる。
【００１５】
コンピュータリソース制御システムはさらに、計測値を格納するための分散ＫＶＳサーバと、複数の監視エージェントから収集された計測値を分散メッセージキューサーバから読み出して、分散データベースに登録する収集サーバと、分散データベースに格納された計測値を読み出して編集し、ユーザ端末装置へ送信するダッシュボード・サーバと、を備えることが好ましい。これによれば、利用者に監視状況をリアルタイムで表示するダッシュボードを提供できる。
【００１６】
好適には、分散ＫＶＳサーバと、収集サーバと、ダッシュボード・サーバは、それぞれ複数の仮想サーバによって構成され、アクションは、分散ＫＶＳサーバを構成するサーバの数を増減させる処理、収集サーバを構成するサーバの数を増減させる処理、又は、ダッシュボード・サーバを構成するサーバの数を増減させる処理のうち、少なくとも一つを含む。これによれば、単一障害点のない分散構造で、フォールトトレラントなシステムを提供できる。
【００１７】
また、本発明の一態様によるコンピュータリソース制御方法は、コンピュータリソースの状況を監視して状況に応じた制御を行う制御システムにおいて、制御システムの備える処理装置が処理を行う方法である。処理装置は、複数の監視エージェントから収集された計測値と予め定義された制御ルールとを比較して、コンピュータリソースに対するアクションの要否を判断するステップと、コンピュータリソースに対するアクションを要すると判断された場合に、コンピュータリソースに対するアクションを実行するための指示を出力するステップと、を備える。制御システムは、複数のサーバを含んで構成され、複数のサーバの少なくとも一つに監視エージェントを含む。
【００１８】
なお、本発明において、システムという用語は、物理的コンピュータで構成されたシステムのみでなく、コンピュータ上で仮想的に構築されたシステムをも含む。また、コンピュータリソースという用語は、コンピュータに関するあらゆるレベルのハードウェア及びソフトウェアを含むものであり、物理的に構成されているか或いは仮想的に構成されているかを問わない。
【発明の効果】
【００１９】
本発明によれば、監視対象のシステムに含まれるコンピュータリソースの状況をリアルタイムに監視し、制御することのできるソリューションを提供することができるという優れた効果を奏し得る。また、このようなソリューション自体に、スケーラビリティと耐障害性能を担保することができるというという優れた効果を奏し得る。
【図面の簡単な説明】
【００２０】
【図１】クラウドコンピューティング環境の概略構成を示す図である。
【図２】仮想化技術及び分散化技術の概要を示す図である。
【図３】コンピュータリソース制御システムの概略構成の一例を示すブロック図である。
【図４】コンピュータリソース制御システムの一実施例を示すブロック図である。
【図５】制御ルールの一例である。
【図６】ダッシュボードの一例である。
【図７】コンピュータリソース制御システムの他の実施例を示すブロック図である。
【図８】コンピュータリソース制御システムにおける処理のフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、同一の要素には同一の符号を付し、重複する説明を省略する。また、以下の実施の形態は、本発明を説明するための例示であり、本発明をその実施の形態のみに限定する趣旨ではない。さらに、本発明は、その要旨を逸脱しない限り、さまざまな変形が可能である。
【００２２】
図１は、本発明によるコンピュータリソース制御システムの前提となるクラウドコンピューティング環境（クラウド環境）の概略構成を示す図である。同図に示すように、クラウドコンピューティング環境においては、ユーザ端末装置１２がネットワークＮを介してクラウド１０に接続される。
【００２３】
クラウド１０は、ソフトウェアやハードウェア、データ保管領域などのコンピューティングリソースの利用を、ネットワークＮを通じてサービスとして利用者に提供するシステムの総称であり、一般的には、大規模なデータセンターや、その中で運用されている複数のサーバ装置などを含む。ＡＳＰサービスやユーティリティコンピューティング、グリッドコンピューティング、ＳａａＳ／ＰａａＳなどを包含した、より包括的な概念であるともいえる。ユーザ端末装置１２の側から見れば、クラウド１０は、ネットワークＮの向こう側にあり、ユーザ端末装置１２に何らかのサービスを提供するコンピュータリソースの総称であるともいえる。本発明は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドを含む、あらゆるクラウド環境に適用可能である。
【００２４】
好適には、クラウド１０内のネットワーク上に分散して存在する物理的なディスクや物理的なサーバは、仮想化して論理的に管理される。さらに、仮想化して管理されるリソースのうち、稼動していないものはリソースプールに登録しておき、コンピュータリソース制御システムは、変動する要求に応じて、動的にリソースプールからリソースを取り出す。そして、タスクを割り当てて、スケーラブルなサービス提供を保障する。
【００２５】
ユーザ端末装置１２は、利用者がクラウド１０を利用するための端末装置であり、ネットワークＮへの接続環境とユーザ端末装置１２上で動くブラウザを含む。このようなユーザ端末装置１２としては、パーソナルコンピュータ（ＰＣ）、携帯情報端末装置（ＰＤＡ）、タブレット型端末装置、携帯電話機、スマートフォンなどを含む。
【００２６】
ネットワークＮは、クラウド１０とユーザ端末装置１２との間でデータ等を送受信するための通信回線である。例えば、インターネット、ＬＡＮ、専用線、パケット通信網、電話回線、企業内ネットワーク、その他の通信回線、それらの組み合わせ等のいずれであってもよく、有線であるか無線であるかを問わない。
【００２７】
図２は、本発明によるコンピュータリソース制御システムの前提となる仮想化技術及び分散化技術の概要を示す図である。同図に示すように、物理的なコンピュータ装置群２０は、分散化技術により、コンピュータ装置群２０で機能や処理を分散させながら、あたかも一台のコンピュータ２２のように動作する。例えば、コンピュータ装置群２０は、ネットワーク２２１を通じて、仮想的な１台のハードウェア２２２の上でオペレーティング・システム（ＯＳ）２２３が動いているように動作する。
【００２８】
また、仮想化技術により、一台のコンピュータ２２のように動作するコンピュータ装置群２０を、仮想的に複数のコンピュータ（サーバを含む）２４として利用することができる。つまり、ハードウェアのソフトウェア化である。この仮想化技術によって、仮想化されたサーバ２４をコピーすれば、同じサーバのレプリケーション（複製）を作成できるため、サーバイメージをコピーすることによって、必要なサーバ数を確保することができるようになる。また、サーバ数を減らす場合は、サーバイメージを削除すればよい。仮想化の一例としては、図２に示すように、ＫＶＭ（Ｋｅｒｎｅｌ−ｂａｓｅｄ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）と呼ばれる仮想化ソフト２２４上でＯＳ２２５が動く。そのＯＳ２２５の上では、Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＪＶＭ。なお、Ｊａｖａは登録商標。）のような別の仮想化環境２２６が動き、その上でミドルウェア２２７があり、アプリケーション２２８が動く。
【００２９】
なお、コンピュータ装置群２０を構成する個々の物理的なコンピュータは、コンピュータの動作や処理を制御するためのＣＰＵなどの処理装置、データの格納や処理の作業領域として機能するメモリや記憶装置、入出力インターフェース、通信インターフェース、及びこれらを結ぶバスを含むことが好ましい。また、コンピュータ装置群２０は、単一のコンピュータより構成されるものであっても、ネットワーク上に分散した複数のコンピュータより構成されるものであってもよい。各コンピュータは、処理装置がメモリまたは記憶装置などに記憶された所定のプログラムを実行することにより、各種機能実現手段として各コンピュータを機能させる。
【００３０】
図３は、本発明によるコンピュータリソース制御システム１の概略構成の一例を示すブロック図である。本実施例によるコンピュータリソース制御システム１は、分散メッセージネットワーク３２とデータを処理する処理部３４とを含む。同図に示すように、本実施例によるコンピュータリソース制御システム１は、監視対象の監視ポイントに組み込まれた監視エージェント３０から、分散メッセージネットワーク３２を介して監視データを収集３４１する。そして、収集された監視データ３４２に基づいて、監視対象をモニタ３４３し、監視対象に必要なコンピュータリソースの需要を予測３４４し、監視対象のコンピュータリソースの数等を動的に制御３４５する。なお、監視エージェント３０、分散メッセージネットワーク３２、及び処理部３４の全てが、クラウド１０の内部に構成される。
【００３１】
なお、本発明によるコンピュータリソース制御システム１を構築するクラウド１０は、サーバリソース等を管理するＡＰＩが実装されていれば、パブリッククラウド、プライベートクラウドを問わず、どのような環境でも構築可能であり、複数の環境を組み合わせて構築することも可能である。Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓは構築可能なクラウド環境の一例である。
【００３２】
監視エージェント３０は、小さなソフトウェアモジュールであり、監視対象の監視ポイントに組み込まれ、この監視エージェント３０が監視情報を収集する。監視対象としては、例えば、システムリソースの監視、アプリケーションの監視、ログファイルの監視、プロセスの監視、ジョブの監視などがある。また、独自のセンサーネットワークや工場のラインの監視にも応用可能である。監視エージェント３０は、収集した監視情報の計測値を分散メッセージネットワーク３２に送信する。また、監視エージェント３０は、処理部３４側から動的に中身を入れ替えることができるようになっている。
【００３３】
分散メッセージネットワーク３２は、監視ポイントに埋め込まれた監視エージェント３０と、処理部３４とのデータ交換を実現するためのものである。監視対象が大量になった場合、処理部３４側のスループットによってデータの取りこぼしが発生する場合がある。こうした事態を避けるために、データの受け渡しは分散メッセージネットワーク構造を採用している。これにより、大量の監視対象を、効率よく監視・制御することが可能になる。
【００３４】
処理部３４は、監視エージェント３０からのデータ（計測値）を収集し、分散データベースに保管する。また、監視エージェント３０からの情報に基づき、クラウド環境内にある監視対象のコンピュータリソースに対する制御を行う機能を担っている。一例として、処理部３４の動作は、利用者が作成するＤＳＬ（Ｄｏｍａｉｎ  Ｓｐｅｃｉｆｉｃ  Ｌａｎｇｕａｇｅ）によって定義される。なお、後述の実施例のように、処理部３４の各要素は、全て分散化されることが好ましい。これにより、単一障害点のない構造になるとともに、性能劣化を仮想化されたコンピュータリソースの台数増加により補える構造になる。
【００３５】
図４は、本発明によるコンピュータリソース制御システム１の一実施例を示すブロック図である。同図に示すとおり、本実施例においてコンピュータリソース制御システム１は、分散メッセージキューサーバ４１と、収集サーバ４２と、管理サーバ４３と、実行サーバ４４と、分散ＫＶＳサーバ４５と、ダッシュボード・サーバ４６とを含む。これらの各サーバは、同じサーバイメージを有する複数の仮想サーバによって分散化されていることが好ましい。
【００３６】
コンピュータリソース制御システム１は、クラウド１０の環境内の監視対象システムに含まれる監視対象アプリケーション４０から監視データを受け取る。また、コンピュータリソース制御システム１は、ユーザ端末装置１２に対して、ブラウザで閲覧可能なダッシュボード４８を提供する。なお、図３の分散メッセージネットワーク３２は、分散メッセージキューサーバ４１に対応する。図３の処理部３４は、収集サーバ４２、管理サーバ４３、実行サーバ４４、分散ＫＶＳサーバ４５、及びダッシュボード・サーバ４６に対応する。また、コンピュータリソース制御システム１と監視対象アプリケーション４０は、クラウド１０上で稼働する。
【００３７】
本実施例においては、複数の監視対象アプリケーション４０を監視対象にすることができる。また、各監視対象アプリケーション４０は、複数のレプリケーションにより分散化されている。つまり、各監視対象アプリケーション４０は、複数の仮想サーバによって構成され、仮想サーバの台数は動的に変更できるようになっている。例えば、１，０００台の監視対象サーバがあるとして、実サーバ毎に１０台の仮想サーバを立ち上げると、サーバは１０，０００台ということになる。監視ポイントがそれぞれ２０ポイントあるとすると、監視ポイントは全部で２００，０００箇所ということになる。また、監視対象は、単にアプリケーションに関するサービスを提供する狭義の監視対象アプリケーションのみに限定されるものではない。データベースサーバ、その他、クラウド１０の環境内に存在するあらゆるサーバ及びコンピュータリソースを監視対象にすることができることは言うまでもない。
【００３８】
監視対象の監視対象アプリケーション４０の監視ポイントには、監視データを計測するための監視エージェント３０が組み込まれる。具体的には、例えば、利用者が予め、監視対象の監視対象アプリケーション４０のインスタンスに監視エージェントプログラムをインストールする。監視エージェント３０は、クラスタと呼ばれる所定の論理的な単位で監視対象を管理する。本実施例では、監視エージェント３０は、システム・エージェント４０１と、ログファイル・エージェント４０２を含む。システム・エージェント４０１は、実行中のプロセスを管理するモジュールである。実行中のプロセスとは、ＯＳやミドルウェアの他、アプリケーションなども対象となる。プロセス内部で起きた変化や挙動を捉え、計測値を定期的に又は所定のトリガ等に応じて非定期的にコンピュータリソース制御システム１に通知するほか、プロセス内部の変数を変えたり、プログラム内部のメソッドを呼び出すなどの操作を行う。ログファイル・エージェント４０２は、監視対象内に書き込まれたファイルを監視するモジュールである。アプリケーションの状況監視のためにログファイルを活用しているアプリケーションは多く、そうしたログを監視対象にすることで、アプリケーション開発者の意図にあった監視が可能になる。ログファイル・エージェント４０２が収集した情報は、システム・エージェント４０１と同様に、計測値を定期的に又は所定のトリガ等に応じて非定期的にコンピュータリソース制御システム１に通知される。
【００３９】
監視対象としては、ＯＳレベルの状況から、ＪＶＭや監視対象アプリケーションなどのミドルウェア、アプリケーションまでを一括で監視する。例えば、特定サービスの利用状況の監視、ミドルウェアの混雑度の監視、ＣＰＵ負荷の監視、どのサーバにジョブが割り当てられているか、各ジョブの進捗がどのようになっているか、ブラックリスト入りしたサーバはどこか、といった内容を監視できる。また、監視ポイントを動的に変更することによって、監視すべき対象を監視対象の動作状況に応じて変更できる。これにより、キャンペーン中にキャンペーン商品の在庫量を監視対象に加えたり、キャンペーン商品が完売したらサービス内容を切り替えるといった処理が監視対象を停止させることなく、実施可能である。
【００４０】
分散メッセージキューサーバ４１は、監視対象アプリケーション４０に組み込まれた監視エージェント３０とコンピュータリソース制御システム１との間のデータ交換、及び、コンピュータリソース制御システム１内のサービス間のデータ交換を、非同期的に行うためのメッセージキューを提供する。つまり、監視エージェント３０と収集サーバ４２、管理サーバ４３、実行サーバ４４、及びダッシュボード・サーバ４６との間のデータ交換、並びに、収集サーバ４２、管理サーバ４３、実行サーバ４４、及びダッシュボード・サーバ４６の間のデータ交換は全て、分散メッセージキューサーバ４１内のメッセージキューを介して非同期的に行われる。ここで、データ交換とは、データの交換のみならず、タスク等の交換も含む。
【００４１】
本実施例では、分散メッセージキューサーバ４１内のメッセージキューとして、計測値収集キュー４１１と、計測値管理キュー４１２と、管理キュー４１３と、実行キュー４１４とを含む。各キューは、データを先入れ先出し（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）のリスト構造で保持する。また、各キューは、冗長構成が可能であり、キュー間通信を行うことで、メッセージキューの紛失を防ぐことができる。計測値収集キュー４１１は、監視対象の全ての監視エージェント３０から、その計測値が順次入力され、収集サーバ４２によって順次読み出される。計測値管理キュー４１２は、監視対象の全ての監視エージェント３０から、その計測値が順次入力され、管理サーバ４３によって順次読み出される。管理キュー４１３は、管理サーバ４３、実行サーバ４４、及びダッシュボード・サーバ４６から、監視対象のサーバを制御するためのデータ（タスク等を含む）が順次入力され、制御対象の監視エージェント３０によって順次読み出される。実行キュー４１４は、管理サーバ４３から、インスタンス起動制御や警告送信などのアクションの指示が順次入力され、実行サーバ４４によって順次読み出される。
【００４２】
収集サーバ４２は、監視エージェント３０から送信された計測値を分散データベースに登録する処理を実行する。収集サーバ４２は、計測値収集キュー４１１に入力された監視エージェント３０の計測値を順次取り出して、分散ＫＶＳサーバ４５に渡す。
【００４３】
管理サーバ４３は、監視エージェント３０から送信された計測値をもとに、予め設定された制御ルールを参照して、インスタンス起動制御や警告送信などのアクションの実行要否を判断する処理を行う。管理サーバ４３は、計測値管理キュー４１２に入力された監視エージェント３０の計測値を順次取り出して、予め設定された制御ルールと比較する。ここで、制御ルールは、複数の制御ルールを含み得る。個々の制御ルールは、管理対象のサーバ群等の定義、監視エージェントが収集する情報の閾値の設定、及び、閾値を超えた場合の制御内容の定義を含むことが好ましい。また、個々の制御ルールは、監視エージェントの設定内容の変更などを含んでもよい。制御ルールは、コンピュータリソース制御システム１が予めデフォルトで定義されたものを利用してもよいし、利用者が予め定義してもよい。好適には、利用者が制御ルールを定義するためのルールエディタが提供される。このルールエディタは、監視対象の単位であるクラスタの制御ルールを設定可能であり、計画的な変動に対する制御、計測値に応じた受動的な変動に対する制御、監視エージェントの設定変更、警告設定など、状況に応じた種々の制御ルールを設定できるようになっている。制御ルールは、例えばＲｕｂｙをベースとしたドメイン特化言語（ＤＳＬ）を用いて記述できるため、直感的で分かりやすいルールで記述できる。また、グラフィカル・エディタにより制御ルールを設定できるようにしてもよく、この場合は、ＤＳＬに馴染みのない利用者でも直感的にルールを記述できる。
【００４４】
図５は、制御ルールの一例である。同図の例は、「インスタンス内部で、ペンディング・スレッドが規定以上の状態を５秒以上続けていたら、同じサーバイメージからインスタンスを３台増やしなさい。」という条件と制御内容を規定している。他にも、例えば計画的な変動に対する制御ルールの一例として、「何月何日の何時何分になったら、ここのサーバを何台にしなさい。そして、時間がきたら、サーバを元の台数に戻しなさい。」といった内容を規定できる。また、計測値に基づく受動的な変動に対する制御ルールとしては、例えば、処理するデータ量に基づいて、割り当てるサーバ台数を増減させるように規定できる。また、特定のサービスはスループットを低下させたくないような場合、アプリケーションごとに制御ルールのスケール基準を変えて設定する。商品が完売したらサービス内容を切り替えたい場合、アプリケーションを監視し、システム構成を変更するようなルールを設定する。
【００４５】
なお、好適には、管理サーバ４３は、リソースの増減がパフォーマンスにどのような影響があるのかを自律的に学習し、制御の最適解を求め、制御ルールを書き換える。
【００４６】
図４に戻り、管理サーバ４３は、監視エージェント３０から収集された計測値と制御ルールとを比較して、監視対象のシステム内のサーバ等のコンピュータリソースに対するアクションの要否を判断する。すなわち、計測値が制御ルールに規定された条件を満たさない場合には、アクションは不要であると判断する。一方、計測値が制御ルールに規定された条件を満たす場合に、アクションが必要であると判断し、その制御ルールに規定された制御内容のアクションを、その制御ルールに定義された管理対象のサーバ等に対して実行する旨の指示を出力する。そして、この指示は、実行キュー４１４に入力される。
【００４７】
実行サーバ４４は、インスタンスの起動や停止といった具体的なアクションを実行する処理を行う。実行サーバ４４は実行キュー４１４から、アクションの指示を順次読み出し、指示に応じて、制御ルールで規定された所定のサーバ（監視対象アプリケーション４０を含む）に対して、各種の制御を実行する。制御の内容としては、システムレベルからクラウドレベルまでの幅広い制御レベルに対応している。システムレベルの制御の一例としては、アプリケーションの特定機能のメソッド呼び出しや、内部変数の変更などがある。クラウドレベルでの制御の一例としては、インスタンスの起動・複製・停止、割り当てリソースの変更、起動インスタンスの設定変更などがある。つまり、仮想サーバの起動・複製・消去や仮想サーバの設定変更などを行うことができる。
【００４８】
分散ＫＶＳサーバ４５は、監視エージェント３０によって収集された計測値を含む種々のデータを格納するデータベースである。このデータベースは、単独のデータベースサーバを前提とした仕組みではなく、複数のサーバが協調しあって性能を上げていく分散データベース構造である。データ量が膨大になっても、参加するサーバ台数を増やすことでキャパシティの対応ができ、複数サーバにレプリケーションを持たせることで、単一障害点のないデータベースになっている。また、データベース性能劣化が予想される場合、サーバ台数の追加で性能維持ができる。
【００４９】
なお、分散ＫＶＳサーバ４５とは、保存したいデータ（Ｖａｌｕｅ）に、任意のラベル（Ｋｅｙ）を付けて、(Ｋｅｙ，Ｖａｌｕｅ)のペアを保存し、保存したデータを取得する際は、ラベル（Ｋｅｙ）を指定して、対応するデータ（Ｖａｌｕｅ）を取得するものであり、ＫＶＳとはＫｅｙ−Ｖａｌｕｅ  Ｓｔｏｒｅの略である。複数サーバにデータを分散保存するスケールアウト型であり、サーバを追加することで、大量のデータを扱うことができる。ＫＶＳサーバの一例として、ｍｏｎｇｏＤＢがある。なお、分散ＫＶＳサーバ４５は、ＫＶＳ方式のデータベースサーバを利用することが好ましいが、ＫＶＳに限定されるものではなく、他の方式による分散データベースサーバを用いてもよい。
【００５０】
ダッシュボード・サーバ４６は、ユーザに対して表示・操作を提供するダッシュボード４８をユーザ端末装置１２に提供するサーバである。ここで、ダッシュボード４８とは、所定の監視項目などの情報をクライアントで表示等するための画面であり、見た目や機能が重要である。ダッシュボード４８の画面には、システムの監視状況やジョブの実行状況などのモニタリングの他、ＤＳＬによるバッチジョブのフローやリアルタイムシステムの監視・制御などが含まれ、利用者とコンピュータリソース制御システム１とのインターフェースとして機能する。ダッシュボード・サーバ４６は、ユーザ端末装置１２からウェブサービス経由のアクセスを受け付け、分散ＫＶＳサーバ４５に格納された計測値等を読み出してダッシュボード４８を編集し、ユーザ端末装置１２に送信する。運用管理者は、ダッシュボード４８でシステムの監視、構成管理、制御設定を行う。また、監視情報が予め設定された閾値を超えた際に、ダッシュボード４８上に警告を表示すると共にメール通知を行うことで、効率的に監視できる。
【００５１】
本発明ではダッシュボード・サーバ４６のみを交換することで、ユーザの要求に合わせた表示や操作を提供することが可能である。これにより、コンピュータリソース制御システムを他のシステムの一部として販売したりＯＥＭ販売したりすることが容易に実現できるようになっている。
【００５２】
図６は、ダッシュボード４８の一例である。表示する画面の種類としては、メトリクスビュー、システム構成ビュー、ジョブネット監視ビュー、ログ監視ビュー、お知らせ一覧などがある。メトリクスビューは、監視エージェント３０から送信されている計測値（メトリック）をリアルタイムで監視するための画面である。計測項目に応じたグラフを表示し、リアルタイム更新を行う。また、過去のデータを表示可能である。システム構成ビューは、監視対象のシステム構成を俯瞰的に監視する画面である。各サーバの稼働状況の表示、サーバ内で稼働するプロセスの稼働状況の表示、サーバ間でのプロセス依存関係の表示等を行う。サーバリソースが閾値を超えた場合や、アプリケーションでエラーが発生した場合には、システム構成ビューで検知できるように表示される。ジョブネット監視ビューは、コンピュータリソース制御システム１が管理しているバッチジョブネットの実行状況を監視する画面である。実行状況に応じてアイコンの色を変化させ、視覚的に実行状況を示す。
【００５３】
ログ監視ビューは、ログファイルの出力内容を監視し、監視にヒットした箇所を閲覧する画面である。アプリケーションエラーの検知やバッチジョブの進行状況把握のために使用される。ダッシュボード４８で何をどのように表示させるかは、利用者が自由に設定可能である。これにより、例えば、経営者は経営者の視点からのコンソール機能を、システム管理者はシステム運用上の監視制御コンソールなど、利用者のニーズに合わせたユーザインターフェースを実現できる。
【００５４】
図７は、本発明によるコンピュータリソース制御システム１の他の実施例を示すブロック図である。同図に示す実施例の構成は、コンピュータリソース制御システム１内のサーバに監視エージェント３０が組み込まれている他は、図４とほぼ同じである。コンピュータリソース制御システム１内の各サーバは、同じサーバイメージを有する複数の仮想サーバによって分散化されている。つまり、コンピュータリソース制御システム１は、通常、複数の分散メッセージキューサーバ４１と、複数の収集サーバ４２と、複数の管理サーバ４３と、複数の実行サーバ４４と、複数の分散ＫＶＳサーバ４５と、複数のダッシュボード・サーバ４６とを含む。ただし、障害発生時などの場合に、同じサーバイメージを有するサーバの台数が一時的に１つになることはあり得る。
【００５５】
コンピュータリソース制御システム１内のサーバに組み込まれた監視エージェント３０は、監視対象アプリケーション４０に組み込まれた監視エージェント３０と同様に、監視データとして収集した計測値を分散メッセージキューサーバ４１の計測値収集キュー４１１と計測値管理キュー４１２に入力する。以降の処理は、図４と同じである。すなわち、管理サーバ４３は、監視対象アプリケーション４０に組み込まれた監視エージェント３０から収集された計測値と同様に、コンピュータリソース制御システム１内のサーバに組み込まれた監視エージェント３０から収集された計測値に対して、予め定義された複数の制御ルールを参照して、コンピュータリソースに対するアクションの要否を判断する。そして、クラスタ毎のデータ量や処理量の変動に応じて、実行サーバ４４がコンピュータリソース制御システム１内の各サーバの投入台数を増減させるなどの処理を実行することによって、最適なシステム構成が保持される。
【００５６】
例えば、分散メッセージキューサーバ４１に組み込まれた監視エージェント３０は、サーバ内の各キュー、すなわち、計測値収集キュー４１１、計測値管理キュー４１２、管理キュー４１３、及び実行キュー４１４に投入されたデータ量や待ち行列の量を監視する。さらに、分散メッセージキューサーバ４１と、収集サーバ４２と、管理サーバ４３と、実行サーバ４４と、分散ＫＶＳサーバ４５と、ダッシュボード・サーバ４６のそれぞれに組み込まれた別の監視エージェント３０は、それぞれ各サーバの稼働状況を監視する。
【００５７】
一方、制御ルールには、計測値収集キュー４１１の状態応じて収集サーバ４２のサーバ台数を増減させるためのルールが定義される。例えば、計測値収集キュー４１１の待ち行列の量が所定の閾値を超えた場合には、インスタンス起動制御、すなわち、収集サーバ４２のレプリケーション（複製）を所定個数作成して、仮想サーバの数を増加させる、という条件と制御内容が定義される。待ち行列の量が所定の閾値以下になった場合には、インスタンス停止制御、すなわち、収集サーバ４２のレプリケーションを所定個数破棄（削除）して、仮想サーバの数を減らす、という条件と制御内容が定義される。他のキューに対して、同じような制御ルールが定義され、例えば、計測値管理キュー４１２の状態に応じて管理サーバ４３のサーバ台数を増減させるためのルールが定義される。すなわち、計測値管理キュー４１２の待ち行列の量が所定の閾値を超えた場合には、管理サーバ４３のレプリケーションを所定個数作成して、仮想サーバの数を増加させる一方、待ち行列の量が所定の閾値以下になった場合には、管理サーバ４３のレプリケーションを所定個数破棄して、仮想サーバの数を減らす、という条件と制御内容が定義される。また、実行キュー４１４の状態に応じて実行サーバ４４のサーバ台数を増減させるためのルールが定義される。すなわち、実行キュー４１４の待ち行列の量が所定の閾値を超えた場合には、実行サーバ４４のレプリケーションを所定個数作成して、仮想サーバの数を増加させる一方、待ち行列の量が所定の閾値以下になった場合には、実行サーバ４４のレプリケーションを所定個数破棄して、仮想サーバの数を減らす、という条件と制御内容が定義される。さらに、管理キュー４１３の状態に応じて任意のサーバのサーバ台数を増減させるためのルールが定義される。すなわち、管理キュー４１３の待ち行列のうち、ある特定のサーバに対するアクションの待ち行列の量が所定の閾値を超えた場合には、当該特定のサーバのレプリケーションを所定個数作成して、仮想サーバの数を増加させる一方、待ち行列の量が所定の閾値以下になった場合には、その特定のサーバのレプリケーションを所定個数破棄して、仮想サーバの数を減らす、という条件と制御内容が定義される。また、分散メッセージキューサーバ４１内のキュー全体の状況に応じて、分散メッセージキューサーバ４１のサーバ台数を増減させるためのルールが定義されてもよい。
【００５８】
また、他の制御ルールとして、各サーバの稼働状況に応じて、サーバのレプリケーションや破棄を動的に制御するためのルールが定義されることが好ましい。すなわち、あるサーバの稼働状況が所定の閾値を超えている場合には、そのサーバのレプリケーションを作成し、稼働状況が所定の閾値以下の場合には、そのサーバを破棄する。また、サーバが異常な挙動を示している場合には、利用者に警告を通知する。異常が直らない場合には、そのサーバを破棄して、新たにサーバのレプリケーションを作成することによって、サーバを立ち上げ直してもよい。
【００５９】
このような構成を取ることにより、コンピュータリソース制御システム１は、クラウド環境内の監視対象システムを監視する仕組みと同じ仕組みによって、コンピュータリソース制御システム１自身に含まれるコンピュータリソースを動的に制御することが可能になる。こうして、コンピュータリソース制御システム１は、監視対象アプリケーション４０等の監視対象の状況をリアルタイムに把握し、遅滞なく制御するばかりでなく、コンピュータリソース制御システム１自身の状況をリアルタイムに把握し、遅滞なく制御することができるようになる。
【００６０】
本実施例は単一障害点のない分散構造で構成されるため、どこか単一の機能に障害が発生しても、全体としてはダウンしない構造になっている。また、計画的ないし突発的な負荷の増加にも動的に対応できる構造になっており、利用者や監視対象の増加に対して、コンピュータリソース制御システム１を構成するサーバのサーバ台数を増加させるなど、コンピュータリソースを制御することによって、サービスレベルを維持するように構成されている。
【００６１】
なお、コンピュータリソース制御システム１は、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）として提供されることが好ましい。
【００６２】
次に、本実施例におけるコンピュータリソース制御システム１の動作について説明する。
【００６３】
図８は、コンピュータリソース制御システム１における処理のフローチャートである。
【００６４】
まず、クラウド環境内の監視ポイントに埋め込まれた監視エージェント３０が計測値を収集して分散メッセージキューサーバ４１に送信する（Ｓ８１）。なお、監視エージェント３０は、定期的にまたは非定期的に計測値を分散メッセージキューサーバ４１に送り続ける。分散メッセージキューサーバ４１は、受信した計測値を、計測値収集キュー４１１と計測値管理キュー４１２に入れる。収集サーバ４２は、計測値収集キュー４１１から計測値を順次読み出して、分散ＫＶＳサーバ４５のデータストアに計測値を登録する（Ｓ８２）。収集サーバ４２は、計測値の登録を終えると、次の計測値をメッセージキューから読み出して、Ｓ８２の処理を繰り返す。
【００６５】
ダッシュボード・サーバ４６は、利用者からのリクエストに応じて、監視対象の状況等を閲覧するためのダッシュボード４８を作成し、ネットワークＮを介してユーザ端末装置に送信する（Ｓ８３）。ユーザ端末装置１２は、受信したダッシュボード４８をブラウザ上で表示する（Ｓ８４）。
【００６６】
また、データの登録処理に並行して、管理サーバ４３は、計測値管理キュー４１２から計測値を読み出し、制御ルールと対比して（Ｓ８５）、コンピュータリソースに対するアクションの要否を判断する（Ｓ８６）。計測値が制御ルールに規定された条件を満たさない場合には、アクションが不要と判断する（Ｓ８６：Ｎｏ）。一方、計測値が制御ルールに規定された条件を満たす場合には、アクションが必要であると判断し（Ｓ８６：Ｙｅｓ）、具体的なアクションの指示を分散メッセージキューサーバ４１の実行キュー４１４に送信する（Ｓ８７）。その後、管理サーバ４３は、計測値管理キュー４１２から計測値を再度読み出し、Ｓ８５からＳ８７までの一連の処理を繰り返す。
【００６７】
実行サーバ４４は、実行キュー４１４からアクションの指示を読み出して、インスタンスの起動や停止などの具体的なアクションを実行するための処理データを分散メッセージキューサーバ４１の管理キュー４１３に送信する（Ｓ８８）。その後、実行サーバ４４は、実行キューからアクション指示を再度読み出し、Ｓ８８の処理を繰り返す。
【００６８】
管理キュー４１３に入力された処理データは、アクションの対象となる監視エージェント３０に順次読み出され、サーバの複製や破棄などのアクションが実行される（Ｓ８９）。
【００６９】
なお、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において、他の様々な形で実施することができる。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【符号の説明】
【００７０】
１  コンピュータリソース制御システム、１０  クラウド、１２  ユーザ端末装置、２０  コンピュータ装置群、３０  監視エージェント、３２  分散メッセージネットワーク、３４  処理部、４０  監視対象アプリケーション、４１  分散メッセージキューサーバ、４２  収集サーバ、４３  管理サーバ、４４  実行サーバ、４５  分散ＫＶＳサーバ、４６  ダッシュボード・サーバ、４８  ダッシュボード、Ｎ  ネットワーク
【要約】
【課題】監視対象システムに含まれるコンピュータリソースの状況をリアルタイムに把握し、制御することのできるシステムを提供する。また、制御システム自身の状況も把握し、制御可能とする。
【解決手段】コンピュータリソース制御システムは、複数の監視エージェントから収集された計測値に基づいて、コンピュータリソースに対するアクションの要否を判断する管理サーバと、コンピュータリソースに対するアクションを要すると判断された場合に、コンピュータリソースに対するアクションを実行するための指示を出力する実行サーバと、を含む複数のサーバを含んで構成される。そして、コンピュータリソース制御システム内のサーバの少なくとも一つに監視エージェントを含む。
【選択図】図４【図１】
0004811830.tif 000002
【図２】
0004811830.tif 000003
【図３】
0004811830.tif 000004
【図４】
0004811830.tif 000005
【図５】
0004811830.tif 000006
【図７】
0004811830.tif 000007
【図８】
0004811830.tif 000008
【図６】
0004811830.tif 000009