(57)【特許請求の範囲】
【請求項１】
ホストで実行中の第１のコンポーネントのエージェントから、前記第１のコンポーネントに関する第１の状態情報および第１のブート識別子を受信することであって、前記第１のブート識別子は、前記ホストによって生成されており、前記ホストのブートセッションを識別し、前記エージェントが前記ホストから手に入れることができる、ことと、
前記第１のブート識別子が第２のコンポーネントに関する第２の状態情報に関連付けられた第２のブート識別子と一致するかどうかを決定することと、
前記第１のブート識別子が前記第２のブート識別子と一致すると決定することに応答して、
前記第１のコンポーネントおよび前記第２のコンポーネントが前記ホストで実行中であると決定することと、
前記第１のコンポーネントの前記第１の状態情報および前記第２のコンポーネントの前記第２の状態情報を前記ホストに関連付けることと、
前記ホストに関連付けられた前記第１の状態情報および前記第２の状態情報を使用して、前記ホストについての集約された状態情報を生成することと
を含む、方法。
【請求項２】
前記エージェントから、前記第１のブート識別子に関連付けられた第１のコンポーネント識別子を受信することであって、前記第１のコンポーネント識別子は前記第１のコンポーネントを識別する、ことと、
前記第１のブート識別子が前記第２のブート識別子と一致すると決定することに応答して、前記第１のコンポーネント識別子を前記ホストに関連付けることと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記ホスト上で実行中の前記第１のコンポーネントの前記エージェントから、前記第１のブート識別子および前記第２のブート識別子の受信に続く第３のブート識別子を受信することと、
前記第１のコンポーネントの前記第１のブート識別子が前記第１のコンポーネントの前記第３のブート識別子と一致するかどうかを決定することと、
前記第１のブート識別子が前記第３のブート識別子と一致しないと決定したことに応答して、
前記ホストを前記第３のブート識別子に関連付けることと、
前記ホストに関連付けられた前記第１の状態情報、前記第２の状態情報、および第３の状態情報を使用して、前記ホストについての集約状態情報を生成することと
をさらに含む、請求項２記載の方法。
【請求項４】
前記第１の状態情報を受信することは、第１のコンポーネント識別子を受信することを含み、
前記第３の状態情報を受信することは、第２のコンポーネント識別子を含み、
前記第１のコンポーネントの前記第１のブート識別子が前記第１のコンポーネントの前記第３のブート識別子と一致するかどうかを決定することは、前記第１のコンポーネント識別子および前記第２のコンポーネント識別子を使用して、前記第１の状態情報および前記第３の状態情報が第1コンポーネントに関するものであると決定することを含む、請求項３に記載の方法。
【請求項５】
前記第１のブート識別子が前記第２のブート識別子と一致しないと決定することに応答して、前記第１のコンポーネントの前記第１の状態情報を前記ホストに、前記第２のコンポーネントの前記第２の状態情報を第２のホストに関連付けること
をさらに含む、請求項１に記載の方法。
【請求項６】
前記第１のブート識別子は、前記ホストのブートアップに応答して生成されたランダム値を含む、請求項１に記載の方法。
【請求項７】
前記ホストは、サーバマシン、仮想マシン、またはクラウドインスタンスのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項８】
前記第１のコンポーネントは、前記ホスト上で実行するコンテナである、請求項１に記載の方法。
【請求項９】
前記第１の状態情報は、前記コンテナまたは前記コンテナで実行するアプリケーションに関する情報を含む、請求項８に記載の方法。
【請求項１０】
前記エージェントは、前記ホスト内のアクセス可能なディレクトリから前記第１のブート識別子を検索し、前記第１の状態情報とともに前記第１のブート識別子を送信する、請求項１に記載の方法。
【請求項１１】
前記エージェントは、前記第１のブート識別子に対する要求を前記ホストのオペレーティングシステムに送信し、前記要求に応じて前記オペレーティングシステムから前記第１のブート識別子を受信する、請求項１に記載の方法。
【請求項１２】
前記ホストのオペレーティングシステムは、コンポーネント識別子を、前記ホスト上で実行する前記エージェントがアクセスできない前記第１のコンポーネントに関連付ける、請求項１に記載の方法。
【請求項１３】
プロセッサによって実行されると、前記プロセッサに、
ホストで実行中の第１のコンポーネントのエージェントから、前記第１のコンポーネントに関する第１の状態情報および第１のブート識別子を受信するステップであって、前記第１のブート識別子は、前記ホストによって生成されており、前記ホストのブートセッションを識別し、前記エージェントが前記ホストから手に入れることができる、ステップと、
前記第１のブート識別子が第２のコンポーネントに関する第２の状態情報に関連付けられた第２のブート識別子と一致するかどうかを決定するステップと、
前記第１のブート識別子が前記第２のブート識別子と一致すると決定することに応答して、
前記第１のコンポーネントおよび前記第２のコンポーネントが前記ホストで実行中であると決定するステップと、
前記第１のコンポーネントの前記第１の状態情報および前記第２のコンポーネントの前記第２の状態情報を前記ホストに関連付けるステップと、
前記ホストに関連付けられた前記第１の状態情報および前記第２の状態情報を使用して、前記ホストについての集約された状態情報を生成するステップと
を含むステップを実行させる命令がエンコードされた非一時的なコンピュータ可読記憶媒体。
【請求項１４】
前記エージェントから、前記第１のブート識別子に関連付けられた第１のコンポーネント識別子を受信するステップであって、前記第１のコンポーネント識別子は前記第１のコンポーネントを識別する、ステップと、
前記第１のブート識別子が前記第２のブート識別子と一致すると決定することに応答して、前記第１のコンポーネント識別子を前記ホストに関連付けるステップと
をさらに含む、請求項１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１５】
前記ホスト上で実行中の前記第１のコンポーネントの前記エージェントから、前記第１のブート識別子および前記第２のブート識別子の受信に続く第３のブート識別子を受信するステップと、
前記第１のコンポーネントの前記第１のブート識別子が前記第１のコンポーネントの前記第３のブート識別子と一致するかどうかを決定するステップと、
前記第１のブート識別子が前記第３のブート識別子と一致しないと決定したことに応答して、
前記ホストを前記第３のブート識別子に関連付けるステップと、
前記ホストに関連付けられた前記第１の状態情報、前記第２の状態情報、および第３の状態情報を使用して、前記ホストについての集約状態情報を生成するステップと
をさらに含む、請求項１４に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１６】
前記第１の状態情報を受信することは、第１のコンポーネント識別子を受信することを含み、
前記第３の状態情報を受信することは、第２のコンポーネント識別子を含み、
前記第１のコンポーネントの前記第１のブート識別子が前記第１のコンポーネントの前記第３のブート識別子と一致するかどうかを決定することは、前記第１のコンポーネント識別子および前記第２のコンポーネント識別子を使用して、前記第１の状態情報および前記第３の状態情報が第1コンポーネントに関するものであると決定することを含む、請求項１５に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１７】
前記第１のブート識別子が前記第２のブート識別子と一致しないと決定することに応答して、前記第１のコンポーネントの前記第１の状態情報を前記ホストに、前記第２のコンポーネントの前記第２の状態情報を第２のホストに関連付けるステップをさらに含む、請求項１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１８】
前記第１のブート識別子は、前記ホストのブートアップに応答して生成されたランダム値を含む、請求項１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項１９】
前記ホストは、サーバマシン、仮想マシン、またはクラウドインスタンスのうちの少なくとも１つを含む、請求項１３に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２０】
ホストで実行中の第１のコンポーネントのエージェントから、前記第１のコンポーネントに関する第１の状態情報および第１のブート識別子を受信し、前記第１のブート識別子は、前記ホストによって生成されており、前記ホストのブートセッションを識別し、前記エージェントが前記ホストから手に入れることができ、
前記第１のブート識別子が第２のコンポーネントに関する第２の状態情報に関連付けられた第２のブート識別子と一致するかどうかを決定し、
前記第１のブート識別子が前記第２のブート識別子と一致すると決定することに応答して、
前記第１のコンポーネントおよび前記第２のコンポーネントが前記ホストで実行中であると決定し、
前記第１のコンポーネントの前記第１の状態情報および前記第２のコンポーネントの前記第２の状態情報を前記ホストに関連付け、
前記ホストに関連付けられた前記第１の状態情報および前記第２の状態情報を使用して、前記ホストについての集約された状態情報を生成する
ように構成されたプロセッサを備えた、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、コンピューターサーバーの監視に関し、特に、コンピューターサーバー上にある個々のコンポーネントの監視に関する。
【背景技術】
【０００２】
インターネットベースのアプリケーションは、ユーザーコンピューティングデバイスにコンテンツおよびサービスを配信するための一般的なツールである。通常、これらのアプリケーションは、コンピューティングデバイスからリクエストを受信し、コンピューティングデバイスに応答を送信することにより、コンピューティングデバイスにコンテンツを提供するホスト上のオペレーティングシステムコンテナなどのスケーラブルなコンポーネント内で実行される。歴史的に、関連アプリケーションを含むコンポーネントは、共有ホスト内の同じ場所にあることも、複数のホストに渡って分散していることもある。各コンポーネントは、要求が処理されている間にパフォーマンスおよび状態情報について監視システムによって監視され得る。
【０００３】
監視システムは、実行するホストを特定しないコンポーネントからパフォーマンスおよび状態情報を受信する場合がある。結果として、監視システムは共有ホストで実行されているコンポーネントを識別できない場合がある。この抽象化は、監視システムがコンポーネントを同じホスト上の同じ場所にある他のコンポーネントに関連付けることができない場合があるため、パフォーマンス監視の目的で問題となり得る。さらに、この抽象化により、ホスト全体に散らばったコンテナ内で実行されるアプリケーションがホストごとに基づいた価格設定モデルのライセンス使用メトリックを難読化する可能性があるというライセンス管理の問題が生じ得る。
【発明の概要】
【０００４】
監視システムは、コンテナまたはコンテナ内のアプリケーションなどの、ホストに渡って実行中のコンポーネントを監視するエージェントから情報を受信し、ホスト毎ベースの集約された状態情報を生成する。複数のコンテナは単一のホスト上の同じ場所にあり得る。システムは、各コンテナの状態情報、コンテナのホストに関連付けられたブート識別子、およびコンテナの識別子を含む情報を受信する。状態情報は、ホストで実行されているコンテナまたはコンテナで実行されているアプリケーションの状態に関するデータを含む。ブート識別子は、ホストのブートセッションの識別子を含み、このセッションには、エージェントによりホストからアクセスできる。コンテナ識別子は、送信されると、各コンテナを一意に識別する。監視システムは、コンテナを監視するエージェントからの状態情報に関連して受信したブート識別子を比較して、コンテナが同じ場所にあるということを決定する。例えば、定義された時間ウィンドウ内で同じブートＩＤを共有する２つのコンテナは、ホストの共通ブートセッション（オペレーティングシステムがホストのメモリにロードされている期間）にあることを示す。コンテナがブート識別子を共有している場合、監視システムは、コンテナがブート識別子を生成したホスト上の同じ場所にあると決定する。コンテナがブート識別子を共有しない場合（例えば、他のエージェントとの通信ごとにブートセッションがまだアクティブであると決定される場合）、監視システムはコンテナがホスト上の同じ場所にないと決定し、異なる起動識別子を有する各コンテナをそれぞれのホストにマッチングさせることができる。さらに、同じ場所にあるコンテナを一意に識別できることは、監視システムが、コンテナに渡って収集された情報と基礎となるホストとを相互に関連付けることを可能にする。
【図面の簡単な説明】
【０００５】
【図１】図１は、一実施形態による、ホストを監視するためのシステム環境のブロック図である。
【図２】。図２は、一実施形態による、コンポーネントおよびホストを監視する監視システムを示す概略ブロック図である。
【図３】図３は、一実施形態による、同じ場所にあるコンポーネントの状態情報を決定および格納するプロセスを示すフロー図である。
【図４】図４は、一実施形態による、ホスト上で実行中のコンポーネントのエージェントによって状態情報を収集および報告するプロセスを示すフロー図である。
【図５】図５は、一実施形態による、ホスト内の同じ場所にあるコンポーネントを識別し、ホストに関する集約された状態情報を生成するプロセスを示すフロー図である。
【図６】図６は、一実施形態による、ホスト内で新しいブートセッションを処理するプロセスを示す。
【図７】図７は、一実施形態による、コンピュータの例を示す高レベルブロック図である。
【図８Ａ】図８Ａは、一実施形態による、ブートＩＤを含むホストの概略図である。
【図８Ｂ】図８Ｂは、一実施形態による、更新されたブートＩＤを含むホストの概略図である。
【発明を実施するための形態】
【０００６】
図１は、一実施形態による、ホストを監視するためのシステム環境を示す。環境は、監視システム１０２（図２を参照して説明した）、クライアントデバイス１０４、およびホスト１０６ａ〜１０６ｎ（または「ホスト１０６」）を含む。ホスト１０６ａ〜１０６ｎ、監視システム１０２、およびクライアントデバイス１０４は、インターネットを含み得るネットワーク１２４を介して通信し得る。
【０００７】
クライアントデバイス１０４は、ネットワーク１２４を介してデータを送信および／または受信するだけでなく、ユーザ入力を受信できるコンピューティング機能およびデータ通信機能を伴うデバイスである。クライアントデバイス１０４は、ネットワーク１２４を介してホスト１０６と通信する。様々な実施形態において、クライアントデバイス１０４は、デスクトップコンピュータなどの有線ユーザデバイス、またはラップトップコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、スマートフォン、タブレット、またはウェアラブルデバイスなどのモバイルユーザデバイスであってもよい。クライアントデバイス１０４は、ホスト１０６および／または監視システム１０２のオペレータによって使用され得る。例えば、クライアントデバイス１０４は、ホスト１０６で実行しているコンポーネント１０８のパフォーマンスに関する更新をホスト１０６から受信するために、監視システム１０２のオペレータによって使用され得る。図１に単一のクライアント装置１０４が示されているが、環境は、任意の数のクライアントデバイス１０４を含み得る。
【０００８】
ホスト１０６は、オペレーティングシステム１１０、コンポーネント１０８、および１つ以上のエージェント１１２を実行する回路（例えば、サーバー）を含み得る。コンポーネント１０８は、ホスト１０６上で実行されるコンテナを含むことができ、および／またはコンテナ内で実行されるアプリケーションおよびエージェントを含むことができる。ホスト１０６上で実行する各コンポーネント１０８は、同じホスト１０６内の同じ場所にあるコンポーネントを決定するために監視システム１０２がブートＩＤ１１４とともに使用するコンポーネント識別子に関連付けられてもよい。
【０００９】
ブートＩＤ１１４は、オペレーティングシステム１１０のブートセッションを一意に識別する値（例えば、ハッシュ）である。オペレーティングシステム１１０は、起動時または要求に応答してブートＩＤ１１４を生成してもよく、エージェント１１２および／またはコンポーネント１０８にアクセス可能なデータとしてブートＩＤを格納してもよい。ホスト１０６は、物理マシン（例えば、サーバ）、または仮想マシンまたはクラウドインスタンスであり得る。いくつかの実施形態では、ブートＩＤは、異なるブートセッションの異なるホストにわたるブートＩＤ値の衝突の可能性を減らすために、ランダムに生成された大きな値である。
【００１０】
例えば、ホスト１０６ａが起動またはリブート動作を実行した場合、オペレーティングシステム１１０は、新しいブートセッションのためにホスト１０６ａで実行されているブートセッションに異なるブートＩＤ１１４ａを割り当て得る。同様に、システム１０２によって監視される別のホストであるホスト１０６ｎは、起動時にブートＩＤを生成し、ブートセッションを通してブートＩＤを保持することができる（例えば、ホスト１０６ａが新しいブートのための新しいブートＩＤを生成する場合であっても）。これらのブートＩＤ１１４は、コンポーネント識別子を使用するなど、同じホスト１０６内の同じ場所にあるコンポーネントを決定するために、コンポーネント１０８に関連付けられている。ブートＩＤ１１４は、各ホスト１０６で実行している各エージェント１１２によって監視システム１０２に報告される。
【００１１】
一実施形態では、ホスト１０６は、コンポーネント１０８に加えてエージェント１１２を実行する。エージェント１１２は、ホスト１０６上で実行中のプロセス、コンポーネント１０８の応答時間、コンポーネント１０８内のトランザクション、クライアントデバイス１０４におけるコンポーネント１０８のパフォーマンスに対するバックエンドプロセスの影響、または状態情報の他のタイプのような、コンポーネント１０８のパフォーマンスを監視する。一実施形態では、各コンポーネント１０８は、コンポーネント１０８のパフォーマンスを監視するそれ自体のエージェント１１２を実行する。別の実施形態では、複数のコンポーネント１０８に関する状態情報を監視および生成する、ホスト１０６上で実行するエージェント１１２が存在する。いくつかの実施形態では、コンポーネント１０８（例えば、アプリケーション、コンテナなど）およびエージェント１１２は、オペレーティングシステム１１０の共有カーネル上の同じ場所にあり、ブートＩＤ１１４などのいくつかの共有情報へのアクセスを有する。エージェント１１２は、アプリケーションのパフォーマンスに関連する状態情報を収集して保存し、ホスト識別のためにホストのブートＩＤ１１４に関連して状態情報を監視システム１０２に定期的に報告する。
【００１２】
図２は、一実施形態による、コンポーネント１０８およびホスト１０６を監視する監視システム１０２を示す概略ブロック図である。監視システム１０２は、監視サーバ２００およびホストデータストア２２０を含む。
【００１３】
監視サーバ２００は、ホスト１０６およびそのコンポーネント１０８のパフォーマンスを監視するホスト１０６に対する外部コンピューティングデバイスである。監視サーバ２００は、ホスト毎ベースの、またはホストのコンポーネントの任意の数のホスト１０６のパフォーマンスを監視し得る。ホスト１０６がエージェント１１２を実行している間、監視サーバ２００はエージェント１１２と通信して、ホスト１０６内のコンポーネント１０８のパフォーマンスを監視する。監視サーバ２００は、エージェント１１２からレポートを受信し、ホスト１０６の管理者による分析のためのレポート中のデータをフォーマットし、管理者がコンポーネント１０８またはホスト１０６のパフォーマンスの問題に対処できるようにする。例えば、監視サーバ２００は、コンポーネント１０８の応答時間を示すプロットを生成し、低速またはその他の顕著なトランザクションのトランザクション追跡を表示し、コンポーネント１０８を実行しているホスト（例えば仮想マシン）から統計を提供する。
【００１４】
一実施形態では、監視サーバ２００は、ホスト１０６上で実行中のエージェント１１２から、ホスト１０６上のブートセッションに割り当てられたブートＩＤ１１４を記述する情報も受信する。ホスト１０６上のオペレーティングシステム１１０によって生成されたブートＩＤ１１４は、ホスト１０６上で実行中の各コンポーネント１０８に割り当てられる。エージェント１１２は、コンポーネント識別子およびコンポーネント状態情報に加えて、ブートＩＤ１１４をフェッチし、このデータを監視サーバ１４０に供給する。監視サーバ１４０は、エージェント１１２からのデータを使用して、コンポーネントおよび／またはホストに関する集約された情報を決定する。例えば、複数の共存しているコンテナにわたってホスト毎ベースで使用状況情報が追跡されて、ホスト毎ベースのライセンス消費情報を決定してもよい。監視サーバ２００は、複数の同じ場所にあるコンポーネントから状態情報を集約して、基礎となるホスト１０６の全体的な使用を決定することができる。
【００１５】
監視システム１０２は、ホストデータストア２２０を使用して、ブートＩＤ１１４に関連してホスト１０６上で実行している同じ場所にあるコンポーネント１０８の識別子を格納する。監視システム１０２は、同じ場所にあるコンポーネント１０８を決定し、同じ場所にあることが識別されたときに現在実行中のブートセッションのブートＩＤ１１４とともに各コンポーネントのコンポーネント識別子を格納する。ホスト１０６上で新しいブートセッションを引き起こす起動の場合、エージェント１１２は、その後生成された状態情報を新しいブートセッションの新しいブートＩＤとともに送信する。監視サーバ２００は、ホストデータストア２２０に格納された情報を使用して、同じ場所にあると決定されたコンポーネント１０８に属する、監視システム１０２に提供された以前に格納されたコンポーネント識別子を相互参照できる。監視サーバ２００は、この情報を更新して、リブートインスタンスについて報告された新しいブートＩＤ１１４を含めることができ、監視サーバ２００が、ブートＩＤ１１４の変更にもかかわらずホスト１０６の使用情報を収集することを継続することを可能にする。例えば、コンポーネントＡ、Ｂ、およびＣがホスト１０６ａ上の同じ場所にある場合、ホストデータストア２２０は、各コンポーネントを新しいブートセッションのために生成された新しいブートＩＤ１１４に関連付けることができる。ホスト１０６ａがリブートした場合、オペレーティングシステム１１０ａは、新しいブートセッションを反映するために新しいブートＩＤ１１４を生成するであろう。ホスト１０６ａのパフォーマンスおよび使用の監視を継続するために、監視サーバ２００は、ホストデータストア２２０内のコンポーネントＡ、Ｂ、およびＣを識別し、それらが以前のブートＩＤ１１４を共有していることからそれらが同じ場所にあると決定することができる。次いで、監視サーバ２００は、新しいブートＩＤ１１４をホストデータストア２２０に格納し、ホスト１０６ａの監視を継続することができる。
【００１６】
図３は、一実施形態による、同じ場所にあるコンポーネント１０８の状態情報を決定および記憶するプロセスを示すフロー図である。図３に示す実施形態では、単一のエージェントがオペレーティングシステム１１０およびコンポーネント１０８によって共有されるものとして示されているが、オペレーティングシステム１１０および各コンポーネント１０８は、それ自体のエージェントを含むことができる。エージェント１１４がコンポーネント１０８に関する状態情報のインスタンスを報告しているとき、エージェント１１４は、ブートセッションのホスト１０６のオペレーティングシステム１１０によって生成されたブートＩＤ１１４にアクセスする。さらに、エージェント１１４は、コンポーネント１０８から状態情報およびコンポーネント識別子を収集してもよい。エージェント１１４は、ブートＩＤ（およびいくつかの実施形態ではコンポーネント識別子）に関連する状態情報を監視システム１０２内の監視サーバ２００に提供する。監視サーバ２００は、ブートＩＤ１１４を使用して、同じブートＩＤを報告した他のコンポーネントとのコンポーネント１０８の共存を決定する。別の例では、監視サーバ２００は、コンポーネント１０８のコンポーネント識別子を、コンポーネント１０８によって報告された以前のコンポーネント識別子と比較して、新しいブートセッションを識別する。それに応じて、ホスト内の同じ場所にある他の既知のコンポーネント１０８に関連付けられたブートＩＤが更新され得る。
【００１７】
図４は、一実施形態による、ホスト１０６上で実行中のコンポーネント１０８のエージェント１１２によって状態情報を収集および報告するプロセス４００を示すフロー図である。上述のように、ホスト１０６は、サーバ、クラウドインスタンス、または仮想マシンであり得る。監視対象コンポーネント１０８は、アプリケーション、またはコンテナ内で実行中のアプリケーションであり得る。エージェント１１２は、ホスト１０６上の各コンポーネント１０８を観察し、状態情報を生成４１０して、応答時間、トラフィックまたはネットワーク使用、リクエスト数、使用量などの様々な監視したパラメータに沿って各コンポーネント１０８の状態を記述する。エージェント１１２は、定期的またはスケジュールベースで、または状態情報の収集をトリガーするコンポーネント１０８またはホスト１０６内のイベントの検出時に、状態情報を生成し得る。
【００１８】
状態情報の生成に応じて、エージェント１１２は、ホスト１０６上のブートセッションを識別するために使用されるオペレーティングシステム１１０によって生成されたホスト１０６のブートＩＤ１１４を検索する４２０。設計上のコンテナは、基礎となるホストからアプリケーションを分離する。これにより、コンテナを特別な権限で実行したり、特別な構成を使用したりすることなく、コンテナ内で実行しているプロセスに役立つ基本的なホストに関する特定の事実（ホスト名など）を特定することが難しくなる。したがって、エージェント１１２は、ホストを識別するために使用できる非特権アプリケーションにアクセス可能な情報を使用する。ここでは、ブートＩＤがホストＩＤとして使用されるように説明されるが、オペレーティングシステムがコンテナ内のアプリケーションを許可するデータを識別する他のタイプのホストまたはホストデバイスが使用されてもよい。
【００１９】
エージェント１１２は、ホスト１０６上の状態情報に関係するコンポーネントのコンポーネント識別子を決定する４３０。コンポーネント識別子は、オペレーティングシステムがエージェント１１２から制限しないアプリケーションまたはコンテナの識別子としてもよい。監視システム１０２によって監視される各コンテナは、一意のコンポーネント識別子を有し得る。
【００２０】
エージェント１１２は、同じ場所にあるコンポーネントの決定およびホスト１０６の全体的な使用を監視のために、状態情報、ブートＩＤ、およびコンポーネントＩＤを監視システム１０２に送信する４４０。プロセス４００は、複数のコンポーネントを監視する複数のエージェント１１２によって並行して実行されてもよい。コンポーネント１０８は、監視システム１０２がエージェント１１２からのブートＩＤを使用して解決することができる複数のホスト１０６にわたって分散されてもよい。
【００２１】
図５は、一実施形態による、ホスト１０６内の同じ場所にあるコンポーネント１０８を識別し、ホスト１０６に関する集約された状態情報を生成するプロセス５００を示すフロー図である。プロセス５００において、異なるコンポーネントの２つのエージェントから受信された状態情報が、同じホストまたは異なるホストで実行していると識別される。
【００２２】
監視サーバ２００は、第１のコンポーネント１０８上で実行中のエージェント１１２から第１の状態情報および第１のブートＩＤ１１４を受信する５１０。例えば、エージェント１１２は、プロセス４００および図４で説明したように状態情報およびブートＩＤを送信し得る。
【００２３】
監視サーバ２００は、第２のコンポーネント１０８のエージェントから第２の状態情報および第２のブートＩＤ１１４を受信する５２０。第２の状態情報は、第１の状態情報に続いて受信されてもよく、第１の状態情報は、第２の状態情報に続いて受信されてもよい。
【００２４】
いくつかの実施形態では、監視サーバ２００は、コンポーネントＩＤに基づいて、第１のコンポーネント１０８および第２のコンポーネント１０８が異なるコンポーネントであると決定してもよい。５１０において、第１のコンポーネント１０８の第１のコンポーネントＩＤは第１の状態情報とともに受信され、第２のコンポーネント１０８に対する第２のコンポーネントＩＤは第２の状態情報５２０とともに受信され得る。サーバ２００は、コンポーネントＩＤを比較し、コンポーネントＩＤが一致しない場合、第１コンポーネント１０８と第２コンポーネント１０８が異なると決定し、コンポーネントＩＤが一致する場合、第１コンポーネント１０８と第２コンポーネント１０８は同じであると決定する。
【００２５】
監視サーバ２００は、第１のブートＩＤ１１４が第２のブートＩＤ１１４と一致するかどうかを決定する５３０。第１および第２のブートＩＤ１１４が一致する（または対応する）と決定することに応答して、監視サーバ２００は、第１のコンポーネント１０８および第２のコンポーネント１０８がホスト１０６上の同じ場所にあると決定する５４０。いくつかの実施形態では、監視サーバ２００は、第１のブートＩＤ１１４および第２のブートＩＤ１１４が時間ウィンドウ（例えば、オペレーティングシステム１１０がホスト１０６のメモリにロードされている、したがって特定のブートＩＤを使用している期間）内に受信されたかどうかを決定し得る。監視サーバ２００が、第１および第２のブートＩＤが時間ウィンドウで受信され、一致したと決定した場合、第１および第２のブートＩＤ１１４は、同じホスト１０６上のコンポーネントに対応するものとして決定され得る。対照的に、２つの同一のブートＩＤ１１４が時間ウィンドウの外で受信される場合、監視サーバ２００は、それらが一致しないと判断することができ、またはエージェントとの通信を通じて、オペレーティングシステムの現在のブートＩＤを確認するなどのさらなる分析を実行することができる。
【００２６】
監視サーバ２００は、第１の状態情報および第２の状態情報を特定されたホスト１０６と関連付ける５５０。例えば、第１のコンポーネントと第２のコンポーネントは、同じ場所にあるとして（例えば、ブートＩＤによって）関連付けられてもよい。コンポーネントの１つから受け取ったブートＩＤに対するその後の変更は、他のコンポーネントの関連付けに伝播され得る。
【００２７】
監視サーバ２００は、第１および第２の状態情報を使用して、ホスト１０６についての集約状態情報を生成する５６０。例えば、同じ場所にあるコンポーネントからの状態情報は、組み合わされて、ホストに関する情報を提供し得る。例えば、同じ場所にあるコンポーネントがアプリケーションサーバーのコンテナである場合、応答時間、要求数、帯域幅使用量などのアプリケーションの各々からの状態情報は、ホスト内の同じ場所にあるコンポーネントにわたって結合され、ホスト毎ベースの状態情報、または状態情報に基づくその他の分析を提供し得る。
【００２８】
５３０に戻って、第１のブートＩＤ１１４と第２のブートＩＤ１１４が一致しなかった場合５３０、監視サーバ２００は、第１のコンポーネント１０８と第２のコンポーネント１０８が異なるホスト１０６にあると決定する５７０。例えば、複数のホスト１０６は、それぞれが一意のブートＩＤによって識別される別々のブートセッションで同時に動作する。異なるコンポーネント１０８から異なるブートＩＤが受信されるとき、コンポーネント１０８は異なるホスト１０６上にあると決定されることができる。
【００２９】
監視サーバ２００は、第１の状態情報および第２の状態情報を異なるホスト１０６に関連付ける５８０。例えば、第１の状態情報は、第１のブートＩＤとともに受信された他の状態情報と関連付けられ、第２の状態情報は、第２のブートＩＤとともに受信された他の状態情報と関連付けられ得る。
【００３０】
図６は、一実施形態による、ホスト内の新しいブートセッションを扱うプロセス６００を示している。プロセス６００は、状態情報の異なるインスタンスを、単一のホスト上にあるコンポーネントから受信することを含む。以前にブートＩＤに関連付けられていたコンポーネントの状態情報の新しいインスタンスが別のブートＩＤに関連して受信されるとき、ホストは新しいブートセッションを開始したと決定され得る。以前のブートＩＤは古いものとして識別され、古いブートＩＤに関連付けられた他のコンポーネントは、新しいブートＩＤとの関連付けを含むように更新される。ブートＩＤが大きなランダム値である場合、監視サーバ２００が複数のホスト１０６およびコンポーネント１０８を監視している場合でも、いつでも、ブートＩＤ衝突の可能性は低くなる。例えば、監視サーバは、ブートＩＤの新しいインスタンスを、アクティブな古くないブートＩＤとのみ比較してもよい。
【００３１】
監視サーバ２００は、第１のコンポーネント１０８のエージェント１１２から第１の状態情報および第１のブートＩＤ１１４を受信する６１０。監視サーバ２００は、第１のブートＩＤ１１４に基づいて、第１の状態情報をホスト１０６に関連付ける６２０。
【００３２】
監視サーバ２００は、第１のコンポーネント１０８のエージェントから第２の状態情報および第２のブートＩＤ１１４を受信する６３０。第２の状態情報は、第１の状態情報に続いて受信される。上述のように、エージェント１１２から監視サーバ２００に送信されるコンポーネントＩＤは、コンポーネント１０８を一意に識別するために使用され得る。したがって、監視サーバ２００は、第１および第２の状態情報ならびに第１および第２のブートＩＤ１１４が同じコンポーネント１０８からのものであると決定する。第１および第２の状態情報は、同じエージェント１１２または異なるエージェント１１２によって送信され得る。例えば、第２の状態情報およびブートＩＤ１１４を送信するエージェントは、ステップ６１０で第１の状態情報およびブートＩＤ１１４を送信したのと同じエージェントであり得る。別の例では、複数のエージェントがコンポーネントを監視してもよく、またはエージェントが別のコンポーネントに再割り当てされてもよい。
【００３３】
監視サーバは、第１のブートＩＤ１１４が第２のブートＩＤ１１４と一致するかどうかを決定する６４０。第１のブートＩＤ１１４が第２のブートＩＤと一致しないと決定したことに応答して、監視サーバ２００は、ホスト１０６を第２のブートＩＤ１１４に関連付ける６５０。コンポーネント１０８が同じホストで実行している場合、ホストについてブートＩＤが変わった、すなわち新しいブートセッションが開始され、と決定されることができる。
【００３４】
監視サーバ２００は、第２の状態情報をホスト１０６に関連付ける６６０。例えば、異なるブートＩＤが受信された場合でも、第１および第２の状態情報の双方が同じホスト１０６に関連付けられ得る。このように、ホストが断続的、未知、または予定外の時間にリブート動作を実行した場合でも、サーバ２００はホスト内の同じ場所にあるコンテナの識別を効率的に維持します。
【００３５】
監視サーバ２００は、ホスト１０６に関連付けられた第１の状態情報および第２の状態情報を使用して、ホスト１０６についての集約状態情報を生成する６７０。ホスト１０６についての集約状態情報は、ホスト１０６に関連付けられていると識別された状態情報の複数のインスタンスを処理することにより生成される。
【００３６】
６４０に戻って、第１のブートＩＤが第２のブートＩＤと一致すると決定したことに応答して、監視サーバ２００は、第２の状態情報をホスト１０６に関連付ける６６０。ブートＩＤは変更されていない。これは、ホストが同じブートセッションにあり、ホスト内に同じ場所にあることがわかっている他のコンポーネント１０８も同じブートＩＤを返すことを示す。次いで、監視サーバ２００は、ホスト１０６に関連付けられた第１の状態情報および第２の状態情報を使用して、ホスト１０６についての集約状態情報を生成する６７０。
【００３７】
図７は、一実施形態による、コンピュータ７００の例を示す高レベルブロック図である。コンピュータ７００は、監視システム１０２、クライアントデバイス１０４、またはホスト１０６のコンポーネントを実装する回路の一例である。チップセット７０４に結合された少なくとも１つのプロセッサ７０２が示されている。チップセット７０４は、メモリコントローラハブ７２０および入出力（Ｉ／Ｏ）コントローラハブ７２２を含む。メモリ７０６およびグラフィックスアダプタ７１２はメモリコントローラハブ７２０に結合され、ディスプレイデバイス７１８はグラフィックスアダプタ７１２に結合されている。ストレージデバイス７０８、キーボード７１０、ポインティングデバイス７１４、およびネットワークアダプタ７１６は、Ｉ ／ Ｏコントローラハブ７２２に結合されている。コンピュータ７００の他の実施形態は、異なるアーキテクチャを有する。例えば、いくつかの実施形態では、メモリ７０６はプロセッサ７０２に直接結合される。
【００３８】
記憶装置７０８は、ハードドライブ、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、ＤＶＤ、またはソリッドステートメモリデバイスなどの１つまたは複数の非一時的なコンピュータ可読記憶媒体を含む。メモリ７０６は、プロセッサ７０２によって使用される命令およびデータを保持する。ポインティングデバイス７１４は、データをコンピュータシステム７００に入力するためにキーボード７１０と組み合わせて使用される。グラフィックスアダプタ７１２は、ディスプレイデバイス７１８上に画像および他の情報を表示する。いくつかの実施形態では、ディスプレイデバイス７１８は、ユーザ入力および選択を受信するためのタッチスクリーン機能を含む。ネットワークアダプタ７１６は、コンピュータシステム７００をネットワーク１２４に結合する。コンピュータ７００のいくつかの実施形態は、図７に示されるものとは異なるおよび／または他のコンポーネントを有する。
【００３９】
コンピュータ７００は、本明細書で説明される機能を提供するためのコンピュータプログラムモジュールを実行するように適合されている。例えば、いくつかの実施形態は、図４、５および６にそれぞれ示されるプロセス４００、５００、および６００を実行するように構成された１つまたは複数のモジュールを含むコンピューティングデバイスを含み得る。4、5、および6。本明細書で使用されるとき、「モジュール」という用語は、指定された機能を提供するために使用されるコンピュータプログラム命令および/または他のロジックを指す。したがって、モジュールはハードウェア、ファームウェア、および/またはソフトウェアで実装されることができる。一実施形態では、実行可能なコンピュータプログラム命令で形成されたプログラムモジュールは、記憶装置７０８に格納され、メモリ７０６にロードされ、プロセッサ７０２により実行される。
【００４０】
図８Ａは、一実施形態による、ブートＩＤを含むホストの概略図である。コンポーネントは、基礎となるホスト８００およびそのオペレーティングシステム への標準の非特権アクセスで実行する（Linuxなどの）コンテナである。基礎となるホスト８００は、各コンテナからアクセス可能な３２桁のブートＩＤを生成する。３２桁のブートＩＤは、各桁に英数字を含み、多数の可能な一意のブートＩＤを提供し得る。図８Ａに示す実施形態では、ブートＩＤ 28980862-3263-4f7c-a154-bf2d67a731acは、コンテナ＃1、＃2、＃3、および＃4にアクセス可能である。他の実施形態では、より多いまたはより少ない数のコンテナが、基礎となるホスト８００上で実行され得る。他の実施形態は、一意のブートＩＤを構成する桁数がより多くてもよく、より少なくてもよい。
【００４１】
図８Ｂは、一実施形態による、更新されたブートＩＤを含む図８Ａのホストの概略図である。ホスト上のリブート、起動、またはその他のプロセスは、新しいブートセッションおよびブートＩＤをもたらす可能性がある。更新されたブートＩＤは、基盤となるホスト８００で新しいブートセッションをもたらす可能性のあるリブート、起動、または他のプロセスに応じて生成されます。基礎となるホスト８００の更新されたブートＩＤは、基礎となるホスト８００上の同じ場所にあるコンテナの各々にアクセス可能である。図８Ｂに示す実施形態では、更新されたブートＩＤ d66020a3-9e47-4eee-bcbe-2d6c8b56c587は、コンテナ＃1、＃2、＃3、および＃4にアクセス可能である。他の実施形態では、より多いまたはより少ない数のコンテナが、基礎となるホスト８００上で実行し得る。他の実施形態は、一意のブートＩＤを構成する桁数がより多くてもよく、より少なくてもよい。
【００４２】
むすび
本開示の実施形態の前述の説明は、例示の目的で提示されている。網羅的であること、または開示を開示された正確な態様に限定することは意図されていない。関連技術分野における当業者は、上記の開示に照らして多くの修正および変形が可能であることを理解することができる。
【００４３】
この説明のいくつかの部分は、情報に対する操作のアルゴリズムおよび記号表現に関して本開示の実施形態を説明している。これらのアルゴリズムの説明と表現は、データ処理技術の当業者によって一般的に使用され、彼らの仕事の内容を他の当業者に効果的に伝える。これらの動作は、機能的、計算的、または論理的に説明されているが、コンピュータプログラムまたは同等の電気回路、マイクロコードなどによって実装されると理解される。説明された動作は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせで具現化されてもよい。
【００４４】
本明細書で説明されるステップ、動作、またはプロセスのいずれかは、単独で、または他のデバイスと組み合わせて、１つまたは複数のハードウェアまたはソフトウェアモジュールで実行または実装され得る。一実施形態では、ソフトウェアモジュールは、説明したステップ、操作、またはプロセスのいずれかまたはすべてを実行するためのコンピュータプロセッサによって実行可能なコンピュータプログラムコードを含むコンピュータ可読媒体を含むコンピュータプログラム製品で実装される。
【００４５】
本開示の実施形態は、本明細書の動作を実行するための装置にも関係し得る。この装置は、要求される目的のために特別に構築されてもよく、および／または、コンピュータに格納されたコンピュータプログラムによって選択的に活性化されるまたは再構成される汎用コンピューティングデバイスを備えてもよい。そのようなコンピュータプログラムは、有形のコンピュータ可読記憶媒体、または電子命令を格納するのに適した任意のタイプの媒体に格納され、コンピュータシステムバスに結合され得る。さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含むか、コンピューティング能力を高めるために複数のプロセッサ設計を採用するアーキテクチャとし得る。
【００４６】
最後に、明細書で使用される文言は、主に読みやすさと教育目的のために選択されたものであり、本発明の主題を描写または制限するために選択されていない場合がある。したがって、本開示の範囲は、この詳細な説明によってではなく、本明細書に基づいた出願で発行される請求項によって制限されることが意図されている。したがって、本開示の実施形態の開示は、本発明の範囲を例示することを意図したものであり、限定することを意図したものではない。
【図１】
0006821089.tif 000002
【図２】
0006821089.tif 000003
【図３】
0006821089.tif 000004
【図４】
0006821089.tif 000005
【図５】
0006821089.tif 000006
【図６】
0006821089.tif 000007
【図７】
0006821089.tif 000008
【図８Ａ】
0006821089.tif 000009
【図８Ｂ】
0006821089.tif 000010