(57)【要約】      （修正有）【課題】ネットワークで接続された複数台のサーバを監視する監視装置の負荷を低減する。【解決手段】監視装置１０は、複数の監視対象の情報処理装置４０に対して作成され、監視対象の情報処理装置に対する情報採取の指示をキュー２４に登録する複数の監視プロセス２３と、キューに登録された指示を読み出し、監視対象の情報処理装置から被監視情報を採取して記憶部２６に書き出す、複数の監視対象の情報処理装置よりも少ない数の通信プロセス２５と、を実行する。【選択図】図１０
2016130892.tif 000002
【特許請求の範囲】
【請求項１】
複数の監視対象の情報処理装置に対して作成され、監視対象の情報処理装置に対する情報採取の指示をキューに登録する、複数の監視プロセスと、
前記キューに登録された前記指示を読み出し、前記監視対象の情報処理装置から被監視情報を採取して記憶部に書き出す、前記複数の監視対象の情報処理装置よりも少ない数の通信プロセスと、
を実行する監視装置。
【請求項２】
前記記憶部から取得した前記被監視情報を表示する表示部、
を備える請求項１に記載の監視装置。
【請求項３】
監視装置および複数の監視対象の情報処理装置を有する情報処理システムであって、
前記監視装置は、
複数の監視対象の情報処理装置に対して作成され、監視対象の情報処理装置に対する情報採取の指示をキューに登録する、複数の監視プロセスと、
前記キューに登録された前記指示を読み出し、前記監視対象の情報処理装置から被監視情報を採取して記憶部に書き出す、前記複数の監視対象の情報処理装置よりも少ない数の通信プロセスと、を実行する、
情報処理システム。
【請求項４】
コンピュータに、
複数の監視対象の情報処理装置に対して作成され、監視対象の情報処理装置に対する情報採取の指示をキューに登録する、複数の監視プロセスと、
前記キューに登録された前記指示を読み出し、前記監視対象の情報処理装置から被監視情報を採取して記憶部に書き出す、前記複数の監視対象の情報処理装置よりも少ない数の通信プロセスと、
を実行させるための監視プログラム。
【請求項５】
コンピュータに、
複数の監視対象の情報処理装置に対する情報採取の指示を受け、各監視対象の情報処理装置に対する情報採取の指示をキューに登録させる、
ためのプログラム。
【請求項６】
コンピュータに、
キューに登録された監視対象の情報処理装置に対する情報採取の指示を読み出させ、
前記監視対象の情報処理装置から被監視情報を採取して記憶部に書き出させる、
ためのプログラム。
【請求項７】
コンピュータに、
複数の監視対象の情報処理装置ごとに、監視対象の情報処理装置を特定する情報を含む監視情報をキューに登録する監視プロセスを作成させ、
前記キューに登録された監視情報を読み出し、前記監視情報により特定される監視対象の情報処理装置から被監視情報を採取して記憶部に書き出す、前記複数の監視対象の情報処理装置よりも少ない数の通信プロセスを作成させ、
前記記憶部から前記被監視情報を取得させる、
ためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視装置、情報処理システム及び監視プログラムに関する。
【背景技術】
【０００２】
近年、Information and Communication Technology（ＩＣＴ）機器を集積し、管理ソフトウェアや業務アプリケーションを統合した垂直統合システム製品が登場している。垂直統合システムのように、ネットワークで接続された複数台のサーバから成る大規模システム環境において、各サーバは、定期的な情報採取によって監視される。
【０００３】
各サーバを監視する監視装置は、監視対象サーバの数のスレッドを作成する。スレッドとは、プログラムの実行単位である。スレッドは、監視対象サーバと１対１で通信し、監視対象サーバの情報を採取する。監視対象サーバの情報を採取するスレッドは、通信を行わないスレッドよりも、メモリ使用量が多く通信負荷が高い。したがって、監視対象サーバの増加に比例して、メモリ使用量は増加する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−７３３４号公報
【特許文献２】特開平９−３３０３０２号公報
【特許文献３】特開平５−７５６２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ソフトウェアに与えられるメモリ資源は限られている。このため、メモリ使用量がソフトウェアに割り当てられたメモリ量を超えた場合、メモリが枯渇する。メモリが枯渇すると、ソフトウェアの動作が停止する場合がある。
【０００６】
また、ソフトウェアによるメモリ使用量は、監視対象サーバの増加に比例して増加するため、監視対象サーバの数は、与えられたメモリ資源の範囲を超えて増やせない。さらに、監視対象サーバごとに作成されたスレッドは、監視中はメモリを占有する。監視対象サーバごとにスレッドが作成され、メモリの使用や通信による負荷が増加すると、他の処理に割り当てられるリソースは減少する。
【０００７】
本発明の一態様は、ネットワークで接続された複数台のサーバを監視する監視装置の負荷を低減する監視装置、情報処理システム及び監視プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の態様の一つは、複数の監視対象の情報処理装置に対して作成され、監視対象の情報処理装置に対する情報採取の指示をキューに登録する複数の監視プロセスと、キューに登録された指示を読み出し、監視対象の情報処理装置から被監視情報を採取して記憶部に書き出す、複数の監視対象の情報処理装置よりも少ない数の通信プロセスと、を実行する監視装置である。
【発明の効果】
【０００９】
開示の監視装置、情報処理システム及び監視プログラムによれば、ネットワークで接続された複数台のサーバを監視する監視装置の負荷を低減することができる。
【図面の簡単な説明】
【００１０】
【図１】システム管理方式の全体図の一例である。
【図２Ａ】システム管理方式での初期化フローの一例である。
【図２Ｂ】システム管理方式での画面展開のフローの一例である。
【図３】比較例における監視装置の構成図の一例である。
【図４】比較例における初回のサーバ情報取得の動作例を示す図である。
【図５】比較例における２回目以降のサーバ情報取得の動作例を示す図である。
【図６】監視装置のハードウェア構成の一例を示す図である。
【図７】情報処理システムにおける監視装置の機能構成の一例を示す図である。
【図８】初回のサーバ情報取得の動作例を示す図である。
【図９】初回のサーバ情報取得において、Ｗｏｒｋｅｒスレッド数が上限値である場合の動作例を示す図である。
【図１０】２回目以降のサーバ情報取得の動作例を示す図である。
【図１１】スレッド管理テーブルのデータ構造の一例を示す図である。
【図１２】性能情報格納テーブルのデータ構造の一例を示す図である。
【図１３】キューに登録されるエントリのデータ構造の一例を示す図である。
【図１４】スレッド間で受け渡される情報のデータ構造の一例を示す図である。
【図１５】Ｍａｉｎスレッドの処理のフローチャートの一例である。
【図１６】Ｍｏｎｉｔｏｒスレッドの処理のフローチャートの一例である。
【図１７】Ｍｏｎｉｔｏｒスレッドの接続情報更新処理のフローチャートの一例である。
【図１８】Ｗｏｒｋｅｒスレッドの処理のフローチャートの一例である。
【図１９】監視対象サーバとＭｏｎｉｔｏｒスレッドをシリアル番号で対応付ける変形例１を示す図である。
【図２０】監視対象サーバが複数のＯＳを有する変形例２を示す図である。
【図２１】変形例２におけるＷｏｒｋｅｒスレッドの処理のフローチャートの一例である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１２】
＜システム管理方式＞
複数台のサーバから成る大規模システム環境において、監視装置は、ネットワーク接続された監視対象であるサーバ等から定期的に情報を採取し、状態監視を行う。図１は、システム管理方式の全体図の一例である。
【００１３】
図１において、システムは、端末、監視装置および監視対象のサーバ等を含む。監視対象は、サーバの他、スイッチ、ストレージおよびファシリティ機器等を含む。端末は、Ｗｅｂブラウザにより、監視装置に対してサーバ情報の取得を依頼する。
【００１４】
監視装置は、運用管理ソフトウェア、Operating System（ＯＳ）、ｊａｖａ（登録商標）等のプログラムを備える。運用管理ソフトウェアは、サーバ情報表示Graphical User Interface（ＧＵＩ）処理部、マネージャ、サーバ情報取得Application Programming Interface（ＡＰＩ）処理部を備える。また、運用管理ソフトウェアは、他のファシリティ機
器等に対しそれぞれＧＵＩ処理部および情報取得処理部を備える。
【００１５】
監視対象のサーバは、ＯＳおよびサーバ管理機構を備える。ＯＳは、監視装置に対し、サーバの性能情報を提供する。サーバ管理機構は、サーバおよびＯＳと独立して動作し、
監視装置に対し、サーバの温度や電源等の状態の他、サーバのシリアル番号を提供する。
【００１６】
図２Ａおよび図２Ｂは、システム管理方式の全体フローの一例である。システム管理方式は、サーバ情報等を取得するためのシステムの初期化のフロー、およびユーザからの情報取得の指示に対する画面展開のフローを含む。
【００１７】
図２Ａは、システム管理方式での初期化フローの一例である。初期化のフローは、監視装置の起動により開始される。次に監視装置は、運用管理ソフトウェアを起動する。次に、監視装置は、サーバ情報表示ＧＵＩ処理部、サーバ情報取得ＡＰＩ処理部等の各処理部を初期化する。サーバ情報表示ＧＵＩ処理部は、初期化の際、あらかじめユーザにより設定される設定ファイルを読み込み、サーバ情報取得に使用される設定情報を取得する。各処理部は、運用管理ソフトウェアによるサービスが終了すると、終了する。
【００１８】
図２Ｂは、システム管理方式での画面展開のフローの一例である。画面展開のフローは、端末でＷｅｂ画面が起動されることにより開始される。次に、Ｗｅｂ画面は、監視装置に接続しサーバ情報の取得を依頼する。監視装置の運用管理ソフトウェアにおいて、各ＧＵＩ処理部は、マネージャに対し、情報取得を依頼する。マネージャは、各情報取得処理部に対し、情報採取を依頼する。各情報取得処理部は、サーバから採取した情報に対する処理結果をマネージャに通知する。マネージャは、処理結果を各ＧＵＩ処理部に通知する。各ＧＵＩ処理部は、処理結果を端末に通知する。端末は、処理結果を画面に表示する。
【００１９】
＜比較例＞
図３は、比較例における監視装置の構成図の一例である。図３において、監視装置はマネージャおよびサーバ情報取得ＡＰＩ処理部を備える。監視装置は、複数の監視対象サーバを監視する。監視対象サーバは、図１の監視対象のサーバと同様であるため、説明は省略される。
【００２０】
監視装置は、Ｍａｉｎスレッド、スレッド管理テーブルおよび管理スレッドを備える。管理スレッドは、監視対象サーバと同数存在する。Ｍａｉｎスレッドは、マネージャからの依頼を受け、サーバ情報取得ＡＰＩ処理部の全体の処理を制御する。スレッド管理テーブルは、監視対象サーバと管理スレッドとの関連性を管理する。管理スレッドは、監視対象サーバと１対１で生成され、定期的に、監視対象サーバからの情報を採取する。管理スレッドは、性能情報格納域を備える。管理スレッドは、監視対象サーバから採取した情報を、性能情報格納域に保持する。
【００２１】
管理スレッドは、監視対象サーバ毎に、サーバへの接続情報の管理、接続、情報採取、編集、世代管理などを行う。また、各監視対象サーバは、マネージャからの初回接続を起点として、一定間隔で性能情報収集するため、監視対象サーバ毎に並行処理される。このため、性能採取用の管理スレッドは、監視対象サーバと１対１で存在する。
【００２２】
監視対象サーバのＯＳがＶＭｗａｒｅのような仮想マシンである場合、監視装置は、例えば、ＶＭｗａｒｅから情報を取得するためにＶＭｗａｒｅが提供するオープンソースソフトウェア（ＶＩＡＰＩ）インタフェースを使用する。監視装置は、各管理スレッドに、通常のオブジェクトよりもサイズの大きいＶｉｍｐｏｒｔＴｙｐｅオブジェクトを生成する。監視対象サーバと１対１で、ＶｉｍｐｏｒｔＴｙｐｅオブジェクトを有する管理スレッドが生成されると、監視装置のメモリ使用量は、監視対象サーバ数に比例して増加し、使用可能なヒープ量を超える可能性がある。
【００２３】
比較例では、採取した情報を管理スレッド内に保持するため、ユーザからサーバ情報取得の依頼を受けた場合に、対象となるサーバ情報を格納した管理スレッドの検索等に時間
がかかる。このため、サーバ情報の取得結果が返却されるまでの時間が長くなる場合がある。
【００２４】
図４は、比較例における初回のサーバ情報取得の動作例を示す図である。マネージャは、Ｍａｉｎスレッドに対し、サーバ情報の取得を依頼する（Ｘ１）。Ｍａｉｎスレッドは、スレッド管理テーブルにおいて、監視対象サーバを検索する（Ｘ２）。監視対象サーバは、初回のアクセスである場合、スレッド管理テーブルには登録されていない。このため、Ｍａｉｎスレッドは、監視対象サーバに対する管理スレッドを生成し、開始する（Ｘ３）。Ｍａｉｎスレッドは、監視対象サーバと生成した管理スレッドとの関連性をスレッド管理テーブルに登録する（Ｘ４）。管理スレッドは、監視対象サーバと通信し、性能情報を採取して性能情報格納域に保持する（Ｘ５）。Ｍａｉｎスレッドは、管理スレッドに対し、性能情報の取出しを依頼する（Ｘ６）。管理スレッドは、性能情報格納域から取り出した性能情報を、Ｍａｉｎスレッドに通知する（Ｘ７）。Ｍａｉｎスレッドは、通知された性能情報を、サーバ情報としてマネージャに返却する（Ｘ８）。
【００２５】
図５は、比較例における２回目以降のサーバ情報取得の動作例を示す図である。２回目以降のサーバ情報取得の処理では、監視対象サーバに対する管理スレッドは既に作成されている。このため、Ｍａｉｎスレッドは管理スレッドの生成、開始（図４のＸ３）、およびスレッド管理テーブルへの登録（図４のＸ４）の処理は行わない。
【００２６】
図５の処理のうち、図４と同一の処理については、同一の符号を付して、その説明は省略される。また、管理スレッドは、定期的に情報を採取し、性能情報格納域に採取した情報を保持する（Ｙ１）。
【００２７】
＜実施形態＞
本実施形態では、監視対象サーバを管理するための管理スレッドを、ＭｏｎｉｔｏｒスレッドとＷｏｒｋｅｒスレッドに分割する。Ｍｏｎｉｔｏｒスレッドは、監視対象サーバに対するサーバ情報取得の指示を制御する。Ｗｏｒｋｅｒスレッドは、監視対象サーバからサーバ情報を採取する。サーバ情報の採取は、通信処理を伴うため、Ｍｏｎｉｔｏｒスレッドの処理よりも負荷が高い。本実施形態は、Ｗｏｒｋｅｒスレッドの数を制限することにより、監視装置の負荷の低減を図る。なお、サーバ情報は、被監視情報の一例である。サーバ情報は、例えば、監視対象サーバの性能情報を含む。
【００２８】
＜装置構成＞
図６は、監視装置１０のハードウェア構成の一例を示す図である。監視装置１０は、プロセッサ１１、主記憶装置１２、補助記憶装置１３、入力装置１４、出力装置１５、ネットワークインタフェース１６を備える。また、これらはバス１７により互いに接続される。
【００２９】
プロセッサ１１は、補助記憶装置１３に保持されたＯＳや様々なコンピュータプログラムを主記憶装置１２にロードして実行することによって、様々な処理を実行する。ただし、コンピュータプログラムによる処理の一部がハードウェア回路により実行されてもよい。プロセッサ１１は、例えば、Central Processing Unit（ＣＰＵ）や、Digital Signal Processor（ＤＳＰ）である。
【００３０】
主記憶装置１２は、プロセッサ１１に、補助記憶装置１３に格納されているプログラムをロードするための記憶領域、及びプログラムを実行するための作業領域を提供する。また、主記憶装置１２は、データを保持するためのバッファとして用いられる。主記憶装置１２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）等の半導体メモリである。
【００３１】
補助記憶装置１３は、様々なプログラムや、各プログラムの実行に際してプロセッサ１１が使用するデータを格納する。補助記憶装置１３は、例えば、Erasable Programmable ROM（ＥＰＲＯＭ）、又はハードディスクドライブ（Hard Disk Drive、ＨＤＤ）等の不揮発性のメモリである。補助記憶装置１３は、例えば、オペレーティングシステム（Operating System、ＯＳ）、監視プログラム、その他様々なアプリケーションプログラムを保持する。
【００３２】
入力装置１４は、ユーザからの操作入力を受け付ける。例えば、入力装置１４は、タッチパッド、マウス、タッチパネル等のポインティングデバイス、キーボード、操作ボタン、遠隔操作機からの信号を受信する回路等である。出力装置１５は、監視装置１０により再定義された復旧シナリオの内容を出力する。出力装置１５は、例えば、液晶ディスプレイ（Liquid Crystal Display、ＬＣＤ）である。出力装置１５は、表示部の一例である。
【００３３】
ネットワークインタフェース１６は、ネットワークとの情報の入出力を行うインタフェースである。ネットワークインタフェース１６は、有線のネットワークと接続するインタフェース、無線のネットワークと接続するインタフェースを含む。ネットワークインタフェース１６は、例えば、Network Interface Card（ＮＩＣ）、無線Local Area Network（ＬＡＮ）カード等である。ネットワークインタフェース１６で受信されたデータ等は、プロセッサ１１に出力される。
【００３４】
例えば、監視装置１０では、プロセッサ１１が、補助記憶装置１３に保持される管理プログラムを主記憶装置１２にロードして実行する。なお、監視装置１０のハードウェア構成は一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。
【００３５】
図７は、情報処理システム１における監視装置１０の機能構成の一例を示す図である。情報処理システム１は、監視装置１０および複数の監視対象サーバ４０を含む。情報処理システム１は、１０００台以上の監視対象サーバ４０を含む大規模システムであってもよい。監視対象サーバ４０は、監視対象の情報処理装置の一例である。
【００３６】
監視装置１０は、サーバ情報取得ＡＰＩ処理部２０およびマネージャ３０を含む。サーバ情報取得ＡＰＩ処理部２０は、Ｍａｉｎスレッド２１、スレッド管理テーブル２２、Ｍｏｎｉｔｏｒスレッド２３、キュー２４、Ｗｏｒｋｅｒスレッド２５および性能情報格納テーブル２６を備える。監視装置１０のプロセッサ１１は、コンピュータプログラムにより、Ｍａｉｎスレッド２１、Ｍｏｎｉｔｏｒスレッド２３、キュー２４およびＷｏｒｋｅｒスレッド２５の処理を実行する。ただし、Ｍａｉｎスレッド２１、Ｍｏｎｉｔｏｒスレッド２３、キュー２４およびＷｏｒｋｅｒスレッド２５のいずれか、またはその処理の一部がハードウェア回路により実行されてもよい。
【００３７】
Ｍａｉｎスレッド２１は、マネージャ３０からの指示を受け、サーバ情報取得ＡＰＩ処理部２０の全体の処理を制御する。Ｍａｉｎスレッド２１は、例えば、Ｍｏｎｉｔｏｒスレッド２３およびＷｏｒｋｅｒスレッド２５を生成したり、性能情報格納テーブル２６から性能情報を取得したりする。
【００３８】
スレッド管理テーブル２２は、Ｍａｉｎスレッド２１によって作成される。スレッド管理テーブル２２は、監視対象サーバ４０とＭｏｎｉｔｏｒスレッド２３の関連性を管理する。監視対象サーバ４０とＭｏｎｉｔｏｒスレッド２３とを関連づけるキーは、監視対象サーバ４０のＩＰアドレスであってもよく、シリアル番号であってもよい。
【００３９】
Ｍｏｎｉｔｏｒスレッド２３は、監視対象サーバの情報を定期的に取得する処理を制御する。具体的には、Ｍｏｎｉｔｏｒスレッド２３は、キュー２４に対し、監視対象サーバに対する情報取得の指示を定期的に登録する。
【００４０】
Ｍｏｎｉｔｏｒスレッド２３は、Ｍａｉｎスレッド２１によって、監視対象サーバと１対１で生成される。ただし、１対１に限定されず、複数の監視対象サーバに対して１つのＭｏｎｉｔｏｒスレッド２３が生成されてもよい。この場合、Ｍｏｎｉｔｏｒスレッド２３は、複数の監視対象サーバに対する情報取得の処理を制御する。Ｍｏｎｉｔｏｒスレッド２３は、監視プロセスの一例である。
【００４１】
キュー２４は、監視対象サーバに対する情報取得の指示を管理する。キュー２４は、Ｍｏｎｉｔｏｒスレッド２３から受け取った指示を保持し、古い指示からＷｏｒｋｅｒスレッド２５に受け渡す。キュー２４は、Ｍａｉｎスレッド２１の起動時に生成される。メモリ使用量を抑制するため、キュー２４の要素数は、例えば１０００に限定してもよい。また、キュー２４は、１つに限られず複数あってもよい。
【００４２】
Ｗｏｒｋｅｒスレッド２５は、監視対象サーバと通信してサーバ情報を採取する。Ｗｏｒｋｅｒスレッド２５は、通常のオブジェクトよりもサイズの大きいサーバ情報採取のためのオブジェクトを有する。Ｗｏｒｋｅｒスレッド２５は、所定の上限値以内の数で生成される。
【００４３】
Ｗｏｒｋｅｒスレッド２５の数を増やすと、並列性が上がるため、処理性能は向上する。一方で、メモリ使用量や通信負荷も増加するというトレードオフがある。このため、Ｗｏｒｋｅｒスレッド２５の数の上限値を事前に算出し、初期化時に可変な値として設定できるようにする。
【００４４】
例えば、Ｗｏｒｋｅｒスレッド２５の数の上限値は、“監視対象サーバ４０の上限数÷（Ｍｏｎｉｔｏｒスレッド２３のサーバ情報取得指示の間隔÷Ｗｏｒｋｅｒスレッド２５の採取実行時間）”としてもよい。なお、Ｗｏｒｋｅｒスレッド２５の数の上限値は、サーバ情報取得ＡＰＩ処理部２０の起動時に、ユーザが指定する設定ファイルから読み込まれるようにしてもよい。Ｗｏｒｋｅｒスレッド２５は、通信プロセスの一例である。
【００４５】
性能情報格納テーブル２６は、監視対象サーバと採取した情報の関連性を管理する。監視対象サーバと採取した情報とを関連づけるキーは、監視対象サーバのシリアル番号であってもよい。性能情報格納テーブル２６は、記憶部の一例である。
【００４６】
マネージャ３０は、端末を介してユーザからの指示を受け付け、サーバ情報取得ＡＰＩ処理部２０等の各処理部を制御する。監視対象サーバ４０は、サーバ管理機構４１およびＯＳ４２を備える。サーバ管理機構４１は、監視対象サーバ４０の温度や電源等の状態の他、監視対象サーバ４０のシリアル番号を提供する。ＯＳは、監視装置に対し、サーバの性能情報を提供する。
【００４７】
＜動作例＞
図８から図１０は、サーバ情報取得の動作例を示す図である。図８は、初回のサーバ情報取得の動作例を示す。図９は、初回のサーバ情報取得において、Ｗｏｒｋｅｒスレッド数が上限値である場合の動作例を示す。図１０は、２回目以降のサーバ情報取得の動作例を示す。
【００４８】
図８は、初回のサーバ情報取得の動作例を示す図である。マネージャ３０は、Ｍａｉｎスレッド２１に、ＩＰアドレス等の監視対象サーバ４０へのアクセス情報を渡してサーバ
情報の取得を依頼する（Ａ１）。Ｍａｉｎスレッド２１は、スレッド管理テーブル２２において、監視対象サーバ４０が登録されているか否かを検索する（Ａ２）。監視対象サーバ４０は、初回のアクセスである場合、スレッド管理テーブル２２には登録されていない。このとき、Ｗｏｒｋｅｒスレッド２５の数が上限値未満であれば、Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５を生成し、開始する（Ａ３）。また、Ｍａｉｎスレッド２１は、監視対象サーバ４０に対するＭｏｎｉｔｏｒスレッド２３を生成し、開始する（Ａ４）。さらに、Ｍａｉｎスレッド２１は、監視対象サーバ４０と、生成したＭｏｎｉｔｏｒスレッド２３との関連性をスレッド管理テーブル２２に登録する（Ａ５）。
【００４９】
Ｍｏｎｉｔｏｒスレッド２３は、サーバ情報取得の指示をキューに登録する（Ａ６）。その後、Ｍｏｎｉｔｏｒスレッド２３は、次のサーバ情報取得まで休止し、ＣＰＵおよびメモリ等のリソースをシステムに解放する。スレッドが一定時間処理を休止することは、スリープとも称される。
【００５０】
キュー２４にサーバ情報取得の指示が登録されると、Ｗｏｒｋｅｒスレッド２５は、リソースが割り当てられて、処理を再開する。スレッドが休止状態から処理を再開することは、ウェイクアップとも称される。Ｗｏｒｋｅｒスレッド２５は、ウェイクアップをすると、キュー２４に登録されたサーバ情報取得の指示を取り出す。Ｗｏｒｋｅｒスレッド２５は、キュー２４から取り出した指示に従い、監視対象サーバ４０と通信をして、サーバ情報を採取する（Ａ７）。
【００５１】
Ｗｏｒｋｅｒスレッド２５は、採取したサーバ情報を性能情報格納テーブル２６に格納する（Ａ８）。Ｗｏｒｋｅｒスレッド２５は、キュー２４に次の指示がある場合、当該指示に従ってサーバ情報を採取する。一方、キュー２４に次の指示がない場合、Ｗｏｒｋｅｒスレッド２５は、次の指示が登録されるまでスリープし、リソースをシステムに解放する。
【００５２】
Ｍａｉｎスレッド２１は、性能情報格納テーブル２６をポーリングして、格納されたサーバ情報を取り出す（Ａ９）。ポーリングは、定期的に問い合わせを行い、一定の条件を満たした場合に送受信や処理を行う通信および処理方式のことである。Ｍａｉｎスレッド２１は、性能情報格納テーブル２６から取り出したサーバ情報を、マネージャ３０に通知する（Ａ１０）。
【００５３】
図９は、初回のサーバ情報取得において、Ｗｏｒｋｅｒスレッド数が上限値である場合の動作例を示す図である。Ａ３およびＡ７以外の処理は、図８と同様であるため、同一の符号を付して説明は省略される。
【００５４】
Ａ２の処理後、Ｗｏｒｋｅｒスレッド２５の数が上限値であれば、Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５を生成しない。すなわち、Ｍａｉｎスレッド２１は、図８のＡ３の処理を行わない。
【００５５】
Ａ６において、キュー２４にサーバ情報取得の指示が登録されると、スリープ中のＷｏｒｋｅｒスレッド２５があれば、図８のＡ７と同様に、Ｗｏｒｋｅｒスレッド２５はウェイクアップをしてサーバ情報を採取する。
【００５６】
一方、スリープ中のＷｏｒｋｅｒスレッド２５がなく、各Ｗｏｒｋｅｒスレッド２５が処理の実行中である場合、処理が終了するまでキュー２４に登録された指示は処理されない。Ｗｏｒｋｅｒスレッド２５は、処理を終了すると、キュー２４に登録された次の指示を取り出し、当該指示に従ってサーバ情報を採取する（Ｂ１）。
【００５７】
図１０は、２回目以降のサーバ情報取得の動作例を示す図である。Ａ１、Ａ２、Ａ９およびＡ１０の処理は、図８と同様であるため、同一の符号を付して説明は省略される。監視対象サーバ４０に対するＭｏｎｉｔｏｒスレッド２３は、初回のアクセス時に生成され、開始されている。
【００５８】
初回のサーバ情報取得の後、Ｍｏｎｉｔｏｒスレッド２３は、所定の時間間隔で、サーバ情報取得の指示をキュー２４に登録する（Ｃ１、Ｃ２）。キュー２４に登録された指示は、処理を実行中でないＷｏｒｋｅｒスレッド２５によって取り出される（Ｃ３）。指示を取り出したＷｏｒｋｅｒスレッド２５は、監視対象サーバ４０と通信をしてサーバ情報を採取し、採取したサーバ情報を性能情報格納テーブル２６に格納する。サーバ情報の採取が繰り返され、監視対象サーバ４０のサーバ情報が性能情報格納テーブル２６に蓄積される。
【００５９】
＜データ構造＞
図１１から図１４は、監視装置１０で使用するテーブルのデータ構造およびスレッド間で受け渡される情報のデータ構造の例を説明する。
【００６０】
図１１は、スレッド管理テーブル２２のデータ構造の一例を示す図である。スレッド管理テーブル２２は、監視対象サーバ４０とＭｏｎｉｔｏｒスレッド２３の関連性を管理する。スレッド管理テーブル２２は、「キー」および「値」の項目を含む。「キー」は、監視対象サーバ４０のＩＰアドレスである。「値」は、当該監視対象サーバ４０に対応するＭｏｎｉｔｏｒスレッド２３のスレッド名である。また、「値」は、プロセス番号等、当該Ｍｏｎｉｔｏｒスレッド２３を識別できる値であってもよい。
【００６１】
図１１において、例えば、ＩＰアドレスが“192.168.1.1”の監視対象サーバ４０は、
スレッド名が“Monitor1”のＭｏｎｉｔｏｒスレッド２３に関連付けられる。同様に、ＩＰアドレスが“192.168.1.2”の監視対象サーバ４０は、スレッド名が“Monitor2”のＭ
ｏｎｉｔｏｒスレッド２３に関連付けられる。
【００６２】
図１２は、性能情報格納テーブル２６のデータ構造の一例を示す図である。性能情報格納テーブル２６は、監視対象サーバと採取した情報の関連性を管理する。性能情報格納テーブル２６は、「キー」および「値」の項目を含む。「キー」は、監視対象サーバ４０のシリアル番号である。「値」は、当該監視対象サーバ４０についての性能情報リストの格納先またはリンク先である。
【００６３】
性能情報を含むサーバ情報は、定期的に採取されるため、性能情報リストは、複数世代の性能情報を保持してもよい。各世代の性能情報は、１つのエントリとして性能情報リストに格納される。すなわち、性能情報リストは、世代ごとの性能情報を格納する複数のエントリを有する。
【００６４】
図１２において、例えば、シリアル番号が“SQ1234AB00001”の監視対象サーバ４０と
、“性能情報LIST1”で表される性能情報リストが関連付けられる。同様に、シリアル番
号が“SQ1234AB00002”の監視対象サーバ４０と、“性能情報LIST2”で表される性能情報リストが関連付けられる。
【００６５】
図１３は、キュー２４に登録されるエントリのデータ構造の一例を示す図である。図１３は、キュー２４に登録される１エントリの例を示す。エントリ内の要素として、「ＩＰアドレス」、「ユーザＩＤ」、「パスワード」および「キー」が含まれる。「ＩＰアドレス」は、監視対象サーバ４０のＩＰアドレスである。「ユーザＩＤ」は、監視対象サーバ４０のログインユーザＩＤである。「パスワード」は、ユーザＩＤに対するパスワードで
ある。「キー」は監視対象サーバ４０のシリアル番号である。
【００６６】
図１３に示されるキュー２４のエントリは、ＩＰアドレスが“192.168.1.1”の監視対
象サーバ４０に対してサーバ情報を採取することを指示する。Ｗｏｒｋｅｒスレッド２５は、ユーザＩＤを“admin”、パスワード名を“admin”として、監視対象サーバ４０にログインして情報を採取する。また、Ｗｏｒｋｅｒスレッド２５は、シリアル番号“SQ1234AB00001”をキーとして、採取した性能情報を性能情報格納テーブル２６に格納する。
【００６７】
図１４は、スレッド間で受け渡される情報のデータ構造の一例を示す図である。マネージャ３０は、サーバ情報取得の依頼時、Ｍａｉｎスレッド２１にIpaddress、Id、Pass、ServerInfoを含む情報を渡す。Ipaddressは、サーバ情報の取得を依頼する管理対象サーバ４０のサーバ管理機構４１のＩＰアドレスである。Idは、当該管理対象サーバ４０のサーバ管理機構４１のログインユーザＩＤである。Passは、当該ログインユーザＩＤに対するパスワードである。ServerInfoは、ＯＳ接続情報を含むオブジェクトである。
【００６８】
Ｍａｉｎスレッド２１は、Ｍｏｎｉｔｏｒスレッド２３の生成時、In_id、In_pw、In_Ipaddress、In_SerialNum、QueueおよびTimerを含む情報を渡す。In_idは、ＯＳ接続情報
のユーザＩＤである。In_pwは、ＯＳ接続情報のパスワードである。In_Ipaddressは、Ｏ
Ｓ接続情報のＩＰアドレスである。In_SerialNumは、監視対象サーバ４０のシリアル番号である。シリアル番号は、Ｍａｉｎスレッド２１において、監視対象サーバ４０のサーバ管理機構４１から取得される。Queueは、サーバ情報取得の指示を登録するキュー２４の
名称である。Timerは、サーバ情報を採取する間隔である。
【００６９】
Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５を生成し、開始する際、Ｗｏｒｋｅｒスレッド２５にQueue、DataおよびCountを含む情報を渡す。Queueは、Ｗｏｒｋｅｒ
スレッド２５が、サーバ情報取得の指示を取り出すキュー２４の名称である。Dataは、採取したサーバ情報の格納先である性能情報格納テーブル２６である。Countは、採取した
サーバ情報を保管する世代数である。サーバ情報を保管する世代数は、サーバ情報取得ＡＰＩ処理部２０の起動時に、ユーザが指定する設定ファイルから読み込まれるようにしてもよい。
【００７０】
Ｍｏｎｉｔｏｒスレッド２３は、In_id、In_pw、In_IpaddressおよびIn_SerialNumを含むエントリをキュー２４に登録する。In_idは、ＯＳ接続情報のユーザＩＤである。In_pwは、ＯＳ接続情報のパスワードである。In_Ipaddressは、ＯＳ接続情報のＩＰアドレスである。In_SerialNumは、監視対象サーバ４０のシリアル番号である。Ｗｏｒｋｅｒスレッド２５は、キュー２４から取り出したIn_id、In_pw、In_Ipaddressによって、監視対象サーバ４０と通信し、サーバ情報を採取する。
【００７１】
＜処理の流れ＞
図１５から図１８は、Ｍａｉｎスレッド２１、Ｍｏｎｉｔｏｒスレッド２３およびＷｏｒｋｅｒスレッド２５によるサーバ情報取得の処理の流れを説明する。
【００７２】
図１５は、Ｍａｉｎスレッド２１の処理のフローチャートの一例である。Ｍａｉｎスレッド２１の処理は、例えば、マネージャ３０からのサーバ情報取得の依頼により開始される。
【００７３】
ＯＰ１１では、Ｍａｉｎスレッド２１は、監視対象サーバ４０のサーバ管理機構４１から、シリアル番号等のサーバ基本情報を採取する。次に処理がＯＰ１２に進む。ＯＰ１２では、Ｍａｉｎスレッド２１は、スレッド管理テーブル２２を検索する。次に処理がＯＰ１３に進む。
【００７４】
ＯＰ１３では、Ｍａｉｎスレッド２１は、スレッド管理テーブル２２に、当該監視対象サーバ４０のＩＰアドレスに合致するキーがあるか否かを判定する。合致するキーがある場合には（ＯＰ１３：Ｙ）、処理がＯＰ１８に進む。合致するキーがない場合には（ＯＰ１３：Ｎ）、処理がＯＰ１４に進む。
【００７５】
ＯＰ１４では、Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５の数が上限値よりも小さいか否かを判定する。Ｗｏｒｋｅｒスレッド２５の数が上限値よりも小さい場合には（ＯＰ１４：Ｙ）、処理がＯＰ１５に進む。Ｗｏｒｋｅｒスレッド２５の数が上限値である場合には（ＯＰ１４：Ｎ）、処理がＯＰ１６に進む。
【００７６】
ＯＰ１５では、Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５を生成し、開始する。次に処理がＯＰ１６に進む。ＯＰ１６では、Ｍａｉｎスレッド２１は、Ｍｏｎｉｔｏｒスレッド２３を生成し、開始する。次に処理がＯＰ１７に進む。
【００７７】
ＯＰ１７では、Ｍａｉｎスレッド２１は、スレッド管理テーブル２２に、生成したＭｏｎｉｔｏｒスレッド２３を、当該監視対象サーバ４０と関連付けて登録する。次に処理がＯＰ１９に進む。
【００７８】
ＯＰ１８では、Ｍａｉｎスレッド２１は、スレッド管理テーブル２２に保持されたＭｏｎｉｔｏｒスレッド２３の接続情報を更新する。Ｍａｉｎスレッド２１は、接続情報が変更されていない場合には、Ｍｏｎｉｔｏｒスレッド２３の接続情報を更新しなくてもよい。次に処理がＯＰ１９に進む。
【００７９】
ＯＰ１９では、Ｍａｉｎスレッド２１は、監視対象サーバ４０のサーバ管理機構４１から、ＯＳ、Input/Output（Ｉ／Ｏ）搭載情報等の各種情報を採取する。次に処理がＯＰ２０に進む。
【００８０】
ＯＰ２０では、Ｍａｉｎスレッド２１は、性能情報格納テーブル２６を検索する。次に処理がＯＰ２１に進む。ＯＰ２１では、Ｍａｉｎスレッド２１は、性能情報格納テーブル２６に、当該監視対象サーバ４０のシリアル番号に合致するキーがあるか否かを判定する。合致するキーがある場合には（ＯＰ２１：Ｙ）、処理がＯＰ２３に進む。合致するキーがない場合には（ＯＰ２１：Ｎ）、処理がＯＰ２２に進む。
【００８１】
ＯＰ２２では、Ｍａｉｎスレッド２１は、タイマーにより所定の待ち時間が経過した後、処理がＯＰ２０に戻る。すなわち、Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５により当該監視対象サーバ４０のサーバ情報が性能情報格納テーブル２６に格納されるまでの間、ＯＰ２０からＯＰ２２までの処理を繰り返す。ＯＰ２３では、Ｍａｉｎスレッド２１は、当該監視対象サーバ４０の性能情報Ｌｉｓｔを取得し、Ｍａｉｎスレッド２１の処理を終了する。
【００８２】
図１６は、Ｍｏｎｉｔｏｒスレッド２３の処理のフローチャートの一例である。Ｍｏｎｉｔｏｒスレッド２３の処理は、例えば、Ｍａｉｎスレッド２１が、Ｍｏｎｉｔｏｒスレッド２３を生成し、開始することにより開始される。
【００８３】
ＯＰ３１では、Ｍｏｎｉｔｏｒスレッド２３は、キュー２４への登録処理のリトライ回数を初期化する。次に処理がＯＰ３２に進む。ＯＰ３２では、Ｍｏｎｉｔｏｒスレッド２３は、キュー２４に、接続情報を含むサーバ情報取得の指示を登録する。次に処理がＯＰ３３に進む。
【００８４】
ＯＰ３３では、Ｍｏｎｉｔｏｒスレッド２３は、ＯＰ３２の登録処理によりキューが溢れるか否かを判定する。キューが溢れる場合には（ＯＰ３３：Ｙ）、処理がＯＰ３４に進む。キューが溢れない場合には（ＯＰ３３：Ｎ）、処理がＯＰ４０に進む。
【００８５】
ＯＰ３４では、Ｍｏｎｉｔｏｒスレッド２３は、キュー２４への登録処理のリトライ回数を１増やす。次に処理がＯＰ３５に進む。ＯＰ３５では、Ｍｏｎｉｔｏｒスレッド２３は、キュー２４の待ち時間が、サーバ情報の採取間隔よりも小さいか否かを判定する。キュー２４の待ち時間は、キュー２４へのリトライ回数とリトライ間隔から算出することができる。キュー２４の待ち時間がサーバ情報の採取間隔よりも小さい場合には（ＯＰ３５：Ｙ）、処理がＯＰ４０に進む。キュー２４の待ち時間がサーバ情報の採取間隔以上の場合には（ＯＰ３５：Ｎ）、処理がＯＰ３６に進む。
【００８６】
ＯＰ３６では、Ｍｏｎｉｔｏｒスレッド２３は、タイマーにキューのリトライ間隔を代入する。次に処理がＯＰ３７に進む。ＯＰ３７では、Ｍｏｎｉｔｏｒスレッド２３は、タイマーをセットしスリープする（ＯＰ３８）。タイマーの待ち時間が経過すると、Ｍｏｎｉｔｏｒスレッド２３は、ウェイクアップをして（ＯＰ３９）、処理がＯＰ３２に戻る。
【００８７】
ＯＰ４０では、Ｍｏｎｉｔｏｒスレッド２３は、タイマーに“採取間隔−キュー待ち時間”を代入する。次に処理がＯＰ４１に進む。ＯＰ４１では、Ｍｏｎｉｔｏｒスレッド２３は、タイマーをセットしスリープする（ＯＰ４２）。タイマーの待ち時間が経過すると、Ｍｏｎｉｔｏｒスレッド２３は、ウェイクアップをして（ＯＰ４３）、処理がＯＰ３１に戻る。
【００８８】
図１７は、Ｍｏｎｉｔｏｒスレッド２３の接続情報更新処理のフローチャートの一例である。図１７の処理は、図１５のＯＰ１８の詳細な処理を示す。ＯＰ５１では、Ｍｏｎｉｔｏｒスレッド２３は、スレッド管理テーブル２２に保持するＯＳ接続情報において、ユーザＩＤおよびパスワードを更新する。処理が図１５のＯＰ１９に戻る。
【００８９】
図１８は、Ｗｏｒｋｅｒスレッド２５の処理のフローチャートの一例である。Ｗｏｒｋｅｒスレッド２５の処理は、例えば、Ｍｏｎｉｔｏｒスレッド２３がキュー２４にサーバ情報取得の指示を登録することにより開始される。
【００９０】
ＯＰ６１では、Ｗｏｒｋｅｒスレッド２５は、キュー２４にサーバ情報取得の指示が登録されているか否かを判定する。キュー２４にサーバ情報取得の指示が登録されている場合には（ＯＰ６１：Ｙ）、処理がＯＰ６４に進む。キュー２４にサーバ情報取得の指示が登録されていない場合には（ＯＰ６１：Ｎ）、処理がＯＰ６２に進む。ＯＰ６２では、Ｗｏｒｋｅｒスレッド２５は、スリープする。キュー２４にサーバ情報取得の指示が登録されると（ＯＰ６３）、処理がＯＰ６４に進む。
【００９１】
ＯＰ６４では、Ｗｏｒｋｅｒスレッド２５は、キュー２４から、接続情報を含むサーバ情報取得の指示を取り出す。次に処理がＯＰ６５に進む。ＯＰ６５では、Ｗｏｒｋｅｒスレッド２５は、監視対象サーバ４０からサーバ情報を採取する。次に処理がＯＰ６６に進む。
【００９２】
ＯＰ６６では、Ｗｏｒｋｅｒスレッド２５は、サーバ情報の採取に成功したか否かを判定する。サーバ情報の採取に成功した場合には（ＯＰ６６：Ｙ）、処理がＯＰ６７に進む。サーバ情報の採取に成功しなかった場合には（ＯＰ６６：Ｎ）、処理がＯＰ６８に進む。
【００９３】
ＯＰ６７では、Ｗｏｒｋｅｒスレッド２５は、採取したサーバ情報を編集する。サーバ
情報の編集は、ＣＰＵ使用率の算出等、採取したサーバ情報を性能情報格納テーブル２６に格納する値に編集することである。次に処理がＯＰ６９に進む。
【００９４】
ＯＰ６８では、Ｗｏｒｋｅｒスレッド２５は、当該監視対象サーバ４０の性能情報リストのエントリに空のデータを格納する。データが空のエントリは、当該監視対象サーバ４０との通信が不可能であったことを示す。次に処理がＯＰ６９に進む。
【００９５】
ＯＰ６９では、Ｗｏｒｋｅｒスレッド２５は、性能情報格納テーブル２６に、当該監視対象サーバ４０からの採取情報が既に存在するか否かを判定する。当該監視対象サーバ４０からの採取情報が既に存在する場合には（ＯＰ６９：Ｙ）、処理がＯＰ７０に進む。当該監視対象サーバ４０からの採取情報が存在しない場合には（ＯＰ６９：Ｎ）、処理がＯＰ７２に進む。
【００９６】
ＯＰ７０では、Ｗｏｒｋｅｒスレッド２５は、過去に採取した情報を格納した性能情報リストを取り出す。次に処理がＯＰ７１に進む。ＯＰ７１では、Ｗｏｒｋｅｒスレッド２５は、性能情報リストの最古のエントリを削除する。なお、性能情報リストに含まれるエントリの数が、所定の世代数より少ない場合は、Ｗｏｒｋｅｒスレッド２５は、最古のエントリを削除しなくてもよい。次に処理がＯＰ７２に進む。
【００９７】
ＯＰ７２では、Ｗｏｒｋｅｒスレッド２５は、性能情報リストの最新のエントリにＯＰ６５で採取した情報を格納する。次に処理がＯＰ７３に進む。ＯＰ７３では、Ｗｏｒｋｅｒスレッド２５は、性能情報リストを性能情報格納テーブル２６に登録する。次に処理がＯＰ６１に戻る。
【００９８】
＜実施形態の作用効果＞
監視対象サーバ４０を監視するためには、監視対象サーバ４０と１対１で管理スレッドが生成される。管理スレッドは、監視対象サーバ４０と通信をしてサーバ情報を採取するため、通信を伴わないスレッドよりも、メモリ使用量および通信負荷等の負荷が高い。このため、監視対象サーバ４０の増加にともなって負荷が高くなる。
【００９９】
本実施形態において、管理スレッドの役割は、Ｍｏｎｉｔｏｒスレッド２３およびＷｏｒｋｅｒスレッド２５によって分担される。Ｗｏｒｋｅｒスレッド２５は、他の処理よりも負荷が高い情報採取の処理等を分担する。また、Ｗｏｒｋｅｒスレッド２５の数は、監視対象サーバ４０の数より少ない数に制限される。Ｗｏｒｋｅｒスレッド２５の数を超えてサーバ情報取得の指示があった場合、超えた分の指示は、キュー２４に登録される。キュー２４に登録された指示は、処理を終えたＷｏｒｋｅｒスレッド２５によって取り出され、順次処理される。
【０１００】
このように、Ｗｏｒｋｅｒスレッド２５の数を制限して各監視対象サーバ４０の情報を採取することで、監視装置１０は、単位時間あたりの処理量を制限し、使用するリソースを抑制することができる。すなわち、監視装置１０は、Ｗｏｒｋｅｒスレッド２５に割り当てられるリソースを再利用することで、メモリの使用量、通信負荷等の負荷を抑制することができる。
【０１０１】
また、本実施形態において、１つのＷｏｒｋｅｒスレッド２５は、複数の監視対象サーバ４０から情報を採取する。このため、採取した情報は、Ｗｏｒｋｅｒスレッド２５とは別の性能情報格納テーブル２６に保持される。Ｍａｉｎスレッド２１は、性能情報格納テーブル２６をＷｏｒｋｅｒスレッド２５と共有する。したがって、Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５と通信することなく、また、Ｗｏｒｋｅｒスレッド２５の処理とは非同期に、性能情報格納テーブル２６から、採取した情報を取り出すことができ
る。これにより、Ｍａｉｎスレッド２１は、Ｗｏｒｋｅｒスレッド２５が処理中か否かに拘らず、マネージャ３０への応答が可能となり応答時間は短縮される。応答時間が短縮されることで、採取した情報が端末等の画面に表示されるまでの時間が短縮され、画面表示性能は改善される。  
【０１０２】
＜変形例１＞
図１９は、監視対象サーバ４０とＭｏｎｉｔｏｒスレッド２３をシリアル番号で対応付ける変形例１を示す図である。図１９において、監視対象サーバ４０のＩＰアドレスは、“192.168.1.1”から“192.168.1.2”に変更される。また、スレッド管理テーブル２２は、図１１の場合と異なり、ＩＰアドレスではなくシリアル番号をキーとする。監視対象サーバ４０は、シリアル番号“SQ1234AB00001”により、Ｍｏｎｉｔｏｒスレッド２３であ
る“Monitor 1”と対応付けられる。
【０１０３】
ＩＰアドレスの変更前、“Monitor 1”は、サーバ情報取得の依頼を受け付けると（Ｄ
１）、Ｗｏｒｋｅｒスレッド２５に対して監視対象サーバ４０の情報採取を指示する（Ｄ２）。Ｗｏｒｋｅｒスレッド２５は、図１２に示す性能情報格納テーブル２６から、シリアル番号“SQ1234AB00001”に対応付けられる“性能情報LIST1”を取得する。
【０１０４】
“性能情報LIST1”は、最新世代、一つ前世代、最古世代の３世代の性能情報のエント
リを有する。Ｗｏｒｋｅｒスレッド２５は、一つ前世代のエントリに、監視対象サーバ４０から取得した性能情報を格納する（Ｄ３）。このとき、監視対象サーバ４０のＩＰアドレスは変更前の“192.168.1.1”である。
【０１０５】
次に、ＩＰアドレスの変更後、“Monitor 1”は、サーバ情報取得の依頼を受け付ける
と（Ｄ１）、Ｗｏｒｋｅｒスレッド２５に対して監視対象サーバ４０の情報採取を指示する（Ｄ４）。ＩＰアドレスの変更前と同様に、Ｗｏｒｋｅｒスレッド２５は、“性能情報LIST1”を取得する。ＩＰアドレスが変更されても、シリアル番号は変わらないため、変
更前と同じ“性能情報LIST1”が取得される。Ｗｏｒｋｅｒスレッド２５は、最新世代の
エントリに、監視対象サーバ４０から取得した性能情報を格納する（Ｄ５）。このとき、ＩＰアドレスの変更後であるため、監視対象サーバ４０のＩＰアドレスは“192.168.1.2
”である。
【０１０６】
なお、図１９の変形例１における処理の流れは、図１５から図１８とほぼ同様であるため、異なる点が説明される。図１５のＯＰ１３では、Ｍａｉｎスレッド２１は、スレッド管理テーブル２２に、監視対象サーバ４０のＩＰアドレスではなく、シリアル番号に合致するキーがあるか否かを判定する。また、図１７のＯＰ５１では、Ｍｏｎｉｔｏｒスレッド２３は、スレッド管理テーブル２２に保持するＯＳ接続情報において、ユーザＩＤおよびパスワードの他、ＩＰアドレスも更新する。
【０１０７】
変形例１は、ＩＰアドレスではなくシリアル番号をキーとして、監視対象サーバ４０とＭｏｎｉｔｏｒスレッド２３を対応づける。性能情報はシリアル番号をキーとして性能情報格納テーブル２６に格納されるため、同一の監視対象サーバ４０に対するサーバ情報は、ＩＰアドレスが変更された場合でも、シリアル番号をキーとして取得することができる。
【０１０８】
＜変形例２＞
図２０は、監視対象サーバ４０が複数のＯＳを有する変形例２を示す図である。図２０において、監視対象サーバ４０は、ＩＰアドレスが“192.168.1.1”のＯＳ１と“192.168.1.2”のＯＳ２を有する。ＯＳ１は、図１１のスレッド管理テーブル２２を参照して、“Monitor 1”と対応付けられる。同様に、ＯＳ２は、“Monitor 2”と対応付けられる。
【０１０９】
“Monitor 1”は、サーバ情報取得の依頼を受け付けると（Ｅ１）、Ｗｏｒｋｅｒスレ
ッド２５に対して監視対象サーバ４０の情報採取を指示する（Ｅ２）。Ｗｏｒｋｅｒスレッド２５は、性能情報格納テーブル２６から、シリアル番号“SQ1234AB00001”に対応付
けられる“OS_LIST1”を取得する（Ｅ３）。Ｗｏｒｋｅｒスレッド２５は、“OS_LIST1”に監視対象サーバ４０から取得した性能情報を格納する（Ｅ４）。
【０１１０】
同様に、“Monitor 2”は、サーバ情報取得の依頼を受け付けると（Ｅ５）、Ｗｏｒｋ
ｅｒスレッド２５に対して監視対象サーバ４０の情報採取を指示する（Ｅ６）。Ｗｏｒｋｅｒスレッド２５は、性能情報格納テーブル２６から、シリアル番号“SQ1234AB00001”
に対応付けられる“OS_LIST1”を取得する（Ｅ７）。Ｗｏｒｋｅｒスレッド２５は、“OS_LIST1”に監視対象サーバ４０から取得した性能情報を格納する（Ｅ４）。
【０１１１】
なお、図２０の変形例２におけるＭａｉｎスレッド２１およびＭｏｎｉｔｏｒスレッド２３の処理の流れは、図１５から図１７と同様である。Ｗｏｒｋｅｒスレッド２５に対して監視対象サーバ４０の情報採取を指示する（Ｅ２）。Ｗｏｒｋｅｒスレッド２５の処理の流れは、図２１に示される。
【０１１２】
図２１は、変形例２におけるＷｏｒｋｅｒスレッドの処理のフローチャートの一例である。ＯＰ６１からＯＰ７３までの処理は図１８とほぼ同様であるため、同一の符号を付して説明は省略される。
【０１１３】
ＯＰ６９では、Ｗｏｒｋｅｒスレッド２５は、性能情報格納テーブル２６に、監視対象サーバ４０に対応するＯＳ＿ＬＩＳＴが存在するか否かを判定する。当該監視対象サーバ４０に対応するＯＳ＿ＬＩＳＴが存在する場合には（ＯＰ６９：Ｙ）、処理がＯＰ７４に進む。当該監視対象サーバ４０に対応するＯＳ＿ＬＩＳＴが存在しない場合には（ＯＰ６９：Ｎ）、処理がＯＰ７５に進む。
【０１１４】
ＯＰ７４では、Ｗｏｒｋｅｒスレッド２５は、性能情報格納テーブル２６から取得したＯＳ＿ＬＩＳＴに、当該監視対象サーバ４０からの採取情報が既に存在するか否かを判定する。当該監視対象サーバ４０からの採取情報が既に存在する場合には（ＯＰ７４：Ｙ）、処理がＯＰ７０に進む。当該監視対象サーバ４０からの採取情報が存在しない場合には（ＯＰ７４：Ｎ）、処理がＯＰ７６に進む。
【０１１５】
ＯＰ７５では、Ｗｏｒｋｅｒスレッド２５は、性能情報格納テーブル２６に、当該監視対象サーバ４０に対応するＯＳ＿ＬＩＳＴを登録する。ＯＳ＿ＬＩＳＴには、当該監視対象サーバ４０が有するＯＳのＩＰアドレスが登録される。次に処理がＯＰ７２に進む。ＯＰ７６では、Ｗｏｒｋｅｒスレッド２５は、当該監視対象サーバ４０に対応するＯＳ＿ＬＩＳＴを最新の状態に更新する。次に処理がＯＰ７２に進む。
【０１１６】
変形例２は、監視対象サーバ４０が複数のＯＳを有する場合、各ＯＳに対応するＭｏｎｉｔｏｒスレッド２３が生成される。また、ＯＳ＿ＬＩＳＴを介して、ＯＳごとに性能情報リストが生成される。これにより、監視対象サーバ４０が複数のＯＳを有する場合でも、ＯＳごとにサーバ情報を取得することができる。
【０１１７】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１１８】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ（リードオンリーメモリ）等がある。さらに、Solid State Drive（ＳＳＤ）はコンピュータ等から取り外し可能な記録媒体としても、コンピュータ等
に固定された記録媒体としても利用可能である。
【符号の説明】
【０１１９】
１        情報処理システム
１０      監視装置
１１      プロセッサ
１２      主記憶装置
１３      補助記憶装置
１４      入力装置
１５      出力装置
１６      ネットワークインタフェース
１７      バス
２０      サーバ情報取得ＡＰＩ処理部
２１      Ｍａｉｎスレッド
２２      スレッド管理テーブル
２３      Ｍｏｎｉｔｏｒスレッド
２４      キュー
２５      Ｗｏｒｋｅｒスレッド
２６      性能情報格納テーブル
３０      マネージャ
４０      監視対象サーバ
４１      サーバ管理機構
４２      ＯＳ
【図１】
2016130892.tif 000003
【図２Ａ】
2016130892.tif 000004
【図２Ｂ】
2016130892.tif 000005
【図３】
2016130892.tif 000006
【図４】
2016130892.tif 000007
【図５】
2016130892.tif 000008
【図６】
2016130892.tif 000009
【図７】
2016130892.tif 000010
【図８】
2016130892.tif 000011
【図９】
2016130892.tif 000012
【図１０】
2016130892.tif 000013
【図１１】
2016130892.tif 000014
【図１２】
2016130892.tif 000015
【図１３】
2016130892.tif 000016
【図１４】
2016130892.tif 000017
【図１５】
2016130892.tif 000018
【図１６】
2016130892.tif 000019
【図１７】
2016130892.tif 000020
【図１８】
2016130892.tif 000021
【図１９】
2016130892.tif 000022
【図２０】
2016130892.tif 000023
【図２１】
2016130892.tif 000024