まず、本実施例に係るシステム管理装置の概要について説明する。図1は、本実施例に係るシステム管理装置を含むネットワーク構成の一例を示す図である。同図に示すように、このネットワークは、所定のサービスを提供するシステムが動作している監視対象システム10a〜10cと、ネットワーク30を介して監視対象システム10a〜10cを監視するシステム監視装置20と、本実施例に係るシステム管理装置100とによって構成される。
なお、図1は、システム監視装置20が3つの監視対象システム10a〜10cを監視する例を示しているが、システム監視装置20が監視するシステムは任意の数でよく、例えば、システム監視装置20は、1つのシステムのみを監視してもよいし、4つ以上のシステムを監視してもよい。
監視対象システム10a〜10cは、サーバや記憶装置等により構成されるシステムであり、サービスを提供するために実行されるアプリケーション11a〜11cを有する。アプリケーション11a〜11cは、複数のソースファイルやバイナリファイル等から構成される。
システム監視装置20は、監視対象システム10a〜10cの稼動状況を監視する装置である。具体的には、システム監視装置20は、監視対象システム10a〜10cが有するログ情報等から、監視対象システム10a〜10c上で発生した(発生している)イベントに関する情報を加工して、監視対象システム10a〜10cごとに、システム状況データベース21を生成する。なお、以下の説明では、「障害および障害の予兆」を「イベント」と呼ぶこととする。
このようなシステム監視装置20は、従来から用いられている。従来では、システム管理者等が、システム状況データベース21を監視して、監視対象システム10a〜10c上でイベントが発生したことを知ると、障害を修正したアプリケーションを監視対象システム10a〜10cに適用したり、原因追求のためにアプリケーション11a〜11cが出力するログの詳細度(ログレベル)を上げたりするという対処を行っていた。
しかしながら、イベントが発生してからシステム管理者が対応していたのでは、システム復旧時間が長くなってしまうという問題や、システム管理者の作業工数が増大するという問題があった。
なお、近年では、イベントが発生した場合に、アプリケーションの一部を、自動的に修正用のアプリケーションに入れ替える技術等も提案されているが、あらゆる障害を想定して修正用のアプリケーションを用意しておくことは現実的には不可能であった。例えば、アプリケーションの一部でイベントが発生している場合に、その一部のアプリケーションだけログレベルを上げる修正用アプリケーションを用意しておくことは現実的には不可能であり、結局は、システム管理者等による対処が必要だった。
そこで、本実施例に係るシステム管理装置100では、図1に示すように、システム状況データベース21に記憶されている各種情報と、各イベントに対応付けて対処内容を記憶する対処内容記憶部130とを用いて、監視対象システム10a〜10c上で対処が必要なイベントが発生しているかを判断し、対処が必要な場合には、対処を実行するための対処コードを自動的に生成して、監視対象システム10a〜10cに適用する。
図1に示した例では、システム管理装置100の制御部140は、対処内容記憶部130に基づいて、監視対象システム10c上で対処が必要なイベントが発生していると判断して対処コード11dを生成している。そして、対処コード11dを監視対象システム10cに送信して、アプリケーション11cに適用している。
システム管理装置100が有する対処内容記憶部130は、イベントに対応付けて、かかるイベントに対して対処を行う必要があるかを判断するための情報や、対処の具体的な内容や、対処を実行する時間を決定するための情報や、アプリケーション11a〜11c内のどのソースファイルに対処を適用するかを決定するための情報などを記憶する。
そして、システム管理装置100の制御部140は、対処内容記憶部130に記憶されている各種情報に基づいて、システム状況データベース21に記憶されているイベントに対して対処が必要であるかを判断し、対処が必要な場合には、対処の内容、対処を実行する時間、対処を適用するソースファイルなどを決定して対処コード11dを生成する。
例えば、監視対象システム10c上で、「0時〜8時に、特定のURL(Uniform Resource Locator)のレスポンスが低下する」というイベントが発生した場合、システム管理装置100の制御部140は、対処内容記憶部130に記憶されている各種情報に基づいて、「所定の時間に、特定のURLにアクセスされた場合に詳細なログを出力する」という対処コードを生成する。
このように、本実施例に係るシステム管理装置100は、システム状況データベース21に記憶されている各種情報と、対処内容記憶部130に記憶されている各種情報を用いて、監視対象システム10a〜10cで発生したイベントに対する対処コードを生成して、監視対象システム10a〜10cに適用するので、あらゆる障害を想定した対処コードを用意しておくことなく、イベントに対して自動的に対処することができる。
例えば、100個のソースファイルからアプリケーション11aが構成されている場合、上述した従来技術を用いると、100個のソースファイルのあらゆる部分に、ログを詳細に出力するといった対処を施した対処コードを複数用意しておく必要があった。一方、本実施例に係るシステム管理装置100では、システム状況データベース21に記憶されているイベントに関する各種情報に基づいて、対処が必要な部分を特定して対処コードを生成するので、あらゆる障害を想定した複数の対処コードを用意しておくことなく、イベントに対して自動的に対処することができる。
また、本実施例に係るシステム管理装置100は、対処を実行する時間や、対処を適用するソースファイルなどを限定して対処コードを生成するので、監視対象システム10a〜10c上で発生したイベントに対して、必要な部分に対してのみ対処することができ、対処コードを実行することで増大する負荷を最小限に抑えることができる。
例えば、従来では、監視対象システム10c上でイベントが発生した場合、アプリケーション11cのログレベルを全体的に上げることが行われていたので、ログ出力による負荷が増大していた。一方、本実施例に係るシステム管理装置100では、対処が必要な特定のソースファイルに対してのみログレベルを上げる対処を行うので、ログ出力による負荷の増大を防止することができる。
次に、本実施例に係るシステム管理装置100の構成について説明する。なお、以下の説明では、システム管理装置100は、監視対象システム10c上で発生したイベントに対して対処を行うこととする。
図2は、本実施例に係るシステム管理装置100の構成を示す機能ブロック図である。同図に示すように、システム管理装置100は、入力部110と、表示部120と、対処内容記憶部130と、制御部140とを有する。そして、システム管理装置100は、監視対象システム10cと、システム状況データベース21を有するシステム監視装置20とに接続されている。なお、システム状況データベース21は、システム監視装置20によって監視対象システム10cのログ情報等から生成されるデータベースである。
入力部110は、各種情報や操作指示を入力するための入力デバイスであり、例えば、キーボードやマウスからなる。表示部120は、各種情報を表示する表示デバイスであり、例えば、液晶表示装置からなる。
対処内容記憶部130は、上述したように、システム状況データベース21に記憶されているイベントに対して対処を行う必要があるかを判断するための情報などを記憶する。ここで、システム状況データベース21に記憶されている各種情報と、対処内容記憶部130に記憶されている各種情報との間には密接な関係があるため、まず、システム状況データベース21が記憶する各種情報について説明し、その後、対処内容記憶部130が記憶する各種情報について説明する。
システム状況データベース21の一例を図3に示す。同図に示すように、システム状況データベース21は、イベントID、イベント名、付加情報、発生状況場所といった項目を有する。イベントIDは、システム状況データベース21に記憶されているレコードを識別するための識別子を記憶する。イベント名は、監視対象システム10cで発生した(発生している)障害または障害の予兆の名称を記憶する。付加情報は、イベントの危険度、異常度または緊急度を記憶する。
発生状況場所は、イベントが発生したときの状況を記憶する発生状況と、イベントが発生した場所を記憶する発生場所とに分けて記憶する。具体的には、発生状況は、イベントが発生した日時、日時の範囲、CPU(Central Processing Unit)の負荷、ネットワークの負荷、コマンド名などを記憶する。また、発生場所は、URL、データベースのテーブル名、監視対象システム10a〜10cのホスト名などを記憶する。
図3に示したシステム状況データベース21の1行目(イベントID「001」)は、日付「1日」の時間「0時〜8時」に、URL「http://www.foo.co.jp/bar/buz」にアクセスされたときに、「アプリケーションのレスポンスが低下する(URLレスポンス低下)」というイベントが発生したことを表している。そして、かかるイベントの危険度が「3」であることを表している。
また、図3に示したシステム状況データベース21の2行目(イベントID「002」)は、時間「14時〜19時」に、コマンド名「cmd1」が実行されたときに、CPU負荷が「80%」になる「CPU高負荷」というイベントが発生したことを表している。そして、かかるイベントの危険度が「4」であることを表している。
なお、システム状況データベース21の発生状況は任意の項目であり、イベントによっては、発生状況に情報が記憶されない場合がある。具体的には、図3に示したシステム状況データベース21のイベントID「005」は、「異常アクセス」というイベントが発生した状況(時間やCPU負荷)の情報を必要としないため、発生状況に情報が記憶されていない。なお、この例は、一例にすぎず、「異常アクセス」であっても発生状況に情報が記憶される場合もある。
対処内容記憶部130の一例を図4に示す。同図に示すように、対処内容記憶部130は、対処ID、イベント名、対処適用条件、対処条件、対処内容といった項目を有する。対処IDは、対処内容記憶部130に記憶されているレコードを識別するための識別子を記憶する。イベント名は、イベントの名称を記憶する。対処適用条件は、システム状況データベース21に記憶されているイベントに対して対処を行うか否かを決定するための条件を記憶する。
対処条件は、イベントに対して対処を行う場合に、対処をどのような場合に実行するか(実行条件)を決定するための情報を記憶する実行条件決定情報と、対処を適用する対象(適用対象)を決定するための情報を記憶する適用対象決定情報とに分けて記憶する。具体的には、実行条件決定情報は、日時、日時の範囲、CPUの負荷などを記憶する。また、適用対象決定情報は、イベントが発生する発生場所(例えば、URL、コマンド名)に対応付けて、対処を適用する適用対象(例えば、パッケージ名、ソースファイル名、データベースのテーブル名、ソースファイルで使用されている関数名)を記憶する。
対処内容は、対処の内容を記憶し、コード片と、適用手法とに分けて記憶する。コード片は、対処コードの元となる最小構成のソースコードを記憶する。また、適用手法は、コード片から対処コードを生成する手法や、対処コードをアプリケーション11cに適用する手法を記憶する。
なお、対処内容記憶部130が記憶する各種情報は、ユーザによって登録される。例えば、ユーザは、表示部120に表示される対処内容登録画面上で登録操作を行うことにより、対処内容記憶部130に各種情報を登録する。また、例えば、ユーザは、ネットワークを介して、対処内容登録情報をシステム管理装置100に送信することで対処内容記憶部130に各種情報を登録する。
また、図3に示したシステム状況データベース21のイベント名と、図4に示した対処内容記憶部130のイベント名に、イベントの名称が記憶される例を示したが、イベントの名称を一意に特定する識別子であるイベント識別子を記憶するように構成してもよい。
制御部140は、システム管理装置100を全体制御する制御部であり、本実施例に関連するものとして、対処内容登録部141と、イベント選択部142と、対処条件決定部143と、対処コード生成部144と、対処コード適用部145とを有する。
対処内容登録部141は、対処内容記憶部130に各種情報を記憶させるための対処内容登録画面を表示部120に表示し、ユーザに各種情報を登録させる処理部である。また、対処内容登録部141は、ネットワークを介して対処内容登録情報を受け付けた場合、かかる対処内容登録情報に含まれる各種情報を対処内容記憶部130に登録する。
イベント選択部142は、対処内容記憶部130に記憶されている各種情報に基づいて、システム状況データベース21から対処が必要なイベントを選択する処理部である。具体的には、イベント選択部142は、システム状況データベース21を1レコードずつ処理していき、処理対象レコードのイベント名が、対処内容記憶部130のイベント名と一致し、かつ、処理対象レコードの付加情報が対処内容記憶部130の対処適用条件を満たす場合、かかる処理対象レコードのイベントIDと、対処内容記憶部130の対処IDとの組合せを、対処条件決定部143へ出力する。
一方、処理対象レコードのイベント名が、対処内容記憶部130のイベント名と一致しない場合、または、イベント名が一致する場合であっても処理対象レコードの付加情報が対処内容記憶部130の対処適用条件を満たさない場合、イベント選択部142は、処理対象レコードのイベントに対して対処を行わないことを決定する。
対処条件決定部143は、対処内容記憶部130の対処条件に基づいて、実行条件を決定する実行条件決定処理と、適用対象および対処を適用するソースファイルを決定する適用対象決定処理とを行う処理部である。そして、対処条件決定部143は、実行条件決定処理により決定した実行条件と、適用対象決定処理により決定した適用対象および対処を適用するソースファイル名と、イベントIDと、対処IDとを対処コード生成部144へ出力する。
対処条件決定部143による実行条件決定処理および適用対象決定処理について具体的に説明する。最初に、対処条件決定部143による実行条件決定処理について説明する。対処条件決定部143は、イベント選択部142からイベントIDと対処IDとの組合せを入力されると、入力されたイベントIDに対応するシステム状況データベース21の発生状況と、入力された対処IDに対応する対処内容記憶部130の実行条件決定情報に情報が記憶されているか否かを判断する。
システム状況データベース21の発生状況と、対処内容記憶部130の実行条件決定情報との両方に情報が記憶されている場合、対処条件決定部143は、システム状況データベース21の発生状況と、対処内容記憶部130の実行条件決定情報との両方を満たす条件を実行条件にすることを決定する。システム状況データベース21の発生状況と、対処内容記憶部130の実行条件決定情報との両方を満たす条件が存在しない場合、対処条件決定部143は、入力されたイベントIDと対処IDとの組合せについて処理を終了する。すなわち、かかるイベントIDのイベントに対して、かかる対処IDの対処を行わないことを決定する。
一方、システム状況データベース21の発生状況に情報が記憶されておらず、対処内容記憶部130の実行条件決定情報に情報が記憶されている場合、対処条件決定部143は、対処内容記憶部130の実行条件決定情報を実行条件にすることを決定する。
また、システム状況データベース21の発生状況に情報が記憶されており、対処内容記憶部130の実行条件決定情報に情報が記憶されていない場合、または、システム状況データベース21の発生状況と、対処内容記憶部130の実行条件決定情報との両方に情報が記憶されていない場合、対処条件決定部143は、実行条件を設けずに、常に対処を実行することを決定する。
なお、システム状況データベース21の発生状況に情報が記憶されており、対処内容記憶部130の実行条件決定情報に情報が記憶されていない場合、対処条件決定部143は、システム状況データベース21の発生状況を実行条件にすることを決定するようにしてもよい。
続いて、対処条件決定部143による適用対象決定処理について説明する。対処条件決定部143は、イベント選択部142から入力されたイベントIDに対応するシステム状況データベース21の発生場所と、イベント選択部142から入力された対処IDに対応する対処内容記憶部130の適用対象決定情報とに基づいて適用対象および対処を適用するソースファイルを決定する。システム状況データベース21の発生場所が、対処内容記憶部130の適用対象決定情報の条件を満たさず、適用対象を決定できない場合、対処条件決定部143は、イベント選択部142から入力されたイベントIDと対処IDとの組合せについて処理を終了する。
そして、対処条件決定部143は、決定した適用対象に基づいて、アプリケーション11cを構成するソースファイルの中から、修正が必要であるソースファイルを決定する。対処条件決定部143は、このソースファイルを決定する処理を、アプリケーション11cを構成するソースファイルの構成情報や、ソースファイルを用いて行う。
例えば、適用対象がパッケージAである場合、対処条件決定部143は、対処を適用するソースファイルを、パッケージAに属する全てのソースファイルに決定する。これは、どのソースファイルがそのパッケージに属するかを示すソースファイルの構成情報(ディレクトリ構成)によって決定することができる。
また、例えば、適用対象が関数Bである場合、対処条件決定部143は、対処を適用するソースファイルを、関数Bを用いる全てのソースファイルに決定する。これは、アプリケーション11cを構成する全てのソースファイルを「関数B」によって検索することで決定することができる。
対処コード生成部144は、対処条件決定部143から入力された各種情報と、対処内容記憶部130に記憶されている各種情報に基づいて、対処を実行するための対処コードを生成する処理部である。
具体的には、対処コード生成部144は、対処条件決定部143から入力された対処IDに対応する対処内容記憶部130のコード片および対処手法を取得して、取得したコード片に、対処条件決定部143から入力された実行条件および適用対象を組み込む。このとき、対処コード生成部144は、対処内容記憶部130から取得した対処手法に基づいて組込処理を行う。そして、対処コード生成部144は、生成した対処コードと、イベントIDと、対処IDと、対処を適用するソースファイル名とを対処コード適用部145へ出力する。
対処コード適用部145は、対処コード生成部144から入力された対処コードを監視対象システム10cに適用する処理部である。具体的には、対処コード適用部145は、対処コード生成部144から入力された対処IDに対応する対処内容記憶部130の適用手法に基づいて、対処コード生成部144から入力された対処コードをコンパイル(ビルド)する必要があるか否か、対処コードをソースファイルに組み込む必要があるか否かを判断して、対処コードを監視対象システム10cに適用する。
例えば、対処コードをコンパイルする必要がある場合、対処コード適用部145は、かかる対処コードをコンパイルして実行ファイルを生成し、生成した実行ファイルを監視対象システム10cの所定の場所に配置する。このとき、対処コードだけではなく、対処コード生成部144から入力されたソースファイルもコンパイルする必要がある場合は、対処コード生成部144から入力されたソースファイル名に該当するソースファイルを監視対象システム10cから取得して、取得したソースファイルについてもコンパイルする。一方、対処コード生成部144から入力された対処コードをコンパイルする必要がない場合、対処コード適用部145は、対処コードを監視対象システム10cの所定の場所に配置する。
また、例えば、対処コードをソースファイルに組み込む必要がある場合、対処コード生成部144から入力されたソースファイル名に該当するソースファイルを監視対象システム10cから取得して、取得したソースファイルに対処コードを組み込んで、監視対象システム10cの所定の場所に配置する。
図3および図4に示した例を用いて、上述したイベント選択部142、対処条件決定部143、対処コード生成部144および対処コード適用部145の処理を説明する。まず、イベント選択部142は、システム状況データベース21のイベントID「001」に該当するレコードを処理対象レコードとする。そして、処理対象レコードのイベント名「URLレスポンス低下」と、対処内容記憶部130の対処ID「101」および「103」に対応するイベント名「URLレスポンス低下」とが一致し、かつ、処理対象レコードの付加情報「危険度3」が、対処内容記憶部130の対処ID「101」および「103」に対応する対処適用条件「危険度3以上」を満たすので、イベントID「001」と対処ID「101」との組合せ、および、イベントID「001」と対処ID「103」との組合せを対処条件決定部143へ出力する。
イベント選択部142からイベントID「001」と対処ID「101」との組合せを入力された対処条件決定部143は、イベントID「001」に対応するシステム状況データベース21の発生状況と、対処ID「101」に対応する対処内容記憶部130の実行条件決定情報に情報が記憶されているため、発生状況「1日の0時〜8時」と、実行条件決定情報「2時〜10時」との両方を満たす「1日の2時〜8時」を実行条件に決定する。これは、イベントID「001」のイベントに対して、対処ID「101」の対処を「1日の2時〜8時」の場合のみ行うことを表す。
そして、対処条件決定部143は、システム状況データベース21のイベントID「001」に対応する発生場所「http://www.foo.co.jp/bar/buz」が、対処内容記憶部130の対処ID「101」に対応する適用対象決定情報「http://www.foo.co.jp/bar以下」を満たすので、適用対象をパッケージ「aaa.bbb.bar」に決定する。そして、対処条件決定部143は、対処を適用するソースファイルを、パッケージ「aaa.bbb.bar」に属する全てのソースファイルに決定する。
そして、対処条件決定部143は、実行条件「1日の2時〜8時」と、適用対象「パッケージaaa.bbb.bar」および対処を適用するソースファイルのファイル名と、イベントID「001」と、対処ID「101」とを対処コード生成部144へ出力する。
また、イベント選択部142からイベントID「001」と対処ID「103」との組合せを入力された対処条件決定部143は、イベントID「001」に対応するシステム状況データベース21の発生状況「1日の0時〜8時」と、対処ID「103」に対応する対処内容記憶部130の実行条件決定情報「9時〜14時」との両方を満たす条件が存在しないため、イベントID「001」のイベントに対して、対処ID「103」の対処を行わないことを決定する。
なお、イベントID「001」に対応するシステム状況データベース21の発生状況と、対処ID「103」に対応する対処内容記憶部130の実行条件決定情報との両方を満たす条件が存在する場合であっても、対処条件決定部143は、システム状況データベース21のイベントID「001」に対応する発生場所「http://www.foo.co.jp/bar/buz」が、対処内容記憶部130の対処ID「103」に対応する適用対象決定情報「http://xxx.yyy.jp/test以下」を満たさないので、イベントID「001」のイベントに対して、対処ID「103」の対処を行わないことを決定する。
対処条件決定部143から各種情報を入力された対処コード生成部144は、対処内容記憶部130から、対処ID「101」に対応するコード片「public aspect ・・・」と、対処手法「アスペクト言語」を取得する。なお、図4は、コード片に記憶されている情報の一部を「・・・」と図示して省略している。
対処内容記憶部130の対処ID「101」に対応するコード片の一例を図5−1に示す。同図に示すように、このコード片はアスペクトJ言語によりコーディングされている。このコード片が実行されるとデータベースのアクセス時にログを出力する。
そして、対処コード生成部144は、対処内容記憶部130から取得したコード片(図5−1)に、対処条件決定部143から入力された実行条件「1日の2時〜8時」を組み込む。
具体的には、対処コード生成部144は、図5−2に示すように、コード片が実行される日時を「1日の2時〜8時」に限定するための実行条件コード片を生成する。そして、対処コード生成部144は、図5−1に示したコード片のコメント「BEGINNING OF BODY」の部分を、実行条件コード片のコメント「BEGINNING OF BODY」によって囲まれている部分に置き換えるとともに、図5−1に示したコード片のコメント「END OF BODY」の部分を、実行条件コード片のコメント「END OF BODY」によって囲まれている部分に置き換える。
図5−3は、図5−1に示したコード片に、図5−2に示した実行条件コード片を組み込んだソースコードを示す図である。同図では、図5−1に示したコード片に対して、実行条件を組み込んだ部分を下線で示している。
そして、対処コード生成部144は、実行条件コード片を組み込んだソースコード(図5−3)に、適用対象をパッケージ「aaa.bbb.bar」に限定するためのソースコードを組み込む。具体的には、図5−3に示したコード片のコメント「WITHIN」の部分に、パッケージ「aaa.bbb.bar」の場合のみ実行されるようにソースコードを組み込む。
図5−4は、図5−3に示したソースコードに、適用対象を限定するソースコードを組み込んだソースコード(対処コード)を示す図である。なお、同図では、図5−3に示したソースコードに対して、適用対象を組み込んだ部分を下線で示している。
このように、対処コード生成部144は、対処内容記憶部130に記憶されているコード片(図5−1)に、実行条件コード片(図5−2)を組み込むとともに、適用対象を限定するためのソースコードを組み込んで、イベントID「001」に対応するイベントに対する対処を実行するための対処コード(図5−4)を生成する。
そして、対処コード生成部144は、生成した対処コードと、イベントID「001」と、対処ID「101」と、対処を適用するソースファイルのファイル名とを対処コード適用部145へ出力する。
対処コード生成部144から各種情報を入力された対処コード適用部145は、対処コードがアスペクトJ言語によりコーディングさているため、対処コード生成部144から入力されたソースファイルのファイル名についてもコンパイルする必要がある。したがって、対処コード適用部145は、かかるファイル名に該当するソースファイルを監視対象システム10cから取得して、取得したソースファイルと、対処コード生成部144から入力された対処コードとをコンパイルする。そして、対処コード適用部145は、コンパイル後に生成された実行ファイルを監視対象システム10cの所定の場所に配置する。
ここまでの処理が、システム状況データベース21のイベントID「001」に該当するレコードに対して行う処理である。続いて、イベント選択部142は、システム状況データベース21のイベントID「002」に該当するレコードを処理対象レコードとする。かかる処理対象レコードのイベント名「CPU高負荷」と、対処内容記憶部130の対処ID「102」に対応するイベント名「CPU高負荷」とが一致し、かつ、処理対象レコードの付加情報「危険度4」が、対処内容記憶部130の対処ID「102」に対応する対処適用条件「危険度4以上」を満たすので、イベントID「002」と対処ID「102」との組合せを対処条件決定部143へ出力する。
なお、イベント選択部142は、システム状況データベース21に記憶されている各レコードについて、一度処理を行ったレコードについては再度処理を行わない。これは、例えば、システム状況データベース21に「処理済フラグ」といったフラグを設けて、イベント選択部142が、処理対象レコードについて処理が終了した場合に「処理済フラグ」を更新するようにすることで実現できる。
イベント選択部142からイベントID「002」と対処ID「102」との組合せを入力された対処条件決定部143は、イベントID「002」に対応するシステム状況データベース21の発生状況「負荷80%、14時〜19時」と、対処ID「102」に対応する対処内容記憶部130の実行条件決定情報「負荷70%以上、13時〜17時」との両方を満たす「負荷80%以上、14時〜17時」を実行条件に決定する。これは、イベントID「002」のイベントに対して、対処ID「102」の対処を「14時〜17時に負荷が80%以上」になった場合のみ行うことを表す。
そして、対処条件決定部143は、システム状況データベース21のイベントID「002」に対応する発生場所「コマンド名cmd1」が、対処内容記憶部130の対処ID「102」に対応する適用対象決定情報「コマンド名cmd1〜cmd5のいずれか」を満たすので、適用対象を「関数getdbnameの後」に決定する。そして、対処条件決定部143は、対処を適用するソースファイルを、コマンド「cmd1」を構成する全てのソースファイルに決定する。なお、「関数getdbnameの後」とは、ソースファイル内で「getdbname」という関数を呼び出している部分の後に、対処コードを組み込むことを表す。
そして、対処条件決定部143は、実行条件「負荷80%以上、14時〜17時」と、適用対象「関数getdbnameの後」および対処を適用するソースファイルのファイル名と、イベントID「002」と、対処ID「102」とを対処コード生成部144へ出力する。
対処条件決定部143から各種情報を入力された対処コード生成部144は、対処内容記憶部130から、対処ID「102」に対応するコード片「print $logfile ・・・」と、対処手法「ソースコード」を取得する。そして、対処コード生成部144は、実行条件「負荷80%以上、14時〜17時」をコード片に組み込んで、対処コードを生成する。
そして、対処コード生成部144は、生成した対処コードと、イベントID「002」と、対処ID「102」と、対処を適用するソースファイルのファイル名とを対処コード適用部145へ出力する。
対処コード生成部144から各種情報を入力された対処コード適用部145は、対処コード生成部144から入力されたソースファイル名に該当するソースファイルを監視対象システム10cから取得する。そして、対処内容記憶部130から取得したソースファイル内の「getdbname」という関数を呼び出している部分の後に、対処コード生成部144から入力された対処コードを組み込む。そして、対処コード適用部145は、対処コードを組み込んだソースファイルをコンパイルする必要があれば、コンパイルして実行ファイルを生成して監視対象システム10cに適用する。
ここまでの処理が、システム状況データベース21のイベントID「002」に該当するレコードに対して行う処理である。続いて、イベント選択部142は、システム状況データベース21のイベントID「003」に該当するレコードを処理対象レコードとする。かかる処理対象レコードのイベント名が一致し、かつ、対処適用条件「危険度3以上」を満たすので、イベントID「003」と対処ID「103」との組合せを対処条件決定部143へ出力する。以後の処理は、上述したイベントID「001」に対する処理とほぼ同様であるため、ここでは、詳細な説明を省略する。
なお、図4に示した対処内容記憶部130の対処ID「003」に対応する適用対象決定情報に示すように、適用対象決定情報に「全てのパッケージ」を記憶させることで、適用対象を全てのソースファイルにすることもできる。
続いて、イベント選択部142は、システム状況データベース21のイベントID「004」に該当するレコードを処理対象レコードとする。かかる処理対象レコードのイベント名「DB(データベース)レスポンス低下」と、対処内容記憶部130の対処ID「104」に対応するイベント名「DBレスポンス低下」とが一致し、かつ、処理対象レコードの付加情報「危険度3」が、対処内容記憶部130の対処ID「104」に対応する対処適用条件「危険度3以上」を満たすので、イベントID「004」と対処ID「104」との組合せを対処条件決定部143へ出力する。
イベント選択部142からイベントID「004」と対処ID「104」との組合せを入力された対処条件決定部143は、イベントID「004」に対応するシステム状況データベース21の発生状況「7時〜11時」と、対処ID「104」に対応する対処内容記憶部130の実行条件決定情報「6時〜14時」との両方を満たす条件「7時〜11時」を実行条件に決定する。
そして、対処条件決定部143は、システム状況データベース21のイベントID「004」に対応する発生場所「テーブル名USERINFO」が、対処内容記憶部130の対処ID「104」に対応する適用対象決定情報「テーブル名にUSERを含む場合」を満たすので、適用対象をテーブル名「USERINFO」に決定する。そして、対処条件決定部143は、対処を適用するソースファイルを、テーブル名「USERINFO」にアクセスする全てのソースファイルに決定する。
そして、対処条件決定部143は、実行条件「7時〜11時」と、適用対象「テーブル名USERINFO」および対処を適用するソースファイルのファイル名と、イベントID「004」と、対処ID「104」とを対処コード生成部144へ出力する。
対処条件決定部143から各種情報を入力された対処コード生成部144は、対処内容記憶部130から、対処ID「104」に対応するコード片「public aspect ・・・」と、対処手法「アスペクト言語」を取得する。対処ID「104」に対応するコード片は、上述した対処ID「101」の例と同様に、図5−1に示したコード片とする。そして、対処コード生成部144は、対処内容記憶部130から取得したコード片(図5−1)に、対処条件決定部143から入力された実行条件「7時〜11時」を組み込む。そして、対処コード生成部144は、実行条件を組み込んだコード片に、図5−5に示すように、適用対象をテーブル名「USERINFO」に限定するためのソースコードを組み込む。
そして、対処コード適用部145は、対処コード生成部144から入力された対処コードがアスペクトJ言語によりコーディングされた対処コードであるため、上述したイベントID「001」の例と同様に、対処コードを監視対象システム10cに適用する。
次に、本実施例に係るシステム管理装置100によるイベント対処処理について説明する。図6は、本実施例に係るシステム管理装置100によるイベント対処処理手順を示すフローチャートである。
同図に示すように、システム状況データベース21に未処理のレコードが存在する場合(ステップS101肯定)、システム管理装置100のイベント選択部142は、未処理のレコードの中から1レコードを処理対象とする。そして、イベント選択部142は、処理対象レコードのイベント名が、対処内容記憶部130のイベント名と一致し(ステップS102肯定)、かつ、処理対象レコードの付加情報が対処内容記憶部130の対処適用条件を満たす場合(ステップS103肯定)、かかる処理対象レコードのイベントIDと、対処内容記憶部130の対処IDとの組合せを、対処条件決定部143へ出力する。
一方、処理対象レコードのイベント名が、対処内容記憶部130のイベント名と一致しない場合(ステップS102否定)、または、イベント名が一致する場合であっても(ステップS102肯定)、処理対象レコードの付加情報が対処内容記憶部130の対処適用条件を満たさない場合(ステップS103否定)、イベント選択部142は、処理対象レコードのイベントに対して対処を行わないことを決定して処理を終了する。
イベント選択部142からイベントIDと対処IDとの組合せを入力された対処条件決定部143は、実行条件決定処理を行い、実行条件を決定する(ステップS104)。また、対処条件決定部143は、適用対象決定処理を行い、適用対象と、対処を適用するソースファイルを決定する(ステップS105)。そして、対処条件決定部143は、対処を実行する実行条件と、適用対象と、対処を適用するソースファイルと、イベントIDと、対処IDとを対処コード生成部144へ出力する。
そして、対処コード生成部144は、対処条件決定部143から入力された対処IDに対応する対処内容記憶部130のコード片および対処手法を取得して、取得したコード片に、実行条件と適用対象とを組み込んで対処コードを生成する(ステップS106)。そして、対処コード生成部144は、生成した対処コードと、イベントIDと、対処IDと、対処を適用するソースファイルとを対処コード適用部145へ出力する。
そして、対処コード適用部145は、対処コード生成部144から入力された対処IDに対応する適用手法に基づいて、対処コードをコンパイル(ビルド)する必要があるか否か、または、対処コードをソースファイルに組み込む必要があるか否かを判断して、コンパイル等を行った後に、対処コードを監視対象システム10cに適用する(ステップS107)。
次に、図2に示した対処条件決定部143による実行条件決定処理および適用対象決定処理について説明する。図7は、図2に示した対処条件決定部143による実行条件決定処理手順および適用対象決定処理手順を示すフローチャートである。
同図に示すように、システム管理装置100の対処条件決定部143は、イベント選択部142から入力されたイベントIDに対応するシステム状況データベース21の発生状況に情報が格納されており(ステップS201肯定)、かつ、イベント選択部142から入力された対処IDに対応する対処内容記憶部130の実行条件決定情報に情報が記憶されている場合(ステップS202肯定)、システム状況データベース21の発生状況と、対処内容記憶部130の実行条件決定情報との両方を満たす条件が存在するか判断する。
システム状況データベース21の発生状況と、対処内容記憶部130の実行条件決定情報との両方を満たす条件が存在する場合(ステップS203肯定)、対処条件決定部143は、満たした条件を実行条件に決定する(ステップS204)。
一方、システム状況データベース21の発生状況と、対処内容記憶部130の実行条件決定情報との両方を満たす条件が存在しない場合(ステップS203否定)、対処条件決定部143は、イベント選択部142から入力されたイベントIDと対処IDとの組合せについて処理を終了する(ステップS205)。
一方、システム状況データベース21の発生状況に情報が記憶されておらず(ステップS201否定)、対処内容記憶部130の実行条件決定情報に情報が記憶されている場合(ステップS206肯定)、対処条件決定部143は、対処内容記憶部130の実行条件決定情報を実行条件に決定する(ステップS207)。
また、システム状況データベース21の発生状況に情報が記憶されており(ステップS201肯定)、対処内容記憶部130の実行条件決定情報に情報が記憶されていない場合(ステップS202否定)、対処条件決定部143は、実行条件を設けずに、常に対処を実行することを決定する。同様に、システム状況データベース21の発生状況に情報が記憶されておらず(ステップS201否定)、対処内容記憶部130の実行条件決定情報に情報が記憶されていない場合についても(ステップS206否定)、対処条件決定部143は、実行条件を設けずに、常に対処を実行することを決定する。ここまでの処理が対処条件決定部143による実行条件決定処理である。
その後、対処条件決定部143は、イベント選択部142から入力されたイベントIDに対応するシステム状況データベース21の発生場所と、イベント選択部142から入力された対処IDに対応する対処内容記憶部130の適用対象決定情報とに基づいて適用対象を決定する(ステップS208)。
適用対象を決定できた場合(ステップS209肯定)、対処条件決定部143は、決定した適用対象に基づいて、アプリケーション11cを構成するソースファイルの中から、修正が必要であるソースファイルを決定する(ステップS210)。
一方、システム状況データベース21の発生場所が、対処内容記憶部130の適用対象決定情報の条件を満たさず、適用対象を決定できなかった場合(ステップS209否定)、対処条件決定部143は、イベント選択部142から入力されたイベントIDと対処IDとの組合せについて処理を終了する(ステップS205)。
上述してきたように、本実施例に係るシステム管理装置100は、システム状況データベース21に記憶されている各種情報と、対処内容記憶部130に記憶されている各種情報を用いて、監視対象システム10cで発生したイベントに対する対処コードを生成して、監視対象システム10cに適用するように構成したので、イベントに対して自動的に対処することができる。その結果、障害発生後のシステム復旧時間を短くすることや、障害発生を未然に防ぐことができる。
なお、上記実施例では、対処内容記憶部130の実行条件決定情報に「時間の範囲」、「CPUの負荷」が記憶されている例を示したが、他の例として「ネットワークの負荷」、「頻度」、「コマンド名」、「パラメータ」、「イベント名」、「ホスト名」、「IP(Internet Protocol)アドレス」、「デバイス名」が記憶されていてもよい。以下に、これらが記憶されている場合における対処条件決定部143の実行条件決定処理について説明する。
対処内容記憶部130の実行条件決定情報に「ネットワークの負荷」が記憶されている場合、対処条件決定部143は、監視対象システム10cのネットワーク負荷が、実行条件決定情報に記憶されているネットワーク負荷よりも大きくなった場合のみ対処を行うように実行条件を決定する。
対処内容記憶部130の実行条件決定情報に「頻度」が記憶されている場合、対処条件決定部143は、イベント(例えば、異常アクセス)が、実行条件決定情報に記憶されている頻度を超えて発生した場合のみ対処を行うように実行条件を決定する。
対処内容記憶部130の実行条件決定情報に「コマンド名」が記憶されている場合、対処条件決定部143は、実行条件決定情報に記憶されているコマンド名を実行された場合のみ対処を行うように実行条件を決定する。
対処内容記憶部130の実行条件決定情報に「パラメータ」が記憶されている場合、対処条件決定部143は、実行条件決定情報に記憶されているパラメータを受け付けた場合のみ対処を行うように実行条件を決定する。ここでいう「パラメータ」とは、コマンドに渡されるパラメータや、URLに付加されるパラメータなどを示す。
対処内容記憶部130の実行条件決定情報に「イベント名」が記憶されている場合、対処条件決定部143は、実行条件決定情報に記憶されているパラメータを受け付けた場合のみ対処を行うように実行条件を決定する。この例は、過去の障害状況からイベント間の因果関係を推測できるような場合に有効である。例えば、「イベントCが発生した後に、イベントDが発生しやすい」ということが分かっていれば、実行条件決定情報に「イベントC」を記憶しておくことで、「イベントD」に対する対処を行うことができる。
対処内容記憶部130の実行条件決定情報に「ホスト名」が記憶されている場合、対処条件決定部143は、実行条件決定情報に記憶されているホスト名に対応する監視対象システム10a〜10cにおいてイベントが発生した場合のみ対処を行うように実行条件を決定する。この例は、同一のアプリケーションを運用系サーバと待機系サーバに搭載して運用しているような場合に有効である。例えば、運用系サーバでは対処を行う必要があるが、待機系サーバでは対処を行う必要がない場合、実行条件決定情報に運用系サーバのホスト名を記憶しておくことで実現できる。
対処内容記憶部130の実行条件決定情報に「IPアドレス」が記憶されている場合、対処条件決定部143は、実行条件決定情報に記憶されているIPアドレスからアクセスされた場合のみ対処を行うように実行条件を決定する。
対処内容記憶部130の実行条件決定情報に「デバイス名」が記憶されている場合、対処条件決定部143は、実行条件決定情報に記憶されているデバイス名に対応するデバイス(例えば、記憶装置やプリンタ)に対して処理を行う場合のみ対処を行うように実行条件を決定する。
また、上述した実行条件決定情報に記憶される「ホスト名」や「IPアドレス」などの例は、対処内容記憶部130の適用対象決定情報に記憶されてもよい。例えば、実行条件決定情報に「ホスト名が運用系サーバの場合、パッケージaaa.bbb.bar」と記憶されている場合、対処条件決定部143は、運用系サーバでイベントが発生した場合に、適用対象をパッケージ「aaa.bbb.bar」にすることを決定する。
また、上記実施例では、「アスペクトJ言語」によって対処コードを生成して監視対象システム10cに適用する例や、対処コードをソースコードに組み込んで監視対象システム10cに適用する例を説明したが、他の手法によって対処コードを生成するして監視対象システム10cに適用してもよい。
例えば、アプリケーション11cを構成するバイナリファイルまたはバイトコードを解析して、特定のシステムコール呼び出しや、API(Application Program Interface)呼び出しの前後に、対処コードを呼び出す命令を挿入するようにしてもよい。かかる場合、対処コードを挿入した後、再リンクを行ってアプリケーション11cに適用する。なお、対処コードは、所定のコンパイルによって機械語になるので、対処コード生成部144は、特定の言語で対処コードを生成してよい。
また、例えば、アプリケーション11cが、プラグインやフックにより新たな処理を追加できる機能を備えている場合には、対処コードをプラグインやフックによりアプリケーション11cに適用する。
また、例えば、監視対象システム10cに搭載されているOS(Operating System)が、割り込み発生時やシングルステップ実行時に、新たな処理を実行できる機能を備えている場合には、割り込み発生時やシングルステップ実行時に対処コードが実行されるように適用する。
また、上記実施例では、「ログ出力」という対処を例に挙げて示したが、「設定ファイルの変更」、「所定のアプリケーションを停止」などの対処を行うようにしてもよい。例えば、「URLレスポンス低下」というイベントが発生した場合に、設定ファイルを変更することで、最大アクセス数を減らすという対処を行ってもよい。また、例えば、極めて危険度の高いイベントが発生した場合に、アプリケーション11cの全部または一部を停止するという対処を行ってもよい。
また、上記実施例では、システム管理装置100について説明したが、図2に示したシステム管理装置100の構成は、本発明の要旨を逸脱しない範囲で種々に変更することができる。例えば、システム管理装置100の制御部140が有する機能をソフトウェアとして実装し、これをコンピュータで実行することにより、システム管理装置100と同等の機能を実現することもできる。以下に、制御部140が有する機能をソフトウェアとして実装したシステム管理プログラム1071を実行するコンピュータの一例を示す。
図8は、システム管理プログラム1071を実行するコンピュータ1000を示す機能ブロック図である。このコンピュータ1000は、各種演算処理を実行するCPU1010と、ユーザからのデータの入力を受け付ける入力装置1020と、各種情報を表示するモニタ1030と、記録媒体からプログラム等を読み取る媒体読取り装置1040と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置1050と、各種情報を一時記憶するRAM(Random Access Memory)1060と、ハードディスク装置1070とをバス1080で接続して構成される。
そして、ハードディスク装置1070には、図2に示した制御部140と同様の機能を有するシステム管理プログラム1071と、図2に示した対処内容記憶部130に対応する対処内容データ1072とが記憶される。なお、対処内容データ1072を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
そして、CPU1010がシステム管理プログラム1071をハードディスク装置1070から読み出してRAM1060に展開することにより、システム管理プログラム1071は、システム管理プロセス1061として機能するようになる。そして、システム管理プロセス1061は、対処内容データ1072から読み出した情報等を適宜RAM1060上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
なお、上記のシステム管理プログラム1071は、必ずしもハードディスク装置1070に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ1000がこれらからプログラムを読み出して実行するようにしてもよい。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)システムの状況に応じて、該システムの動作を切り替えさせる処理をコンピュータに実行させるためのシステム管理プログラムであって、
前記システム上で発生したイベントのイベント識別子を記憶するシステム状況データベースからイベント識別子を読み出すイベント識別子読み出し手順と、
前記システム上で発生するイベントのイベント識別子に対応付けて該イベントに対して行う対処内容を記憶する対処内容記憶手段から、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する対処内容を選択する対処内容選択手順と、
前記対処内容選択手順によって選択された対処内容に基づいて、対処コードを生成する対処コード生成手順と、
前記対処コード生成手順によって生成された対処コードを、前記システムに適用する対処コード適用手順と
をコンピュータに実行させることを特徴とするシステム管理プログラム。
(付記2)前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を実行する実行条件を決定するための情報である実行条件決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生状況をさらに記憶し、
前記コード生成手順は、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する発生状況が、前記対処内容記憶手段に記憶された該イベント識別子に対応する実行条件決定情報を満たす場合にのみ前記対処コードを生成することを特徴とする付記1に記載のシステム管理プログラム。
(付記3)前記対処内容記憶手段は、前記実行条件決定情報に日時の範囲を記憶し、
前記コード生成手順は、前記システム状況データベースに記憶されている前記イベントが発生した日時の範囲と、前記実行条件決定情報に記憶されている日時の範囲との両方に一致する日時の範囲を実行条件に決定することを特徴とする付記2に記載のシステム管理プログラム。
(付記4)前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を適用する対象を決定するための情報である適用対象決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生場所をさらに記憶し、
前記発生場所と、前記適用対象決定情報とに基づいて、前記対処を適用する対象を決定する対処条件決定手順を実行させることを特徴とする付記1〜3のいずれかに記載のシステム管理プログラム。
(付記5)前記対処内容記憶手段は、前記適用対象決定情報に、前記イベントが発生する発生場所に対応付けて、該システム上で動作するアプリケーションのソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を記憶し、
前記対処条件決定手順は、前記システム状況データベースの発生場所に対応する前記対処内容記憶手段の適用対象決定情報に記憶されているソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を、対処を適用する対象に決定することを特徴とする付記4に記載のシステム管理プログラム。
(付記6)前記対処内容記憶手段は、前記イベント識別子に対応付けて、前記イベントに対して対処を行うか否かを決定するための条件である対処適用条件をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの危険度または緊急度をさらに記憶し、
前記対処内容選択手順は、前記イベント識別子読み出し手順によって読み出されたイベント識別子に対応する危険度または緊急度が、前記対処内容記憶手段の対処適用条件を満たす対処内容を選択することを特徴とする付記1〜5のいずれかに記載のシステム管理プログラム。
(付記7)前記対処内容記憶手段は、対処内容として、対処コードの元となるコード片と、前記コード片を編集する手法である適用手法とを記憶し、
前記対処コード生成手順は、前記対処内容記憶手段に記憶されているコード片を、前記適用手法に基づいて編集することで対処コードを生成することを特徴とする付記1〜6のいずれかに記載のシステム管理プログラム。
(付記8)システムの状況に応じて、該システムの動作を切り替えさせるシステム管理装置であって、
前記システム上で発生するイベントのイベント識別子に対応付けて該イベントに対して行う対処内容を記憶する対処内容記憶手段と、
前記システム上で発生したイベントのイベント識別子を記憶するシステム状況データベースからイベント識別子を読み出すイベント識別子読み出し手段と、
前記対処内容記憶手段から、前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する対処内容を選択する対処内容選択手段と、
前記対処内容選択手段によって選択された対処内容に基づいて、対処コードを生成する対処コード生成手段と、
前記対処コード生成手段によって生成された対処コードを、前記システムに適用する対処コード適用手段と
を備えたことを特徴とするシステム管理装置。
(付記9)前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を実行する実行条件を決定するための情報である実行条件決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生状況をさらに記憶し、
前記コード生成手段は、前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する発生状況が、前記対処内容記憶手段に記憶された該イベント識別子に対応する実行条件決定情報を満たす場合にのみ前記対処コードを生成することを特徴とする付記8に記載のシステム管理装置。
(付記10)前記対処内容記憶手段は、前記実行条件決定情報に日時の範囲を記憶し、
前記コード生成手段は、前記システム状況データベースに記憶されている前記イベントが発生した日時の範囲と、前記実行条件決定情報に記憶されている日時の範囲との両方に一致する日時の範囲を実行条件に決定することを特徴とする付記9に記載のシステム管理装置。
(付記11)前記対処内容記憶手段は、前記イベント識別子に対応付けて、対処を適用する対象を決定するための情報である適用対象決定情報をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの発生場所をさらに記憶し、
前記発生場所と、前記適用対象決定情報とに基づいて、前記対処を適用する対象を決定する対処条件決定手段をさらに備えることを特徴とする付記8〜10のいずれかに記載のシステム管理装置。
(付記12)前記対処内容記憶手段は、前記適用対象決定情報に、前記イベントが発生する発生場所に対応付けて、該システム上で動作するアプリケーションのソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を記憶し、
前記対処条件決定手段は、前記システム状況データベースの発生場所に対応する前記対処内容記憶手段の適用対象決定情報に記憶されているソースファイル名、ソースコードを構成する部位名、または、データベースのテーブル名を、対処を適用する対象に決定することを特徴とする付記11に記載のシステム管理装置。
(付記13)前記対処内容記憶手段は、前記イベント識別子に対応付けて、前記イベントに対して対処を行うか否かを決定するための条件である対処適用条件をさらに記憶し、
前記システム状況データベースは、前記イベント識別子に対応付けて、前記イベントの危険度または緊急度をさらに記憶し、
前記対処内容選択手段は、前記イベント識別子読み出し手段によって読み出されたイベント識別子に対応する危険度または緊急度が、前記対処内容記憶手段の対処適用条件を満たす対処内容を選択することを特徴とする付記8〜12のいずれかに記載のシステム管理装置。
(付記14)前記対処内容記憶手段は、対処内容として、対処コードの元となるコード片と、前記コード片を編集する手法である適用手法とを記憶し、
前記対処コード生成手段は、前記対処内容記憶手段に記憶されているコード片を、前記適用手法に基づいて編集することで対処コードを生成することを特徴とする付記8〜13のいずれかに記載のシステム管理装置。
(付記15)前記対処内容記憶手段は、コード片に、データベースへのアクセス時にログを出力するソースコードを記憶することを特徴とする付記14に記載のシステム管理装置。