以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には本実施形態に係るコンピュータ・システム10が示されている。コンピュータ・システム10は、端末装置12を含んで構成された第1のコンピュータ・システム14と第2のコンピュータ・システム16の間に設けられており、第1のコンピュータ・システム14から送信された電文及び第2のコンピュータ・システム16から送信された電文を各々受信し、受信した電文の内容に応じた所定の処理(業務処理)を行った後に、他方のコンピュータ・システムへ送信する機能を有している。
なお、例えば第2のコンピュータ・システム16としては、金融機関に設置され、金融機関の顧客から指示された金融取引を行う金融取引システムを適用することができ、第1のコンピュータ・システム14としては、金融機関の顧客が端末装置12を介して所望の金融取引を指示するためのコンピュータ・システムを適用することができる。この場合、本実施形態に係るコンピュータ・システム10は、業務処理として、受信した電文を送信先のコンピュータ・システムに適合したフォーマットへ変換する等の処理を行うように構成することができるが、本発明に係る業務処理としては任意の処理を適用可能である。
図1に示すように、コンピュータ・システム10は2台のデータベース・サーバ20A,20Bと、複数台のアプリケーション・サーバ30(図には2台のアプリケーション・サーバ30A,30Bを示す)と、複数台のウェブ・サーバ40(図には2台のウェブ・サーバ40A,40Bを示す)と、監視用コンピュータ50を含んで構成されており、これらの各サーバ及びコンピュータは通信回線52を介して互いに接続されている。なお、本実施形態に係るコンピュータ・システム10では、データベース・サーバ20については2台のデータベース・サーバ20A,20Bの何れか一方のみ稼働され(稼働中のデータベース・サーバ20に重大な障害が発生した場合に、待機中のデータベース・サーバ20が稼働中に切り替わる)、アプリケーション・サーバ30及びウェブ・サーバ40については全台のサーバが常時稼働される。
データベース・サーバ20は、CPU22、RAM等から成るメモリ24、ハードディスクドライブ(HDD)66、ネットワークインタフェース(I/F)部28を備えており、ネットワークI/F部28を介して通信回線52に接続されており、更に通信回線を介して第1のコンピュータ・システム14及び第2のコンピュータ・システム16に各々接続されている。データベース・サーバ20のHDD26には電文格納テーブルが記憶されており、CPU22が電文処理を行うための電文処理プログラムがインストールされている。
この電文処理プログラムがCPU22によって実行されることでデータベース・サーバ20上で動作する電文処理モジュールは、第1のコンピュータ・システム14及び第2のコンピュータ・システム16から電文を受信し、受信した電文について業務処理を行う複数台のアプリケーション・サーバ30に加わる負荷が均一となるように、受信した電文を処理するアプリケーション・サーバ30を決定し、決定したアプリケーション・サーバ30を宛先として設定した電文を電文格納テーブルに格納させると共に、アプリケーション・サーバ30による業務処理が完了した電文を、電文送信先のコンピュータ・システムへ送信する電文処理を行う。
また、アプリケーション・サーバ30は、CPU32、RAM等から成るメモリ34、HDD36、ネットワークI/F部38を備えており、ネットワークI/F部38を介して通信回線52に接続されている。アプリケーション・サーバ30のHDD36には、CPU32が業務処理(後述)を行うための業務処理プログラムと、CPU32が障害監視処理(後述)を行うための障害監視プログラムが各々インストールされている。なお、アプリケーション・サーバ30は本発明に係る業務処理用コンピュータに、業務処理プログラムは本発明に係るアプリケーション・プログラムに対応しており、CPU32が業務処理プログラムを実行することでアプリケーション・サーバ30上で動作する処理モジュール(業務処理モジュール)は本発明に係るアプリケーション手段(詳しくは請求項1,5に記載のアプリケーション手段)に対応している。また、CPU32が障害監視プログラムを実行することでアプリケーション・サーバ30上で動作する処理モジュール(監視モジュール)は本発明に係る監視手段(詳しくは、請求項4に記載の監視手段及び請求項5に記載の第2監視手段)に対応している。
また、ウェブ・サーバ40は、CPU42、RAM等から成るメモリ44、HDD46、ネットワークI/F部48を備えており、ネットワークI/F部48を介して通信回線52に接続されている。ウェブ・サーバ40のHDD46には、CPU42がログサービス処理(後述)を行うためのログサービスプログラムと、CPU42が画面制御処理を行うための画面制御プログラムが各々インストールされており、ログ情報及びエラーログ情報を格納するためのログファイルも記憶されている。CPU42がログサービスプログラムを実行することでウェブ・サーバ40上で動作する処理モジュール(ログサービスモジュール)は、アプリケーション・サーバ30上で動作する監視モジュールと共に本発明に係る監視手段に対応しており、詳しくは請求項2,3に記載の監視手段及び請求項5に記載の第1監視手段に対応している。また、本実施形態に係るコンピュータ・システム10は本発明に係るコンピュータ・システム、より詳しくは請求項5に記載のコンピュータ・システムに対応しており、ウェブ・サーバ40は請求項5に記載のログ情報管理用コンピュータに対応している。
ログサービスモジュールは、個々のアプリケーション・サーバ30上で業務処理モジュールが正常に動作している間、個々の業務処理モジュールに対応するログ情報をログファイルに格納すると共に、個々の業務処理モジュールからエラーの発生が通知される毎に、通知されたエラーをエラーログ情報としてログファイルに格納する処理を行うが(詳細は後述)、ウェブ・サーバ40は、ログファイルに格納された各情報のうちのエラーログ情報を、第1のコンピュータ・システム14の端末装置12を介して閲覧することを可能とする機能を提供している。
この機能は、CPU42が画面制御プログラムを実行することでウェブ・サーバ40上で動作する処理モジュール(画面制御モジュール)によって実現され、画面制御モジュールは、端末装置12を介してエラーログ情報の閲覧が要求された場合に、閲覧対象のエラーログ情報をログファイルから読み出し、読み出したエラーログ情報を端末装置12のディスプレイに表示させるための表示画面を生成し、生成した表示画面の情報を閲覧要求元の端末装置12へ配信する。これにより、端末装置12のディスプレイにエラーログ情報が表示される。なお、上記の画面制御モジュールは請求項5に記載のログ情報管理手段に対応している。
また、監視用コンピュータ50はコンピュータ・システム10を管理する管理者によって使用されるコンピュータであり、請求項6に記載の監視用コンピュータに対応している。
次に本実施形態の作用として、個々のアプリケーション・サーバ30上で動作する業務処理モジュール及び監視モジュール、個々のウェブ・サーバ40上で動作するログサービスモジュールの各モジュールによって実現される処理について説明する。なお、以下では説明を簡単にするために、同時に稼働しているアプリケーション・サーバ30及びウェブ・サーバ40の台数を各々2台とし、各々2台のサーバの一方を1系(フローチャート上では「#1」と表記)、他方を2系(フローチャート上では「#2」と表記)と称して区別する。
1系のアプリケーション・サーバ30上で動作する業務処理モジュール及び2系のアプリケーション・サーバ30上で動作する業務処理モジュールは、各々図2に示す業務処理を行っている。この業務処理では、まずステップ60において、データベース・サーバ20のHDD26に記憶されている電文格納テーブル内に、自サーバ30宛の電文(処理対象電文)が格納されているか否か判定する。処理対象電文が格納されていない場合は判定が否定されてステップ62へ移行し、前回ハートビートを送信してからの経過時間が所定時間t1以上になったか否か判定する。この判定も否定された場合はステップ60に戻り、何れかの判定が肯定される迄ステップ60,62を繰り返す。
ステップ62の判定が肯定された場合はステップ64へ移行し、1系のウェブ・サーバ40上で動作しているログサービスモジュール(1系のログサービスモジュール)と通信可能な状態か否か判定する。1系のウェブ・サーバ40がダウンしている、或いは自サーバ30と1系のウェブ・サーバ40との間の通信回線に障害が発生している等の原因で1系のログサービスモジュールとの間にリンクが確立できない場合は、上記判定が否定されステップ65で1系のログサービスの障害発生を表す1系障害フラグに1をセットした後にステップ74へ移行するが、1系のログサービスモジュールと通信可能な状態であれば、ステップ64の判定が肯定されてステップ66へ移行し、1系のウェブ・サーバ40上で動作している1系のログサービスモジュールへハートビートを送信する。なお、このハートビートは自モジュールの動作状態が正常であることを表す所定桁数のメッセージIDを含む情報であり、本発明に係るアプリケーション手段が送信する生存通知に対応している。
ステップ68では、ステップ66で送信したハートビートに対する応答を1系のログサービスモジュールから受信したか否か判定する。判定が否定された場合はステップ70へ移行し、ステップ66でハートビートを送信してからの経過時間が所定時間t2以上になったか否か判定する。この判定も否定された場合はステップ68に戻り、何れかの判定が肯定される迄ステップ68,70を繰り返す。1系のログサービスモジュールからハートビートに対する応答を所定時間t2以内に受信できなかった場合には、ステップ70の判定が肯定されてステップ72へ移行し、1系のログサービスモジュールへのハートビートの再送信を行ってステップ68に戻る。
このように、本実施形態に係る業務処理では、1系のログサービスモジュールからハートビートに対する応答を受信する迄の間、所定時間t2が経過する毎に1系のログサービスモジュールへのハートビートの送信を繰り返しているが、これは本実施形態に係るコンピュータ・システム10において、処理対象電文に対して行う業務処理が非常に重要な処理であるので、ハートビートを受信したログサービスモジュールがログファイルへログ情報を書き込む処理と完全に同期させる必要があり、ログファイルへのログ情報の書き込みが完了したか確認できない状態でアプリケーション・サーバ30が業務処理を進めてしまうことを避けたいことが理由であり、上記のように完全に同期させる必要が無い場合には、ハートビートの再送信が所定回に達した時点でハートビートの再送信を打ち切るようにしてもよい。
また、1系のログサービスモジュールからハートビートに対する応答を受信すると、ステップ68の判定が肯定されてステップ74へ移行し、2系のウェブ・サーバ40上で動作しているログサービスモジュール(2系のログサービスモジュール)と通信可能な状態か否か判定する。この判定が否定された場合は、2系のログサービスモジュールへのハートビートの送信を行うことなくステップ75で2系のログサービスの障害発生を表す2系障害フラグに1をセットした後にステップ80へ移行するが、2系のログサービスモジュールと通信可能な状態であれば、ステップ74の判定が肯定されてステップ76へ移行し、2系のログサービスモジュールへハートビートを送信する。このハートビートも本発明に係るアプリケーション手段が送信する生存通知に対応している。
次のステップ77では、ハートビートに対する応答を2系のログサービスモジュールから受信したか否か判定する。判定が否定された場合はステップ78へ移行し、ハートビートを送信してからの経過時間が所定時間t2以上になったか否か判定する。この判定も否定された場合はステップ77に戻り、何れかの判定が肯定される迄ステップ77,80を繰り返す。2系のログサービスモジュールからハートビートに対する応答を所定時間t2以内に受信できなかった場合には、ステップ78の判定が肯定されてステップ79へ移行し、2系のログサービスモジュールへのハートビートの再送信を行ってステップ77に戻る。従って、1系のログサービスモジュールと同様に2系のログサービスモジュールに対しても、ハートビートに対する応答を受信する迄の間、所定時間t2が経過する毎にハートビートの送信が繰り返される。
そして2系のログサービスモジュールからハートビートに対する応答を受信すると、ステップ77の判定が肯定されてステップ80へ移行し、1系障害フラグ及び2系障害フラグの一方に1がセットされているか否か判定する。判定が否定された場合は何ら処理を行うことなくステップ60へ戻るが、判定が肯定された場合はステップ81へ移行し、障害が発生していないログサービスモジュールに対し、他系のログサービスモジュール(1がセットされている障害フラグに対応するログサービスモジュール)に障害が発生していることを通知する障害通知を送信する。次のステップ82では、障害が発生していないログサービスモジュールから障害通知に対する応答を受信したか否か判定し、判定が肯定される迄ステップ82を繰り返す。そして、応答を受信すると判定が肯定されてステップ60に戻る。
一方、前述のステップ60の判定において、電文格納テーブル内に処理対象電文が格納されていた場合は上記判定が肯定されてステップ84へ移行し、電文格納テーブルから処理対象電文を取り出し、取り出した処理対象電文に基づき、次のステップ86において、例えば処理対象電文を送信先のコンピュータ・システムに適合したフォーマットへ変換する等の業務処理を行う。ステップ88では、ステップ86の業務処理においてエラーが発生したか否か判定する。判定が否定された場合はステップ110へ移行し、前回ハートビートを送信してから所定件の処理対象電文について業務処理を行ったか否か判定する。判定が否定された場合はステップ60に戻り、電文格納テーブル内に処理対象電文が格納されている間、ステップ110の判定が肯定される迄ステップ60,ステップ84〜88,ステップ110を繰り返す。そして、前回ハートビートを送信してから業務処理を行った処理対象電文の件数が所定件に達すると、ステップ110の判定が肯定されてステップ64へ移行し、先に説明したステップ64〜ステップ82において、1系及び2系のログサービスモジュールへのハートビートの送信を順次行う。
上述したように、アプリケーション・サーバ30上で動作する業務処理モジュールは、処理対象電文が存在していないときには、1系及び2系のログサービスモジュールへのハートビートの送信を所定時間t1周期で行い、処理対象電文が存在しているときには、所定件の処理対象電文について業務処理を行う毎に、1系及び2系のログサービスモジュールへのハートビートの送信を行う。上記のタイミングで自発的に(能動的に)ハートビートを送信する処理は、他のモジュールから所定の情報を受信した場合にハートビートを送信する処理と比較して業務処理モジュールに加わる負荷が小さく、上記タイミングでハートビートを送信することに伴って業務処理の遅延等が生ずることを防止できる。なお、上記タイミングでハートビートの送信を行うことは請求項1記載の発明に対応している。
また、ステップ86の業務処理でエラーが発生した場合には、ステップ88の判定が肯定されてステップ90へ移行し、1系のログサービスモジュールと通信可能か否か判定し、通信可能であれば、発生したエラーの内容を表すエラー情報(このエラー情報には発生したエラーの種類に対応するエラーコード等の情報が含まれる)を1系のログサービスモジュールへ送信し(ステップ92)、エラー情報に対する応答を1系のログサービスモジュールから受信したか否か判定し(ステップ94)、応答を未受信であればエラー情報の送信から所定時間t2以上経過したか否か判定し(ステップ96)、エラー情報の送信から所定時間t2以上経過する毎に1系のログサービスモジュールへのエラー情報の再送信を行う(ステップ98)。
また、1系のログサービスモジュールと通信不能の場合又はエラー情報に対する応答を1系のログサービスモジュールから受信した場合は、2系のログサービスモジュールと通信可能か否か判定し(ステップ100)、通信可能であれば前述のエラー情報を2系のログサービスモジュールへ送信し(ステップ102)、エラー情報に対する応答を2系のログサービスモジュールから受信したか否か判定し(ステップ104)、応答を未受信であればエラー情報の送信から所定時間t2以上経過したか否か判定し(ステップ106)、エラー情報の送信から所定時間t2以上経過する毎に2系のログサービスモジュールへのエラー情報の再送信を行う(ステップ108)。
そして、2系のログサービスモジュールと通信不能の場合又はエラー情報に対する応答を2系のログサービスモジュールから受信した場合は前述のステップ110へ移行する。これにより、業務処理で発生したエラーの内容を表すエラー情報が、先に説明したステップ64〜ステップ82と同様にして1系及び2系のログサービスモジュールへ順次送信されることになる。上述した業務処理は、1系及び2系のアプリケーション・サーバ30上で動作する個々の業務処理モジュールによって各々行われる。
なお、データベース・サーバ20上で動作する電文処理モジュールにおいても、上記と同様に、受信電文が存在しないために電文処理を行っていない時には、所定時間t1周期で1系及び2系のログサービスモジュールへのハートビートの送信が行われ、受信電文に対して電文処理を行っている時には、所定件の受信電文に対して電文処理を行う毎に、1系及び2系のログサービスモジュールへのハートビートの送信が行われる。
次に1系で動作する1系のログサービスモジュール及び2系のウェブ・サーバ40上で動作する2系のログサービスモジュールによって各々実現されるログサービス処理(図3参照)、及び、1系のアプリケーション・サーバ30上で動作する1系の監視モジュール及び2系のアプリケーション・サーバ30上で動作する2系の監視モジュールによって各々実現される障害監視処理(図4参照)について順に説明する。なお、ログサービス処理及び障害監視処理は本発明に係る監視手段に相当する処理である。
ログサービスモジュールによって実現されるログサービス処理では、まずステップ120において、他のモジュールから何らかの情報を受信したか否か判定し、判定が肯定される迄ステップ120を繰り返す。他のモジュール(アプリケーション・サーバ30上で動作する業務処理モジュール又はデータベース・サーバ20上で動作する電文処理モジュール)から情報(ハートビート又はエラー情報又は障害通知)を受信すると、ステップ120の判定が肯定されてステップ121へ移行し、受信した情報が、業務処理モジュールから送信された障害通知(他系のログサービスモジュールの障害を通知する情報)か否か判定する。判定が肯定された場合はステップ134へ移行するが、判定が否定された場合はステップ122へ移行し、受信した情報が業務処理モジュール又は電文処理モジュールから送信されたハートビートであれば、ハートビートの受信時刻やハートビートに含まれるメッセージID、ハートビートの送信元識別情報等をログ情報としてログファイルに書き出し、受信した情報が業務処理モジュールから送信されたエラー情報であれば、受信したエラー情報に受信時刻や送信元識別情報等を付加し、エラーログ情報としてログファイルに書き出す。なお、ログファイルを記憶するウェブ・サーバ40のHDD46は請求項2,4,5に記載の第2記憶手段に対応している。
次のステップ124では、ステップ122でログファイルへのログ情報又はエラーログ情報の書き出しが成功したか否か判定する。判定が肯定された場合はステップ134へ移行し、1系のアプリケーション・サーバ30上で動作している監視モジュール(1系の監視モジュール)と通信可能な状態か否か判定する。1系の監視モジュールとの間にリンクが確立できない場合は上記判定が否定されてステップ138へ移行するが、1系の監視モジュールと通信可能な状態であれば、ステップ134の判定が肯定されてステップ136へ移行し、1系の監視モジュールに対して、先に受信した情報がハートビートであれば、当該ハートビートの送信元のモジュールが生存している(動作している)ことを意味する生存通知を送信し、先に受信した情報がエラー情報であれば、当該エラー情報の送信元の業務処理モジュールでエラーが発生したことを意味するエラー通知を送信し、先に受信した情報が障害通知であれば、他系(自モジュールが1系であれば2系、自モジュールが2系であれば1系)のログサービスモジュールで障害が発生したことを意味するエラー通知を送信する。
次のステップ138では、2系のアプリケーション・サーバ30上で動作している監視モジュール(2系の監視モジュール)と通信可能な状態か否か判定する。2系の監視モジュールとの間にリンクが確立できない場合は上記判定が否定されてステップ142へ移行するが、2系の監視モジュールと通信可能な状態であれば、ステップ138の判定が肯定されてステップ140へ移行し、2系の監視モジュールに対して先のステップ136と同様に生存通知又はエラー通知を送信する。そして、ステップ142では受信情報(ハートビート又はエラー情報又は障害通知)の送信元(1系の業務処理モジュール又は2系の業務処理モジュール又は電文処理モジュール)へ応答を送信し、ステップ120に戻る。
また、先のステップ122においてHDD46の障害等の理由でログファイルへのログ情報又はエラーログ情報の書き出しに失敗した場合には、ステップ124の判定が否定されてステップ126へ移行し、1系の監視モジュールと通信可能な状態か否か判定する。判定が否定された場合はステップ130へ移行するが、判定が肯定された場合は次のステップ128において、ログファイルへの情報の書き出しに失敗したことを意味するエラーコードを含むエラー通知を1系の監視モジュールへ送信する。また、ステップ130では2系の監視モジュールと通信可能な状態か否か判定する。判定が否定された場合はステップ134へ移行するが、判定が肯定された場合は次のステップ132において、上記のエラー通知を2系の監視モジュールへ送信した後にステップ134へ移行する。
従って、ログファイルへのログ情報又はエラーログ情報の書き出しに失敗した場合は、1系及び2系の監視モジュールに対し、上記のエラー通知を送信しログファイルへの書き出し失敗を通知した後に、他のモジュールから受信した情報に基づく生存通知又はエラー通知の送信が行われることになる。
一方、監視モジュールによって実現される障害監視処理(図4)では、まずステップ150で、他のモジュールから何らかの情報を受信したか否か判定する。個々の監視モジュールは1系及び2系のログサービスモジュールから生存通知及びエラー通知を各々受信すると共に、他系の監視モジュールからハートビートも受信する。ステップ150の判定が肯定された場合はステップ170へ移行し、受信した情報は1系又は2系のログサービスモジュールから送信されたエラー通知か否か判定する。
受信した情報が1系又は2系のログサービスモジュールから送信された生存通知、或いは他系の監視モジュールから送信されたハートビートである場合には、上記判定が否定されてステップ172へ移行し、HDD36に記憶されている最終受信日時テーブルを更新した後にステップ150に戻る。この最終受信日時テーブルは、ログサービスモジュールから受信する生存通知によって動作状態が正常であることが通知される各モジュール(1系及び2系の業務処理モジュール、電文処理モジュール)と、ハートビート送信元の他系の監視モジュールについて、生存通知又はハートビートを最後に受信した日時を各々登録するためのテーブルであり、ステップ172における最終受信日時テーブルの更新は、受信した情報に対応するモジュール(生存通知を受信した場合は当該生存通知によって動作状態が正常であることが通知された1系及び2系の業務処理モジュール、電文処理モジュールの何れか、ハートビートを受信した場合は他系の監視モジュール)の最終受信日時を現在の日時で上書きすることによって成される。
また、受信した情報がエラー通知であった場合には、ステップ170の判定が肯定されてステップ174へ移行し、受信したエラー通知を監視用コンピュータ50へ転送することで、エラーの発生を監視用コンピュータ50へ通知する。監視モジュールが受信するエラー通知には、発生したエラーの種類を表すエラーコードが含まれており、このエラーコードは、発生したエラーが業務処理で発生したエラーである場合はエラーが発生した業務処理モジュールによって設定され、発生したエラーがログファイルへの情報の書き出し失敗である場合はログサービスモジュールによって設定され、発生したエラーが1系又は2系のログサービスモジュールの障害である場合はこの障害を検知した業務処理モジュールによって設定される。1系又は2系の監視モジュールからエラー通知を受信した場合、監視用コンピュータ50は、受信したエラー通知に含まれるエラーコードを対応するエラーメッセージに変換してディスプレイに表示する。これにより、コンピュータ・システム10の管理者は、コンピュータ・システム10内でどのようなエラーが発生したのかを直ちに認識することができ、必要に応じてエラー解消のための対処や再発防止のための対策を講ずることができる。
また、監視モジュールが他のモジュールから情報を受信していない場合は、ステップ150の判定が否定されてステップ152へ移行し、他系の監視モジュールへ前回ハートビートを送信してからの経過時間が所定時間t3以上となったか否か判定する。判定が否定された場合はステップ158へ移行するが、判定が肯定された場合は、ステップ154で他系の監視モジュールと通信可能な状態か否か判定する。この判定が否定された場合もステップ158へ移行するが、判定が肯定された場合は、ステップ156で他系の監視モジュールへハートビートを送信した後にステップ158へ移行する。このように、1系及び2系の監視モジュールは、他系の監視モジュールへのハートビートの送信を所定時間t3周期で行う。
ステップ158では最終受信日時テーブルを参照し、障害監視対象の各モジュール(1系及び2系の業務処理モジュール、電文処理モジュール、他系の監視モジュール)のうち、最終受信日時テーブルに記憶されている最終受信日時からの経過時間が閾値以上となっているモジュールを探索する。なお、上記の閾値は、最終受信日時テーブルに最終受信日時が登録されている各モジュール毎に設定されている。次のステップ160では、ステップ158の探索によって該当するモジュールが発見されたか否か判定する。この判定が否定された場合、障害監視対象の各モジュールは何れも動作状態が正常と判断できるので、何ら処理を行うことなくステップ150に戻る。
一方、ステップ158の探索で該当するモジュールが発見された場合、該当するモジュールには障害が発生している可能性が高いと判断できる。このため、ステップ160の判定が肯定された場合はステップ162へ移行し、ステップ158の探索で発見されたモジュールに障害が発生している可能性が高いことを監視用コンピュータ50へ通知する。この場合も、監視用コンピュータ50のディスプレイにメッセージが表示されることで、コンピュータ・システム10の管理者がコンピュータ・システム10の状況を把握することができ、必要に応じて障害復旧のための対処や再発防止のための対策を講ずることができる。またステップ164では、障害が発生している可能性が高いと判定したモジュールが何れのモジュールかに応じて処理を分岐する。
障害が発生している可能性が高いと判定したモジュールが1系又は2系の業務処理モジュールである場合には、ステップ164からステップ166へ移行し、データベース・サーバ20の電文格納テーブルに格納されている電文の宛先を参照し、障害が発生している可能性が高いと判定した業務処理モジュールが宛先に設定されている電文(障害が発生している可能性が高いと判定した業務処理モジュールで処理予定の電文)について、宛先を他系の業務処理モジュールへ書き替えた後にステップ150に戻る。この場合、データベース・サーバ20が受信した電文に対する業務処理は、全て他系の業務処理モジュールによって行われることになる。また、障害が発生している可能性が高いと判定したモジュールが電文処理モジュールである場合には、ステップ164からステップ168へ移行し、データベース・サーバ20上で電文処理モジュールを再起動した後にステップ150に戻る。なお本実施形態では、障害が発生している可能性が高いと判定した業務処理モジュールが他系の監視モジュールであった場合には何ら処理を行わず、管理者に対処を委ねているが、監視モジュールの再起動等の何らかの処理を行うようにしてもよい。
続いて、1系・2系のアプリケーション・サーバ30上で動作する1系・2系の業務処理モジュールが業務処理(図2)を各々行い、1系・2系のウェブ・サーバ40上で動作する1系・2系のログサービスモジュールがログサービス処理(図3)を各々行い、1系・2系のアプリケーション・サーバ30上で動作する1系・2系の監視モジュールが障害監視処理(図4)を行うことで実現される障害監視/検知シーケンスについて、図5〜図10を参照して更に説明する。
各サーバが正常に動作しており、各モジュールの動作状態も正常である場合、図5に示すシーケンスで障害監視が行われる。すなわち、1系のアプリケーション・サーバ30上で動作する1系の業務処理モジュールは、1系のウェブ・サーバ40上で動作する1系のログサービスモジュールへ定期的にハートビートを送信する(図5の(1))。1系のログサービスモジュールは、1系の業務処理モジュールからハートビートを受信する毎に、ログファイルにログ情報を書き出し(図5の(2))、1系の業務処理モジュールの生存通知を1系・2系の監視モジュールへ順次送信し(図5の(3),(4))、ハートビート送信元の1系の業務処理モジュールへ応答を送信する(図5の(5))。
1系・2系の監視モジュールでは、ログサービスモジュールから1系の業務処理モジュールの生存通知を受信すると、最終受信日時テーブルに登録されている1系の業務処理モジュールに対応する最終受信日時を更新し、更新後の最終受信日時からの経過時間に基づいて1系の業務処理モジュールにおける障害の発生を監視するが、1系の業務処理モジュールの動作状態が正常である場合、上記の経過時間が閾値に達する前に1系の業務処理モジュールの生存通知をログサービスモジュールから再度受信することで、1系の業務処理モジュールの動作状態が正常であると判断される。
なお、図5では1系の業務処理モジュールから1系のログサービスモジュールへのハートビートの送信に関連するシーケンスを示しているが、1系の業務処理モジュールからは2系のログサービスモジュールへもハートビートが送信され、同様に2系の業務処理モジュールからも1系・2系のログサービスモジュールへハートビートが送信され、同様にデータベース・サーバ20上で動作する電文処理モジュールからも1系・2系のログサービスモジュールへハートビートが送信され、各ハートビートについて上記のシーケンスが各々実行される。
また、1系の業務処理モジュールによる業務処理でエラーが発生した場合、図6に示すシーケンスで業務処理のエラーが検知される。すなわち、1系の業務処理モジュールは業務処理でエラーが発生すると1系のログサービスモジュールへエラー情報を送信する(図6の(1))。1系のログサービスモジュールは、1系の業務処理モジュールからエラー情報を受信すると、ログファイルにエラーログ情報を書き出し(図6の(2))、1系の業務処理モジュールによる業務処理におけるエラーの発生を通知するエラー通知を1系・2系の監視モジュールへ順次送信し(図6の(3),(4))、エラー情報送信元の1系の業務処理モジュールへ応答を送信する(図6の(5))。
上記のエラー検知シーケンスでは、1系・2系の監視モジュールへエラー通知が各々送信されるが、監視モジュールから監視用コンピュータ50へのエラー通知は、1系・2系の監視モジュールのうち先にエラー通知を受信した監視モジュールによって行われる。これにより、管理者は、監視用コンピュータ50を通じて、1系の業務処理モジュールによる業務処理でエラーが発生したことを認識し、必要に応じてエラー解消のための対処や再発防止のための対策を講ずることができる。なお、1系の業務処理モジュールからは2系のログサービスモジュールへもエラー情報が送信され、このエラー情報に対しても上記のシーケンスが実行される。また、2系の業務処理モジュールによる業務処理でエラーが発生した場合にも、上記と同様のシーケンスが実行される。また、上記のシーケンスでログファイルに書き出されたエラーログ情報は、第1のコンピュータ・システム14の端末装置12を介しての閲覧に供せられる。
また、1系の業務処理モジュールに障害が発生した場合(1系の業務処理モジュールがプロセスとして実行中であるものの動作が滞っている状態に陥った場合を含む)には、図7に示すシーケンスで1系の業務処理モジュールの障害が検知される。すなわち、1系の業務処理モジュールに障害が発生すると、1系の業務処理モジュールから1系のログサービスモジュールへのハートビートの送信(図7の(1))が滞るので、1系のログサービスモジュールによるログファイルへのログ情報の書き出し(図7の(2))、1系・2系の監視モジュールへの1系の業務処理モジュールの生存通知の送信(図7の(3),(4))も滞ることになる。これにより、1系・2系の監視モジュールにおいて、1系の業務処理モジュールの生存通知を最後に受信してからの経過時間が閾値以上となることで1系の業務処理モジュールの障害発生が検知され、1系・2系の監視モジュールのうちの何れかによって1系の業務処理モジュールの障害発生が監視用コンピュータ50へ通知される。
一方、2系の業務処理モジュールには障害は発生していないので、2系の業務処理モジュールは1系のログサービスモジュールへハートビートを送信し(図7の(5))、1系のログサービスモジュールは、2系の業務処理モジュールからのハートビートの受信を契機として、ログファイルへのログ情報の書き出し(図7の(6))、1系・2系の監視モジュールへの2系の業務処理モジュールの生存通知の送信(図7の(7),(8))、ハートビート送信元の2系の業務処理モジュールへの応答の送信(図7の(9))を順次行う。
1系・2系の監視モジュールが1系の業務処理モジュールの生存通知を一定時間以内に受信できない場合、原因としては、1系の業務処理モジュールでの障害発生以外に、ログサービスモジュールでの障害発生も考えられるが、管理者は、1系の業務処理モジュールの障害発生が監視用コンピュータ50を通じて通知されている一方で、2系の業務処理モジュールの障害発生が通知されていないことに基づいて、1系の業務処理モジュールに障害が発生したことを認識することができる(この例では、2系のログサービスモジュールからの1系の業務処理モジュールの生存通知も監視モジュールが一定時間以内に受信できないので、これに基づいて監視モジュールが「1系の業務処理モジュールの障害」と自動的に判断して監視用コンピュータ50に通知することも可能である)。
管理者は、1系の業務処理モジュールに障害が発生したことを認識すると、ログファイルに書き込まれているログ情報のうち、1系の業務処理モジュールに対応するログ情報を抽出・参照する。このログ情報には、1系の業務処理モジュールからハートビートを受信した時刻が含まれており、1系の業務処理モジュールからハートビートを最後に受信した時刻に基づいて、1系の業務処理モジュールがどの時点までは正常に動作していたのかを認識できると共に、1系の業務処理モジュールからハートビートの送信が途絶える以前のハートビートの受信時間間隔の変動等に基づき、障害発生以前の1系の業務処理モジュールの動作状態等も把握することができ(業務処理モジュールの動作状態が不良になるとハートビートの送信時間間隔も大きくなる)、ログ情報に基づいて発生した障害の原因解析等を行うことができる。
また監視モジュールは、1系の業務処理モジュールに障害が発生したと判断すると、電文格納テーブルに格納されている電文のうち1系の業務処理モジュールが宛先に設定されている電文について、宛先を2系の業務処理モジュールへ書き替える。これにより、データベース・サーバ20が受信した電文に対する業務処理は、全て2系の業務処理モジュールによって行われる。なお、2系の業務処理モジュールで障害が発生した場合にも、上記と同様のシーケンスが実行される。
また、1系のログサービスモジュールに障害が発生した場合には、図8に示すシーケンスで1系のログサービスモジュールの障害が検知される。すなわち、1系のログサービスモジュールに障害が発生すると、1系の業務処理モジュールから1系のログサービスモジュールへハートビートを送信できない(図8の(1))ので、1系のログサービスモジュールによるログファイルへのログ情報を書き出し、1系・2系の監視モジュールへの1系の業務処理モジュールの生存通知の送信も行われない。一方、2系のログサービスモジュールには障害は発生していないので、1系の業務処理モジュールは2系のログサービスモジュールへハートビートを送信し(図8の(2))、2系のログサービスモジュールは、1系の業務処理モジュールからのハートビートの受信を契機として、ログファイルへのログ情報の書き出し(図8の(3))、1系・2系の監視モジュールへの1系の業務処理モジュールの生存通知の送信(図8の(4),(5))、ハートビート送信元の1系の業務処理モジュールへの応答の送信(図8の(6))を順次行う。
1系の業務処理モジュールは、送信したハートビートに対する応答を2系のログサービスモジュールから受信すると、先に1系のログサービスモジュールへハートビートを送信できなかったことに基づいて障害通知を送信することで、1系のログサービスモジュールに障害が発生していることを2系のログサービスモジュールへ通知する(図7の(7))。2系のログサービスモジュールは、1系の業務処理モジュールから障害通知を受信すると、1系のログサービスモジュールに障害が発生していることを表すエラー通知を1系・2系の監視モジュールへ順次送信し(図8の(8),(9))、障害通知送信元の1系の業務処理モジュールへ応答を送信する(図8の(10))を順次行う。そして、1系・2系の監視モジュールのうちの何れかによって1系のログサービスモジュールの障害発生が監視用コンピュータ50へ通知される。管理者は、監視用コンピュータ50を通じて1系のログサービスモジュールの障害発生を認識することができ、必要に応じて障害復旧のための対処や再発防止のための対策を講ずることができる。
また、1系のログサービスモジュールでログファイルへのログ情報の書き出しに失敗した場合には、図9に示すシーケンスでログ情報の書き出し失敗(書き出し障害)が検知される。すなわち、1系の業務処理モジュールが1系のログサービスモジュールへハートビートを送信し(図9の(1))、このハートビートの受信を契機として1系のログサービスモジュールがログファイルへのログ情報の書き出しを行ったものの、当該書き出しに失敗した場合(図9の(2))、1系のログサービスモジュールは、まずログファイルへのログ情報の書き出しに失敗したことを通知するエラー通知を1系・2系の監視モジュールへ送信し(図9の(3),(4))た後に、1系の業務処理モジュールの生存通知を1系・2系の監視モジュールへ送信し(図9の(5),(6))、ハートビート送信元の1系の業務処理モジュールへ応答を送信する(図9の(7))。
そして、1系のログサービスモジュールから受信したエラー通知に基づき、1系・2系の監視モジュールのうちの何れかによって、1系のログサービスモジュールにおけるログファイルへのログ情報の書き出し失敗が監視用コンピュータ50へ通知される。管理者は、監視用コンピュータ50を通じて1系のログサービスモジュールにおいてログ情報の書き出しが失敗したことを認識することができ、必要に応じて復旧のための対処や再発防止のための対策を講ずることができる。
また、1系の監視モジュールに障害が発生した場合には、図10に示したシーケンスが実行される。1系の業務処理モジュールが1系のログサービスモジュールへハートビートを送信すると(図10の(1))、1系のログサービスモジュールは、このハートビートの受信を契機として、ログファイルへのログ情報の書き出し(図10の(2))、1系・2系の監視モジュールへの1系の業務処理モジュールの生存通知の送信(図10の(3),(4))、ハートビート送信元の1系の業務処理モジュールへの応答の送信(図10の(5))を順次行う。但し、1系の監視モジュールに、プロセスとして実行中であるものの動作が滞っている等の障害が発生した場合、1系のログサービスモジュールから1系の監視モジュールへ送信された生存通知は1系の監視モジュールで受信されない(1系のログサービスモジュールから1系の監視モジュールへエラー通知が送信された場合も同様)。
これに対して本実施形態では、1系・2系の監視モジュールが互いにハートビートを送信し合っており、上述した1系の監視モジュールの障害発生は、2系の監視モジュールにおいて、1系の監視モジュールからのハートビートの受信が途絶えることで2系の監視モジュールによって検知され、2系の監視モジュールから監視用コンピュータ50へ通知される。管理者は、監視用コンピュータ50を通じて1系の監視モジュールに障害が発生したことを認識することができ、必要に応じて復旧のための対処や再発防止のための対策を講ずることができる。
なお、上記では請求項5に記載の第1監視手段に相当するログサービスモジュールをウェブ・サーバ40に設けると共に、請求項5に記載の第2監視手段に相当する監視モジュールを個々のアプリケーション・サーバ30に各々設け、個々のアプリケーション・サーバ30上で動作する業務処理モジュールが、ウェブ・サーバ40上で動作するログサービスモジュールへハートビートを送信し、ハートビートを受信したログサービスモジュールはログファイルへログ情報を書き出すと共に、アプリケーション・サーバ30上で動作する監視モジュールへ生存通知を送信し、監視モジュールは生存通知の受信時間間隔に基づいて業務処理モジュールの動作状態が正常か否か判断する態様を説明したが、この態様は各サーバ間のトラフィック量(通信量)が多く、一部のサーバで処理遅延等の障害が発生した場合にコンピュータ・システム10全体に障害が波及し易いという欠点がある。例えばウェブ・サーバ40で処理遅延が発生し、業務処理モジュールがハートビートに対するログサービスモジュールの応答を所定時間以内に受信できない場合、業務処理モジュールによる業務処理も滞り、ウェブ・サーバ40の処理遅延がアプリケーション・サーバ30にも波及する。上記を考慮し、図11に示すようにコンピュータ・システムを構成してもよい。
図11に示すコンピュータ・システムでは、個々のアプリケーション・サーバ30に、業務処理モジュール及び監視モジュールに加えログサービスモジュール及びログ回収モジュールが設けられており、個々のアプリケーション・サーバ30のHDD36にはログファイルも記憶されている。個々のサーバ30上で動作する業務処理モジュールは、同一のサーバ30上で動作するログサービスモジュールへのみハートビート及びエラー情報を送信し(図11の(1))、ログサービスモジュールは、ハートビートの受信時には同一のサーバ30上のログファイルへログ情報を書き出し(図11の(2))、ハートビート送信元の業務処理モジュールへ応答を送信する(図11の(3))と共に、同一のサーバ30上で動作する監視モジュールへ業務処理モジュールの生存通知を送信する(図11の(4))。これにより、個々のサーバ30上で動作する監視モジュールは、同一のサーバ30上で動作する業務処理モジュールについてのみ動作状態が正常か否か判定し、動作状態が異常と判断した場合には監視用コンピュータ50へ通知する。
また、図示は省略するが、同一のサーバ30上で動作する業務処理モジュールからエラー情報を受信した場合、ログサービスモジュールは、同一のサーバ30上のログファイルへエラーログ情報を書き出し、エラー情報送信元の業務処理モジュールへ応答を送信し、同一のサーバ30上で動作する監視モジュールへ業務処理モジュールのエラー発生を通知するエラー通知を送信する。そして監視モジュールは、同一のサーバ30上で動作するログサービスモジュールからエラー通知を受信すると、受信したエラー通知を監視用コンピュータ50へ転送することで、同一のサーバ30上で動作する業務処理モジュールによる業務処理におけるエラーの発生を通知する。
このように、図11に示す態様では、業務処理モジュールからのハートビートの送信時にサーバ間の通信を行うことなく、ログ情報の書き出し及び業務処理モジュールの動作状態の判定を行うことができるので、サーバ間のトラフィック量を抑制することができ、コンピュータ・システムの耐障害性を向上させることができる。また、図11に示す態様においても、個々の業務処理モジュールが自発的にハートビートを送信するので、個々の業務処理モジュールの動作状態の判別が可能になると共に、業務処理モジュールの動作状態判別のために業務処理モジュールに大きな負荷が加わることで業務処理の遅延等が生ずることも回避することができる。
また、図11に示す態様では、個々のサーバ30上で動作する業務処理モジュールに対応するログ情報及びエラーログ情報が、個々のサーバ30に設けられたログファイルに分散されて記憶されることになる。このため、データベース・サーバ20のHDD26にはエラーログ情報を格納するためのログテーブルが設けられており、個々のサーバ30上で動作するログ回収モジュールは、第1のコンピュータ・システム14の端末装置12を介してエラーログ情報を閲覧可能とすることを目的として、業務処理モジュールからのハートビートやエラー情報の送信タイミングとは非同期に、同一のサーバ30に設けられたログファイルからエラーログ情報を読み出すことで回収し(図11の(a))、回収したエラーログ情報をデータベース・サーバ20へ転送する(図11の(b))。そして、データベース・サーバ20は、ログ回収モジュールから転送されたエラーログ情報をログテーブルに書き出すと共に、第1のコンピュータ・システム14の端末装置12からウェブ・サーバ40を介してエラーログ情報の配信が要求された場合に、配信対象のエラーログ情報をログテーブルから読み出しウェブ・サーバ40を介して配信要求元の端末装置12へ配信する処理を行う。これにより、端末装置12を介してエラーログ情報を閲覧することが可能となる。
なお、図11に示す態様に係るコンピュータ・システムは請求項6記載の発明に対応しており、この態様において、データベース・サーバ20は請求項6に記載のログ情報管理用コンピュータに、ログサービスモジュール及び監視モジュールは請求項6に記載の監視手段に、ログ回収モジュールは請求項6に記載の転送手段に各々対応しており、データベース・サーバ20上で動作し、ログ回収モジュールから転送されたエラーログ情報をログテーブルへ書き出すと共に、エラーログ情報の配信要求時に配信対象のエラーログ情報をログテーブルから読み出して配信する処理を行う処理モジュールは請求項6に記載のログ情報管理手段に、データベース・サーバ20のHDD26は請求項6に記載の第3記憶手段に対応している。
また、上記ではログファイルに書き出されるログ情報及びエラーログ情報のうち、エラーログ情報のみを端末装置12からの閲覧対象としていたが、これに限定されるものではなく、端末装置12からの閲覧対象にログ情報も加えてもよい
また、上記では本発明に係るコンピュータ・システムとして、第1のコンピュータ・システム14と第2のコンピュータ・システム16の間に設けられたコンピュータ・システム10を例に説明したが、本発明はこれに限定されるものではなく、他のコンピュータ・システムと接続されていない独立したコンピュータ・システムであってもよい。