(57)【特許請求の範囲】
【請求項１】
システムの状況に応じて、該システムの動作を切り替えさせる処理をコンピュータに実行させるためのシステム管理プログラムであって、
前記システム上で発生したイベントのイベント識別子と該イベントの発生状況とを記憶するシステム状況データベースからイベント識別子を読み出すイベント識別子読み出し手順と、
前記システム上で発生するイベントのイベント識別子に対応付けて該イベントに対して行う対処内容と対処を実行する実行条件を決定するための情報である実行条件決定情報とを記憶する対処内容記憶手段から、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する対処内容を選択する対処内容選択手順と、
前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する発生状況が、前記対処内容記憶手段に記憶された該イベント識別子に対応する実行条件決定情報を満たす場合に、前記対処内容選択手順によって選択された対処内容に基づいて、対処コードを生成する対処コード生成手順と、
前記対処コード生成手順によって生成された対処コードを、前記システムに適用する対処コード適用手順と
をコンピュータに実行させることを特徴とするシステム管理プログラム。
【請求項２】
前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を適用する対象を決定するための情報である適用対象決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生場所をさらに記憶し、
前記発生場所と、前記適用対象決定情報とに基づいて、前記対処を適用する対象を決定する対処条件決定手順を実行させることを特徴とする請求項１に記載のシステム管理プログラム。
【請求項３】
システムの状況に応じて、該システムの動作を切り替えさせるシステム管理装置であって、
前記システム上で発生するイベントのイベント識別子に対応付けて該イベントに対して行う対処内容と対処を実行する実行条件を決定するための情報である実行条件決定情報とを記憶する対処内容記憶手段と、
前記システム上で発生したイベントのイベント識別子と該イベントの発生状況とを記憶するシステム状況データベースからイベント識別子を読み出すイベント識別子読み出し手段と、
前記対処内容記憶手段から、前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する対処内容を選択する対処内容選択手段と、
前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する発生状況が、前記対処内容記憶手段に記憶された該イベント識別子に対応する実行条件決定情報を満たす場合に、前記対処内容選択手段によって選択された対処内容に基づいて、対処コードを生成する対処コード生成手段と、
前記対処コード生成手段によって生成された対処コードを、前記システムに適用する対処コード適用手段と
を備えたことを特徴とするシステム管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムの状況を監視して、システムの動作を切り替えさせるシステム管理プログラムおよびシステム管理装置に関し、特に、障害または障害の予兆に対して自動的に対処することができるシステム管理プログラムおよびシステム管理装置に関する。
【背景技術】
【０００２】
近年、様々な分野でコンピュータシステムが必要不可欠なインフラシステムとしての役割を担っており、コンピュータシステムを停止することなく正常に稼動させることや、コンピュータシステムに障害が発生した場合であっても復旧までの期間を短くすることが重要になっている。
【０００３】
このため、コンピュータシステムを導入する場合に、コンピュータシステムの稼動状況を監視するための監視アプリケーションを導入することが一般的に行われている。この監視アプリケーションが、障害が発生していることを検知したり、障害が発生するおそれ（障害の予兆）があることを検知したりすると、システム管理者等が対応する。具体的には、システム管理者等は、障害の原因が明確な場合は、修正したアプリケーションを適用し、障害の原因が不明確な場合は、原因追求のためにアプリケーションが出力するログの詳細度（ログレベル）を上げたり、一時的にサービスを停止したりするといった何らかの対処を施す。
【０００４】
ところで、障害を検知してからシステム管理者等の人によって対応していたのでは、システム復旧時間が長くなってしまうので、近年では、障害発生を検知した場合に、アプリケーションが出力するログの詳細度（ログレベル）を自動的に切り替える技術（例えば、特許文献１および２）や、アプリケーションの一部または全部を自動的に入れ替える技術が提案されている（例えば、特許文献３）。
【０００５】
【特許文献１】特開２００６−２３６２３１号公報
【特許文献２】特開２００５−１２２３３８号公報
【特許文献３】特開２００４−３１８８５５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１および２に開示されている技術では、以下に説明するように、すべての障害に対して対処することは現実的には不可能に近いという問題があった。すなわち、上記特許文献１および２に開示されている技術を用いる場合、コンピュータシステムを導入する時点で、各モジュールに詳細なログ出力を可能とするコーディングをしておく必要があるが、すべての障害を想定して、かかるコーディングをしておくことは現実的ではない。特に、近年のコンピュータシステムは、大規模化かつ複雑化しており、それに伴ってモジュール数や、障害の種類が多くなっているので、すべての障害を予め想定することは非常に困難である。
【０００７】
また、上記特許文献３に開示されている技術を用いる場合、障害ごとに修正モジュールを予め用意しておく必要があるが、上記問題点と同様に、すべての障害に対応する対処モジュールを用意しておくことは現実的でないという問題があった。
【０００８】
このように、上述した従来技術を用いても、結局は、障害または障害の予兆が発生するたびに、システム管理者等による対処が必要になることが多く、システム復旧時間を短くすることや、障害の発生を未然に防ぐことはほとんどできなかった。このため、障害の種類が多様化する中で、極力多くの障害または障害の予兆に対して、自動的に対処できる技術の実現が強く要望されていた。
【０００９】
本発明は、上述した従来技術による問題点を解消するためになされたものであり、極力多くの障害または障害の予兆に対して自動的に対処することができるシステム管理プログラムおよびシステム管理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本願に開示するシステム管理プログラムは、システムの状況に応じて、該システムの動作を切り替えさせる処理をコンピュータに実行させるためのシステム管理プログラムであって、前記システム上で発生したイベントのイベント識別子を記憶するシステム状況データベースからイベント識別子を読み出すイベント識別子読み出し手順と、前記システム上で発生するイベントのイベント識別子に対応付けて該イベントに対して行う対処内容を記憶する対処内容記憶手段から、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する対処内容を選択する対処内容選択手順と、前記対処内容選択手順によって選択された対処内容に基づいて、対処コードを生成する対処コード生成手順と、前記対処コード生成手順によって生成された対処コードを、前記システムに適用する対処コード適用手順とをコンピュータに実行させることを要件とする。
【００１１】
この態様によれば、あらゆる障害を想定した対処コードを用意しておくことなく、イベントに対して自動的に対処することができる。
【００１２】
なお、本願に開示するシステム管理プログラムの構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
【発明の効果】
【００１３】
本願に開示したシステム管理プログラムによれば、あらゆる障害を想定した対処コードを用意しておくことなく、イベントに対して自動的に対処することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明に係るシステム管理プログラムおよびシステム管理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によっては、この発明は限定されない。
【実施例】
【００１５】
まず、本実施例に係るシステム管理装置の概要について説明する。図１は、本実施例に係るシステム管理装置を含むネットワーク構成の一例を示す図である。同図に示すように、このネットワークは、所定のサービスを提供するシステムが動作している監視対象システム１０ａ〜１０ｃと、ネットワーク３０を介して監視対象システム１０ａ〜１０ｃを監視するシステム監視装置２０と、本実施例に係るシステム管理装置１００とによって構成される。
【００１６】
なお、図１は、システム監視装置２０が３つの監視対象システム１０ａ〜１０ｃを監視する例を示しているが、システム監視装置２０が監視するシステムは任意の数でよく、例えば、システム監視装置２０は、１つのシステムのみを監視してもよいし、４つ以上のシステムを監視してもよい。
【００１７】
監視対象システム１０ａ〜１０ｃは、サーバや記憶装置等により構成されるシステムであり、サービスを提供するために実行されるアプリケーション１１ａ〜１１ｃを有する。アプリケーション１１ａ〜１１ｃは、複数のソースファイルやバイナリファイル等から構成される。
【００１８】
システム監視装置２０は、監視対象システム１０ａ〜１０ｃの稼動状況を監視する装置である。具体的には、システム監視装置２０は、監視対象システム１０ａ〜１０ｃが有するログ情報等から、監視対象システム１０ａ〜１０ｃ上で発生した（発生している）イベントに関する情報を加工して、監視対象システム１０ａ〜１０ｃごとに、システム状況データベース２１を生成する。なお、以下の説明では、「障害および障害の予兆」を「イベント」と呼ぶこととする。
【００１９】
このようなシステム監視装置２０は、従来から用いられている。従来では、システム管理者等が、システム状況データベース２１を監視して、監視対象システム１０ａ〜１０ｃ上でイベントが発生したことを知ると、障害を修正したアプリケーションを監視対象システム１０ａ〜１０ｃに適用したり、原因追求のためにアプリケーション１１ａ〜１１ｃが出力するログの詳細度（ログレベル）を上げたりするという対処を行っていた。
【００２０】
しかしながら、イベントが発生してからシステム管理者が対応していたのでは、システム復旧時間が長くなってしまうという問題や、システム管理者の作業工数が増大するという問題があった。
【００２１】
なお、近年では、イベントが発生した場合に、アプリケーションの一部を、自動的に修正用のアプリケーションに入れ替える技術等も提案されているが、あらゆる障害を想定して修正用のアプリケーションを用意しておくことは現実的には不可能であった。例えば、アプリケーションの一部でイベントが発生している場合に、その一部のアプリケーションだけログレベルを上げる修正用アプリケーションを用意しておくことは現実的には不可能であり、結局は、システム管理者等による対処が必要だった。
【００２２】
そこで、本実施例に係るシステム管理装置１００では、図１に示すように、システム状況データベース２１に記憶されている各種情報と、各イベントに対応付けて対処内容を記憶する対処内容記憶部１３０とを用いて、監視対象システム１０ａ〜１０ｃ上で対処が必要なイベントが発生しているかを判断し、対処が必要な場合には、対処を実行するための対処コードを自動的に生成して、監視対象システム１０ａ〜１０ｃに適用する。
【００２３】
図１に示した例では、システム管理装置１００の制御部１４０は、対処内容記憶部１３０に基づいて、監視対象システム１０ｃ上で対処が必要なイベントが発生していると判断して対処コード１１ｄを生成している。そして、対処コード１１ｄを監視対象システム１０ｃに送信して、アプリケーション１１ｃに適用している。
【００２４】
システム管理装置１００が有する対処内容記憶部１３０は、イベントに対応付けて、かかるイベントに対して対処を行う必要があるかを判断するための情報や、対処の具体的な内容や、対処を実行する時間を決定するための情報や、アプリケーション１１ａ〜１１ｃ内のどのソースファイルに対処を適用するかを決定するための情報などを記憶する。
【００２５】
そして、システム管理装置１００の制御部１４０は、対処内容記憶部１３０に記憶されている各種情報に基づいて、システム状況データベース２１に記憶されているイベントに対して対処が必要であるかを判断し、対処が必要な場合には、対処の内容、対処を実行する時間、対処を適用するソースファイルなどを決定して対処コード１１ｄを生成する。
【００２６】
例えば、監視対象システム１０ｃ上で、「０時〜８時に、特定のＵＲＬ（Uniform  Resource  Locator）のレスポンスが低下する」というイベントが発生した場合、システム管理装置１００の制御部１４０は、対処内容記憶部１３０に記憶されている各種情報に基づいて、「所定の時間に、特定のＵＲＬにアクセスされた場合に詳細なログを出力する」という対処コードを生成する。
【００２７】
このように、本実施例に係るシステム管理装置１００は、システム状況データベース２１に記憶されている各種情報と、対処内容記憶部１３０に記憶されている各種情報を用いて、監視対象システム１０ａ〜１０ｃで発生したイベントに対する対処コードを生成して、監視対象システム１０ａ〜１０ｃに適用するので、あらゆる障害を想定した対処コードを用意しておくことなく、イベントに対して自動的に対処することができる。
【００２８】
例えば、１００個のソースファイルからアプリケーション１１ａが構成されている場合、上述した従来技術を用いると、１００個のソースファイルのあらゆる部分に、ログを詳細に出力するといった対処を施した対処コードを複数用意しておく必要があった。一方、本実施例に係るシステム管理装置１００では、システム状況データベース２１に記憶されているイベントに関する各種情報に基づいて、対処が必要な部分を特定して対処コードを生成するので、あらゆる障害を想定した複数の対処コードを用意しておくことなく、イベントに対して自動的に対処することができる。
【００２９】
また、本実施例に係るシステム管理装置１００は、対処を実行する時間や、対処を適用するソースファイルなどを限定して対処コードを生成するので、監視対象システム１０ａ〜１０ｃ上で発生したイベントに対して、必要な部分に対してのみ対処することができ、対処コードを実行することで増大する負荷を最小限に抑えることができる。
【００３０】
例えば、従来では、監視対象システム１０ｃ上でイベントが発生した場合、アプリケーション１１ｃのログレベルを全体的に上げることが行われていたので、ログ出力による負荷が増大していた。一方、本実施例に係るシステム管理装置１００では、対処が必要な特定のソースファイルに対してのみログレベルを上げる対処を行うので、ログ出力による負荷の増大を防止することができる。
【００３１】
次に、本実施例に係るシステム管理装置１００の構成について説明する。なお、以下の説明では、システム管理装置１００は、監視対象システム１０ｃ上で発生したイベントに対して対処を行うこととする。
【００３２】
図２は、本実施例に係るシステム管理装置１００の構成を示す機能ブロック図である。同図に示すように、システム管理装置１００は、入力部１１０と、表示部１２０と、対処内容記憶部１３０と、制御部１４０とを有する。そして、システム管理装置１００は、監視対象システム１０ｃと、システム状況データベース２１を有するシステム監視装置２０とに接続されている。なお、システム状況データベース２１は、システム監視装置２０によって監視対象システム１０ｃのログ情報等から生成されるデータベースである。
【００３３】
入力部１１０は、各種情報や操作指示を入力するための入力デバイスであり、例えば、キーボードやマウスからなる。表示部１２０は、各種情報を表示する表示デバイスであり、例えば、液晶表示装置からなる。
【００３４】
対処内容記憶部１３０は、上述したように、システム状況データベース２１に記憶されているイベントに対して対処を行う必要があるかを判断するための情報などを記憶する。ここで、システム状況データベース２１に記憶されている各種情報と、対処内容記憶部１３０に記憶されている各種情報との間には密接な関係があるため、まず、システム状況データベース２１が記憶する各種情報について説明し、その後、対処内容記憶部１３０が記憶する各種情報について説明する。
【００３５】
システム状況データベース２１の一例を図３に示す。同図に示すように、システム状況データベース２１は、イベントＩＤ、イベント名、付加情報、発生状況場所といった項目を有する。イベントＩＤは、システム状況データベース２１に記憶されているレコードを識別するための識別子を記憶する。イベント名は、監視対象システム１０ｃで発生した（発生している）障害または障害の予兆の名称を記憶する。付加情報は、イベントの危険度、異常度または緊急度を記憶する。
【００３６】
発生状況場所は、イベントが発生したときの状況を記憶する発生状況と、イベントが発生した場所を記憶する発生場所とに分けて記憶する。具体的には、発生状況は、イベントが発生した日時、日時の範囲、ＣＰＵ（Central  Processing  Unit）の負荷、ネットワークの負荷、コマンド名などを記憶する。また、発生場所は、ＵＲＬ、データベースのテーブル名、監視対象システム１０ａ〜１０ｃのホスト名などを記憶する。
【００３７】
図３に示したシステム状況データベース２１の１行目（イベントＩＤ「００１」）は、日付「１日」の時間「０時〜８時」に、ＵＲＬ「ｈｔｔｐ：／／ｗｗｗ．ｆｏｏ．ｃｏ．ｊｐ／ｂａｒ／ｂｕｚ」にアクセスされたときに、「アプリケーションのレスポンスが低下する（ＵＲＬレスポンス低下）」というイベントが発生したことを表している。そして、かかるイベントの危険度が「３」であることを表している。
【００３８】
また、図３に示したシステム状況データベース２１の２行目（イベントＩＤ「００２」）は、時間「１４時〜１９時」に、コマンド名「ｃｍｄ１」が実行されたときに、ＣＰＵ負荷が「８０％」になる「ＣＰＵ高負荷」というイベントが発生したことを表している。そして、かかるイベントの危険度が「４」であることを表している。
【００３９】
なお、システム状況データベース２１の発生状況は任意の項目であり、イベントによっては、発生状況に情報が記憶されない場合がある。具体的には、図３に示したシステム状況データベース２１のイベントＩＤ「００５」は、「異常アクセス」というイベントが発生した状況（時間やＣＰＵ負荷）の情報を必要としないため、発生状況に情報が記憶されていない。なお、この例は、一例にすぎず、「異常アクセス」であっても発生状況に情報が記憶される場合もある。
【００４０】
対処内容記憶部１３０の一例を図４に示す。同図に示すように、対処内容記憶部１３０は、対処ＩＤ、イベント名、対処適用条件、対処条件、対処内容といった項目を有する。対処ＩＤは、対処内容記憶部１３０に記憶されているレコードを識別するための識別子を記憶する。イベント名は、イベントの名称を記憶する。対処適用条件は、システム状況データベース２１に記憶されているイベントに対して対処を行うか否かを決定するための条件を記憶する。
【００４１】
対処条件は、イベントに対して対処を行う場合に、対処をどのような場合に実行するか（実行条件）を決定するための情報を記憶する実行条件決定情報と、対処を適用する対象（適用対象）を決定するための情報を記憶する適用対象決定情報とに分けて記憶する。具体的には、実行条件決定情報は、日時、日時の範囲、ＣＰＵの負荷などを記憶する。また、適用対象決定情報は、イベントが発生する発生場所（例えば、ＵＲＬ、コマンド名）に対応付けて、対処を適用する適用対象（例えば、パッケージ名、ソースファイル名、データベースのテーブル名、ソースファイルで使用されている関数名）を記憶する。
【００４２】
対処内容は、対処の内容を記憶し、コード片と、適用手法とに分けて記憶する。コード片は、対処コードの元となる最小構成のソースコードを記憶する。また、適用手法は、コード片から対処コードを生成する手法や、対処コードをアプリケーション１１ｃに適用する手法を記憶する。
【００４３】
なお、対処内容記憶部１３０が記憶する各種情報は、ユーザによって登録される。例えば、ユーザは、表示部１２０に表示される対処内容登録画面上で登録操作を行うことにより、対処内容記憶部１３０に各種情報を登録する。また、例えば、ユーザは、ネットワークを介して、対処内容登録情報をシステム管理装置１００に送信することで対処内容記憶部１３０に各種情報を登録する。
【００４４】
また、図３に示したシステム状況データベース２１のイベント名と、図４に示した対処内容記憶部１３０のイベント名に、イベントの名称が記憶される例を示したが、イベントの名称を一意に特定する識別子であるイベント識別子を記憶するように構成してもよい。
【００４５】
制御部１４０は、システム管理装置１００を全体制御する制御部であり、本実施例に関連するものとして、対処内容登録部１４１と、イベント選択部１４２と、対処条件決定部１４３と、対処コード生成部１４４と、対処コード適用部１４５とを有する。
【００４６】
対処内容登録部１４１は、対処内容記憶部１３０に各種情報を記憶させるための対処内容登録画面を表示部１２０に表示し、ユーザに各種情報を登録させる処理部である。また、対処内容登録部１４１は、ネットワークを介して対処内容登録情報を受け付けた場合、かかる対処内容登録情報に含まれる各種情報を対処内容記憶部１３０に登録する。
【００４７】
イベント選択部１４２は、対処内容記憶部１３０に記憶されている各種情報に基づいて、システム状況データベース２１から対処が必要なイベントを選択する処理部である。具体的には、イベント選択部１４２は、システム状況データベース２１を１レコードずつ処理していき、処理対象レコードのイベント名が、対処内容記憶部１３０のイベント名と一致し、かつ、処理対象レコードの付加情報が対処内容記憶部１３０の対処適用条件を満たす場合、かかる処理対象レコードのイベントＩＤと、対処内容記憶部１３０の対処ＩＤとの組合せを、対処条件決定部１４３へ出力する。
【００４８】
一方、処理対象レコードのイベント名が、対処内容記憶部１３０のイベント名と一致しない場合、または、イベント名が一致する場合であっても処理対象レコードの付加情報が対処内容記憶部１３０の対処適用条件を満たさない場合、イベント選択部１４２は、処理対象レコードのイベントに対して対処を行わないことを決定する。
【００４９】
対処条件決定部１４３は、対処内容記憶部１３０の対処条件に基づいて、実行条件を決定する実行条件決定処理と、適用対象および対処を適用するソースファイルを決定する適用対象決定処理とを行う処理部である。そして、対処条件決定部１４３は、実行条件決定処理により決定した実行条件と、適用対象決定処理により決定した適用対象および対処を適用するソースファイル名と、イベントＩＤと、対処ＩＤとを対処コード生成部１４４へ出力する。
【００５０】
対処条件決定部１４３による実行条件決定処理および適用対象決定処理について具体的に説明する。最初に、対処条件決定部１４３による実行条件決定処理について説明する。対処条件決定部１４３は、イベント選択部１４２からイベントＩＤと対処ＩＤとの組合せを入力されると、入力されたイベントＩＤに対応するシステム状況データベース２１の発生状況と、入力された対処ＩＤに対応する対処内容記憶部１３０の実行条件決定情報に情報が記憶されているか否かを判断する。
【００５１】
システム状況データベース２１の発生状況と、対処内容記憶部１３０の実行条件決定情報との両方に情報が記憶されている場合、対処条件決定部１４３は、システム状況データベース２１の発生状況と、対処内容記憶部１３０の実行条件決定情報との両方を満たす条件を実行条件にすることを決定する。システム状況データベース２１の発生状況と、対処内容記憶部１３０の実行条件決定情報との両方を満たす条件が存在しない場合、対処条件決定部１４３は、入力されたイベントＩＤと対処ＩＤとの組合せについて処理を終了する。すなわち、かかるイベントＩＤのイベントに対して、かかる対処ＩＤの対処を行わないことを決定する。
【００５２】
一方、システム状況データベース２１の発生状況に情報が記憶されておらず、対処内容記憶部１３０の実行条件決定情報に情報が記憶されている場合、対処条件決定部１４３は、対処内容記憶部１３０の実行条件決定情報を実行条件にすることを決定する。
【００５３】
また、システム状況データベース２１の発生状況に情報が記憶されており、対処内容記憶部１３０の実行条件決定情報に情報が記憶されていない場合、または、システム状況データベース２１の発生状況と、対処内容記憶部１３０の実行条件決定情報との両方に情報が記憶されていない場合、対処条件決定部１４３は、実行条件を設けずに、常に対処を実行することを決定する。
【００５４】
なお、システム状況データベース２１の発生状況に情報が記憶されており、対処内容記憶部１３０の実行条件決定情報に情報が記憶されていない場合、対処条件決定部１４３は、システム状況データベース２１の発生状況を実行条件にすることを決定するようにしてもよい。
【００５５】
続いて、対処条件決定部１４３による適用対象決定処理について説明する。対処条件決定部１４３は、イベント選択部１４２から入力されたイベントＩＤに対応するシステム状況データベース２１の発生場所と、イベント選択部１４２から入力された対処ＩＤに対応する対処内容記憶部１３０の適用対象決定情報とに基づいて適用対象および対処を適用するソースファイルを決定する。システム状況データベース２１の発生場所が、対処内容記憶部１３０の適用対象決定情報の条件を満たさず、適用対象を決定できない場合、対処条件決定部１４３は、イベント選択部１４２から入力されたイベントＩＤと対処ＩＤとの組合せについて処理を終了する。
【００５６】
そして、対処条件決定部１４３は、決定した適用対象に基づいて、アプリケーション１１ｃを構成するソースファイルの中から、修正が必要であるソースファイルを決定する。対処条件決定部１４３は、このソースファイルを決定する処理を、アプリケーション１１ｃを構成するソースファイルの構成情報や、ソースファイルを用いて行う。
【００５７】
例えば、適用対象がパッケージＡである場合、対処条件決定部１４３は、対処を適用するソースファイルを、パッケージＡに属する全てのソースファイルに決定する。これは、どのソースファイルがそのパッケージに属するかを示すソースファイルの構成情報（ディレクトリ構成）によって決定することができる。
【００５８】
また、例えば、適用対象が関数Ｂである場合、対処条件決定部１４３は、対処を適用するソースファイルを、関数Ｂを用いる全てのソースファイルに決定する。これは、アプリケーション１１ｃを構成する全てのソースファイルを「関数Ｂ」によって検索することで決定することができる。
【００５９】
対処コード生成部１４４は、対処条件決定部１４３から入力された各種情報と、対処内容記憶部１３０に記憶されている各種情報に基づいて、対処を実行するための対処コードを生成する処理部である。
【００６０】
具体的には、対処コード生成部１４４は、対処条件決定部１４３から入力された対処ＩＤに対応する対処内容記憶部１３０のコード片および対処手法を取得して、取得したコード片に、対処条件決定部１４３から入力された実行条件および適用対象を組み込む。このとき、対処コード生成部１４４は、対処内容記憶部１３０から取得した対処手法に基づいて組込処理を行う。そして、対処コード生成部１４４は、生成した対処コードと、イベントＩＤと、対処ＩＤと、対処を適用するソースファイル名とを対処コード適用部１４５へ出力する。
【００６１】
対処コード適用部１４５は、対処コード生成部１４４から入力された対処コードを監視対象システム１０ｃに適用する処理部である。具体的には、対処コード適用部１４５は、対処コード生成部１４４から入力された対処ＩＤに対応する対処内容記憶部１３０の適用手法に基づいて、対処コード生成部１４４から入力された対処コードをコンパイル（ビルド）する必要があるか否か、対処コードをソースファイルに組み込む必要があるか否かを判断して、対処コードを監視対象システム１０ｃに適用する。
【００６２】
例えば、対処コードをコンパイルする必要がある場合、対処コード適用部１４５は、かかる対処コードをコンパイルして実行ファイルを生成し、生成した実行ファイルを監視対象システム１０ｃの所定の場所に配置する。このとき、対処コードだけではなく、対処コード生成部１４４から入力されたソースファイルもコンパイルする必要がある場合は、対処コード生成部１４４から入力されたソースファイル名に該当するソースファイルを監視対象システム１０ｃから取得して、取得したソースファイルについてもコンパイルする。一方、対処コード生成部１４４から入力された対処コードをコンパイルする必要がない場合、対処コード適用部１４５は、対処コードを監視対象システム１０ｃの所定の場所に配置する。
【００６３】
また、例えば、対処コードをソースファイルに組み込む必要がある場合、対処コード生成部１４４から入力されたソースファイル名に該当するソースファイルを監視対象システム１０ｃから取得して、取得したソースファイルに対処コードを組み込んで、監視対象システム１０ｃの所定の場所に配置する。
【００６４】
図３および図４に示した例を用いて、上述したイベント選択部１４２、対処条件決定部１４３、対処コード生成部１４４および対処コード適用部１４５の処理を説明する。まず、イベント選択部１４２は、システム状況データベース２１のイベントＩＤ「００１」に該当するレコードを処理対象レコードとする。そして、処理対象レコードのイベント名「ＵＲＬレスポンス低下」と、対処内容記憶部１３０の対処ＩＤ「１０１」および「１０３」に対応するイベント名「ＵＲＬレスポンス低下」とが一致し、かつ、処理対象レコードの付加情報「危険度３」が、対処内容記憶部１３０の対処ＩＤ「１０１」および「１０３」に対応する対処適用条件「危険度３以上」を満たすので、イベントＩＤ「００１」と対処ＩＤ「１０１」との組合せ、および、イベントＩＤ「００１」と対処ＩＤ「１０３」との組合せを対処条件決定部１４３へ出力する。
【００６５】
イベント選択部１４２からイベントＩＤ「００１」と対処ＩＤ「１０１」との組合せを入力された対処条件決定部１４３は、イベントＩＤ「００１」に対応するシステム状況データベース２１の発生状況と、対処ＩＤ「１０１」に対応する対処内容記憶部１３０の実行条件決定情報に情報が記憶されているため、発生状況「１日の０時〜８時」と、実行条件決定情報「２時〜１０時」との両方を満たす「１日の２時〜８時」を実行条件に決定する。これは、イベントＩＤ「００１」のイベントに対して、対処ＩＤ「１０１」の対処を「１日の２時〜８時」の場合のみ行うことを表す。
【００６６】
そして、対処条件決定部１４３は、システム状況データベース２１のイベントＩＤ「００１」に対応する発生場所「ｈｔｔｐ：／／ｗｗｗ．ｆｏｏ．ｃｏ．ｊｐ／ｂａｒ／ｂｕｚ」が、対処内容記憶部１３０の対処ＩＤ「１０１」に対応する適用対象決定情報「ｈｔｔｐ：／／ｗｗｗ．ｆｏｏ．ｃｏ．ｊｐ／ｂａｒ以下」を満たすので、適用対象をパッケージ「ａａａ．ｂｂｂ．ｂａｒ」に決定する。そして、対処条件決定部１４３は、対処を適用するソースファイルを、パッケージ「ａａａ．ｂｂｂ．ｂａｒ」に属する全てのソースファイルに決定する。
【００６７】
そして、対処条件決定部１４３は、実行条件「１日の２時〜８時」と、適用対象「パッケージａａａ．ｂｂｂ．ｂａｒ」および対処を適用するソースファイルのファイル名と、イベントＩＤ「００１」と、対処ＩＤ「１０１」とを対処コード生成部１４４へ出力する。
【００６８】
また、イベント選択部１４２からイベントＩＤ「００１」と対処ＩＤ「１０３」との組合せを入力された対処条件決定部１４３は、イベントＩＤ「００１」に対応するシステム状況データベース２１の発生状況「１日の０時〜８時」と、対処ＩＤ「１０３」に対応する対処内容記憶部１３０の実行条件決定情報「９時〜１４時」との両方を満たす条件が存在しないため、イベントＩＤ「００１」のイベントに対して、対処ＩＤ「１０３」の対処を行わないことを決定する。
【００６９】
なお、イベントＩＤ「００１」に対応するシステム状況データベース２１の発生状況と、対処ＩＤ「１０３」に対応する対処内容記憶部１３０の実行条件決定情報との両方を満たす条件が存在する場合であっても、対処条件決定部１４３は、システム状況データベース２１のイベントＩＤ「００１」に対応する発生場所「ｈｔｔｐ：／／ｗｗｗ．ｆｏｏ．ｃｏ．ｊｐ／ｂａｒ／ｂｕｚ」が、対処内容記憶部１３０の対処ＩＤ「１０３」に対応する適用対象決定情報「ｈｔｔｐ：／／ｘｘｘ．ｙｙｙ．ｊｐ／ｔｅｓｔ以下」を満たさないので、イベントＩＤ「００１」のイベントに対して、対処ＩＤ「１０３」の対処を行わないことを決定する。
【００７０】
対処条件決定部１４３から各種情報を入力された対処コード生成部１４４は、対処内容記憶部１３０から、対処ＩＤ「１０１」に対応するコード片「ｐｕｂｌｉｃ  ａｓｐｅｃｔ  ・・・」と、対処手法「アスペクト言語」を取得する。なお、図４は、コード片に記憶されている情報の一部を「・・・」と図示して省略している。
【００７１】
対処内容記憶部１３０の対処ＩＤ「１０１」に対応するコード片の一例を図５−１に示す。同図に示すように、このコード片はアスペクトＪ言語によりコーディングされている。このコード片が実行されるとデータベースのアクセス時にログを出力する。
【００７２】
そして、対処コード生成部１４４は、対処内容記憶部１３０から取得したコード片（図５−１）に、対処条件決定部１４３から入力された実行条件「１日の２時〜８時」を組み込む。
【００７３】
具体的には、対処コード生成部１４４は、図５−２に示すように、コード片が実行される日時を「１日の２時〜８時」に限定するための実行条件コード片を生成する。そして、対処コード生成部１４４は、図５−１に示したコード片のコメント「ＢＥＧＩＮＮＩＮＧ  ＯＦ  ＢＯＤＹ」の部分を、実行条件コード片のコメント「ＢＥＧＩＮＮＩＮＧ  ＯＦ  ＢＯＤＹ」によって囲まれている部分に置き換えるとともに、図５−１に示したコード片のコメント「ＥＮＤ  ＯＦ  ＢＯＤＹ」の部分を、実行条件コード片のコメント「ＥＮＤ  ＯＦ  ＢＯＤＹ」によって囲まれている部分に置き換える。
【００７４】
図５−３は、図５−１に示したコード片に、図５−２に示した実行条件コード片を組み込んだソースコードを示す図である。同図では、図５−１に示したコード片に対して、実行条件を組み込んだ部分を下線で示している。
【００７５】
そして、対処コード生成部１４４は、実行条件コード片を組み込んだソースコード（図５−３）に、適用対象をパッケージ「ａａａ．ｂｂｂ．ｂａｒ」に限定するためのソースコードを組み込む。具体的には、図５−３に示したコード片のコメント「ＷＩＴＨＩＮ」の部分に、パッケージ「ａａａ．ｂｂｂ．ｂａｒ」の場合のみ実行されるようにソースコードを組み込む。
【００７６】
図５−４は、図５−３に示したソースコードに、適用対象を限定するソースコードを組み込んだソースコード（対処コード）を示す図である。なお、同図では、図５−３に示したソースコードに対して、適用対象を組み込んだ部分を下線で示している。
【００７７】
このように、対処コード生成部１４４は、対処内容記憶部１３０に記憶されているコード片（図５−１）に、実行条件コード片（図５−２）を組み込むとともに、適用対象を限定するためのソースコードを組み込んで、イベントＩＤ「００１」に対応するイベントに対する対処を実行するための対処コード（図５−４）を生成する。
【００７８】
そして、対処コード生成部１４４は、生成した対処コードと、イベントＩＤ「００１」と、対処ＩＤ「１０１」と、対処を適用するソースファイルのファイル名とを対処コード適用部１４５へ出力する。
【００７９】
対処コード生成部１４４から各種情報を入力された対処コード適用部１４５は、対処コードがアスペクトＪ言語によりコーディングさているため、対処コード生成部１４４から入力されたソースファイルのファイル名についてもコンパイルする必要がある。したがって、対処コード適用部１４５は、かかるファイル名に該当するソースファイルを監視対象システム１０ｃから取得して、取得したソースファイルと、対処コード生成部１４４から入力された対処コードとをコンパイルする。そして、対処コード適用部１４５は、コンパイル後に生成された実行ファイルを監視対象システム１０ｃの所定の場所に配置する。
【００８０】
ここまでの処理が、システム状況データベース２１のイベントＩＤ「００１」に該当するレコードに対して行う処理である。続いて、イベント選択部１４２は、システム状況データベース２１のイベントＩＤ「００２」に該当するレコードを処理対象レコードとする。かかる処理対象レコードのイベント名「ＣＰＵ高負荷」と、対処内容記憶部１３０の対処ＩＤ「１０２」に対応するイベント名「ＣＰＵ高負荷」とが一致し、かつ、処理対象レコードの付加情報「危険度４」が、対処内容記憶部１３０の対処ＩＤ「１０２」に対応する対処適用条件「危険度４以上」を満たすので、イベントＩＤ「００２」と対処ＩＤ「１０２」との組合せを対処条件決定部１４３へ出力する。
【００８１】
なお、イベント選択部１４２は、システム状況データベース２１に記憶されている各レコードについて、一度処理を行ったレコードについては再度処理を行わない。これは、例えば、システム状況データベース２１に「処理済フラグ」といったフラグを設けて、イベント選択部１４２が、処理対象レコードについて処理が終了した場合に「処理済フラグ」を更新するようにすることで実現できる。
【００８２】
イベント選択部１４２からイベントＩＤ「００２」と対処ＩＤ「１０２」との組合せを入力された対処条件決定部１４３は、イベントＩＤ「００２」に対応するシステム状況データベース２１の発生状況「負荷８０％、１４時〜１９時」と、対処ＩＤ「１０２」に対応する対処内容記憶部１３０の実行条件決定情報「負荷７０％以上、１３時〜１７時」との両方を満たす「負荷８０％以上、１４時〜１７時」を実行条件に決定する。これは、イベントＩＤ「００２」のイベントに対して、対処ＩＤ「１０２」の対処を「１４時〜１７時に負荷が８０％以上」になった場合のみ行うことを表す。
【００８３】
そして、対処条件決定部１４３は、システム状況データベース２１のイベントＩＤ「００２」に対応する発生場所「コマンド名ｃｍｄ１」が、対処内容記憶部１３０の対処ＩＤ「１０２」に対応する適用対象決定情報「コマンド名ｃｍｄ１〜ｃｍｄ５のいずれか」を満たすので、適用対象を「関数ｇｅｔｄｂｎａｍｅの後」に決定する。そして、対処条件決定部１４３は、対処を適用するソースファイルを、コマンド「ｃｍｄ１」を構成する全てのソースファイルに決定する。なお、「関数ｇｅｔｄｂｎａｍｅの後」とは、ソースファイル内で「ｇｅｔｄｂｎａｍｅ」という関数を呼び出している部分の後に、対処コードを組み込むことを表す。
【００８４】
そして、対処条件決定部１４３は、実行条件「負荷８０％以上、１４時〜１７時」と、適用対象「関数ｇｅｔｄｂｎａｍｅの後」および対処を適用するソースファイルのファイル名と、イベントＩＤ「００２」と、対処ＩＤ「１０２」とを対処コード生成部１４４へ出力する。
【００８５】
対処条件決定部１４３から各種情報を入力された対処コード生成部１４４は、対処内容記憶部１３０から、対処ＩＤ「１０２」に対応するコード片「ｐｒｉｎｔ  ＄ｌｏｇｆｉｌｅ  ・・・」と、対処手法「ソースコード」を取得する。そして、対処コード生成部１４４は、実行条件「負荷８０％以上、１４時〜１７時」をコード片に組み込んで、対処コードを生成する。
【００８６】
そして、対処コード生成部１４４は、生成した対処コードと、イベントＩＤ「００２」と、対処ＩＤ「１０２」と、対処を適用するソースファイルのファイル名とを対処コード適用部１４５へ出力する。
【００８７】
対処コード生成部１４４から各種情報を入力された対処コード適用部１４５は、対処コード生成部１４４から入力されたソースファイル名に該当するソースファイルを監視対象システム１０ｃから取得する。そして、対処内容記憶部１３０から取得したソースファイル内の「ｇｅｔｄｂｎａｍｅ」という関数を呼び出している部分の後に、対処コード生成部１４４から入力された対処コードを組み込む。そして、対処コード適用部１４５は、対処コードを組み込んだソースファイルをコンパイルする必要があれば、コンパイルして実行ファイルを生成して監視対象システム１０ｃに適用する。
【００８８】
ここまでの処理が、システム状況データベース２１のイベントＩＤ「００２」に該当するレコードに対して行う処理である。続いて、イベント選択部１４２は、システム状況データベース２１のイベントＩＤ「００３」に該当するレコードを処理対象レコードとする。かかる処理対象レコードのイベント名が一致し、かつ、対処適用条件「危険度３以上」を満たすので、イベントＩＤ「００３」と対処ＩＤ「１０３」との組合せを対処条件決定部１４３へ出力する。以後の処理は、上述したイベントＩＤ「００１」に対する処理とほぼ同様であるため、ここでは、詳細な説明を省略する。
【００８９】
なお、図４に示した対処内容記憶部１３０の対処ＩＤ「００３」に対応する適用対象決定情報に示すように、適用対象決定情報に「全てのパッケージ」を記憶させることで、適用対象を全てのソースファイルにすることもできる。
【００９０】
続いて、イベント選択部１４２は、システム状況データベース２１のイベントＩＤ「００４」に該当するレコードを処理対象レコードとする。かかる処理対象レコードのイベント名「ＤＢ（データベース）レスポンス低下」と、対処内容記憶部１３０の対処ＩＤ「１０４」に対応するイベント名「ＤＢレスポンス低下」とが一致し、かつ、処理対象レコードの付加情報「危険度３」が、対処内容記憶部１３０の対処ＩＤ「１０４」に対応する対処適用条件「危険度３以上」を満たすので、イベントＩＤ「００４」と対処ＩＤ「１０４」との組合せを対処条件決定部１４３へ出力する。
【００９１】
イベント選択部１４２からイベントＩＤ「００４」と対処ＩＤ「１０４」との組合せを入力された対処条件決定部１４３は、イベントＩＤ「００４」に対応するシステム状況データベース２１の発生状況「７時〜１１時」と、対処ＩＤ「１０４」に対応する対処内容記憶部１３０の実行条件決定情報「６時〜１４時」との両方を満たす条件「７時〜１１時」を実行条件に決定する。
【００９２】
そして、対処条件決定部１４３は、システム状況データベース２１のイベントＩＤ「００４」に対応する発生場所「テーブル名ＵＳＥＲＩＮＦＯ」が、対処内容記憶部１３０の対処ＩＤ「１０４」に対応する適用対象決定情報「テーブル名にＵＳＥＲを含む場合」を満たすので、適用対象をテーブル名「ＵＳＥＲＩＮＦＯ」に決定する。そして、対処条件決定部１４３は、対処を適用するソースファイルを、テーブル名「ＵＳＥＲＩＮＦＯ」にアクセスする全てのソースファイルに決定する。
【００９３】
そして、対処条件決定部１４３は、実行条件「７時〜１１時」と、適用対象「テーブル名ＵＳＥＲＩＮＦＯ」および対処を適用するソースファイルのファイル名と、イベントＩＤ「００４」と、対処ＩＤ「１０４」とを対処コード生成部１４４へ出力する。
【００９４】
対処条件決定部１４３から各種情報を入力された対処コード生成部１４４は、対処内容記憶部１３０から、対処ＩＤ「１０４」に対応するコード片「ｐｕｂｌｉｃ  ａｓｐｅｃｔ  ・・・」と、対処手法「アスペクト言語」を取得する。対処ＩＤ「１０４」に対応するコード片は、上述した対処ＩＤ「１０１」の例と同様に、図５−１に示したコード片とする。そして、対処コード生成部１４４は、対処内容記憶部１３０から取得したコード片（図５−１）に、対処条件決定部１４３から入力された実行条件「７時〜１１時」を組み込む。そして、対処コード生成部１４４は、実行条件を組み込んだコード片に、図５−５に示すように、適用対象をテーブル名「ＵＳＥＲＩＮＦＯ」に限定するためのソースコードを組み込む。
【００９５】
そして、対処コード適用部１４５は、対処コード生成部１４４から入力された対処コードがアスペクトＪ言語によりコーディングされた対処コードであるため、上述したイベントＩＤ「００１」の例と同様に、対処コードを監視対象システム１０ｃに適用する。
【００９６】
次に、本実施例に係るシステム管理装置１００によるイベント対処処理について説明する。図６は、本実施例に係るシステム管理装置１００によるイベント対処処理手順を示すフローチャートである。
【００９７】
同図に示すように、システム状況データベース２１に未処理のレコードが存在する場合（ステップＳ１０１肯定）、システム管理装置１００のイベント選択部１４２は、未処理のレコードの中から１レコードを処理対象とする。そして、イベント選択部１４２は、処理対象レコードのイベント名が、対処内容記憶部１３０のイベント名と一致し（ステップＳ１０２肯定）、かつ、処理対象レコードの付加情報が対処内容記憶部１３０の対処適用条件を満たす場合（ステップＳ１０３肯定）、かかる処理対象レコードのイベントＩＤと、対処内容記憶部１３０の対処ＩＤとの組合せを、対処条件決定部１４３へ出力する。
【００９８】
一方、処理対象レコードのイベント名が、対処内容記憶部１３０のイベント名と一致しない場合（ステップＳ１０２否定）、または、イベント名が一致する場合であっても（ステップＳ１０２肯定）、処理対象レコードの付加情報が対処内容記憶部１３０の対処適用条件を満たさない場合（ステップＳ１０３否定）、イベント選択部１４２は、処理対象レコードのイベントに対して対処を行わないことを決定して処理を終了する。
【００９９】
イベント選択部１４２からイベントＩＤと対処ＩＤとの組合せを入力された対処条件決定部１４３は、実行条件決定処理を行い、実行条件を決定する（ステップＳ１０４）。また、対処条件決定部１４３は、適用対象決定処理を行い、適用対象と、対処を適用するソースファイルを決定する（ステップＳ１０５）。そして、対処条件決定部１４３は、対処を実行する実行条件と、適用対象と、対処を適用するソースファイルと、イベントＩＤと、対処ＩＤとを対処コード生成部１４４へ出力する。
【０１００】
そして、対処コード生成部１４４は、対処条件決定部１４３から入力された対処ＩＤに対応する対処内容記憶部１３０のコード片および対処手法を取得して、取得したコード片に、実行条件と適用対象とを組み込んで対処コードを生成する（ステップＳ１０６）。そして、対処コード生成部１４４は、生成した対処コードと、イベントＩＤと、対処ＩＤと、対処を適用するソースファイルとを対処コード適用部１４５へ出力する。
【０１０１】
そして、対処コード適用部１４５は、対処コード生成部１４４から入力された対処ＩＤに対応する適用手法に基づいて、対処コードをコンパイル（ビルド）する必要があるか否か、または、対処コードをソースファイルに組み込む必要があるか否かを判断して、コンパイル等を行った後に、対処コードを監視対象システム１０ｃに適用する（ステップＳ１０７）。
【０１０２】
次に、図２に示した対処条件決定部１４３による実行条件決定処理および適用対象決定処理について説明する。図７は、図２に示した対処条件決定部１４３による実行条件決定処理手順および適用対象決定処理手順を示すフローチャートである。
【０１０３】
同図に示すように、システム管理装置１００の対処条件決定部１４３は、イベント選択部１４２から入力されたイベントＩＤに対応するシステム状況データベース２１の発生状況に情報が格納されており（ステップＳ２０１肯定）、かつ、イベント選択部１４２から入力された対処ＩＤに対応する対処内容記憶部１３０の実行条件決定情報に情報が記憶されている場合（ステップＳ２０２肯定）、システム状況データベース２１の発生状況と、対処内容記憶部１３０の実行条件決定情報との両方を満たす条件が存在するか判断する。
【０１０４】
システム状況データベース２１の発生状況と、対処内容記憶部１３０の実行条件決定情報との両方を満たす条件が存在する場合（ステップＳ２０３肯定）、対処条件決定部１４３は、満たした条件を実行条件に決定する（ステップＳ２０４）。
【０１０５】
一方、システム状況データベース２１の発生状況と、対処内容記憶部１３０の実行条件決定情報との両方を満たす条件が存在しない場合（ステップＳ２０３否定）、対処条件決定部１４３は、イベント選択部１４２から入力されたイベントＩＤと対処ＩＤとの組合せについて処理を終了する（ステップＳ２０５）。
【０１０６】
一方、システム状況データベース２１の発生状況に情報が記憶されておらず（ステップＳ２０１否定）、対処内容記憶部１３０の実行条件決定情報に情報が記憶されている場合（ステップＳ２０６肯定）、対処条件決定部１４３は、対処内容記憶部１３０の実行条件決定情報を実行条件に決定する（ステップＳ２０７）。
【０１０７】
また、システム状況データベース２１の発生状況に情報が記憶されており（ステップＳ２０１肯定）、対処内容記憶部１３０の実行条件決定情報に情報が記憶されていない場合（ステップＳ２０２否定）、対処条件決定部１４３は、実行条件を設けずに、常に対処を実行することを決定する。同様に、システム状況データベース２１の発生状況に情報が記憶されておらず（ステップＳ２０１否定）、対処内容記憶部１３０の実行条件決定情報に情報が記憶されていない場合についても（ステップＳ２０６否定）、対処条件決定部１４３は、実行条件を設けずに、常に対処を実行することを決定する。ここまでの処理が対処条件決定部１４３による実行条件決定処理である。
【０１０８】
その後、対処条件決定部１４３は、イベント選択部１４２から入力されたイベントＩＤに対応するシステム状況データベース２１の発生場所と、イベント選択部１４２から入力された対処ＩＤに対応する対処内容記憶部１３０の適用対象決定情報とに基づいて適用対象を決定する（ステップＳ２０８）。
【０１０９】
適用対象を決定できた場合（ステップＳ２０９肯定）、対処条件決定部１４３は、決定した適用対象に基づいて、アプリケーション１１ｃを構成するソースファイルの中から、修正が必要であるソースファイルを決定する（ステップＳ２１０）。
【０１１０】
一方、システム状況データベース２１の発生場所が、対処内容記憶部１３０の適用対象決定情報の条件を満たさず、適用対象を決定できなかった場合（ステップＳ２０９否定）、対処条件決定部１４３は、イベント選択部１４２から入力されたイベントＩＤと対処ＩＤとの組合せについて処理を終了する（ステップＳ２０５）。
【０１１１】
上述してきたように、本実施例に係るシステム管理装置１００は、システム状況データベース２１に記憶されている各種情報と、対処内容記憶部１３０に記憶されている各種情報を用いて、監視対象システム１０ｃで発生したイベントに対する対処コードを生成して、監視対象システム１０ｃに適用するように構成したので、イベントに対して自動的に対処することができる。その結果、障害発生後のシステム復旧時間を短くすることや、障害発生を未然に防ぐことができる。
【０１１２】
なお、上記実施例では、対処内容記憶部１３０の実行条件決定情報に「時間の範囲」、「ＣＰＵの負荷」が記憶されている例を示したが、他の例として「ネットワークの負荷」、「頻度」、「コマンド名」、「パラメータ」、「イベント名」、「ホスト名」、「ＩＰ（Internet  Protocol）アドレス」、「デバイス名」が記憶されていてもよい。以下に、これらが記憶されている場合における対処条件決定部１４３の実行条件決定処理について説明する。
【０１１３】
対処内容記憶部１３０の実行条件決定情報に「ネットワークの負荷」が記憶されている場合、対処条件決定部１４３は、監視対象システム１０ｃのネットワーク負荷が、実行条件決定情報に記憶されているネットワーク負荷よりも大きくなった場合のみ対処を行うように実行条件を決定する。
【０１１４】
対処内容記憶部１３０の実行条件決定情報に「頻度」が記憶されている場合、対処条件決定部１４３は、イベント（例えば、異常アクセス）が、実行条件決定情報に記憶されている頻度を超えて発生した場合のみ対処を行うように実行条件を決定する。
【０１１５】
対処内容記憶部１３０の実行条件決定情報に「コマンド名」が記憶されている場合、対処条件決定部１４３は、実行条件決定情報に記憶されているコマンド名を実行された場合のみ対処を行うように実行条件を決定する。
【０１１６】
対処内容記憶部１３０の実行条件決定情報に「パラメータ」が記憶されている場合、対処条件決定部１４３は、実行条件決定情報に記憶されているパラメータを受け付けた場合のみ対処を行うように実行条件を決定する。ここでいう「パラメータ」とは、コマンドに渡されるパラメータや、ＵＲＬに付加されるパラメータなどを示す。
【０１１７】
対処内容記憶部１３０の実行条件決定情報に「イベント名」が記憶されている場合、対処条件決定部１４３は、実行条件決定情報に記憶されているパラメータを受け付けた場合のみ対処を行うように実行条件を決定する。この例は、過去の障害状況からイベント間の因果関係を推測できるような場合に有効である。例えば、「イベントＣが発生した後に、イベントＤが発生しやすい」ということが分かっていれば、実行条件決定情報に「イベントＣ」を記憶しておくことで、「イベントＤ」に対する対処を行うことができる。
【０１１８】
対処内容記憶部１３０の実行条件決定情報に「ホスト名」が記憶されている場合、対処条件決定部１４３は、実行条件決定情報に記憶されているホスト名に対応する監視対象システム１０ａ〜１０ｃにおいてイベントが発生した場合のみ対処を行うように実行条件を決定する。この例は、同一のアプリケーションを運用系サーバと待機系サーバに搭載して運用しているような場合に有効である。例えば、運用系サーバでは対処を行う必要があるが、待機系サーバでは対処を行う必要がない場合、実行条件決定情報に運用系サーバのホスト名を記憶しておくことで実現できる。
【０１１９】
対処内容記憶部１３０の実行条件決定情報に「ＩＰアドレス」が記憶されている場合、対処条件決定部１４３は、実行条件決定情報に記憶されているＩＰアドレスからアクセスされた場合のみ対処を行うように実行条件を決定する。
【０１２０】
対処内容記憶部１３０の実行条件決定情報に「デバイス名」が記憶されている場合、対処条件決定部１４３は、実行条件決定情報に記憶されているデバイス名に対応するデバイス（例えば、記憶装置やプリンタ）に対して処理を行う場合のみ対処を行うように実行条件を決定する。
【０１２１】
また、上述した実行条件決定情報に記憶される「ホスト名」や「ＩＰアドレス」などの例は、対処内容記憶部１３０の適用対象決定情報に記憶されてもよい。例えば、実行条件決定情報に「ホスト名が運用系サーバの場合、パッケージａａａ．ｂｂｂ．ｂａｒ」と記憶されている場合、対処条件決定部１４３は、運用系サーバでイベントが発生した場合に、適用対象をパッケージ「ａａａ．ｂｂｂ．ｂａｒ」にすることを決定する。
【０１２２】
また、上記実施例では、「アスペクトＪ言語」によって対処コードを生成して監視対象システム１０ｃに適用する例や、対処コードをソースコードに組み込んで監視対象システム１０ｃに適用する例を説明したが、他の手法によって対処コードを生成するして監視対象システム１０ｃに適用してもよい。
【０１２３】
例えば、アプリケーション１１ｃを構成するバイナリファイルまたはバイトコードを解析して、特定のシステムコール呼び出しや、ＡＰＩ（Application  Program  Interface）呼び出しの前後に、対処コードを呼び出す命令を挿入するようにしてもよい。かかる場合、対処コードを挿入した後、再リンクを行ってアプリケーション１１ｃに適用する。なお、対処コードは、所定のコンパイルによって機械語になるので、対処コード生成部１４４は、特定の言語で対処コードを生成してよい。
【０１２４】
また、例えば、アプリケーション１１ｃが、プラグインやフックにより新たな処理を追加できる機能を備えている場合には、対処コードをプラグインやフックによりアプリケーション１１ｃに適用する。
【０１２５】
また、例えば、監視対象システム１０ｃに搭載されているＯＳ（Operating  System）が、割り込み発生時やシングルステップ実行時に、新たな処理を実行できる機能を備えている場合には、割り込み発生時やシングルステップ実行時に対処コードが実行されるように適用する。
【０１２６】
また、上記実施例では、「ログ出力」という対処を例に挙げて示したが、「設定ファイルの変更」、「所定のアプリケーションを停止」などの対処を行うようにしてもよい。例えば、「ＵＲＬレスポンス低下」というイベントが発生した場合に、設定ファイルを変更することで、最大アクセス数を減らすという対処を行ってもよい。また、例えば、極めて危険度の高いイベントが発生した場合に、アプリケーション１１ｃの全部または一部を停止するという対処を行ってもよい。
【０１２７】
また、上記実施例では、システム管理装置１００について説明したが、図２に示したシステム管理装置１００の構成は、本発明の要旨を逸脱しない範囲で種々に変更することができる。例えば、システム管理装置１００の制御部１４０が有する機能をソフトウェアとして実装し、これをコンピュータで実行することにより、システム管理装置１００と同等の機能を実現することもできる。以下に、制御部１４０が有する機能をソフトウェアとして実装したシステム管理プログラム１０７１を実行するコンピュータの一例を示す。
【０１２８】
図８は、システム管理プログラム１０７１を実行するコンピュータ１０００を示す機能ブロック図である。このコンピュータ１０００は、各種演算処理を実行するＣＰＵ１０１０と、ユーザからのデータの入力を受け付ける入力装置１０２０と、各種情報を表示するモニタ１０３０と、記録媒体からプログラム等を読み取る媒体読取り装置１０４０と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置１０５０と、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）１０６０と、ハードディスク装置１０７０とをバス１０８０で接続して構成される。
【０１２９】
そして、ハードディスク装置１０７０には、図２に示した制御部１４０と同様の機能を有するシステム管理プログラム１０７１と、図２に示した対処内容記憶部１３０に対応する対処内容データ１０７２とが記憶される。なお、対処内容データ１０７２を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
【０１３０】
そして、ＣＰＵ１０１０がシステム管理プログラム１０７１をハードディスク装置１０７０から読み出してＲＡＭ１０６０に展開することにより、システム管理プログラム１０７１は、システム管理プロセス１０６１として機能するようになる。そして、システム管理プロセス１０６１は、対処内容データ１０７２から読み出した情報等を適宜ＲＡＭ１０６０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
【０１３１】
なお、上記のシステム管理プログラム１０７１は、必ずしもハードディスク装置１０７０に格納されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等にこのプログラムを記憶させておき、コンピュータ１０００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１３２】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
【０１３３】
（付記１）システムの状況に応じて、該システムの動作を切り替えさせる処理をコンピュータに実行させるためのシステム管理プログラムであって、
前記システム上で発生したイベントのイベント識別子を記憶するシステム状況データベースからイベント識別子を読み出すイベント識別子読み出し手順と、
前記システム上で発生するイベントのイベント識別子に対応付けて該イベントに対して行う対処内容を記憶する対処内容記憶手段から、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する対処内容を選択する対処内容選択手順と、
前記対処内容選択手順によって選択された対処内容に基づいて、対処コードを生成する対処コード生成手順と、
前記対処コード生成手順によって生成された対処コードを、前記システムに適用する対処コード適用手順と
をコンピュータに実行させることを特徴とするシステム管理プログラム。
【０１３４】
（付記２）前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を実行する実行条件を決定するための情報である実行条件決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生状況をさらに記憶し、
前記コード生成手順は、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する発生状況が、前記対処内容記憶手段に記憶された該イベント識別子に対応する実行条件決定情報を満たす場合にのみ前記対処コードを生成することを特徴とする付記１に記載のシステム管理プログラム。
【０１３５】
（付記３）前記対処内容記憶手段は、前記実行条件決定情報に日時の範囲を記憶し、
前記コード生成手順は、前記システム状況データベースに記憶されている前記イベントが発生した日時の範囲と、前記実行条件決定情報に記憶されている日時の範囲との両方に一致する日時の範囲を実行条件に決定することを特徴とする付記２に記載のシステム管理プログラム。
【０１３６】
（付記４）前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を適用する対象を決定するための情報である適用対象決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生場所をさらに記憶し、
前記発生場所と、前記適用対象決定情報とに基づいて、前記対処を適用する対象を決定する対処条件決定手順を実行させることを特徴とする付記１〜３のいずれかに記載のシステム管理プログラム。
【０１３７】
（付記５）前記対処内容記憶手段は、前記適用対象決定情報に、前記イベントが発生する発生場所に対応付けて、該システム上で動作するアプリケーションのソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を記憶し、
前記対処条件決定手順は、前記システム状況データベースの発生場所に対応する前記対処内容記憶手段の適用対象決定情報に記憶されているソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を、対処を適用する対象に決定することを特徴とする付記４に記載のシステム管理プログラム。
【０１３８】
（付記６）前記対処内容記憶手段は、前記イベント識別子に対応付けて、前記イベントに対して対処を行うか否かを決定するための条件である対処適用条件をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの危険度または緊急度をさらに記憶し、
前記対処内容選択手順は、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する危険度または緊急度が、前記対処内容記憶手段の対処適用条件を満たす対処内容を選択することを特徴とする付記１〜５のいずれかに記載のシステム管理プログラム。
【０１３９】
（付記７）前記対処内容記憶手段は、対処内容として、対処コードの元となるコード片と、前記コード片を編集する手法である適用手法とを記憶し、
前記対処コード生成手順は、前記対処内容記憶手段に記憶されているコード片を、前記適用手法に基づいて編集することで対処コードを生成することを特徴とする付記１〜６のいずれかに記載のシステム管理プログラム。
【０１４０】
（付記８）システムの状況に応じて、該システムの動作を切り替えさせるシステム管理装置であって、
前記システム上で発生するイベントのイベント識別子に対応付けて該イベントに対して行う対処内容を記憶する対処内容記憶手段と、
前記システム上で発生したイベントのイベント識別子を記憶するシステム状況データベースからイベント識別子を読み出すイベント識別子読み出し手段と、
前記対処内容記憶手段から、前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する対処内容を選択する対処内容選択手段と、
前記対処内容選択手段によって選択された対処内容に基づいて、対処コードを生成する対処コード生成手段と、
前記対処コード生成手段によって生成された対処コードを、前記システムに適用する対処コード適用手段と
を備えたことを特徴とするシステム管理装置。
【０１４１】
（付記９）前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を実行する実行条件を決定するための情報である実行条件決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生状況をさらに記憶し、
前記コード生成手段は、前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する発生状況が、前記対処内容記憶手段に記憶された該イベント識別子に対応する実行条件決定情報を満たす場合にのみ前記対処コードを生成することを特徴とする付記８に記載のシステム管理装置。
【０１４２】
（付記１０）前記対処内容記憶手段は、前記実行条件決定情報に日時の範囲を記憶し、
前記コード生成手段は、前記システム状況データベースに記憶されている前記イベントが発生した日時の範囲と、前記実行条件決定情報に記憶されている日時の範囲との両方に一致する日時の範囲を実行条件に決定することを特徴とする付記９に記載のシステム管理装置。
【０１４３】
（付記１１）前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を適用する対象を決定するための情報である適用対象決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生場所をさらに記憶し、
前記発生場所と、前記適用対象決定情報とに基づいて、前記対処を適用する対象を決定する対処条件決定手段をさらに備えることを特徴とする付記８〜１０のいずれかに記載のシステム管理装置。
【０１４４】
（付記１２）前記対処内容記憶手段は、前記適用対象決定情報に、前記イベントが発生する発生場所に対応付けて、該システム上で動作するアプリケーションのソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を記憶し、
前記対処条件決定手段は、前記システム状況データベースの発生場所に対応する前記対処内容記憶手段の適用対象決定情報に記憶されているソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を、対処を適用する対象に決定することを特徴とする付記１１に記載のシステム管理装置。
【０１４５】
（付記１３）前記対処内容記憶手段は、前記イベント識別子に対応付けて、前記イベントに対して対処を行うか否かを決定するための条件である対処適用条件をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの危険度または緊急度をさらに記憶し、
前記対処内容選択手段は、前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する危険度または緊急度が、前記対処内容記憶手段の対処適用条件を満たす対処内容を選択することを特徴とする付記８〜１２のいずれかに記載のシステム管理装置。
【０１４６】
（付記１４）前記対処内容記憶手段は、対処内容として、対処コードの元となるコード片と、前記コード片を編集する手法である適用手法とを記憶し、
前記対処コード生成手段は、前記対処内容記憶手段に記憶されているコード片を、前記適用手法に基づいて編集することで対処コードを生成することを特徴とする付記８〜１３のいずれかに記載のシステム管理装置。
【０１４７】
（付記１５）前記対処内容記憶手段は、コード片に、データベースへのアクセス時にログを出力するソースコードを記憶することを特徴とする付記１４に記載のシステム管理装置。
【図面の簡単な説明】
【０１４８】
【図１】本実施例に係るシステム管理装置を含むネットワーク構成の一例を示す図である。
【図２】本実施例に係るシステム管理装置の構成を示す機能ブロック図である。
【図３】システム状況データベースの一例を示す図である。
【図４】対処内容記憶部の一例を示す図である。
【図５−１】コード片の一例を示す図である。
【図５−２】実行条件コード片の一例を示す図である。
【図５−３】図５−１に示したコード片に、図５−２に示した実行条件コード片を組み込んだソースコードを示す図である。
【図５−４】図５−３に示したソースコードに、適用対象を限定するソースコードを組み込んだ対処コードを示す図である。
【図５−５】対処コードの一例を示す図である。
【図６】本実施例に係るシステム管理装置によるイベント対処処理手順を示すフローチャートである。
【図７】図２に示した対処条件決定部による実行条件決定処理手順および適用対象決定処理手順を示すフローチャートである。
【図８】システム管理プログラムを実行するコンピュータを示す機能ブロック図である。
【符号の説明】
【０１４９】
１０ａ、１０ｂ、１０ｃ  監視対象システム
１１ａ、１１ｂ、１１ｃ  アプリケーション
１１ｄ  対処コード
２０  システム監視装置
２１  システム状況データベース
３０  ネットワーク
１００  システム管理装置
１１０  入力部
１２０  表示部
１３０  対処内容記憶部
１４０  制御部
１４１  対処内容登録部
１４２  イベント選択部
１４３  対処条件決定部
１４４  対処コード生成部
１４５  対処コード適用部
１０００  コンピュータ
１０１０  ＣＰＵ
１０２０  入力装置
１０３０  モニタ
１０４０  媒体読取り装置
１０５０  ネットワークインターフェース装置
１０６０  ＲＡＭ
１０６１  システム管理プロセス
１０７０  ハードディスク装置
１０７１  システム管理プログラム
１０７２  対処内容データ
１０８０  バス
【図１】
0004941309.tif 000002
【図２】
0004941309.tif 000003
【図３】
0004941309.tif 000004
【図４】
0004941309.tif 000005
【図５−１】
0004941309.tif 000006
【図５−２】
0004941309.tif 000007
【図５−３】
0004941309.tif 000008
【図５−４】
0004941309.tif 000009
【図５−５】
0004941309.tif 000010
【図６】
0004941309.tif 000011
【図７】
0004941309.tif 000012
【図８】
0004941309.tif 000013