(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6594977
(24)【登録日】2019年10月4日
(45)【発行日】2019年10月23日
(54)【発明の名称】コード・セットへの要求を監視する方法、システム、コンピュータ・プログラム及びコンピュータ可読ストレージ媒体
(51)【国際特許分類】
G06F 11/30 20060101AFI20191010BHJP
G06F 11/34 20060101ALI20191010BHJP
【FI】
G06F11/30 175
G06F11/30 140A
G06F11/34 176
【請求項の数】10
【全頁数】14
(21)【出願番号】特願2017-524400(P2017-524400)
(86)(22)【出願日】2015年10月20日
(65)【公表番号】特表2017-535867(P2017-535867A)
(43)【公表日】2017年11月30日
(86)【国際出願番号】IB2015058075
(87)【国際公開番号】WO2016079618
(87)【国際公開日】20160526
【審査請求日】2018年6月27日
(31)【優先権主張番号】1420367.3
(32)【優先日】2014年11月17日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】シーガー、デイヴィッド、ジェームズ
(72)【発明者】
【氏名】ロウ、マーティン、ジェームズ
(72)【発明者】
【氏名】コックス、マーティン、ウィリアム
【審査官】
北元 健太
(56)【参考文献】
【文献】
特開2011−103110(JP,A)
【文献】
国際公開第2008/129635(WO,A1)
【文献】
特開2005−352673(JP,A)
【文献】
特開2000−47901(JP,A)
【文献】
米国特許出願公開第2006/0282708(US,A1)
【文献】
米国特許出願公開第2009/0320021(US,A1)
【文献】
中国特許出願公開第101923510(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/28 − 11/36
(57)【特許請求の範囲】
【請求項1】
コンピュータの処理により、コード・セットへの要求を監視する方法であって、
前記コード・セットへの要求を受け取るステップと、
前記要求についてのトレースを作成するステップであって、前記トレースが、前記コード・セットを通した前記要求のパスを定義する、前記ステップと、
複数の記憶済みトレース・パターンにアクセスするステップであって、各記憶済みトレース・パターンが、前記コード・セットを通した要求の許容可能なパスを定義する、前記ステップと、
前記作成されたトレースを前記記憶済みトレース・パターンと比較するステップと、
前記作成されたトレースが前記記憶済みトレース・パターンのうちのどの1つともマッチしない場合に、前記作成されたトレースを記憶するステップと、
記憶済みの部分的トレース・パターンにアクセスするステップと、前記作成されたトレースが前記記憶済みの部分的トレース・パターンとマッチし前記記憶済みトレース・パターンのうちのどの1つともマッチしない場合にのみ、前記作成されたトレースを記憶するステップと
を含む方法。
【請求項2】
前記コード・セットへの各要求につきトレースを作成するステップと、すべての作成されたトレースを記憶するステップと、前記複数の記憶済みトレース・パターンにアクセスするステップと、前記作成されたトレースを前記記憶済みトレース・パターンと比較するステップと、作成された各トレースが前記記憶済みトレース・パターンのうちの少なくとも1つとマッチする場合に、前記作成された各トレースを削除するステップとをさらに含む、請求項1に記載の方法。
【請求項3】
前記記憶済みトレース・パターンのうちのどの1つともマッチしない作成されたトレースの数に関する数値データを維持するステップと、前記数値データから導出された1つまたは複数の出力を提供するステップとをさらに含む、請求項1または2に記載の方法。
【請求項4】
前記記憶済みトレース・パターンのうちの少なくとも1つとマッチする作成されたトレースの数に関する数値データを維持するステップと、前記数値データから導出された1つまたは複数の出力を提供するステップとをさらに含む、請求項2ないし3のいずれかに記載の方法。
【請求項5】
コード・セットへの要求を監視するシステムであって、
前記コード・セットへの要求を受け取ること、
前記要求についてのトレースを作成することであって、前記トレースが、前記コード・セットを通した前記要求のパスを定義する、前記作成すること、
複数の記憶済みトレース・パターンにアクセスすることであって、各記憶済みトレース・パターンが、前記コード・セットを通した要求の許容可能なパスを定義する、前記アクセスすること、
前記作成されたトレースを前記記憶済みトレース・パターンと比較すること、および、
前記作成されたトレースが前記記憶済みトレース・パターンのうちのどの1つともマッチしない場合に、前記作成されたトレースを記憶すること、
記憶済みの部分的トレース・パターンにアクセスすること、および、前記作成されたトレースが前記記憶済みの部分的トレース・パターンとマッチし前記記憶済みトレース・パターンのうちのどの1つともマッチしない場合にのみ、前記作成されたトレースを記憶すること
を行うように構成されたプロセッサを備えるシステム。
【請求項6】
前記コード・セットへの各要求につきトレースを作成すること、すべての作成されたトレースを記憶すること、前記複数の記憶済みトレース・パターンにアクセスすること、前記作成されたトレースを前記記憶済みトレース・パターンと比較すること、および、作成された各トレースが前記記憶済みトレース・パターンのうちの少なくとも1つとマッチする場合に、前記作成された各トレースを削除すること、を行うように前記プロセッサがさらに構成された、請求項5に記載のシステム。
【請求項7】
前記記憶済みトレース・パターンのうちのどの1つともマッチしない作成されたトレースの数に関する数値データを維持すること、および、前記数値データから導出された1つまたは複数の出力を提供すること、を行うように前記プロセッサがさらに構成された、請求項5または6に記載のシステム。
【請求項8】
前記記憶済みトレース・パターンのうちの少なくとも1つとマッチする作成されたトレースの数に関する数値データを維持すること、および、前記数値データから導出された1つまたは複数の出力を提供すること、を行うように前記プロセッサがさらに構成された、請求項6ないし7のいずれか一項に記載のシステム。
【請求項9】
請求項1ないし4のいずれか1項に記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項10】
請求項9に記載の前記コンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コード・セットへの要求を監視する方法およびシステムに関する。
【背景技術】
【0002】
多くのコンピューティング環境では、短期間に非常に多数の命令がコンピュータによって扱われることがある。例えば、銀行などの大企業のためのウェブサイトを運用しているサーバは、1秒当たりに非常に多数の要求およびトランザクションを扱っていることになり、これはしばしば、1秒当たり数千個に達する。このようなコンピューティング・システムは、許容可能なレベルのセキュリティおよび信頼性を維持するために、非常に複雑なソフトウェアを稼働しなければならない。このような複雑なコンピューティング環境では、エラー検出および監視が最も重要である。多くの異なる技法がこのような環境で使用されるが、これらの技法の1つは、トレースとして知られる。
【0003】
ソフトウェア・エンジニアリングにおいて、トレーシングは、プログラムの実行に関する情報を記録するための、特化されたタイプのロギングである。この情報は、プログラマによってデバッギングの目的で使用されることが可能であり、加えて、トレース・ログに含まれる情報のタイプおよび詳細によっては、熟練したシステム管理者または技術サポート人員、およびソフトウェア監視ツールによって、ソフトウェアのよくある問題を診断するために使用されることが可能である。より多くの情報については、例えばen.wikipedia.org/wiki/Tracing_(software)を参照されたい。
【0004】
サーバに多くの要求が出されるビッグ・データ環境では、問題を捉えるためにトレースをイネーブルにするのは実際的でないことが多い。非常に多くのトランザクションまたは要求が同時に稼働しているので、トレースは、何ギガバイトものデータを生み出す可能性がある。しかし、レベル3サポート(最も困難なまたは高度な問題を扱うことを担う、3層技術サポート・モデルにおける最高レベルのサポート)はしばしば、トレースを使用して、問題がなぜ起こったのかを見出す必要がある。このような環境は、何千個もの要求を同時に扱うIBM MQ Messagesightアプライアンス、または、1秒当たり何千個ものトランザクションを扱うIBM CICS Transaction Serverであり得る(IBMおよびCICSは、多くの管轄区におけるインターナショナル・ビジネス・マシーンズ・コーポレーション(International Business Machines Corporation)の登録商標である)。
【発明の概要】
【発明が解決しようとする課題】
【0005】
従って発明が解決しようとする課題は、コード・セットへの要求を監視する方法、システム、およびコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【0006】
本発明の第1の態様によれば、コード・セットへの要求を監視する方法が提供される。この方法は、コード・セットへの要求を受け取るステップと、要求についてのトレースを作成するステップであって、トレースが、コード・セットを通した要求のパスを定義する、ステップと、複数の記憶済みトレース・パターンにアクセスするステップであって、各記憶済みトレース・パターンが、コード・セットを通した要求の許容可能なパスを定義する、ステップと、作成されたトレースを記憶済みトレース・パターンと比較するステップと、作成されたトレースが記憶済みトレース・パターンのうちの1つとマッチしない場合に、作成されたトレースを記憶するステップと、を含む。
【0007】
本発明の第2の態様によれば、コード・セットへの要求を監視するシステムが提供される。このシステムは、コード・セットへの要求を受け取ること、要求についてのトレースを作成することであって、トレースが、コード・セットを通した要求のパスを定義する、作成すること、複数の記憶済みトレース・パターンにアクセスすることであって、各記憶済みトレース・パターンが、コード・セットを通した要求の許容可能なパスを定義する、アクセスすること、作成されたトレースを記憶済みトレース・パターンと比較すること、および、作成されたトレースが記憶済みトレース・パターンのうちの1つとマッチしない場合に、作成されたトレースを記憶すること、を行うように構成されたプロセッサを備える。
【0008】
本発明の第3の態様によれば、コード・セットへの要求を監視する、コンピュータ可読ストレージ媒体上のコンピュータ・プログラム製品が提供される。この製品は、コード・セットへの要求を受け取るための命令と、要求についてのトレースを作成するための命令であって、トレースが、コード・セットを通した要求のパスを定義する、命令と、複数の記憶済みトレース・パターンにアクセスするための命令であって、各記憶済みトレース・パターンが、コード・セットを通した要求の許容可能なパスを定義する、命令と、作成されたトレースを記憶済みトレース・パターンと比較するための命令と、作成されたトレースが記憶済みトレース・パターンのうちの1つとマッチしない場合に、作成されたトレースを記憶するための命令と、を備える。
【0009】
本発明により、有用なトレース・データが捕捉されるようにするための方法を提供することが可能だが、捕捉されるデータの量は、トレースの無差別な使用と比較して大幅に削減される。発想は、要求がコード・セットを通して進むパスを示すトレース・パターンを捕捉する、というものである。これらのパターンを使用して、どのパスがシステムにとって正常であるかが示され、したがって、実行中に正常でない(abnormal)パスが識別されるのが可能になる。このようなパターンは、好ましくは、どのコード・モジュールおよび機能が呼び出されるかを詳述することになり、任意選択でエントリおよびイグジット・パラメータの内容を含むが、それ以上の詳細は含まない。一実施形態では、トレースがシステムに対してイネーブルにされている間、トレースはメモリに捕捉され、要求が完了したときやバッファが満たされたときなどに時々、トレースはパターンと比較される。各要求/スレッドにつき、要求が正常なパターンとマッチする場合は、トレースは破壊され、ディスク上またはメモリ上のどのような空間も使用しない。パターンが異常である場合は、トレースは保存され、サポートに提供されてよい。要求は、環境において定義されてよく、例えば、CICS Transaction Serverにおいては、要求は、トランザクションの存続期間中のアクティビティであることになり、一方、ウェブ・サーバにおいては、要求は、HTTP応答が提供されるまで入ってくるHTTP要求からのアクティビティであることになる。
【0010】
代替の一実施形態では、正常なパターンを使用して、正常なパスを実行している要求に対するトレース呼出しを無視することができる。この要求が次いでこのパスから逸脱するとすれば、トレース呼出しの結果としてトレース・データが記録されることになる。これにより、トレースのためのストレージ使用が削減されることになり、また、トレース出力を分析する人が、予期されたとおりに実行されていない1つまたは2つの要求を識別するのがより単純化されることになる。前述の第1の実施形態では、トレースは、最初にディスクに捕捉され、次いで削除される。この代替実施形態では、トレースは、ディスクに捕捉されないが、異常である場合はディスクに書き込まれる。
【0011】
さらに他の任意選択の拡張は、モジュールを通した初期フローとマッチする部分的パターンを使用することであり、この場合、この部分的パターンとマッチするどのような要求も、トレースされて、良いパターンと比較されることになり、一方、トレースとマッチしないどのような要求も破壊されることになる。このようにすれば、トレースすべき特定のコード・パスを規定して他のすべてのパスを除外することが可能であり、したがって、可能なあらゆるコード・パスについてのパターンが提供される必要はない。これは、1秒当たりに多くの要求が稼働されている環境で使用することができ、それにより、特定の悪いパスのトレースを選ぶことができる。例えば、顧客は、エラーが起こる前にどのモジュールに入ってそのモジュールから出たかを示すスタック・トレースと共に、エラーを提供することができる。レベル3担当者は、このパスのトレース・パターンを作ることができ、これを顧客システムに提供して、この段落に記載のこのモードをオンにすることができる。次いで、顧客システムは、あらゆる要求/トランザクションをトレースすることはせず、エラーを発生させた要求のみをトレースすることになる。したがって、1秒当たり数千個の要求があるシステム中でも、コードを通した単一の特定の悪いパスについてトレースを捕捉することが可能である。このようなシステム上で通常のトレースがイネーブルにされたとすれば、トレース・ログはすぐに一杯になるであろうし、数ギガバイト以上のトレースを選んでそれに対する後処理を行うことなしには、悪い要求についてのトレースを突き止めることは困難であろう。
【0012】
別の任意選択の拡張は、システムを監視できるようにすることであって、遭遇した「悪い」パターンの数を示すか、または見つかった各パターンの数をカウントして、いくつかの有用なメトリックをシステムのユーザに提供することである。多くの悪いパターンが起こっている場合、これは、システム中の何らかの問題を示す可能性がある。このような悪いパターンは、セキュリティ攻撃や、使用されている他のシステムがダウンしているかまたは信頼できないことによって、生成される可能性がある。利点は、トレースをイネーブルにする代わりに、ロードアップ(load up)すべきトレース分析をイネーブルにするための部分的パターンをシステム管理者に提供できることである。システム管理者はこれをロードし、システム管理者のシステムは、指定されたモジュールまたは機能が実行されるときだけトレースを捕捉することになる。別法として、良いパターンのセットがユーザに提供され、この場合、トレースをイネーブルにすると、悪く見える要求のみについて、それらのトレースが捕捉され保管される。
【0013】
次に、後続の図面を参照しながら、本発明の好ましい実施形態について単なる例として述べる。
【図面の簡単な説明】
【0014】
【
図1】コンピューティング・システムの概略図である。
【
図4】コード・セットへの要求を監視する方法のフローチャートである。
【
図5】部分的トレース・パターンを使用して要求を監視する方法のフローチャートである。
【発明を実施するための形態】
【0015】
図1に、ネットワーク管理者10が、デスクトップ・コンピュータ・システム12を使用して複雑なコード・セットの性能を監視するのを示す。コンピュータ・システム12は、ディスプレイ・デバイス14、プロセッサ16、およびユーザ入力デバイス(従来のキーボード)18を備える。プロセッサ16は、ディスプレイ・デバイス14およびユーザ入力デバイス18に接続される。プロセッサ16はオペレーティング・システムを稼働しており、ユーザ10は、ディスプレイ・デバイス14によって表示されている、オペレーティング・システムのグラフィカル・ユーザ・インタフェースを介して、オペレーティング・システムと対話することができる。CD−ROM20が示されているが、CD−ROM20は、プロセッサ16によって実行されているコンピュータ・プログラム製品のコピーを記憶するのに使用することができる。
【0016】
追加のユーザ・インタフェース・デバイス22も示されているが、これは、従来のマウス22である。ユーザ10は、キーボード18およびマウス22を利用して、プロセッサ16によって稼働されているオペレーティング・システムおよびアプリケーションと対話する。監視されているコード・セットもまたコンピューティング・システム12によって実行されてよく、または、コード・セットはおそらく、コンピューティング・システム12からリモートに位置する1つまたは複数の接続されたサーバによって実行されている。コード・セットは、銀行の顧客がオンラインで自分の口座にアクセスして取引を実施するのを可能にするためのウェブサイトを提供するために、銀行などの金融機関によって使用されるものなど、企業コンピュータ・システムであってよい。
【0017】
コード・セットは1秒当たり何千個もの要求を扱い、コード・セットによって受け取られている要求のすべてではないがいくつかに対してトレース機能を使用することによって、監視が提供される。コード・セットへのあらゆる単一の要求についてトレースがイネーブルにされたなら通常は生成されるはずのトレース・データのすべてを記憶するために非常に大きいストレージ・オーバヘッドを必要とすることなく、ネットワーク管理者10に十分なフィードバックを提供するために、コード・セットは、いくらかの量のトレース・データのみが捕捉されるように構成される。トレーシングは、要求が受け取り後に処理されるのに伴ってコード・セットの実行に関する情報を記録する、特化されたタイプのロギングである。
【0018】
保持されているトレース・データの量を削減するために、トレース・パターンを使用して「良い」トレースと「悪い」トレースとを区別する必要がある。良いトレースは、コード・セットを通した要求の正常なパスと考えることができ、一方、悪いトレースは、コード・セットを通した要求の予期されないパスであり、これは、処理におけるエラーをより示す傾向があるであろう。このような区別をつけるために、まず、許容可能なトレース・パターンを生成する必要がある。
図2に、要求24がコード・セット26によって受け取られ、コード・セット26が応答28を生成し、また特定の要求24についてのトレース30も生成する、という概念を例証する。
【0019】
パターンを生成するために、最初に、要求24についてのトレース30が捕捉される。次いで、ツール32を使用して、このトレース30がパターン34に変換される。次いで、このパターンは、正常な要求パターンとしてシステムにロードされる。このプロセスが、良いと判断される各要求パターンにつき繰り返される。パターン34は、モジュールまたはクラス中の、メソッド呼出しのシーケンスである。例えば、サーブレット環境では、トレース・パターンは、以下のようである場合がある(ここで、>記号は、名前付きモジュールに入ることを指し、<記号は、名前付きモジュールから出ることを指す)。
>MyServlet.init()
<MyServlet.init()
>MyServlet.get()
>MySupportCode.doLogic()
<MySupportCode.doLogic()
>MySupportCode.doMoreLogic()
<MySupportCode.doMoreLogic()
<MyServlet.get()
【0020】
パターン34は、より複雑であってよく、パラメータの特定のタイプを含めて、任意選択で送り込まれるかまたは返されるパラメータを含むことができる。これの用途の1つは、Exceptionスーパー・クラスをとる例外処理メソッドがある場合に、UserErrorExceptionなど、Exceptionの具体的なサブクラスと共にこのメソッドに入るよう、パターンが指定できるようにするものである。したがって、この予期された例外が起こらないエラーのみが、分析されトレースされることになる。コード・セット26のテスト動作中に生成された、正常として指定されるトレース30を使用して、容認可能なパターン34が生成され、次いで、容認可能なパターン34は、コード・セット26の通常動作中に使用される準備ができた状態で、記憶される。
【0021】
通常動作時、システムは、トレースのディスクへの書込みを可能にすることになる。システムは、要求を識別して、トレースを要求ごとに区分化することが必要になる。分離は、要求がトレース呼出しを行ったときに行われるか、またはトレース出力を処理する第2段階でシステムによって行われるかのいずれかであってよい。この第2段階は、トレースを要求ごとに別々のファイルに切り出す(split out)システム・タスクによって実装されてよく、例えば、いくつかのアプリケーション・サーバ中では、トレース・エントリがスレッドIDを有し、したがって、トレース出力はスレッドIDによって別々のファイルに分割(split)されてよい。同様に、他のタイプのトランザクション・サーバでは、各トランザクションがタスク番号を有し、この識別子を使用してトレース出力が分割されてよい。
【0022】
記憶済みパターンの使用は、有用なトレース・データが捕捉されるための方法を提供するが、捕捉されるデータの量は、トレースの無差別な使用と比較して大幅に削減される。記憶済みトレース・パターンを使用して、どのパスがシステムにとって正常であるかが示され、したがって、実行中に正常でないパスが識別されるのが可能になる。前述のように、このようなパターンは、好ましくは、どのコード・モジュールおよび機能が呼び出されるかを詳述することになり、任意選択でエントリおよびイグジット・パラメータの内容を含むが、それ以上の詳細は含まない。
図3に、コード・セットを通した要求の許容可能なパスを定義するトレース・パターンを記憶したデータベース38へのアクセスを有するサーバ36を示す。
【0023】
一実施形態では、サーバ36によって稼働されるシステムに対してトレースがイネーブルにされている間、トレースはメモリに捕捉され、要求が完了したときやバッファが満たされたときなどに時々、トレースは、データベース38中の記憶済みパターンと比較される。要求が正常なパターンとマッチする場合は、トレースは削除され、したがってディスク上またはメモリ上のどのような空間も使用しない。パターンが異常でありどのような記憶済みトレース・パターンともマッチしない場合は、元のトレースは保存され、サポートに提供されてよい。このようにして、「良い」と考えられるトレース・パターンとマッチしないトレースのみが、システムによって記憶されることになる。
【0024】
図4に、コード・セットへの要求を監視する方法を要約する。この方法は、以下のステップを含む。すなわち、第一に、コード・セットへの要求を受け取ることを含むステップS4.1である。第二に、要求についてのトレースを作成することを含むステップS4.2であり、トレースは、コード・セットを通した要求のパスを定義する。第三に、複数の記憶済みトレース・パターンにアクセスすることを含むステップS4.3であり、各記憶済みトレース・パターンは、コード・セットを通した要求の許容可能なパスを定義する。第四に、作成されたトレースを記憶済みトレース・パターンと比較することを含むステップS4.4である。最後に、作成されたトレースが記憶済みトレース・パターンのうちの1つとマッチしない場合に、作成されたトレースを記憶することを含むステップS4.5である。
【0025】
代替の一実施形態では、記憶済みパターンを使用して、正常なパスを実行している要求に対するトレース呼出しを無視することができる。この要求が次いでこのパスから逸脱するとすれば、トレース呼出しの結果としてトレース・データが記録されることになる。これにより、トレース・データのためのストレージ要件が削減され、また、トレース出力を分析する人が、予期されたとおりに実行されていない1つまたは2つの要求を識別するのがより単純化される。前述の第1の実施形態では、トレース・データは、最初にディスクに捕捉され、次いで削除される。この代替実施形態では、トレース・データは、ディスクに捕捉されないが、異常である場合はディスクに書き込まれる。
【0026】
要求が正常なパスとマッチしているときにトレース呼出しが無視される、この代替実施形態では、パターンがメモリに保持されることになるのが理想的である。性能の理由で、これは、これらのパターンをグラフにマージすることによって達成されてよく、グラフ中の要求位置が追跡されることになる。要求がトレース呼出しを行ったとき、この呼出しが要求についての次の有効ノードとマッチする場合は、グラフ中の要求の場所が更新され、何もトレースされない。この呼出しが次の有効ノードとマッチしない場合は、パターン中の要求の最後の良い位置が、現在のトレース呼出しにおける値と共に、トレース出力に書き込まれることになり、グラフ中の要求の場所が「マッチなし」位置に更新されることになる。この結果、要求についての後続のすべてのトレース呼出しが書き込まれることになる。
【0027】
トレース・データを残しておくか否かの決定に対する先駆けとして、部分的パターン・マッチングを使用することができ、この場合、トレースを監視する第2段階バックグラウンド・タスクを使用するか、または前述の前実施形態と同様にメモリ内グラフを使用するかのいずれかによって、部分的パターンとマッチする要求のみがトレースされる。バックグラウンド・タスクは、要求の完了時、上記のツールと同じロジックを使用して、トレースをパターンに変換することになる。次いで、このパターンは部分的パターンと比較されるが、これは、このトレースが分析されるべきであることを示す場合がある。そうである場合は、パターンは、既知の良いパターンと比較される。マッチが見つかった場合は、トレースはディスクから削除される。マッチが見つからなかった場合は、トレースはディスク上に残され、分析者は、悪いパターンが検出されたことを示すためのログ・エントリを書き込むことができる。メモリ内グラフは、現在の要求を追跡することになり、これらの要求は、パターンとマッチしトレース・エントリが書き込まれるか、または、グラフ中のそれらの場所が「トレースなし」ノードに更新されるか、のいずれかとなる。
【0028】
例えば、部分的トレース・パターンは、以下のとおりである場合がある。
>MyServlet.get()
【0029】
したがって、他のサーブレットへの呼出しは分析されない。しかし、GETを使用する、Myservletへの呼出しは、分析される。悪いパターンは、以下のようになる。
>MyServlet.init()
>MyServlet.get()
>MySupportCode.doLogic()
>MySupportCode.handleError()
>ServletContainer.handleRuntimeException()
<ServletContainer.handleRuntimeException()
【0030】
ここで、コードは、getにおいて失敗し、次いで、サーブレット・コンテナが対処しなければならなかった未処理例外を投げた。
図5に、このプロセスにおける基本原理を例証する。ステップS5.1で、トレースが部分的パターンとマッチするかどうかを見るためのチェックが行われる。マッチしない場合は、トレースは廃棄される。マッチする場合は、ステップS5.2で、トレースが記憶済みパターンとマッチするかどうかを見るためのチェックが行われる。マッチする場合は、トレースは廃棄され、記憶済み(完全な)パターンとのマッチがない場合にのみ、ステップS5.3でトレースは記憶される。本質的に、このプロセスは、コード・セットの特定の1つのエリア(部分的パターンによって定義される)に焦点を合わせることによって動作し、「良い」とすでに定義されたトレース・パターンとマッチしないトレースのみを記憶する。
【0031】
パターンからのトレース・ポイントをどのように稼働中のトレースとマッチさせるかに関して、以下は、IBM WebSphere Application Serverからの2つの例示的なトレース・ステートメントである(WebSphereは、多くの管轄区におけるインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である)。
[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
【0032】
タイムスタンプは、マッチングの観点からは無視されてよく、他のトレース・ポイントに対する順序のみが重要である。スレッドID00000084は、やはり無視されてよいが、単一のタスクからトレースを集めるときに使用されてよく、したがって、同じスレッドID上のすべてのトレース・ポイントは、単一のタスクについてのものである。コンポーネント「util」は、無視されてよい。呼び出されたクラス名は「com.ibm.sr.sdo.helper.impl.BSRSDOHelperImpl」であり、これは、トレース・パターンの一部を形成し、パターン中のクラス名とマッチすることが必要になる(グラフ形式であろうとそうでなかろうと)。メソッド名は、「addProperty」であり、これは、パターンの一部を形成し、マッチすることが必要になる。最後に、タイプ(エントリまたはイグジット)は、「ENTRY」として示され、これは、トレース・パターンの一部を形成し、マッチすることが必要になる。
【0033】
このようにして、要求がコード・セットによって受け取られると、入ったモジュールおよび機能に基づいて、生トレース・データは、余分な情報が除去されてパターンに変換されてよい。トレース・データをトレース・パターンでフィルタリングすることによって、異常な(unusual)および予期されないトレース・データのみが捕捉されることになり、これにより、トレース・データを扱うのに必要とされるストレージの量が削減されることになるが、また、より少ないデータが存在することになるのでネットワーク管理者のタスクもより容易になる。記憶されたトレース・データは、フィルタリング後は、記憶済みトレース・パターンとマッチしなかったトレースのみを含むことになり、当然ながら、予期されないトレースとなる。これらは、コード・セット内のエラーまたは異常動作に関係する可能性がより高く、したがって、コード・セットに関してサポートが提供される必要がある場合にこれらを検討することができる。
【0034】
トレース・フィルタリングはまた、システム・メトリックを取得するのに使用することもできる。システムが監視されて、遭遇した「悪い」パターン(すなわち記憶済みトレース・パターンとマッチしないパターン)の数が示されるか、または見つかった各パターンの数がカウントされてよく、それにより、いくつかの有用なメトリックがシステムのユーザに提供されてよい。多くの悪いパターンが起こり始めている場合、これは、システム中の何らかの問題を示す可能性がある。このような悪いパターンは、セキュリティ攻撃や、使用されている他のシステムがダウンしているかまたは信頼できないことによって、生成される可能性がある。1つの利点は、トレースをイネーブルにする代わりに、ロードアップすべきトレース分析をイネーブルにするための部分的パターンをシステム管理者に提供できることである。管理者はこれをロードし、管理者のシステムは、指定されたモジュールまたは機能が稼働されるときだけトレースを捕捉することになる。別法として、良いパターンのセットがユーザに提供され、この場合、トレースをイネーブルにすると、悪く見える要求のみについて、それらのトレースが捕捉され保管される。
【0035】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せとすることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに遂行させるためのコンピュータ可読プログラム命令を有する(1つまたは複数の)コンピュータ可読ストレージ媒体を含むことができる。
【0036】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用される命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能な読取専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取専用メモリ(CD−ROM)、ディジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にエンコードされたデバイス(命令が記録された、パンチカード、または溝の中の隆起構造)、および上記の任意の適切な組合せを含む。本明細書において使用されるコンピュータ可読ストレージ媒体は、電波もしくは他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルの中を通る光パルス)、またはワイヤを介して伝送される電気信号など、一時的な信号自体であると解釈されるべきではない。
【0037】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされてよく、あるいは、ネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含むことができる。各コンピューティング/処理デバイス中の、ネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、コンピュータ可読プログラム命令をネットワークから受け取り、これらのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶されるように転送する。
【0038】
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データであってよく、または、Smalltalk(R)やC++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語や類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードとオブジェクト・コードとのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されるか、スタンドアロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して(例えば、インターネット・サービス・プロバイダを使用してインターネット経由で)行われてもよい。いくつかの実施形態では、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を例えば含む、電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【0039】
本明細書では、本発明の態様を、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の、フローチャート説明またはブロック図あるいはその両方に関して述べている。フローチャート説明またはブロック図あるいはその両方の各ブロック、および、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ可読プログラム命令によって実装できることは理解されるであろう。
【0040】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装する手段をもたらすように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為の態様を実装する命令を含む製造品を構成するように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに、特定の方式で機能するよう指示することができるものであってもよい。
【0041】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロック中で指定される機能/行為を実装するように、コンピュータ実装プロセスを生み出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0042】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の中の各ブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、指定される論理機能を実装するための1つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合がある。例えば、関連する機能に応じて、連続して示される2つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施するかまたは専用ハードウェアとコンピュータ命令との組合せを遂行する、専用ハードウェアベースのシステムによって実装できることにも留意されるであろう。