以後の説明では「aaaテーブル」、「aaaリスト」、「aaaDB(Database)」、(aaaは任意の文字列)等の表現にて本実施例の情報を説明するが、これら情報は必ずしもその形式で情報が保存されている必要は無く、テーブル、リスト、DB、キュー、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaリスト」、「aaaDB」等について「aaa情報」と称することがある。
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID(IDentification)」という表現を用いるが、これらについてはお互いに置換が可能である。
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御デバイス)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部又は全ては専用ハードウェアによって実現されてもよい。
また、各種プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。この場合、プログラム配布サーバは、プロセッサと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶する。そして、配布プログラムをプロセッサが実行することで、プログラム配布サーバのプロセッサは、配布対象のプログラムを他の計算機に配布する。
また、計算機は入出力装置を有する。入出力装置の例としてはディスプレイと、キーボードと、ポインタデバイスと、タブレット端末と、スマートフォンとが考えられるが、これ以外のデバイスであってもよい。また、入出力デバイスの代替としてシリアルインタフェースやイーサーネットインタフェースを入出力デバイスとし、当該インタフェースにディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機を接続し、表示用情報を表示用計算機に送信したり、入力用情報を表示用計算機から受信することで、表示用計算機で表示を行ったり、入力を受け付けることで入出力装置での入力及び表示を代替してもよい。なお、以後インタフェースのことをI/Fと記述することがある。
また、計算機は通信I/Fを有する。通信I/Fの例としては、LAN(Local Area Network)接続端子と、SAN(Storage Area Network)の接続端子と、無線通信の接続装置と、が考えられるが、これら以外のデバイスであってもよい。
以後、情報処理システムを管理し、本実施例の表示用情報を表示する一つ以上の計算機の集合を管理システムと呼ぶことがある。管理用の計算機(以下、管理サーバ)が表示用情報を表示する場合は管理サーバが管理システムである、また、管理サーバと表示用計算機の組み合わせも管理システムである。また、管理処理の高速化や高信頼化のために複数の計算機で管理サーバと同等の処理を実現してもよく、この場合は当該複数の計算機(表示を表示用計算機が行う場合は表示用計算機も含む)が管理システムである。
<問題解決処理の例>
図1は、本発明の第一の実施形態にかかる計算機システムにおける影響分析処理の効果を示す図である。
計算機システム1は、本実施例が適用されない計算機システムの例である。計算機システム1は、管理されるサーバ装置203と、管理されるストレージ装置204と、サーバ装置203上で稼動するアプリケーションプログラム250と、各装置を管理する管理サーバ201と、管理される装置上で稼動するミドルウェアアプリケーションとアプリケーションとを含む。
管理サーバ201は、管理されるストレージ装置204における問題が発生を検知して、アプリケーション性能と管理されるITリソースの稼働状況との相関分析によって、影響を受けるアプリケーションがアプリ2及びアプリ3であることを算出する。しかしながら、アプリ2及びアプリ3のどの処理に影響が生じるかは特定できない。
また、新規のアプリケーションに関しては、アプリケーション性能とITリソース稼働状況との相関に関する学習データが不十分なため、ITリソースであるストレージ装置204で発生した問題の影響を受けるか否かを判定できない。ここで、計算機システム1での問題とは、何らかの異常の発生や、異常の予兆である。アプリケーション管理者は、ITリソースで問題が発生した場合、アプリケーションの利用者に影響が生じる前に対処したいが、通常、アプリケーションは複数の処理を含むサービスを提供しており、同じITリソースの問題であっても処理によって影響の有無や程度が異なる。例えば、ディスクIOがボトルネックである場合、長期間の傾向データを検索するような大量のディスクアクセスが発生する処理は影響を受けるが、インメモリシミュレーションのようなディスクアクセスが発生しない処理は影響を受けない。
そのため、計算機システム1では、アプリケーション単位で影響の有無が分かっても、影響が生じる処理が分からず、必要な対応が判断できず、有効な対策を講ずるまでに時間がかかる。また、新規のアプリケーションに関しては、相関に関する学習データが不十分なため、相関分析によって影響の有無や程度を分析できない。
計算機システム2は、本実施例が適用された計算機システムの例である。従来の計算機システム1ではアプリケーション性能とITリソースの稼働状況の相関により影響を分析するが、計算機システム2ではアプリケーションから処理特性を抽出し、処理特性とITリソースとの相関により影響を分析する。これにより、ITリソースで問題が発生した時に、アプリケーションの処理単位での影響の有無を分析できる。また、アプリケーションに含まれる処理と処理の特性とを関連付けることによって、新規のアプリケーションでも、既存の相関関係を用いて影響を分析できる。
前述の通り、本実施例の方法は、影響分析処理において、アプリケーションの処理の特性を利用し、処理単位での影響の有無を判定できる効果を有する。
なお、図1に例示するシステム構成は、説明の簡易化のために、図2以降で説明する詳細なシステム構成の一部を省略し、一部を誇張して表している。
<実施例1>
図2は、本発明の第一の実施例におけるシステムの構成例を示すブロック図である。
第一の実施例のシステムは、管理サーバ201と、管理サーバ201が管理する計算機システムを含む。管理サーバ201が管理する計算機システムは、サーバ装置203と、ストレージ装置204と、ネットワーク装置205と、クラウドサービス206とが、ネットワーク207やSAN(Storage Area Network)を介して相互に接続されて構成される。
また、例えば、管理サーバ201や、管理サーバ201内のプロセッサ211、主記憶デバイス212など、システムに含まれる各コンポーネントは、それぞれ一つずつしか図示していないが、それぞれが複数設けられてもよい。
管理サーバ201は、プロセッサ211と、主記憶デバイス212と、補助記憶装置213と、通信インタフェースとを有するコンピュータである。
プロセッサ211は、主記憶デバイス212に格納されたプログラムを実行する。具体的には、プロセッサ211は、相関学習処理プログラム220と、影響分析処理プログラム221と、イベント検出プログラム222とを実行する。なお、相関学習処理プログラム220と、影響分析処理プログラム221と、イベント検出プログラム222との一部又は全部は、プロセッサ211で実行される代わりに、例えば集積回路(Field-Programmable Gate Array)などのハードウェアで実現してもよい。
主記憶デバイス212は、不揮発性の記憶デバイスであるROM及び揮発性の記憶デバイスであるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶デバイスであり、プロセッサ211が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。具体的には、主記憶デバイス212は、相関学習処理プログラム220と、影響分析処理プログラム221と、イベント検出プログラム222と、対策生成プログラム224とを記憶する。
補助記憶装置213は、例えば、磁気記憶装置(HDD)、フラッシュメモリ(SSD)等の大容量かつ不揮発性の記憶デバイスによって構成され、プログラムの実行時に使用されるデータを格納する。補助記憶装置213は、外部装置へのI/F(不図示)や通信インタフェース216を介して管理サーバ201に接続される外部の記憶装置、例えばストレージ装置204でもよい。また、主記憶デバイス212と補助記憶デバイス213とが同一デバイスでもよい。
具体的には、補助記憶装置213は、処理特性231と、相関データ232と、構成情報233と、稼動データ234と、対策データ235とを格納する。処理特性231と、相関データ232と、構成情報233と、稼動データ234とは、それぞれ異なる補助記憶装置213に格納されてもよいし、その一部又は全部が主記憶デバイス212に格納されてもよいし、ネットワーク207を介して接続される別のサーバ装置203上の主記憶デバイス252や補助記憶装置254に格納されてもよいし、ネットワーク207を介して接続される別のストレージ装置204の補助記憶装置263に格納されてもよい。
処理特性231は、処理の種類の違いや、処理するデータ量や、扱うデータの種類などの処理の特徴量の情報である、例えば、処理特性231は、データベースに対する検索処理であるか、登録処理であるか、更新処理であるか、削除処理であるかなどの処理の種類でよい。処理特性231の詳細は図3で後述する。
相関データ232は、管理サーバが監視する計算機システムの監視情報間の相互の関係の情報である。例えば、相関データ232は、アプリケーションプログラムの応答時間とサーバ装置203のプロセッサの使用率との相互の関係の情報でよい。相関データ232の詳細は図4で後述する。
また、相関データ232は、管理サーバ201の稼動データ間の相関を含んでもよい。例えば、相関データ232は、サーバ装置203のアプリケーションプログラム250の応答時間が遅いときにクラウドサービス206の応答時間も遅いという関係や、ストレージ装置204の論理ボリューム260のIOPSが高いときにアプリケーションプログラム250のジョブの実行時間が遅いという関係や、サーバ装置203のアプリケーションプログラムの単位時間あたりのログ件数が多いときにアプリケーションプログラムの応答時間が遅いという関係の情報でよい。なお、相関データ232は、管理サーバ201が管理する計算機システムで使用されるデータ間の相関が分かればよい。この相関は、相関式の形式でもよいし、相関度が高い、低いなどの定性的な値でもよい。
構成情報233は、管理される装置間の接続関係や、管理されるアプリケーションプログラムと管理される装置との関係の情報である。構成情報233の詳細は図5、図6で後述する。
稼動データ234は、管理サーバ201が管理する装置群や、当該装置で実行されるプログラムの稼動データである。例えば、アプリケーションプログラム250が出力する稼動ログや、仮想マシンの構成変更ログや、ストレージ装置204の論理ボリューム260の時系列のIOPS実績データでよい。
対策データ235は、影響範囲の分析結果とともに表示される対策案のデータである。
また、補助記憶装置213は、プロセッサ211が実行するプログラムを格納してもよい。すなわち、プログラムは、補助記憶装置213から読み出されて、主記憶デバイス212にロードされて、プロセッサ211によって実行される。
通信インタフェース216は、所定のプロトコルに従って、ネットワーク207に接続された他の装置(操作端末202、サーバ装置203など)との通信を制御するネットワークインタフェース装置(NIC)である。
管理サーバ201は、入力インタフェース及び出力インタフェースを有してもよい。入力インタフェースは、キーボードやマウスなどが接続され、管理者からの入力を受けるインタフェースである。出力インタフェースは、ディスプレイ装置やプリンタなどが接続され、管理サーバ201の状態やプログラムの実行結果を管理者が視認可能な形式で出力するインタフェースである。
プロセッサ211が実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して管理サーバ201に提供され、非一時的記憶媒体である不揮発性の補助記憶装置213に格納される。このため、管理サーバ201は、リムーバブルメディアからデータを読み込むインタフェースを有するとよい。
管理サーバ201は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、管理サーバ201上で実行されるプログラムは、同一の計算機上で別個のスレッドで動作してもよい。
また、管理サーバ201には、操作端末202が接続されてもよい。操作端末202は、管理サーバ201を操作するコンピュータである。操作端末202は、入出力装置241を有する。入出力装置241は、管理者の操作によりデータを入出力する装置(例えば、キーボード、マウス、ディスプレイ装置、プリンタなど)である。入出力装置241に入力されたデータは、ネットワーク207を介して管理サーバ201に送信される。出力装置242は、管理サーバ201からのデータを出力するディスプレイ装置やプリンタなどである。
サーバ装置203は、管理サーバ201に監視されるコンピュータであり、アプリケーションプログラムを実行する。サーバ装置203は、アプリケーションプログラム250と、プロセッサ251と、主記憶デバイス252と、補助記憶装置253とを含む。
アプリケーションプログラム250は、例えば、資材発注アプリケーションや電子商取引アプリケーションなどの業務サービスを提供するアプリケーションや、業務サービスを提供するアプリケーションが内部的に利用するアプリケーション(データベースなど)や、仮想マシンを提供するアプリケーション(Hypervisorなど)や、コンテナサービスを提供するOSなど、様々なアプリケーションプログラムを含む。サーバ装置203は、アプリケーションプログラムを実行できればよく、例えば、仮想計算機やコンテナなど、必ずしも物理的なサーバ装置の形態でなくてもよい。そのため、サーバ装置203は、必ずしも、物理的なプロセッサ251や主記憶デバイス252や補助記憶装置253を含まなくてもよいし、不図示のコンポーネントを含んでもよい。
ストレージ装置204は、管理サーバ201に管理される装置であり、サーバ203上で動作するプログラムや、管理サーバ201上で動作するプログラムが利用する記憶領域を提供する。ストレージ装置204は、論理ボリューム260と、通信I/F261と、IO処理ユニット262と、補助記憶装置263とを有する。
補助記憶装置263は複数の不揮発性記憶デバイスを、例えばRAID(Redundant Arrays of Inexpensive Disks)などによって冗長化して、論理ボリューム260として提供してもよい。また、複数のRAID化された補助記憶装置263が仮想的に一つの補助記憶装置263として制御されてもよい。論理ボリューム260は、補助記憶装置263の記憶領域によって構成される。論理ボリューム260へのデータは、通信I/F261を経由して入出力され、IO処理ユニット262がデータの入出力を制御する。ストレージ装置204は、例えば主記憶デバイスなど、不図示のコンポーネントを含んでもよい。
ネットワーク装置205は、管理サーバ201に管理される装置であり、複数の通信I/F270を有する。ネットワーク装置205は、計算機システム中で、複数の装置を接続して、データを転送する。例えば、ネットワーク装置205は、複数のサーバ装置203間を接続したり、複数のストレージ装置204間を接続したり、サーバ装置203とストレージ装置204とを接続する。代表的なネットワーク装置として、例えばIP(Internet Protocol)スイッチやFC(Fiber Channel)スイッチがあるが、ネットワーク装置205は他の種類の装置でもよい。
クラウドサービス206は、管理サーバ201に管理される仮想的な装置であり、インターネットを介してサービスを提供するコンピュータである。クラウドサービス206の代表的な例としては、インターネットを介して提供されるサーバ装置203の機能や、インターネットを介して提供されるストレージ装置204の機能があるが、他のサービスを提供する機能でもよい。
なお、イベント検出プログラム222は、管理サーバ201ではなく、管理サーバ201が管理する計算機システム上に存在していてもよい。
図3は、第一の実施例における処理特性231の一例を示す図である。
処理特性231は、アプリケーションプログラムの処理の特徴量を分類した情報が、例えばテーブル形式で保持されており、予め手動又は他のプログラムによって用意される。以後、処理特性と処理の特徴量との二通りの表現をすることがあるが、同じ情報を意味する。処理特性231は、IDフィールド301と、処理内容フィールド302と、データ量フィールド303と、データ保存形式フィールド304とを含む。
IDフィールド301は、処理特性の分類を一意に特定する識別情報を格納する。処理内容フィールド302と、データ量フィールド303と、データ保存形式フィールド304とは、アプリケーションによる処理の特徴量を格納する。処理の特徴量は、アプリケーションから抽出される。処理特性231は、例示したフィールドの一部を含まなくてもよいし、不図示の他のフィールドを含んでもよい。また、処理特性231に含まれるフィールドが複数のテーブルに分割して保存されてもよい。
図4は、相関データ232の一例を示す図である。
相関データ232は、処理特性により分類されるアプリケーションの性能と計算機システムの稼動データとの相関の情報が、例えばテーブル形式で保持されており、予め手動又は他のプログラムによって用意される。相関データ232は、IDフィールド401と、SV CPUフィールド402と、SV Memフィールド403と、ST LUフィールド404とを含む。
IDフィールド401は、処理特性231の分類を一意に特定する識別情報であり、処理特性231のIDフィールド301と共通の値を格納する。SV CPUフィールド402と、SV Memフィールド403と、ST LUフィールド404とは、管理サーバ201が監視する計算機システムの稼動データの監視項目に関連する情報である。相関データ232は、例示したフィールドのうち一部のフィールドを含まなくてもよいし、不図示の他のフィールドを含んでもよい。また、これらのフィールドが複数のテーブルに分割して保存されてもよい。
SV CPUフィールド402は、サーバ装置203のプロセッサ211の稼動データと処理特性231のアプリケーション性能との相関情報を格納する。また、SV Memフィールド403は、サーバ装置203の主記憶デバイス212の稼動データと処理特性231のアプリケーション性能との相関情報を格納し、ST LUフィールド404は、ストレージ装置204の論理ボリューム260の稼動データと処理特性231のアプリケーション性能との相関情報を格納する。ここでは簡易化のために、相関データを大中といったレベルを示す文字列で格納しているが、例えば相関式などの計算式の形で相関を保持してもよいし、相関度をクラスタリングなどの処理でクラス分けして算出したクラスの形で相関を保持してもよいし、その他の形式で相関を保持してもよい。
また、論理ボリューム260の稼動データには、例えば応答時間やIOPS(単位時間当たりの入出力処理リクエスト数)など、複数の監視項目が存在しているが、本実施例では簡易化のために省略して記載する。計算機システムの構成要素の監視項目ごとに、処理特性との相関データを保持してもよい。
次に、図5及び図6を用いて、前述した構成情報233の一例を説明する。構成情報233は、図5に示す計算機システムの構成情報テーブル500と、図6に示すアプリケーションの構成情報テーブル600とを含む。
図5は、計算機システムの構成情報テーブル500の一例を示す図である。
計算機システムの構成情報テーブル500は、管理サーバ201が管理する計算機システムの構成要素の論理的又は物理的な接続関係の情報が、例えばテーブル形式で保持されており、予め手動又は他のプログラムによって用意される。計算機システムの構成情報テーブル500は、アプリフィールド501と、サーバフィールド502と、プロセッサフィールド503と、ストレージフィールド504と、論理ボリュームフィールド505とを含む。
アプリフィールド501は、アプリケーションを一意に特定するための識別情報を格納する。サーバフィールド502は、アプリケーションが稼動しているサーバ装置203を特定するための識別情報を格納する。プロセッサフィールド503は、アプリケーションを実行しているプロセッサ211を特定するための識別情報を格納する。ストレージフィールド504は、アプリケーションが利用するデータを保存するストレージ装置204を特定するための識別情報を格納する。論理ボリュームフィールド505は、アプリケーションが利用するデータを保存する論理ボリューム260を特定するための識別情報を格納する。
計算機システムの構成情報テーブル500は、例示したフィールドの一部を含まなくてもよいし、不図示の他のフィールドを含んでもよい。また、これらのフィールドが複数のテーブルに分割して保存されてもよい。不図示の他のフィールドとして、例えば、クラウドサービス206に関するサービスのバージョン情報やAPI仕様のバージョンの情報が記録されてもよいし、ストレージ装置204の補助記憶装置263の記憶媒体の種類(HDD(Hard Disk Drive)であるか、SSD(Solid State Disk)であるか等)や、サーバ装置203のプロセッサ251の性能(動作周波数など)の情報が記録されてもよい。計算機システムの構成情報テーブル500は、管理サーバ201が管理する計算機システムのコンポーネント、例えば、サーバ装置203のアプリケーションプログラム250や、ストレージ装置204の論理ボリューム260など、稼動データを取得する対象であれば、全てのコンポーネントのデータが記録されていることが望ましい。
図6は、アプリケーションの構成情報テーブル600の一例を示す図である。
アプリケーションの構成情報テーブル600は、管理サーバ201が管理するアプリケーションにおいて実行される処理と処理特性との対応関係の情報が、例えばテーブル形式で保持されており、予め手動又は他のアプリケーションプログラムによって用意される。アプリケーションの構成情報テーブル600は、IDフィールド601と、アプリフィールド602と、処理フィールド603と、処理特性フィールド604とを含む。IDフィールド601は、アプリケーションにおいて実行される処理を一意に特定する識別情報を格納する。アプリフィールド602は、処理がどのアプリケーションに含まれるのかを特定する識別情報を格納する。処理フィールド603は、処理が実行される目的を人が認識できる見出しを格納する。処理特性フィールド604は、処理の特性を格納する。一つの処理に複数の処理特性が対応する場合もある。アプリケーションの構成情報テーブル600は、例示したフィールドの一部を含まなくてもよいし、不図示の他のフィールドを含んでもよい。また、これらのフィールドが複数のテーブルに分割して保存されてもよい。
次に、管理サーバ201が実行する相関学習処理を説明する。相関学習処理は、管理サーバ201のプロセッサ211が相関学習処理プログラム220を実行することによって実現される処理である。
図7は、管理サーバ201が実行する相関学習処理の手順例を示すフローチャートである。
まず、相関学習処理が実行される際のトリガを説明する。相関学習処理は、管理者からの指示によって実行されてよい。管理者の指示は、操作端末202の入出力装置241又は管理サーバ201の不図示の入出力装置から入力される。また、管理サーバ201が他のプログラムの出力結果を受けて、相関学習処理を実行してもよい。また、相関学習処理は、所定のタイミングで実行されてもよい。所定のタイミングは、定期的(例えば、1時間ごと)であったり、スケジューラに指定された時刻の到来を契機でよい。また、管理サーバ201が、管理される計算機システムの構成変更(例えば、アプリケーションプログラムの更新、仮想マシンのマイグレーションなど)を検出した場合に相関学習処理を実行してもよい。また、管理サーバ201が、管理される計算機システムの挙動の変化(例えば、ユーザからアプリケーションへのアクセスの傾向の変化、アクセスするデータ量の変化、管理される計算機システムの稼動データが閾値を超過、管理される計算機システムの稼動データが特定のパターンに一致など)を検出した場合に相関学習処理を実行してもよい。また、管理者による障害対策の実行の完了を検出した場合に相関学習処理を実行してもよい。また、管理サーバ201が記憶している相関データに基づいて算出された予測値と実測値との差異を検出した場合に相関学習処理を実行してもよい。これらの相関学習処理の契機となる事象は、イベント検出プログラム222によって検出されるとよい。
図7に示すように、管理サーバ201は、処理特性の抽出処理(ステップS701)、構成情報の更新処理(ステップS702)及び相関の分析処理(ステップS703)を実行する。相関学習処理フロー700は、不図示の他の処理ステップを含んでもよい。また、各処理ステップは、影響分析処理221が実行されるまでに1回以上実行さればよく、2回目以降に相関学習処理フロー700が実行される場合は、図示する処理ステップの一部が実行されなくてもよい。また、相関学習処理フロー700では、図示する処理ステップを実行する順序が異なってもよい。
処理特性の抽出処理(ステップS701)では、管理サーバ201は、アプリケーションが実行する処理の特徴量を抽出し、抽出した処理の特徴量を処理特性231に登録する。例えば、アプリケーションの稼動データから処理の実行時間を取得して、取得した実行時間を他のアプリケーションによりクラスタリングして特徴量を抽出する。また、データベースへのアクセスログから、処理が登録処理か、読み込み処理か、更新処理か、削除処理かを分類して特徴量を抽出してもよい。また、アプリケーションの稼動データからアクセスするデータ量を比較して特徴量を抽出してもよい。また、ユーザのアプリケーションのログイン履歴から、アプリケーションユーザ数を取得して特徴量を抽出してもよい。これらの特徴量の抽出処理は、手動で行ってもよい。処理特性の抽出処理(ステップS701)によって、処理の新たな特徴量が抽出できない場合、処理特性231に処理の特徴量が登録されなくてもよい。処理特性の抽出処理(ステップS701)の実行によって、新たにデータレコードが追加されてもよい。処理の新たな特徴量が検出され、データフィールドが増加してもよい。処理の特徴量の再計算によりデータフィールドが減少してもよい。
構成情報の更新処理(ステップS702)では、管理サーバ201は、管理される計算機システムの構成情報を取得する。例えば、管理サーバ201は、仮想マシンがマイグレーションして、稼動するサーバ装置203が変更されたことを検出し、構成情報233に含まれる計算機システムの構成情報テーブル500を更新する。また、アプリケーションが同じ処理を実行しても、データ量の増加に伴い処理特性が変化した場合、構成情報233に含まれるアプリケーションの構成情報テーブル600の処理特性604を再度算出してもよい。また、アプリケーションの更新に伴い新機能が追加された場合、構成情報233に含まれるアプリケーションの構成情報テーブル600に新たなデータレコードを追加してもよい。また、クラウドサービス206の更新に伴ってAPI仕様の変更を検出して、構成情報233に含まれる計算機システムの構成情報テーブル500を更新してもよい。また、異常に例示した以外の処理を実行してもよい。
相関の分析処理(ステップS703)では、管理サーバ201は、管理される計算機システムの稼動データと、処理特性231の特徴量を有するアプリケーションの処理性能との相関を分析し、相関データ232を更新する。例えば、ストレージ装置204の論理ボリュームへのIOPSが所定の値を超えた場合、処理特性231のID301がC2に該当するアプリケーションの処理群の応答時間が一様に増加する場合、ストレージ装置204の論理ボリュームのIOPSの増加と処理特性C2とを分析し、両者の相関度が高いという情報を記憶する。相関の分析処理は、手動又は他のプログラムによって実行されてもよい。相関の分析処理(ステップS703)で新たな相関関係が検出されなかった場合、相関データ232が更新されなくてもよい。また、相関の分析処理(ステップS703)では、相関データ232のデータフィールドに対応する相関を分析するのに十分な学習データが無い場合、例えば、相関データ232において図4に不図示のデータフィールドとしてストレージ装置204のIO処理ユニット262に対応するST CPUフィールドが追加された場合に、相関を分析するために充分な量の稼動データ234として、IO処理ユニット及びアプリケーションプログラムの稼動データが存在しない場合、管理サーバ201が管理する計算機システムで他のプログラムによる処理を実行し、相関の分析に充分な稼動データを生成し、相関の分析処理(ステップS703)による効果を高めてもよい。
次に、管理サーバ201が実行する影響分析処理を説明する。影響分析処理は、管理サーバ201のプロセッサ211が影響分析処理プログラム221を実行することによって実現される処理である。
図8は、管理サーバ201が実行する影響分析処理の手順例を示すフローチャートである。影響分析処理は、管理サーバ201の入力装置214から入力される管理者からの指示によって実行されてもよい。また、影響分析処理は、他のプログラムからの指示を受けて、管理サーバ201が実行してもよい。また、管理サーバ201が管理する計算機システムが送信した問題発生の通知を、管理サーバ201は、通信インタフェース216を介して受信した場合に、影響分析処理を実行してもよい。
図8に示すように、管理サーバ201は、計算機システムの問題検出処理(ステップS801)、関連アプリの特定処理(ステップS802)、処理毎の影響分析処理(ステップS803)、対策の生成処理(ステップS804)及び対策の実行処理(ステップS805)を実行する。影響分析処理フロー800は、不図示の他の処理ステップを含んでもよい。また、図示する処理ステップの一部が実行されなくてもよい。
計算機システムの問題検出処理(ステップS801)では、管理サーバ201は、管理される計算機システムで発生している問題を検出する。例えば、収集した計算機システムの稼動データと当該稼動データの閾値とを比較し、稼動データが閾値を超えている場合に、問題が発生したことを検出する。また、例えば、計算機システムの稼動データのテキストを解析し、「Error」や「警告」などの特定の文字列が含まれる場合に、問題が発生したことを検出してもよい。また、例えば、稼動データの増加傾向から、数日以内に稼動データが閾値を超過することが予測される場合に、問題発生の予兆を検出してもよい。計算機システムの問題検出処理は、イベント検出プログラム222によって実行されるとよい。計算機システムの問題を検出した場合、問題が発生した箇所として、構成情報233の計算機システムの構成情報テーブル500のレコードを特定可能な情報を出力する。例えば、名称がストレージ1であるストレージ装置204内の名称がLU2である論理ボリュームで問題が発生したことが分かる情報である。
関連アプリの特定(ステップS802)では、管理サーバ201は、問題が発生している計算機システムと関連するアプリケーションを特定する。管理サーバ201は、構成情報233の計算機システムの構成情報テーブル500のうち、計算機システムの問題検出(ステップS801)で検出した問題が発生したフィールドに該当する計算機システムと接続関係にあるアプリフィールド501を抽出し、出力する。例えば、図5に図示する計算機システムの構成情報テーブル500のうち、ストレージフィールド504がストレージ1であり、論理ボリュームフィールド505がLU2に該当するのはアプリAとアプリBである。従って、ストレージ1に存在するLU2の問題に関連のあるアプリケーションはアプリAとアプリBであることが分かる。
関連アプリの特定処理(ステップS802)の概要を図9に示す。図9に示すように、管理サーバが管理する計算機システムでは、アプリAと、アプリBと、アプリCと、アプリDと、アプリEと、アプリFとが稼動している。アプリAと、アプリBと、アプリCと、アプリDとはサーバ1で稼動しており、アプリEと、アプリFとがサーバ2で稼動している。また、アプリAと、アプリBと、アプリCと、アプリDと、アプリEと、アプリFとのいずれもストレージ1にデータを保存しており、アプリCがストレージ1内の通信I/F1を利用しており、アプリAとアプリDとがストレージ1内の通信I/F2を利用しており、アプリBがストレージ1内の通信I/F3を利用しており、アプリEがストレージ1内の通信I/F4を利用しており、アプリFがストレージ1内の通信I/F5を利用している。また、アプリCとアプリDとがIO処理ユニット1を利用しており、アプリAとアプリBとアプリEとアプリFとがIO処理ユニット2を利用している。また、アプリCとアプリDとが論理ボリュームLU1上にデータを格納しており、アプリAとアプリBとが論理ボリュームLU2上にデータを格納しており、アプリEとアプリFとが論理ボリュームLU3上にデータを格納している。
また、論理ボリュームLU1は、補助記憶装置1と補助記憶装置2と補助記憶装置3とを冗長化して構成されており、論理ボリュームLU2は、補助記憶装置4と補助記憶装置5と補助記憶装置6とを冗長化して構成されており、論理ボリュームLU3は、補助記憶装置7と補助記憶装置8と補助記憶装置9とを冗長化して構成されている。図示するようにアプリケーション毎に利用する計算機システムの構成要素の組み合わせが異なっている。関連アプリの特定処理(ステップS802)では、例えば、論理ボリュームLU2で問題が発生した場合、ストレージ1を共有しているアプリケーションでもアプリCとアプリDとアプリEとアプリFとは、論理ボリュームLU2と関連がなく、アプリAとアプリBとは、論理ボリュームLU2と関連があることを特定するための処理である。
処理毎の影響分析(ステップS803)では、計算機システムの問題検出(ステップS801)で出力された問題が発生している計算機システムの構成要素を特定するための識別情報と、関連アプリの特定(ステップS802)の出力である計算機システムの問題の影響をうけるアプリケーションを特定するための識別情報とを入力として受け付け、影響を受けるアプリケーションのうち、影響を受ける処理を特定するための識別情報を出力する。
処理毎の影響分析処理(ステップS803)では、管理サーバ201は、相関データ232のうち、問題が発生している計算機システムの構成要素と一致するフィールドの相関データを参照し、相関度が高い処理特性を特定することによって影響を受ける処理特性を算出する。相関度が高い処理特性の特定は、相関度が文字で記録されている場合は高い相関度を示す文字の処理特性を一致するかによって判定するとよいし、相関度が数値で記録されている場合は閾値との比較によって判定するとよいし、相関度が式で定められている場合は式によって算出された値が所定の条件に一致するかによって判定するとよい。
次に、管理サーバ201は、構成情報233のアプリケーションの構成情報テーブル600のうち、アプリフィールド602が影響を受けるアプリケーションと一致するレコードを取得し、取得したレコードのうち、影響を受ける処理特性と処理特性フィールド604が一致するレコードを、影響を受ける処理として出力する。
例えば、図10に例示するように、相関データ232を用いた場合、問題が発生している計算機システムの構成要素はストレージの論理ボリュームである、ストレージの論理ボリュームに対応するフィールドはST LUフィールド404であり、処理特性C2及びC3が影響を受ける処理特性であると判定できる。そして、アプリケーションの構成情報テーブル600を参照して、アプリAとアプリBに該当するレコードのうち、処理特性フィールド604がC2又はC3であるレコードは、IDがF2の処理とIDがF3の処理であることが分かり、当該処理のIDであるF2とF3を出力する。
対策の生成処理(ステップS804)では、管理サーバ201は、問題が発生している計算機システムの構成要素と影響を受けるアプリと処理特性を入力し、対策を出力する。対策の生成処理は、対策生成プログラム224によって実行されるとよい。例えば、ストレージ1の論理ボリュームLU2のIOPSが問題となって、アプリA及びアプリBの処理特性C2及びC3の処理が影響を受けるという情報を入力した場合、アプリBが利用する論理ボリュームをLU2からLU3に変更するという対策を出力する。対策の生成処理(ステップS804)は、手動又は他のプログラムによって実行されてもよい。また、処理毎の影響分析処理(ステップS803)において有意な影響がある処理が無いと判定された場合は、対策の生成処理(ステップS804)は実行されなくてもよい。また、管理サーバ201は影響分析処理フロー800のここまでの処理の結果を、操作端末202の入出力装置241を介して管理者に出力してもよい。例えば、図11に例示する画面を出力してもよい。
図11に例示する画面には、大別すると、問題1101と影響1102と対策1103との3つの情報が表示される。問題1101は、計算機システムの問題検出処理(ステップS801)の出力を可視化した情報である。影響1102は、関連アプリの特定処理(ステップS802)の出力と、処理毎の影響分析処理(ステップS803)と出力と、処理特性231とを合わせて可視化した情報である。対策1103は、対策の生成処理(ステップS804)の出力を可視化した情報である。これらの情報を合わせて参照することによって、管理者は発生している問題、その影響、影響を解決するための対策案を容易に理解でき、どの対策案を実行すれば良いかを判断できる。
しかし、これらの情報は、問題1101と影響1102と対策1103とのそれぞれが別の画面で表示されてもよい。また、これらの情報のいくつかが別の管理サーバによって提供される場合には、一部の情報が表示されなくてもよい。また、生成された対策を自動的に実行する場合には、全て又は一部の情報が表示されなくてもよい。
対策の実行処理(ステップS805)では、管理サーバ201は、対策の生成(ステップS804)で出力された対策を入力とし、対策を実行するような命令手順を出力する。例えば、アプリBが利用する論理ボリュームをLU2からLU3に変更する対策が入力された場合、アプリBが利用しているデータを格納する論理ボリュームをLU2からLU3に変更する命令をストレージ装置204に出力する。本ステップは手動又は他のプログラムによって実行されてもよい。
また、対策の実行処理(ステップS805)は実行されなくてもよい。例えば、対策の生成処理(ステップS804)が実行されなかった場合や、計算機システムの管理者が対策の生成処理(ステップS804)の出力を参照して、対策の実行が不要と判断した場合は、対策の実行処理(ステップS805)を実行しない。
以上説明したように、本発明の第一の実施例によれば、管理サーバ201は、管理される計算機システムの稼動データ234と、管理されるアプリケーションの処理特性231とを用いて相関データ232を生成し、管理される計算機システムで問題が発生した場合に、相関データ232と構成情報233とを用いて影響を受けるアプリケーションの処理を特定できる。また、計算機システムの管理者は、影響をうける処理の特徴量を把握できるため、計算機システムで発生した問題とその影響の因果関係を容易に推定できる。そのため、計算機システムの管理者は、迅速に必要な対策を検討し実行し、アプリケーションの性能を維持できる。
<実施例2>
図12は、本発明の第二の実施例におけるシステムの構成例を示すブロック図である。
第二の実施例の管理サーバ201の主記憶デバイス212は、影響分析処理プログラム221を記憶しておらず、原因分析処理プログラム223を記憶している。他の構成及び機能は第一の実施例と同じであるので、同じ符号を付し、それらの説明は省略する。
次に、管理サーバ201の原因分析処理プログラムを説明する。原因分析処理は、管理サーバ201のプロセッサ211が原因分析処理プログラム223を実行することによって実現される処理である。
図13は、管理サーバ201が実行する原因分析処理の手順例を示すフローチャートである。原因分析処理は、管理サーバ201の入力装置214から入力される管理者からの指示によって実行されてもよい。また、原因分析処理は、管理サーバ201が他のプログラムによる指示を受けて実行してもよい。また、管理サーバ201の管理される装置である計算機システムが送信した問題発生の通知を、管理サーバ201が通信インタフェース216を介して受信した際に原因分析処理を実行してもよい。
図13に示すように、管理サーバ201は、アプリの問題検出処理(ステップS1301)、処理特性との対応検出処理(ステップS1302)、原因範囲の絞り込み処理(ステップS1303)及び原因箇所の算出処理(ステップS1304)を実行する。原因分析処理フロー1300は、不図示の他の処理ステップを含んでもよい。
アプリの問題検出処理(ステップS1301)では、管理サーバ201は、管理されるアプリケーションプログラム250の特定の処理で発生した問題を検出し、問題が発生しているアプリケーションプログラムとその処理を特定可能な情報を出力する。例えば、アプリケーションのエンドユーザの出力画面を表示するための処理時間が閾値を超えた問題を検出し、構成情報233に含まれるアプリケーションの構成情報テーブル600におけるアプリフィールド602と処理フィールド603とを出力する。アプリケーションプログラムで発生した問題の検出は、イベント検出プログラム222が実行してもよいし、管理者が手動で実行してもよい。
処理特性との対応検出処理(ステップS1302)では、管理サーバ201は、問題が発生している処理特性を特定する。具体的には、アプリの問題検出処理(ステップS1301)の出力を入力とし、構成情報233に含まれるアプリケーションの構成情報テーブル600のうち、該当するアプリケーションの処理特性フィールド604を全て取得し、出力する。
原因範囲の絞り込み処理(ステップS1303)では、管理サーバ201は、アプリケーションプログラム250で発生している問題の原因範囲の候補を出力する。例えば、管理サーバ201は、処理特性との対応検出処理(ステップS1302)の出力を入力とし、相関データ232の各フィールドに記憶されている相関データのうち、計算機システムの各構成要素の稼動データとアプリケーション性能(処理特性)との相関があると記憶されているデータフィールドを、原因範囲の候補として取得する。入力された処理特性とデータ列とのいずれの組み合わせでも相関がない場合、原因範囲の候補としてデータフィールドを出力してもよい。
原因箇所の算出処理(ステップS1304)では、管理サーバ201は、構成情報233に含まれる計算機システムの構成情報テーブル500のアプリフィールド501と、アプリの問題検出処理(ステップS1301)で出力されたアプリフィールド602とが一致する構成情報テーブル500のデータレコードを取得し、取得したデータレコードにおいて、原因範囲の絞り込み処理(ステップS1303)で取得したデータフィールドと一致するデータレコードに記載されている計算機システムの構成要素を原因箇所の候補として出力する。原因箇所の候補として複数の構成要素が出力される場合、優先順位を付けて出力してもよい。例えば、原因箇所の候補として複数の構成要素が算出される場合、該当する構成要素における稼動データ234を参照し、通常通りの振る舞いと異なる傾向(例えば、CPU使用率が通常よりも30%高い、Databaseのアクセスログの件数が閾値よりも多く記録されている)を検出した場合、原因箇所の候補として優先的に出力してもよい。
以上説明したように、本発明の第二の実施例によれば、管理サーバ201は、管理される計算機システムの稼動データ234と管理されるアプリケーションの処理特性231とを用いて相関データ232を生成し、管理されるアプリケーションプログラムで問題が発生した場合に、相関データ232と構成情報233とを用いて原因箇所である計算機システムの構成要素を特定する。このため、計算機システムの管理者は、迅速に必要な対策を検討し実行し、アプリケーションの性能を維持できる。
以上に説明したように、本発明の実施例によると、管理サーバ201は、アプリケーションプログラムに含まれる処理の特性を抽出し、処理の特性と計算機システムの構成要素との相関の分析によって、アプリケーションプログラムに含まれる処理と計算機システムの構成要素との相関を特定して相関データ232を生成し、相関データ232に基づいて、計算機システムの稼動状況とアプリケーションプログラムに含まれる処理の特性との関係を特定するので、アプリケーションプログラムに含まれる処理の単位で、計算機システムに生じた異常によって影響を受ける範囲が分かる。
また、管理サーバ201は、計算機システムの構成変更(例えば、ハードウェアの変更、仮想計算機のマイグレーション、ストレージのディスクの変更など)を検出した場合、処理の特性の抽出及び処理の特性と前記計算機システムの構成要素との相関の分析の少なくとも一つを実行するので、学習によって相関データ232の精度を向上できる。特に、クラウド構成で頻繁に行われる構成変更に相関データの更新が追随可能となる。
また、管理サーバ201は、アプリケーションプログラムの利用傾向の変化(例えば、ユーザ数の増加、アプリケーションプログラムの機能の追加など)を検出した場合、処理の特性の抽出、及び処理の特性と前記計算機システムの構成要素との相関の分析の少なくとも一つを実行するので、学習によって相関データ232の精度を向上できる。特に、クラウド構成で頻繁に行われる構成変更に相関データの更新が追随可能となる。例えば、アプリケーションプログラムの機能追加によって、処理特性231になかった新たな処理が追加されたり、他の処理特性と相関関係が生じたり、処理特性231になかった新たな処理特性が追加され、当該処理特性と計算機システムの構成要素との相関が記録されたりする。
また、管理サーバ201は、計算機システムの異常又は異常の予兆を検出した場合、相関データ232に基づいて、異常によって影響を受けるアプリケーションプログラムの処理を特定するので、異常発生時に影響が生じる範囲を処理単位で特定でき、アプリケーション側の対策が可能となる。また、異常の予兆段階で(異常の発生前に)アプリケーション側の対策が可能となる。
また、管理サーバ201は、計算機システムの異常又は異常の予兆と、異常によって影響を受けるアプリケーションプログラムの処理とを表示するための画面データを出力するので、処理毎に異常によって生じる影響が分かる。また、計算機システムの異常によって影響を受ける処理の傾向が分かるので、計算機システム側の対策(ディスクの追加など)と、アプリケーション側の対策(アクセス制限など)とを連携して行うことができる。また、アプリケーションプログラムを改造するための情報を得ることができる。
また、管理サーバ201は、アプリケーションプログラムでの問題を検出した場合、相関データ232に基づいて、問題の原因である前記計算機システムの構成要素を特定するので、アプリケーションの挙動から計算機システム側の原因箇所を特定できる。このため、計算機システム側の保守が容易になる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。