(57)【特許請求の範囲】
【請求項１】
コンピュータの処理により、コード・セットへの要求を監視する方法であって、
前記コード・セットへの要求を受け取るステップと、
前記要求についてのトレースを作成するステップであって、前記トレースが、前記コード・セットを通した前記要求のパスを定義する、前記ステップと、
複数の記憶済みトレース・パターンにアクセスするステップであって、各記憶済みトレース・パターンが、前記コード・セットを通した要求の許容可能なパスを定義する、前記ステップと、
前記作成されたトレースを前記記憶済みトレース・パターンと比較するステップと、
前記作成されたトレースが前記記憶済みトレース・パターンのうちのどの１つともマッチしない場合に、前記作成されたトレースを記憶するステップと、
記憶済みの部分的トレース・パターンにアクセスするステップと、前記作成されたトレースが前記記憶済みの部分的トレース・パターンとマッチし前記記憶済みトレース・パターンのうちのどの１つともマッチしない場合にのみ、前記作成されたトレースを記憶するステップと
を含む方法。
【請求項２】
前記コード・セットへの各要求につきトレースを作成するステップと、すべての作成されたトレースを記憶するステップと、前記複数の記憶済みトレース・パターンにアクセスするステップと、前記作成されたトレースを前記記憶済みトレース・パターンと比較するステップと、作成された各トレースが前記記憶済みトレース・パターンのうちの少なくとも１つとマッチする場合に、前記作成された各トレースを削除するステップとをさらに含む、請求項１に記載の方法。
【請求項３】
前記記憶済みトレース・パターンのうちのどの１つともマッチしない作成されたトレースの数に関する数値データを維持するステップと、前記数値データから導出された１つまたは複数の出力を提供するステップとをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記記憶済みトレース・パターンのうちの少なくとも１つとマッチする作成されたトレースの数に関する数値データを維持するステップと、前記数値データから導出された１つまたは複数の出力を提供するステップとをさらに含む、請求項２ないし３のいずれかに記載の方法。
【請求項５】
コード・セットへの要求を監視するシステムであって、
前記コード・セットへの要求を受け取ること、
前記要求についてのトレースを作成することであって、前記トレースが、前記コード・セットを通した前記要求のパスを定義する、前記作成すること、
複数の記憶済みトレース・パターンにアクセスすることであって、各記憶済みトレース・パターンが、前記コード・セットを通した要求の許容可能なパスを定義する、前記アクセスすること、
前記作成されたトレースを前記記憶済みトレース・パターンと比較すること、および、
前記作成されたトレースが前記記憶済みトレース・パターンのうちのどの１つともマッチしない場合に、前記作成されたトレースを記憶すること、
記憶済みの部分的トレース・パターンにアクセスすること、および、前記作成されたトレースが前記記憶済みの部分的トレース・パターンとマッチし前記記憶済みトレース・パターンのうちのどの１つともマッチしない場合にのみ、前記作成されたトレースを記憶すること
を行うように構成されたプロセッサを備えるシステム。
【請求項６】
前記コード・セットへの各要求につきトレースを作成すること、すべての作成されたトレースを記憶すること、前記複数の記憶済みトレース・パターンにアクセスすること、前記作成されたトレースを前記記憶済みトレース・パターンと比較すること、および、作成された各トレースが前記記憶済みトレース・パターンのうちの少なくとも１つとマッチする場合に、前記作成された各トレースを削除すること、を行うように前記プロセッサがさらに構成された、請求項５に記載のシステム。
【請求項７】
前記記憶済みトレース・パターンのうちのどの１つともマッチしない作成されたトレースの数に関する数値データを維持すること、および、前記数値データから導出された１つまたは複数の出力を提供すること、を行うように前記プロセッサがさらに構成された、請求項５または６に記載のシステム。
【請求項８】
前記記憶済みトレース・パターンのうちの少なくとも１つとマッチする作成されたトレースの数に関する数値データを維持すること、および、前記数値データから導出された１つまたは複数の出力を提供すること、を行うように前記プロセッサがさらに構成された、請求項６ないし７のいずれか一項に記載のシステム。
【請求項９】
請求項１ないし４のいずれか１項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１０】
請求項９に記載の前記コンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コード・セットへの要求を監視する方法およびシステムに関する。
【背景技術】
【０００２】
多くのコンピューティング環境では、短期間に非常に多数の命令がコンピュータによって扱われることがある。例えば、銀行などの大企業のためのウェブサイトを運用しているサーバは、１秒当たりに非常に多数の要求およびトランザクションを扱っていることになり、これはしばしば、１秒当たり数千個に達する。このようなコンピューティング・システムは、許容可能なレベルのセキュリティおよび信頼性を維持するために、非常に複雑なソフトウェアを稼働しなければならない。このような複雑なコンピューティング環境では、エラー検出および監視が最も重要である。多くの異なる技法がこのような環境で使用されるが、これらの技法の１つは、トレースとして知られる。
【０００３】
ソフトウェア・エンジニアリングにおいて、トレーシングは、プログラムの実行に関する情報を記録するための、特化されたタイプのロギングである。この情報は、プログラマによってデバッギングの目的で使用されることが可能であり、加えて、トレース・ログに含まれる情報のタイプおよび詳細によっては、熟練したシステム管理者または技術サポート人員、およびソフトウェア監視ツールによって、ソフトウェアのよくある問題を診断するために使用されることが可能である。より多くの情報については、例えばen.wikipedia.org/wiki/Tracing_(software)を参照されたい。
【０００４】
サーバに多くの要求が出されるビッグ・データ環境では、問題を捉えるためにトレースをイネーブルにするのは実際的でないことが多い。非常に多くのトランザクションまたは要求が同時に稼働しているので、トレースは、何ギガバイトものデータを生み出す可能性がある。しかし、レベル３サポート（最も困難なまたは高度な問題を扱うことを担う、３層技術サポート・モデルにおける最高レベルのサポート）はしばしば、トレースを使用して、問題がなぜ起こったのかを見出す必要がある。このような環境は、何千個もの要求を同時に扱うＩＢＭ  ＭＱ  Ｍｅｓｓａｇｅｓｉｇｈｔアプライアンス、または、１秒当たり何千個ものトランザクションを扱うＩＢＭ  ＣＩＣＳ  Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｅｒであり得る（ＩＢＭおよびＣＩＣＳは、多くの管轄区におけるインターナショナル・ビジネス・マシーンズ・コーポレーション（International Business Machines Corporation）の登録商標である）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って発明が解決しようとする課題は、コード・セットへの要求を監視する方法、システム、およびコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、コード・セットへの要求を監視する方法が提供される。この方法は、コード・セットへの要求を受け取るステップと、要求についてのトレースを作成するステップであって、トレースが、コード・セットを通した要求のパスを定義する、ステップと、複数の記憶済みトレース・パターンにアクセスするステップであって、各記憶済みトレース・パターンが、コード・セットを通した要求の許容可能なパスを定義する、ステップと、作成されたトレースを記憶済みトレース・パターンと比較するステップと、作成されたトレースが記憶済みトレース・パターンのうちの１つとマッチしない場合に、作成されたトレースを記憶するステップと、を含む。
【０００７】
本発明の第２の態様によれば、コード・セットへの要求を監視するシステムが提供される。このシステムは、コード・セットへの要求を受け取ること、要求についてのトレースを作成することであって、トレースが、コード・セットを通した要求のパスを定義する、作成すること、複数の記憶済みトレース・パターンにアクセスすることであって、各記憶済みトレース・パターンが、コード・セットを通した要求の許容可能なパスを定義する、アクセスすること、作成されたトレースを記憶済みトレース・パターンと比較すること、および、作成されたトレースが記憶済みトレース・パターンのうちの１つとマッチしない場合に、作成されたトレースを記憶すること、を行うように構成されたプロセッサを備える。
【０００８】
本発明の第３の態様によれば、コード・セットへの要求を監視する、コンピュータ可読ストレージ媒体上のコンピュータ・プログラム製品が提供される。この製品は、コード・セットへの要求を受け取るための命令と、要求についてのトレースを作成するための命令であって、トレースが、コード・セットを通した要求のパスを定義する、命令と、複数の記憶済みトレース・パターンにアクセスするための命令であって、各記憶済みトレース・パターンが、コード・セットを通した要求の許容可能なパスを定義する、命令と、作成されたトレースを記憶済みトレース・パターンと比較するための命令と、作成されたトレースが記憶済みトレース・パターンのうちの１つとマッチしない場合に、作成されたトレースを記憶するための命令と、を備える。
【０００９】
本発明により、有用なトレース・データが捕捉されるようにするための方法を提供することが可能だが、捕捉されるデータの量は、トレースの無差別な使用と比較して大幅に削減される。発想は、要求がコード・セットを通して進むパスを示すトレース・パターンを捕捉する、というものである。これらのパターンを使用して、どのパスがシステムにとって正常であるかが示され、したがって、実行中に正常でない（abnormal）パスが識別されるのが可能になる。このようなパターンは、好ましくは、どのコード・モジュールおよび機能が呼び出されるかを詳述することになり、任意選択でエントリおよびイグジット・パラメータの内容を含むが、それ以上の詳細は含まない。一実施形態では、トレースがシステムに対してイネーブルにされている間、トレースはメモリに捕捉され、要求が完了したときやバッファが満たされたときなどに時々、トレースはパターンと比較される。各要求／スレッドにつき、要求が正常なパターンとマッチする場合は、トレースは破壊され、ディスク上またはメモリ上のどのような空間も使用しない。パターンが異常である場合は、トレースは保存され、サポートに提供されてよい。要求は、環境において定義されてよく、例えば、ＣＩＣＳ  Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｅｒにおいては、要求は、トランザクションの存続期間中のアクティビティであることになり、一方、ウェブ・サーバにおいては、要求は、ＨＴＴＰ応答が提供されるまで入ってくるＨＴＴＰ要求からのアクティビティであることになる。
【００１０】
代替の一実施形態では、正常なパターンを使用して、正常なパスを実行している要求に対するトレース呼出しを無視することができる。この要求が次いでこのパスから逸脱するとすれば、トレース呼出しの結果としてトレース・データが記録されることになる。これにより、トレースのためのストレージ使用が削減されることになり、また、トレース出力を分析する人が、予期されたとおりに実行されていない１つまたは２つの要求を識別するのがより単純化されることになる。前述の第１の実施形態では、トレースは、最初にディスクに捕捉され、次いで削除される。この代替実施形態では、トレースは、ディスクに捕捉されないが、異常である場合はディスクに書き込まれる。
【００１１】
さらに他の任意選択の拡張は、モジュールを通した初期フローとマッチする部分的パターンを使用することであり、この場合、この部分的パターンとマッチするどのような要求も、トレースされて、良いパターンと比較されることになり、一方、トレースとマッチしないどのような要求も破壊されることになる。このようにすれば、トレースすべき特定のコード・パスを規定して他のすべてのパスを除外することが可能であり、したがって、可能なあらゆるコード・パスについてのパターンが提供される必要はない。これは、１秒当たりに多くの要求が稼働されている環境で使用することができ、それにより、特定の悪いパスのトレースを選ぶことができる。例えば、顧客は、エラーが起こる前にどのモジュールに入ってそのモジュールから出たかを示すスタック・トレースと共に、エラーを提供することができる。レベル３担当者は、このパスのトレース・パターンを作ることができ、これを顧客システムに提供して、この段落に記載のこのモードをオンにすることができる。次いで、顧客システムは、あらゆる要求／トランザクションをトレースすることはせず、エラーを発生させた要求のみをトレースすることになる。したがって、１秒当たり数千個の要求があるシステム中でも、コードを通した単一の特定の悪いパスについてトレースを捕捉することが可能である。このようなシステム上で通常のトレースがイネーブルにされたとすれば、トレース・ログはすぐに一杯になるであろうし、数ギガバイト以上のトレースを選んでそれに対する後処理を行うことなしには、悪い要求についてのトレースを突き止めることは困難であろう。
【００１２】
別の任意選択の拡張は、システムを監視できるようにすることであって、遭遇した「悪い」パターンの数を示すか、または見つかった各パターンの数をカウントして、いくつかの有用なメトリックをシステムのユーザに提供することである。多くの悪いパターンが起こっている場合、これは、システム中の何らかの問題を示す可能性がある。このような悪いパターンは、セキュリティ攻撃や、使用されている他のシステムがダウンしているかまたは信頼できないことによって、生成される可能性がある。利点は、トレースをイネーブルにする代わりに、ロードアップ（load up）すべきトレース分析をイネーブルにするための部分的パターンをシステム管理者に提供できることである。システム管理者はこれをロードし、システム管理者のシステムは、指定されたモジュールまたは機能が実行されるときだけトレースを捕捉することになる。別法として、良いパターンのセットがユーザに提供され、この場合、トレースをイネーブルにすると、悪く見える要求のみについて、それらのトレースが捕捉され保管される。
【００１３】
次に、後続の図面を参照しながら、本発明の好ましい実施形態について単なる例として述べる。
【図面の簡単な説明】
【００１４】
【図１】コンピューティング・システムの概略図である。
【図２】コード・セットの概略図である。
【図３】サーバおよびデータベースの概略図である。
【図４】コード・セットへの要求を監視する方法のフローチャートである。
【図５】部分的トレース・パターンを使用して要求を監視する方法のフローチャートである。
【発明を実施するための形態】
【００１５】
図１に、ネットワーク管理者１０が、デスクトップ・コンピュータ・システム１２を使用して複雑なコード・セットの性能を監視するのを示す。コンピュータ・システム１２は、ディスプレイ・デバイス１４、プロセッサ１６、およびユーザ入力デバイス（従来のキーボード）１８を備える。プロセッサ１６は、ディスプレイ・デバイス１４およびユーザ入力デバイス１８に接続される。プロセッサ１６はオペレーティング・システムを稼働しており、ユーザ１０は、ディスプレイ・デバイス１４によって表示されている、オペレーティング・システムのグラフィカル・ユーザ・インタフェースを介して、オペレーティング・システムと対話することができる。ＣＤ−ＲＯＭ２０が示されているが、ＣＤ−ＲＯＭ２０は、プロセッサ１６によって実行されているコンピュータ・プログラム製品のコピーを記憶するのに使用することができる。
【００１６】
追加のユーザ・インタフェース・デバイス２２も示されているが、これは、従来のマウス２２である。ユーザ１０は、キーボード１８およびマウス２２を利用して、プロセッサ１６によって稼働されているオペレーティング・システムおよびアプリケーションと対話する。監視されているコード・セットもまたコンピューティング・システム１２によって実行されてよく、または、コード・セットはおそらく、コンピューティング・システム１２からリモートに位置する１つまたは複数の接続されたサーバによって実行されている。コード・セットは、銀行の顧客がオンラインで自分の口座にアクセスして取引を実施するのを可能にするためのウェブサイトを提供するために、銀行などの金融機関によって使用されるものなど、企業コンピュータ・システムであってよい。
【００１７】
コード・セットは１秒当たり何千個もの要求を扱い、コード・セットによって受け取られている要求のすべてではないがいくつかに対してトレース機能を使用することによって、監視が提供される。コード・セットへのあらゆる単一の要求についてトレースがイネーブルにされたなら通常は生成されるはずのトレース・データのすべてを記憶するために非常に大きいストレージ・オーバヘッドを必要とすることなく、ネットワーク管理者１０に十分なフィードバックを提供するために、コード・セットは、いくらかの量のトレース・データのみが捕捉されるように構成される。トレーシングは、要求が受け取り後に処理されるのに伴ってコード・セットの実行に関する情報を記録する、特化されたタイプのロギングである。
【００１８】
保持されているトレース・データの量を削減するために、トレース・パターンを使用して「良い」トレースと「悪い」トレースとを区別する必要がある。良いトレースは、コード・セットを通した要求の正常なパスと考えることができ、一方、悪いトレースは、コード・セットを通した要求の予期されないパスであり、これは、処理におけるエラーをより示す傾向があるであろう。このような区別をつけるために、まず、許容可能なトレース・パターンを生成する必要がある。図２に、要求２４がコード・セット２６によって受け取られ、コード・セット２６が応答２８を生成し、また特定の要求２４についてのトレース３０も生成する、という概念を例証する。
【００１９】
パターンを生成するために、最初に、要求２４についてのトレース３０が捕捉される。次いで、ツール３２を使用して、このトレース３０がパターン３４に変換される。次いで、このパターンは、正常な要求パターンとしてシステムにロードされる。このプロセスが、良いと判断される各要求パターンにつき繰り返される。パターン３４は、モジュールまたはクラス中の、メソッド呼出しのシーケンスである。例えば、サーブレット環境では、トレース・パターンは、以下のようである場合がある（ここで、>記号は、名前付きモジュールに入ることを指し、<記号は、名前付きモジュールから出ることを指す）。
>MyServlet.init()
<MyServlet.init()
>MyServlet.get()
>MySupportCode.doLogic()
<MySupportCode.doLogic()
>MySupportCode.doMoreLogic()
<MySupportCode.doMoreLogic()
<MyServlet.get()
【００２０】
パターン３４は、より複雑であってよく、パラメータの特定のタイプを含めて、任意選択で送り込まれるかまたは返されるパラメータを含むことができる。これの用途の１つは、Exceptionスーパー・クラスをとる例外処理メソッドがある場合に、UserErrorExceptionなど、Exceptionの具体的なサブクラスと共にこのメソッドに入るよう、パターンが指定できるようにするものである。したがって、この予期された例外が起こらないエラーのみが、分析されトレースされることになる。コード・セット２６のテスト動作中に生成された、正常として指定されるトレース３０を使用して、容認可能なパターン３４が生成され、次いで、容認可能なパターン３４は、コード・セット２６の通常動作中に使用される準備ができた状態で、記憶される。
【００２１】
通常動作時、システムは、トレースのディスクへの書込みを可能にすることになる。システムは、要求を識別して、トレースを要求ごとに区分化することが必要になる。分離は、要求がトレース呼出しを行ったときに行われるか、またはトレース出力を処理する第２段階でシステムによって行われるかのいずれかであってよい。この第２段階は、トレースを要求ごとに別々のファイルに切り出す（split out）システム・タスクによって実装されてよく、例えば、いくつかのアプリケーション・サーバ中では、トレース・エントリがスレッドＩＤを有し、したがって、トレース出力はスレッドＩＤによって別々のファイルに分割（split）されてよい。同様に、他のタイプのトランザクション・サーバでは、各トランザクションがタスク番号を有し、この識別子を使用してトレース出力が分割されてよい。
【００２２】
記憶済みパターンの使用は、有用なトレース・データが捕捉されるための方法を提供するが、捕捉されるデータの量は、トレースの無差別な使用と比較して大幅に削減される。記憶済みトレース・パターンを使用して、どのパスがシステムにとって正常であるかが示され、したがって、実行中に正常でないパスが識別されるのが可能になる。前述のように、このようなパターンは、好ましくは、どのコード・モジュールおよび機能が呼び出されるかを詳述することになり、任意選択でエントリおよびイグジット・パラメータの内容を含むが、それ以上の詳細は含まない。図３に、コード・セットを通した要求の許容可能なパスを定義するトレース・パターンを記憶したデータベース３８へのアクセスを有するサーバ３６を示す。
【００２３】
一実施形態では、サーバ３６によって稼働されるシステムに対してトレースがイネーブルにされている間、トレースはメモリに捕捉され、要求が完了したときやバッファが満たされたときなどに時々、トレースは、データベース３８中の記憶済みパターンと比較される。要求が正常なパターンとマッチする場合は、トレースは削除され、したがってディスク上またはメモリ上のどのような空間も使用しない。パターンが異常でありどのような記憶済みトレース・パターンともマッチしない場合は、元のトレースは保存され、サポートに提供されてよい。このようにして、「良い」と考えられるトレース・パターンとマッチしないトレースのみが、システムによって記憶されることになる。
【００２４】
図４に、コード・セットへの要求を監視する方法を要約する。この方法は、以下のステップを含む。すなわち、第一に、コード・セットへの要求を受け取ることを含むステップＳ４．１である。第二に、要求についてのトレースを作成することを含むステップＳ４．２であり、トレースは、コード・セットを通した要求のパスを定義する。第三に、複数の記憶済みトレース・パターンにアクセスすることを含むステップＳ４．３であり、各記憶済みトレース・パターンは、コード・セットを通した要求の許容可能なパスを定義する。第四に、作成されたトレースを記憶済みトレース・パターンと比較することを含むステップＳ４．４である。最後に、作成されたトレースが記憶済みトレース・パターンのうちの１つとマッチしない場合に、作成されたトレースを記憶することを含むステップＳ４．５である。
【００２５】
代替の一実施形態では、記憶済みパターンを使用して、正常なパスを実行している要求に対するトレース呼出しを無視することができる。この要求が次いでこのパスから逸脱するとすれば、トレース呼出しの結果としてトレース・データが記録されることになる。これにより、トレース・データのためのストレージ要件が削減され、また、トレース出力を分析する人が、予期されたとおりに実行されていない１つまたは２つの要求を識別するのがより単純化される。前述の第１の実施形態では、トレース・データは、最初にディスクに捕捉され、次いで削除される。この代替実施形態では、トレース・データは、ディスクに捕捉されないが、異常である場合はディスクに書き込まれる。
【００２６】
要求が正常なパスとマッチしているときにトレース呼出しが無視される、この代替実施形態では、パターンがメモリに保持されることになるのが理想的である。性能の理由で、これは、これらのパターンをグラフにマージすることによって達成されてよく、グラフ中の要求位置が追跡されることになる。要求がトレース呼出しを行ったとき、この呼出しが要求についての次の有効ノードとマッチする場合は、グラフ中の要求の場所が更新され、何もトレースされない。この呼出しが次の有効ノードとマッチしない場合は、パターン中の要求の最後の良い位置が、現在のトレース呼出しにおける値と共に、トレース出力に書き込まれることになり、グラフ中の要求の場所が「マッチなし」位置に更新されることになる。この結果、要求についての後続のすべてのトレース呼出しが書き込まれることになる。
【００２７】
トレース・データを残しておくか否かの決定に対する先駆けとして、部分的パターン・マッチングを使用することができ、この場合、トレースを監視する第２段階バックグラウンド・タスクを使用するか、または前述の前実施形態と同様にメモリ内グラフを使用するかのいずれかによって、部分的パターンとマッチする要求のみがトレースされる。バックグラウンド・タスクは、要求の完了時、上記のツールと同じロジックを使用して、トレースをパターンに変換することになる。次いで、このパターンは部分的パターンと比較されるが、これは、このトレースが分析されるべきであることを示す場合がある。そうである場合は、パターンは、既知の良いパターンと比較される。マッチが見つかった場合は、トレースはディスクから削除される。マッチが見つからなかった場合は、トレースはディスク上に残され、分析者は、悪いパターンが検出されたことを示すためのログ・エントリを書き込むことができる。メモリ内グラフは、現在の要求を追跡することになり、これらの要求は、パターンとマッチしトレース・エントリが書き込まれるか、または、グラフ中のそれらの場所が「トレースなし」ノードに更新されるか、のいずれかとなる。
【００２８】
例えば、部分的トレース・パターンは、以下のとおりである場合がある。
>MyServlet.get()
【００２９】
したがって、他のサーブレットへの呼出しは分析されない。しかし、GETを使用する、Myservletへの呼出しは、分析される。悪いパターンは、以下のようになる。
>MyServlet.init()
>MyServlet.get()
>MySupportCode.doLogic()
>MySupportCode.handleError()
>ServletContainer.handleRuntimeException()
<ServletContainer.handleRuntimeException()
【００３０】
ここで、コードは、getにおいて失敗し、次いで、サーブレット・コンテナが対処しなければならなかった未処理例外を投げた。図５に、このプロセスにおける基本原理を例証する。ステップＳ５．１で、トレースが部分的パターンとマッチするかどうかを見るためのチェックが行われる。マッチしない場合は、トレースは廃棄される。マッチする場合は、ステップＳ５．２で、トレースが記憶済みパターンとマッチするかどうかを見るためのチェックが行われる。マッチする場合は、トレースは廃棄され、記憶済み（完全な）パターンとのマッチがない場合にのみ、ステップＳ５．３でトレースは記憶される。本質的に、このプロセスは、コード・セットの特定の１つのエリア（部分的パターンによって定義される）に焦点を合わせることによって動作し、「良い」とすでに定義されたトレース・パターンとマッチしないトレースのみを記憶する。
【００３１】
パターンからのトレース・ポイントをどのように稼働中のトレースとマッチさせるかに関して、以下は、ＩＢＭ  ＷｅｂＳｐｈｅｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒからの２つの例示的なトレース・ステートメントである（ＷｅｂＳｐｈｅｒｅは、多くの管轄区におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である）。
[06/01/14 15:17:22:101 GMT] 00000084util> com.ibm.sr.sdo.helper.impl.BSRSDOHelperImpl addProperty ENTRYcom.ibm.serviceregistry.governance.sdo.impl.SubscriptionImpl@1f28465a(classificationURIs: [], bsrURI: d413bbd4-62e8-48db.ba6f.f1d294f16fed, name:Subscription to "Account creation service ?(1.0)?", namespace: ,version: , description: , owner: admin, lastModified: 1369235510163,creationTimestamp: 1369235510163, lastModifiedBy: admin)(subscribedTransitions: null, subscribedOperations: [update],targetClassifications: null, emailAddress: null, locale: en, targetBsrURI:9afa319a-bf21-4102.a24d.1fbfb71f4d67, targetName: null, targetNamespace: null,targetVersion: null) _expiryStartTime 1369235510139
[06/01/14 15:17:22:101 GMT] 00000084util< com.ibm.sr.sdo.helper.impl.BSRSDOHelperImpl addProperty RETURN
様々なパラメータを無視すると、エントリ・ステートメントは以下のとおりである。
[06/01/14 15:17:22:101 GMT] 00000084util> com.ibm.sr.sdo.helper.impl.BSRSDOHelperImpl addProperty ENTRY
【００３２】
タイムスタンプは、マッチングの観点からは無視されてよく、他のトレース・ポイントに対する順序のみが重要である。スレッドＩＤ00000084は、やはり無視されてよいが、単一のタスクからトレースを集めるときに使用されてよく、したがって、同じスレッドＩＤ上のすべてのトレース・ポイントは、単一のタスクについてのものである。コンポーネント「util」は、無視されてよい。呼び出されたクラス名は「com.ibm.sr.sdo.helper.impl.BSRSDOHelperImpl」であり、これは、トレース・パターンの一部を形成し、パターン中のクラス名とマッチすることが必要になる（グラフ形式であろうとそうでなかろうと）。メソッド名は、「addProperty」であり、これは、パターンの一部を形成し、マッチすることが必要になる。最後に、タイプ（エントリまたはイグジット）は、「ENTRY」として示され、これは、トレース・パターンの一部を形成し、マッチすることが必要になる。
【００３３】
このようにして、要求がコード・セットによって受け取られると、入ったモジュールおよび機能に基づいて、生トレース・データは、余分な情報が除去されてパターンに変換されてよい。トレース・データをトレース・パターンでフィルタリングすることによって、異常な（unusual）および予期されないトレース・データのみが捕捉されることになり、これにより、トレース・データを扱うのに必要とされるストレージの量が削減されることになるが、また、より少ないデータが存在することになるのでネットワーク管理者のタスクもより容易になる。記憶されたトレース・データは、フィルタリング後は、記憶済みトレース・パターンとマッチしなかったトレースのみを含むことになり、当然ながら、予期されないトレースとなる。これらは、コード・セット内のエラーまたは異常動作に関係する可能性がより高く、したがって、コード・セットに関してサポートが提供される必要がある場合にこれらを検討することができる。
【００３４】
トレース・フィルタリングはまた、システム・メトリックを取得するのに使用することもできる。システムが監視されて、遭遇した「悪い」パターン（すなわち記憶済みトレース・パターンとマッチしないパターン）の数が示されるか、または見つかった各パターンの数がカウントされてよく、それにより、いくつかの有用なメトリックがシステムのユーザに提供されてよい。多くの悪いパターンが起こり始めている場合、これは、システム中の何らかの問題を示す可能性がある。このような悪いパターンは、セキュリティ攻撃や、使用されている他のシステムがダウンしているかまたは信頼できないことによって、生成される可能性がある。１つの利点は、トレースをイネーブルにする代わりに、ロードアップすべきトレース分析をイネーブルにするための部分的パターンをシステム管理者に提供できることである。管理者はこれをロードし、管理者のシステムは、指定されたモジュールまたは機能が稼働されるときだけトレースを捕捉することになる。別法として、良いパターンのセットがユーザに提供され、この場合、トレースをイネーブルにすると、悪く見える要求のみについて、それらのトレースが捕捉され保管される。
【００３５】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せとすることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに遂行させるためのコンピュータ可読プログラム命令を有する（１つまたは複数の）コンピュータ可読ストレージ媒体を含むことができる。
【００３６】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用される命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能な読取専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、ディジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、機械的にエンコードされたデバイス（命令が記録された、パンチカード、または溝の中の隆起構造）、および上記の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読ストレージ媒体は、電波もしくは他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を介して伝搬する電磁波（例えば、光ファイバ・ケーブルの中を通る光パルス）、またはワイヤを介して伝送される電気信号など、一時的な信号自体であると解釈されるべきではない。
【００３７】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスにダウンロードされてよく、あるいは、ネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せ）を介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含むことができる。各コンピューティング／処理デバイス中の、ネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、コンピュータ可読プログラム命令をネットワークから受け取り、これらのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に記憶されるように転送する。
【００３８】
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データであってよく、または、Ｓｍａｌｌｔａｌｋ（Ｒ）やＣ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語や類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードとオブジェクト・コードとのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されるか、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネット経由で）行われてもよい。いくつかの実施形態では、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を例えば含む、電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【００３９】
本明細書では、本発明の態様を、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品の、フローチャート説明またはブロック図あるいはその両方に関して述べている。フローチャート説明またはブロック図あるいはその両方の各ブロック、および、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ可読プログラム命令によって実装できることは理解されるであろう。
【００４０】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装する手段をもたらすように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為の態様を実装する命令を含む製造品を構成するように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに、特定の方式で機能するよう指示することができるものであってもよい。
【００４１】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実装するように、コンピュータ実装プロセスを生み出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００４２】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の中の各ブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、指定される論理機能を実装するための１つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合がある。例えば、関連する機能に応じて、連続して示される２つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施するかまたは専用ハードウェアとコンピュータ命令との組合せを遂行する、専用ハードウェアベースのシステムによって実装できることにも留意されるであろう。
【図１】
0006594977.tif 000002
【図２】
0006594977.tif 000003
【図３】
0006594977.tif 000004
【図４】
0006594977.tif 000005
【図５】
0006594977.tif 000006