(57)【要約】【課題】コンピュータシステムにおける様々な性能障害を検知し、性能障害の解析時間を短縮すること。【解決手段】本発明の障害検知システムは、コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことを検知するプログラム挙動検知部と、監視対象プログラムが監視対象挙動を実行したことが検知されたタイミングで、当該監視対象プログラムに関連する性能を示す性能情報を収集する性能情報収集部と、監視対象プログラムが実行した監視対象挙動と当該監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成する性能パターン出力部と、前記性能パターンを正常時の性能パターンと照合することで、性能障害を検知する性能障害検知部と、を備える。【選択図】図１
2011198087.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおける性能障害を検知する障害検知システムであって、
前記コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことを検知するプログラム挙動検知部と、
監視対象プログラムが監視対象挙動を実行したことが検知されたタイミングで、当該監視対象プログラムに関連する性能を示す性能情報を収集する性能情報収集部と、
監視対象プログラムが実行した監視対象挙動と当該監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成する性能パターン出力部と、
前記性能パターンを正常時の性能パターンと照合することで、性能障害を検知する性能障害検知部と、を備える障害検知システム。
【請求項２】
前記性能パターン出力部は、
監視対象プログラムが実行した監視対象挙動の特徴的な挙動シーケンスのリストを作成し、
監視対象挙動を実行した監視対象プログラムに関連する性能情報の変化状況のリストを作成し、
全ての特徴的な挙動シーケンス毎に、当該挙動シーケンスにおける性能情報の変化状況を表す前記性能パターンを作成し、
前記性能障害検知部は、
全ての性能パターンを正常時の性能パターンと照合することで、性能障害を検知する、請求項１に記載の障害検知システム。
【請求項３】
コンピュータシステムにおける性能障害を検知する障害検知サーバであって、
前記コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことを検知するプログラム挙動検知部と、
監視対象プログラムが監視対象挙動を実行したことが検知されたタイミングで、当該監視対象プログラムに関連する性能を示す性能情報を収集する性能情報収集部と、
監視対象プログラムが実行した監視対象挙動と当該監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成する性能パターン出力部と、
前記性能パターンを正常時の性能パターンと照合することで、性能障害を検知する性能障害検知部と、を備える障害検知サーバ。
【請求項４】
前記性能パターン出力部は、
監視対象プログラムが実行した監視対象挙動の特徴的な挙動シーケンスのリストを作成し、
監視対象挙動を実行した監視対象プログラムに関連する性能情報の変化状況のリストを作成し、
全ての特徴的な挙動シーケンス毎に、当該挙動シーケンスにおける性能情報の変化状況を表す前記性能パターンを作成し、
前記性能障害検知部は、
全ての性能パターンを正常時の性能パターンと照合することで、性能障害を検知する、請求項３に記載の障害検知サーバ。
【請求項５】
コンピュータシステムにおける性能障害を検知する障害検知サーバによる障害検知方法であって、
前記コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことを検知する挙動検知ステップと、
監視対象プログラムが監視対象挙動を実行したことが検知されたタイミングで、当該監視対象プログラムに関連する性能を示す性能情報を収集する性能情報収集ステップと、
監視対象プログラムが実行した監視対象挙動と当該監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成する性能パターン作成ステップと、
前記性能パターンを正常時の性能パターンと照合することで、性能障害を検知する性能障害検知ステップと、を備える障害検知方法。
【請求項６】
前記性能パターン作成ステップでは、
監視対象プログラムが実行した監視対象挙動の特徴的な挙動シーケンスのリストを作成し、
監視対象挙動を実行した監視対象プログラムに関連する性能情報の変化状況のリストを作成し、
全ての特徴的な挙動シーケンス毎に、当該挙動シーケンスにおける性能情報の変化状況を表す前記性能パターンを作成し、
前記性能障害検知ステップでは、
全ての性能パターンを正常時の性能パターンと照合することで、性能障害を検知する、請求項５に記載の障害検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおける性能障害を検知する障害検知システム、障害検知サーバ、及び、障害検知方法に関する。
【背景技術】
【０００２】
コンピュータシステムにおける性能障害とは、コンピュータシステムの性能異常により発生する障害のことである。性能障害の例としては、過負荷やソフトウェア処理遅延により発生するシステムストール、ネットワーク処理遅延、Ｉ／Ｏ処理遅延、プログラムのレスポンス低下や、メモリ不足により発生するプロセス終了等が挙げられる。
【０００３】
特許文献１には、通常の障害検知方法の一例が記載されている。特許文献１に記載の障害検知方法では、処理シーケンスを時系列の並びとしてパターン化し、このパターンを、正常パターン及び異常パターンと照合して障害解析を行っている。
【０００４】
しかし、性能障害は、上述のように、性能異常により発生する障害であり、シーケンス誤りにより発生するとは限らないため、特許文献１に記載の障害検知方法では、性能障害を検知することができない。
【０００５】
また、性能障害に特化した障害検知方法として、コンピュータシステムの性能情報をＯＳ（Operating System）から定期的に収集し、システム性能値が閾値を超えた場合に、性能異常による性能障害と検知する方法がある。なお、この障害検知方法で使用する閾値は、運用者が予め設定した値か、または、正常時のシステム性能値から自動で学習した値となる。
【０００６】
また、性能障害に特化した他の障害検知方法として、特許文献２には、ソフトウェア処理遅延を検出した場合に、プロセス実行情報を保存し、そのプロセス実行情報を基にして性能障害を検知する方法が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−５９２６６号公報
【特許文献２】特開２００９−３０１０７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上述のシステム性能値を利用した障害検知方法では、システム性能値が閾値を超えたことしか分からないため、性能障害を検知したとしても、性能障害の原因の特定が困難であり、原因解明等の解析に時間がかかるという課題がある。
【０００９】
また、上述のシステム性能値を利用した障害検知方法では、性能情報の収集タイミングの時点で発生していない性能障害は検知できないため、例えば、１つのプログラムの一部の処理速度が稀に低下する、というような性能障害を検知できないという課題がある。
【００１０】
また、上述の特許文献２に記載の障害検知方法では、ソフトウェア処理遅延が検出されない限り、プロセス実行情報が保存されないため、やはり性能障害の解析に時間がかかるという課題がある。
【００１１】
また、上述の特許文献２に記載の障害検知方法では、ソフトウェア処理遅延により発生する性能障害しか検知することができないという課題がある。
【００１２】
そこで、本発明の目的は、コンピュータシステムにおける様々な性能障害を検知することができるとともに、性能障害の解析時間を短縮することができる障害検知システム、障害検知サーバ、及び、障害検知方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の障害検知システムは、
コンピュータシステムにおける性能障害を検知する障害検知システムであって、
前記コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことを検知するプログラム挙動検知部と、
監視対象プログラムが監視対象挙動を実行したことが検知されたタイミングで、当該監視対象プログラムに関連する性能を示す性能情報を収集する性能情報収集部と、
監視対象プログラムが実行した監視対象挙動と当該監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成する性能パターン出力部と、
前記性能パターンを正常時の性能パターンと照合することで、性能障害を検知する性能障害検知部と、を備える。
【００１４】
本発明の障害検知サーバは、
コンピュータシステムにおける性能障害を検知する障害検知サーバであって、
前記コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことを検知するプログラム挙動検知部と、
監視対象プログラムが監視対象挙動を実行したことが検知されたタイミングで、当該監視対象プログラムに関連する性能を示す性能情報を収集する性能情報収集部と、
監視対象プログラムが実行した監視対象挙動と当該監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成する性能パターン出力部と、
前記性能パターンを正常時の性能パターンと照合することで、性能障害を検知する性能障害検知部と、を備える。
【００１５】
本発明の障害検知方法は、
コンピュータシステムにおける性能障害を検知する障害検知サーバによる障害検知方法であって、
前記コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことを検知する挙動検知ステップと、
監視対象プログラムが監視対象挙動を実行したことが検知されたタイミングで、当該監視対象プログラムに関連する性能を示す性能情報を収集する性能情報収集ステップと、
監視対象プログラムが実行した監視対象挙動と当該監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成する性能パターン作成ステップと、
前記性能パターンを正常時の性能パターンと照合することで、性能障害を検知する性能障害検知ステップと、を備える。
【発明の効果】
【００１６】
本発明によれば、コンピュータシステム上で動作する監視対象プログラムが監視対象挙動を実行したことが検知されると、その監視対象プログラムに関連する性能情報を収集し、その監視対象プログラムが実行した監視対象挙動とその監視対象プログラムに関連する性能情報とを対応付けてパターン化した性能パターンを作成し、その性能パターンを正常時の性能パターンと照合することで、性能障害を検知する。
【００１７】
したがって、監視対象プログラムの挙動単位で性能障害を検知することができるため、監視対象プログラムの挙動に応じた様々な性能障害を検知することができる。
【００１８】
また、監視対象プログラムの挙動単位で性能障害を検知することができるため、性能障害が発生したプログラム、性能障害が発生した挙動、及び、発生した性能障害の種別を早期に特定することができる。
【００１９】
その結果、性能障害の解析時間を短縮することができる。また、現時点でコンピュータシステムの運用上は影響がないが、あるプログラムの一部の性能が低下している、というような、今後のコンピュータシステムのシステム障害につながる可能性がある性能障害の予兆も早期に検知することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態の障害検知システムの構成を示すブロック図である。
【図２】図１に示した監視対象サーバにおいて、収集データを作成するまでの動作の例を説明する図である。
【図３】図１に示した監視対象サーバに保存する収集データの例を示す図である。
【図４】図１に示した性能情報解析サーバにおいて、性能障害を検知するまでの動作の例を説明する図である。
【発明を実施するための形態】
【００２１】
以下に、本発明を実施するための形態について図面を参照して説明する。
【００２２】
まず、本実施形態の障害検知システムの構成について、図１を用いて説明する。なお、本実施形態の障害検知システムは、コンピュータシステムの一部に組み込まれていて、そのコンピュータシステムにおける性能障害を検知するものである。
【００２３】
図１に示すように、本実施形態の障害検知システムは、ネットワークを介して互いに接続された監視対象サーバ１及び性能情報解析サーバ２を有している。
【００２４】
監視サーバ１は、複数の監視対象プログラム１０１が動作するサーバであり、プログラム挙動検知部１０２と、性能情報収集部１０３と、を備えている。
【００２５】
性能情報解析サーバ２は、正常パターンデータベース２０１と、性能障害検知部２０２と、性能パターン出力部２０４と、を備えている。
【００２６】
プログラム挙動検知部１０２は、監視対象プログラム１０１が監視対象挙動を実行したことを検知する。ここで、監視対象挙動とは、例えば、システムコール実行、Ｉ／Ｏ実行、メモリ確保、リソースの待ち合わせ等である。
【００２７】
性能情報収集部１０３は、監視対象プログラム１０１が監視対象挙動を実行したことが検知されたタイミングで、その監視対象プログラム１０１に関連する性能を示す性能情報を収集する。ここで、監視対象プログラム１０１に関連する性能情報とは、例えば、その監視対象プログラム１０１のＣＰＵ消費時間、メモリ使用量、Ｉ／Ｏ回数等の他、タスクスイッチ回数やメモリ回収処理回数等、ＯＳが持つコンピュータシステム全体の性能情報を含む。
【００２８】
また、性能情報収集部１０３は、上記で収集した性能情報を、プログラム挙動検知部１０２が検知した監視対象挙動と対応付けて、収集データ１０４として保存する。
【００２９】
性能パターン出力部２０４は、収集データ１０４を基に、監視対象プログラム１０１が実行した監視対象挙動とその監視対象プログラム１０１に関連する性能情報とを対応付けてパターン化した性能パターン２０３を作成する。
【００３０】
正常パターンデータベース２０１には、正常時の性能パターンである正常パターンが格納される。
【００３１】
性能障害検知部２０２は、性能パターン２０３を、正常パターンデータベース２０１内の正常パターンと照合することで、性能障害を検知する。
【００３２】
以下、本実施形態の障害検知システムの動作について説明する。
【００３３】
まず、監視対象サーバ１において、収集データ１０４を作成するまでの動作について、図２を用いて説明する。
【００３４】
図２に示すように、利用者は、設定ファイルや専用コマンド等を用いて、監視対象とする監視対象プログラム及び監視対象挙動をプログラム挙動検知部１０２に通知する。また、利用者は、監視対象プログラム及び監視対象挙動を監視対象から外す場合も同様に、設定ファイルや専用コマンド等を用いて、監視対象から外す監視対象プログラム及び監視対象挙動をプログラム挙動検知部１０２に通知する。
【００３５】
プログラム挙動検知部１０２は、監視対象挙動を検知するため、利用者から通知された全ての監視対象挙動に対し、監視対象プログラム１０１のコンテキストでのみ実行されるフック関数を設定する。なお、プログラム挙動検知部１０２は、利用者からの通知を受けると、その時点で設定されている全てのフック関数を削除し、通知された監視対象挙動にフック関数を設定することになる。
【００３６】
監視対象プログラム１０１が監視対象挙動を実行すると、その監視対象挙動に設定したフック関数が実行される。フック関数は、監視対象挙動の本来の処理を実行する前に、性能情報収集部１０３に対して、監視対象プログラム１０１に関連する性能情報の収集を指示する。一方、監視対象としていない挙動が実行された場合は、フック関数は実行されず、性能情報収集部１０３が動作することもない。
【００３７】
なお、プログラム挙動検知部１０２、フック関数、及び、フック関数により実行される性能情報収集部１０３は、ＯＳ層、ミドルウェア層、またはアプリケーション層に実装することが可能である。ただし、監視対象プログラム１０１の挙動検知、及び、性能情報収集のオーバーヘッドを小さくするためには、ＯＳ層に実装することが望ましい。
【００３８】
性能情報収集部１０３は、フック関数から指示を受けると、監視対象プログラム１０１に関連する性能情報を収集する。このとき、性能情報は、ＯＳのメモリ空間上に保持しておき、すぐに収集できる状態にしておく。ＵＮＩＸ、Ｌｉｎｕｘ等の一般的なＯＳには、各種性能情報を適宜計算し、メモリ上に保持しておく仕組みが既に存在するため、各種性能情報を算出する処理を新たに実装する必要はない。
【００３９】
性能情報収集部１０３は、上記で収集した性能情報を、プログラム挙動検知部１０２が検知した監視対象挙動と対応付けて、収集データ１０４としてファイル等に保存する。
【００４０】
図３は、収集データ１０４の一例である。なお、収集データ１０４のフォーマットは、監視対象プログラム１０１の識別子、監視対象挙動の識別子、監視対象挙動の発生時刻、及び性能情報が対応付けられていれば、図３とは異なっていてもかまわない。
【００４１】
図３に示すように、収集データ１０４は、監視対象プログラム１０１が監視対象挙動を実行した際の各種性能情報が時系列に並んだデータにすぎない。収集データ１０４の解析は、性能情報解析サーバ２で行う。
【００４２】
次に、性能情報解析サーバ２において、性能障害を検知するまでの動作について、図４を用いて説明する。
【００４３】
図４に示すように、監視対象サーバ１上で保存した収集データ１０４は、定期的に、性能情報収集部１０３からネットワークを経由して、性能情報解析サーバ２上で動作する性能パターン出力部２０４へ送信される。
【００４４】
性能パターン出力部２０４は、収集データ１０４に記録された監視対象プログラム１０１の監視対象挙動の特徴的な挙動シーケンスのリストを作成する。
【００４５】
例えば、特徴的な挙動シーケンスの例としては、以下が挙げられる。
・ファイルＡのｏｐｅｎ，ｒｅａｄ，ｗｒｉｔｅ，ｃｌｏｓｅを順番に繰り返している
・ファイルＡをｏｐｅｎした後は必ずｗｒｉｔｅが実行されている
次に、性能パターン出力部２０４は、収集データ１０４に記録された監視対象プログラム１０１に関連する性能情報の変化状況のリストを作成する。
【００４６】
例えば、性能情報の変化状況の例としては、以下が挙げられる。
・ファイルＡのｏｐｅｎからｒｅａｄまでにＸ秒経過している
・ファイルＡのｏｐｅｎからｒｅａｄまでに監視対象プログラム１０１のメモリ使用量がＹキロバイト増加している
次に、性能パターン出力部２０４は、特徴的な挙動シーケンスと、性能情報の変化状況とを基に、全ての特徴的な挙動シーケンス毎に、その挙動シーケンスにおける性能情報の変化状況を表す性能パターン２０３を作成する。
【００４７】
性能障害検知部２０２は、全ての性能パターン２０３を正常パターンデータベース２０１内の正常パターンと照合する。
【００４８】
性能パターン２０３が正常パターンデータベース２０１内の正常パターンのいずれとも一致しない場合、性能障害検知部２０２は、性能障害が発生していると判断し、性能障害が発生した旨を、正常パターンとは一致しなかった性能パターン２０３と共に、電子メール等の手段で利用者に通知する。
【００４９】
通知を受けた利用者は、正常パターンとは一致しなかった性能パターン２０３を、正常パターンデータベース２０１内の正常パターンと照合することで、性能障害が発生したプログラム、及び、性能障害が発生しているプログラムの挙動を知ることができる。
【００５０】
例えば、性能パターン２０３が、以下であったとする。
・「プログラム１がファイルＡをｏｐｅｎした後、５秒後にｗｒｉｔｅを実行、プログラム１がファイルＡをｏｐｅｎした後、ｗｒｉｔｅするまでにタスクスイッチが１万回発生」
また、正常パターンが以下であったとする。
・「プログラム１がファイルＡをｏｐｅｎした後、１秒以内にｗｒｉｔｅを実行、プログラム１がファイルＡをｏｐｅｎした後、ｗｒｉｔｅするまでのタスクスイッチが１０００回未満」
この場合、プログラム１において、ファイルＡをｏｐｅｎしてからｗｒｉｔｅするまでの処理中に、タスクスイッチが異常な回数実行されていることから、利用者は、プログラム１において、ファイルＡをｏｐｅｎしてからｗｒｉｔｅするまでの処理中に、性能障害が発生していることが特定できる。
【００５１】
また、利用者は、通知された性能パターン２０３を許容範囲内であると判断した場合、その性能パターン２０３を正常パターンデータベース２０１内に正常パターンとして登録することにより、次回以降、性能情報解析サーバ２においては、その性能パターン２０３が発生した状態が正常状態であると判断されるようになる。
【００５２】
上述したように本実施形態においては、監視対象プログラム１０１が監視対象挙動を実行したことが検知されると、その監視対象プログラム１０１に関連する性能を示す性能情報を収集し、その監視対象プログラム１０１が実行した監視対象挙動とその監視対象プログラム１０１に関連する性能情報とを対応付けてパターン化した性能パターン２０３を作成し、その性能パターン２０３を正常パターンと照合することで性能障害を検知する。
【００５３】
したがって、監視対象プログラム１０１の挙動単位で性能障害を検知することができるため、監視対象プログラム１０１の挙動に応じた様々な性能障害を検知することができる。
【００５４】
また、監視対象プログラム１０１の挙動単位で性能障害を検知することができるため、性能障害が発生したプログラム、性能障害が発生した挙動、及び、発生した性能障害の種別を早期に特定することができる。
【００５５】
その結果、性能障害の解析時間を短縮することができる。また、現時点でコンピュータシステムの運用上は影響がないが、あるプログラムの一部の性能が低下している、というような、今後のコンピュータシステムのシステム障害につながる可能性がある性能障害の予兆も早期に検知することができる。
【００５６】
なお、本実施形態においては、監視対象サーバ１と性能情報解析サーバ２との２つのサーバからなる構成の障害検知システムを例に挙げて説明したが、監視対象サーバ１と性能情報解析サーバ２を１つのサーバ（障害検知サーバ）に一体化しても良い。
【産業上の利用可能性】
【００５７】
本発明は、複数のプログラムが動作するコンピュータシステムにおける性能障害の検知といった用途に適用することができる。
【符号の説明】
【００５８】
１    監視サーバ
１０１    監視対象プログラム
１０２    プログラム挙動検知部
１０３    性能情報収集部
１０４    収集データ
２    性能情報解析サーバ
２０１    正常パターンデータベース
２０２    性能障害検知部
２０３    性能パターン
２０４    性能パターン出力部
【図１】
2011198087.tif 000003
【図２】
2011198087.tif 000004
【図３】
2011198087.tif 000005
【図４】
2011198087.tif 000006