JP2016081483A - 分析プログラム、分析装置、及び分析方法 - Google Patents

分析プログラム、分析装置、及び分析方法 Download PDF

Info

Publication number
JP2016081483A
JP2016081483A JP2014215689A JP2014215689A JP2016081483A JP 2016081483 A JP2016081483 A JP 2016081483A JP 2014215689 A JP2014215689 A JP 2014215689A JP 2014215689 A JP2014215689 A JP 2014215689A JP 2016081483 A JP2016081483 A JP 2016081483A
Authority
JP
Japan
Prior art keywords
module
information
abnormal
normal
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2014215689A
Other languages
English (en)
Inventor
堀田 勇次
Yuji Hotta
勇次 堀田
武 安家
Takeshi Ake
武 安家
敦二 関口
Atsuji Sekiguchi
敦二 関口
智弘 清水
Toshihiro Shimizu
智弘 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014215689A priority Critical patent/JP2016081483A/ja
Priority to US14/832,111 priority patent/US20160117224A1/en
Publication of JP2016081483A publication Critical patent/JP2016081483A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Abstract

【課題】複数の処理の各々が経由するモジュールの情報が正しくない場合でも異常モジュールを特定する。
【解決手段】コンピュータに、共用するモジュール(pj(jは自然数))が存在する複数の処理(Fi(iは自然数))それぞれについて、各処理が経由するモジュールの情報を記憶し、所定期間に実行した複数の処理に関するログ情報に基づき、前記所定期間に実行した各処理の正常又は異常のステートを判定し、前記正常又は異常のステートの判定結果と前記所定期間に実行した各処理に係る前記モジュールの情報とを用いて異常モジュールの特定を行なう処理において、異常モジュールが特定されない場合、前記所定期間に実行した各処理に係る前記モジュールの情報を、所定の条件に基づき修正し、前記正常又は異常のステートの判定結果と前記修正したモジュールの情報とを用いて異常モジュールを特定する、処理を実行させる。
【選択図】図44

Description

本発明は、分析プログラム、分析装置、及び分析方法に関する。
アプリケーションプログラムやネットワークサービス等において、遅延個所や異常個所を発見することが試みられている(例えば、下記の特許文献1参照)。
アプリケーションプログラムやネットワークコンポーネントが行なう処理は、例えばstart-A-B-C-D-endという処理シーケンスのように、複数のモジュール(A〜D)を経由して実現され、各モジュールは、複数の処理で用いられ得る。このように、アプリケーションプログラムやネットワークコンポーネントは、複数の処理で共通のモジュールを使用した処理を行なう。
特定のモジュールの遅延は、関連する複数の処理で遅延を引き起こす原因となる。遅延しているモジュールを特定する手法としては、以下の手法が知られている(例えば、下記の特許文献2参照)。
例示的に、分析装置が、複数の処理を実行した結果から各々の処理が使用するモジュールを特定したパス情報を記憶し、処理と処理時間とを含むログ情報から処理時間の遅延を検出した時刻を含む所定の時間区間に出力されたログ情報を抽出する。これにより、分析装置は、抽出したログ情報とパス情報とに基づいて処理遅延の原因となるモジュールを特定できる。
特開2002−082926号公報 特開2014−132421号公報
上記の技術において、複数の処理の各々が経由するモジュールの情報(パス情報)は、事前に処理を実行した結果から作成される。
分析装置では、事前に作成したパス情報が正しいことを前提としているが、作成したパス情報が正しくない、つまりパス情報で特定されるモジュールが、抽出したログ情報に含まれる処理で使用されたモジュールと異なる可能性もある。このような状況が生じるのは、例えば、条件分岐で異なるモジュールが実行された場合等、パス情報及びログ情報に係るそれぞれの処理の実行タイミングや指定されたパラメータ等の条件が異なる場合などである。
分析装置では、パス情報が正しくないと、抽出したログ情報に含まれる処理で使用されたモジュールを特定することができず、処理遅延の原因となるモジュールを特定することが困難となる場合がある。
1つの側面では、本発明は、複数の処理の各々が経由するモジュールの情報が正しくない場合でも異常モジュールを特定することを目的とする。
分析プログラムの一態様は、コンピュータに、以下の処理を実行させる。前記処理は、共用するモジュールが存在する複数の処理それぞれについて、各処理が経由するモジュールの情報を記憶し、所定期間に実行した複数の処理に関するログ情報に基づき、前記所定期間に実行した各処理の正常又は異常のステートを判定する処理を含む。また、前記処理は、前記正常又は異常のステートの判定結果と前記所定期間に実行した各処理に係る前記モジュールの情報とを用いて異常モジュールの特定を行なう処理において、異常モジュールが特定されない場合、前記所定期間に実行した各処理に係る前記モジュールの情報を、所定の条件に基づき修正する処理を含む。さらに、前記処理は、前記正常又は異常のステートの判定結果と前記修正したモジュールの情報とを用いて異常モジュールを特定する処理を含む。
一態様によれば、複数の処理の各々が経由するモジュールの情報が正しくない場合でも異常モジュールを特定することができる。
一実施形態に係るネットワークシステムの一例を示すブロック図である。 一実施形態に係る機能とコンポーネントとの関係の一例を示す図である。 (A)〜(D)は一実施形態に係る機能とコンポーネントとの関係をマトリクスで表現した例を示す図である。 一実施形態に係る分析フェーズの動作例を説明するフローチャートである。 一実施形態に係る運用フェーズの動作例を説明するフローチャートである。 図4に例示する紐付け処理を一例を説明するフローチャートである。 図4に例示する紐付け処理の一例を模式的に説明する図である。 一実施形態に係る運用フェーズの分析結果の通知画面例を示す図である。 一実施形態に係る運用フェーズの分析結果の通知画面例を示す図である。 一実施形態に係る機能毎の集計区間に正常と異常なデータとが混在する様子を模式的に示す図である。 図10において集計区間を極小化する場合の問題例を模式的に説明する図である。 図10において正常区間と異常区間とを分離して、重なりで判定する様子を模式的に説明する図である。 一実施形態に係る事務処理システムの事例を説明する図である。 図13に例示する事務処理システムでの異常発症例を模式的に説明する図である。 一実施形態に係る分析方法を事務処理システムに適用した場合を模式的に説明する図である。 一実施形態に係る事前準備処理を説明するフローチャートである。 一実施形態に係る運用フェーズでの動作例を説明するフローチャートである。 一実施形態においてリクエスト−レスポンスデータ(RRデータ)の単位を判定区間とする様子を例示する図である。 一実施形態において正常のRRデータをまとめて正常区間とし、異常のRRデータをまとめて異常区間とする様子を例示する図である。 一実施形態において正常区間及び異常区間の切り替わりのRRデータがない区間をデータなしとして扱う様子を例示する図である。 一実施形態において正常区間及び異常区間の切り替わりのRRデータがない区間をデータなしとして扱う様子を例示する図である。 一実施形態において正常区間及び異常区間の切り替わりの次のRRデータが出現したタイミングで区間を切り替える様子を例示する図である。 一実施形態において同一種別のRRデータの最後のRRデータの終了タイミングで区間を切り替える様子を例示する図である。 一実施形態において正常RRデータ群及び異常RRデータ群の中間地点で切り替える様子を例示する図である。 一実施形態においてRRデータが重なり合う場合の様子を例示する図である。 一実施形態において同一種別のRRデータの開始から終了までを1つの正常区間または異常区間とする様子を例示する図である。 一実施形態において異なる種別の次のRRデータの開始時点(出現タイミング)で区間を区切る様子を例示する図である。 一実施形態において異なる種別のRRデータの出現時に、前の種別の最後のRRデータの終了タイミングで区間を区切る様子を例示する図である。 一実施形態において正常のRRデータの開始時に正常区間として切り、正常のRRデータの終了時に区間を区切る様子を例示する図である。 (A)及び(B)は一実施形態において異なるタイミングで一部の機能のRRデータが出現しない様子を比較して例示する図である。 (A)及び(B)は一実施形態において異なるタイミングでRRデータが1つのみ出現する場合と複数出現する場合を比較して例示する図である。 (A)〜(C)は一実施形態に係る具体的な競合と暗黙の競合とを模式的に説明する図である。 一実施形態に係る機能とコンポーネントとの関係の一例を示す図である。 一実施形態において補完テーブル(排他ポイントテーブル)を作成するフローチャートである。 (A)及び(B)は一実施形態に係るパス情報テーブル及び排他ポイントテーブルの一例を示す図である。 一実施形態に係る補完フローチャートである。 一実施形態に係る機能とコンポーネントとの関係の一例を示す図である。 一実施形態に係る頻度情報(テーブル)の一例を示す図である。 一実施形態に係る機能選別処理の一例を説明するフローチャートである。 一実施形態に係る機能とコンポーネントとの関係の一例を示す図である。 一実施形態に係る頻度情報(テーブル)の一例を示す図である。 一実施形態に係る頻度情報(テーブル)の一例を示す図である。 (A)及び(B)は一実施形態に係るパス情報が運用フェーズにおける処理の実行内容と異なる場合を示す図である。 一実施形態に係るパス情報の修正例を示す図である。 一実施形態に係るパス情報の修正例を示す図である。 一実施形態に係るパス情報の修正例を示す図である。 一実施形態に係るパス情報の修正例を示す図である。 一実施形態に係るパス情報の修正及び問題個所特定の再実施処理を説明するフローチャートである。 一実施形態に係るアクセスログ例を示す図である。 一実施形態に係るパス情報における機能毎の正常又は異常のステートの一例を示す図である。 一実施形態に係るパス情報管理処理を説明するフローチャートである。 一実施形態に係る修正パス情報のパターンごとの修正頻度の一例を示す図である。 一実施形態に係る運用フェーズの分析結果の通知画面例を示す図である。 一実施形態に係る運用フェーズの分析結果の通知画面例を示す図である。 一実施形態に係るパス情報の修正に用いる信頼度の算出手法の一例を示す図である。 一実施形態に係るパス情報の修正に用いる信頼度の算出手法の一例を示す図である。 一実施形態に係る修正対象のコンポーネントの一例を示す図である。 一実施形態に係る運用フェーズの分析結果の通知画面例を示す図である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
図1は、一実施形態に係るネットワークシステムの一例を示すブロック図である。図1に示すネットワークシステムは、例示的に、インターネット等のネットワーク10、ネットワーク10に接続されたサーバ群20,30及び40、並びに、ネットワークスイッチ(NS)50等を備える。サーバ群20,30及び40には、例示的に、Webサーバ30や、アプリケーション(AP)サーバ40、その他のサーバ20等が含まれる。
APサーバ40には、例示的に、事前分析ブロック401、運用ブロック402、ユーザリクエストデータベース403、及び、パス情報データベース404が備えられる。オプション的に、APサーバ40には、出現確率データベース405が備えられてもよい。
APサーバ40は、処理部の一例としてのCPU(Central Processing Unit)、RAM(Random Access Memory)等のメモリ、及び、ハードディスク装置等の記憶装置、表示装置、印刷装置等(いずれも図示省略)を備えることができる。APサーバ40においては、CPUがメモリや記憶装置から所定のプログラムを読み取って動作することにより、必要な機能部が具現される。例示的に、プログラムには、事前分析ブロック401や運用ブロック402の機能を具現するプログラムの一例としての分析プログラムが含まれる。表示装置や印刷装置には、例えばCPUによる演算結果等を出力することができる。なお、他のサーバ20やWebサーバ30についても、ハードウェア的には、CPU、メモリ、及び、ハードディスク装置等の記憶装置、表示装置、印刷装置等が備えられる。
分析プログラムとしての機能(各手段の全部又は一部の機能)は、CPU等の処理部が所定のアプリケーションプログラムを実行することによって実現される。
そのプログラムは、例えばフレキシブルディスク、CD−ROM(Compact Disc-Read Only Memory),CD−R,CD−RW,MO(Magneto-Optical Disc),DVD(Digital Versatile Disc)、ブルーレイディスク、ポータブルハードディスク、USB(Universal Serial Bus)メモリ等のコンピュータ読取可能な記録媒体に記録された形態で提供されてよい。この場合、コンピュータ(コンピュータの処理部)はその記録媒体から上記プログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信回線を介してAPサーバ40等のコンピュータ(情報処理装置)に提供するようにしてもよい。
なお、APサーバ40等のコンピュータは、記録媒体に記録されたプログラムを読み取るための手段をそなえることができる。
上記アプリケーションプログラムは、上述のようなコンピュータに、分析プログラムとしての機能を実現させるプログラムコードを含んでいる。また、その機能の一部はアプリケーションプログラムではなくOS(Operating System)によって実現されてもよい。
さらに、上記記録媒体としては、上述したフレキシブルディスク,CD−ROM,CD−R,CD−R,CD−RW,DVD,磁気ディスク,光ディスク,光磁気ディスクのほか、IC(Integrated Circuit)カード,ROMカートリッジ,磁気テープ,パンチカード,コンピュータの内部記憶装置(RAMやROM等のメモリ),外部記憶装置等の、コンピュータ読取可能な種々の媒体を利用することもできる。
ユーザリクエストデータベース403や、パス情報データベース404、出現確率データベース405は、例示的に、APサーバ40のメモリや記憶装置において具現される。
事前分析ブロック401は、例示的に、事前データ採取部410及びパス分析部420を備える。
事前データ採取部410は、ユーザリクエストデータベース403のデータ(リクエスト等)を仮想ユーザのデータとしてネットワーク10へ投入(送信)する。なお、事前データ採取部410は、実運用時の実際のリクエスト及び状態等を保存しておいて、実運用時の運用状態を再現するようにしてもよい。
パス分析部420は、例示的に、仮想ユーザのデータ投入による結果として各サーバ20,30,40に流れるメッセージデータを採取して、パス分析を行ない、その分析結果を例えばパス情報としてパス情報データベース404に格納する。
運用ブロック402は、例示的に、運用データ採取部430、機能選別部440、データスライス分割部450、及び問題個所特定部460を備える。
運用データ採取部430は、運用フェーズにおいて実運用でサーバ20,30,40に流れるデータから例えばURL(Uniform Resource Locator)+CGI(Common Gateway Interface)パラメータ等を例えばログデータとして採取する。なお、実運用では「前面のサーバ」の情報のみ採取するようにしてよい。「前面のサーバ」とは、事前分析フェーズにおける「全サーバ」と対比して、ユーザからのリクエストを受け付ける、最もユーザ側のサーバを意味する。図1に例示する構成ではWebサーバ30が「前面のサーバ」サーバに相当し得る。ただし、構成によっては、負荷分散サーバ(ロードバランサ;図示省略)が「前面のサーバ」に相当することもあれば、APサーバ40が「前面のサーバ」に相当することもある。
機能選別部440は、採取したログデータをパス情報データベース404のパス情報と照らして、ログデータの機能選別(分類)を行なう。
データスライス分割部450は、選別した各機能で正常と異常とが混在しない時間区間を切り出す処理(ステートの変化タイミングを演算する処理)を実施する。詳細については後述する。
問題個所特定部460は、データスライス分割部450によって切り出された時間区間について遅延の検知を行ない、遅延を検知した場合はパス情報と照らして問題個所を絞り込みあるいは特定する。なお、パス情報が正しくない場合には、問題個所を絞り込みあるいは特定できない場合がある。この場合、問題個所特定部460は、後述する手法により、パス情報の修正又は再生成(以下、これらをまとめて「修正」という)を行なうことで、遅延を検知した時間区間について修正後のパス情報と照らして問題個所を絞り込みあるいは特定することができる。
ここで、「機能」(あるいは「処理」)は、次のように分類される。
まず、予めキャプチャ済みの実データや事前データ採取部410がテストデータを再現(リプレイ)するなどしてデータを採取し、システムの各機能のパスをパス分析部420が分類する。
例えば図2に示すように、p1〜p5をネットワークコンポーネントとした場合、各コンポーネントp1〜p5を流れるメッセージデータを分析し、URL+CGIパラメータで機能(Fi:iは自然数)を分類する。すると、各機能は次のようなパスを通ることが分かる。なお、コンポーネントp1〜p5はプログラムのメソッド単位、ブロック単位として処理することもできる。「コンポーネント」という用語は、「モジュール」あるいは「チェックポイント」という用語に置き換えて使用する場合がある。また、「パス」は、「コンポーネント」の集合として位置付けられる。なお、パス情報データベース404に格納されるパス情報は、一例として、以下のような機能(Fi)とその機能が通る(使用する)1以上のコンポーネント、つまりパスとを対応付けた情報とすることができる。
F1=http://foo.com/appli1.cgi?flag=exec パス=p1−p2−p4−p5
F2=http://foo.com/appli1.cgi?flag=calc パス=p1−p3−p5
F3=http://foo.com/appli1.cgi?data=true パス=p1−p2
F4=http://foo.com/appli2.cgi?feature=3 パス=p3−p4
ここで、通常時に比べてF1及びF2が遅延した場合、問題個所特定部460は、分析したパス情報に照らすことでF1とF2とが通過するパス(チェックポイント)であるp1,p2,p3,p4,p5(つまり、この例の場合は全てのチェックポイント)が問題(異常)の可能性をもつと判断することができる。
さらに、例えば、F3及びF4は遅延していないという情報と、F3及びF4のパス情報により、F1,F2及びF3の共通パスであるp1,p2,p3,p4には問題がないと判断できる。その結果、残ったp5を遅延の原因と診断することができる。
なお、分析対象がプログラムの場合、p1〜p5は、例示的に以下のように、メソッド(関数)呼出し単位や、ブロック単位、利用者指定のログ出力個所単位、あるいはこれらのいずれかの組み合わせを単位として処理することができる。
・メソッド(関数)呼出し単位
p1=method1()→p2=method2()→p4=method3()等
・ブロック単位(if文や{}などで区分けされたブロック)
p1=while(..)→p2=if ()...→p4=else...等
・利用者指定のログ出力個所
p1={file=foo.java,line=35}→p2={file=foo.java,line=55}→p4={file=boo.java,line=20}等
パス情報は、単純な例としては図3(A)に示すように各機能F1〜F4とチェックポイントp1〜p5とをマトリクスで表現することができる。なお、マトリクス表現は分析フェーズでの処理の一例である。
図3(B)に例示するように、悪化した機能(図2の例でF1及びF2)のチェックポイントを論理和(OR)で検出する。次いで、図3(C)に例示するように、悪化していない機能(図2の例でF3及びF4)のチェックポイントをORで検出する。
さらに、図3(D)に例示するように、図3(B)の結果と図3(C)の結果とで排他的論理和(XOR)をとる。次いで、図3(B)の結果と図3(D)の結果とで論理積(AND)をとる。本例において当該ANDの結果は図3(D)と同じである。図3(D)に例示するように、ANDの結果により、「1」が残っているp5が問題個所と特定できる。
(分析フェーズ)
図4に例示するように、分析フェーズ(分析ブロック401)では、2つの機能を並行して実行することができる。
まず、分析ブロック401では、事前データ採取部410により、ユーザリクエストデータベース403において予め用意したリクエストデータを再生することでサーバ20,30及び40にリクエストメッセージを投入する(データ再生:処理P10)。当該処理は、所定の終了条件が満たされるまで(処理P20でYesと判定されるまで)、繰り返される(処理P20のNoルート)。なお、リクエストデータとしては、実運用時に採取したものや、テストデータとして生成したもの等を用いることができる。
事前データ採取部410は、データ再生でのデータ投入により呼び出されるネットワークデータをキャプチャしたり、サーバ20,30,40のログデータを取得したりする等して、データを取得する(処理P30)。
次いで、分析ブロック401は、例えばパス分析部420により、取得したデータを紐付け処理して、パス情報を生成する(処理P40)。ここで、紐付け処理の一例を図6及び図7に示す。
図6に例示するように、パス分析部420は、紐付け処理対象のデータの有無をチェックし(処理P410)、データが無ければデータが出現するまで待機し(処理P410のNoルート)、データが有ればデータの種別(アプリケーションやデータベース等)を選別する(処理P410のYesルートから処理P420)。
次いで、パス分析部420は、選別した種別毎に一次紐付け処理を実施する(処理P430)。さらにパス分析部420は、トランザクション終了か否かをチェックする(処理P440)。ここで、構成する全データ種別のデータが揃った場合はトランザクション終了と判定し(処理P440のYesルート)、パス分析部420は、構成する全データ種別のデータを、識別キーを使って二次紐付け処理する(処理P450)。なお、トランザクション終了と判定されるまでは、処理P410以降の処理が繰り返される(処理P440のNoルート)。
図7に、一次紐付け処理及び二次紐付け処理の一例を示す。図7の下段左には、アプリケーション(AP)のデータ例として、タイムスタンプ、トランザクションID及びその他の情報を含むデータ構造を示している。また、図7の下段右には、データベース(DB)のデータ例として、タイムスタンプ、セッションID、その他の情報及びトランザクションIDを含むデータ構造を示している。
図7の上段には、図7の下段に例示するデータがデータの種別毎に選別された様子を例示している。また、図7の上段に例示するように、APのデータは、APに固有の選別キー(例えばトランザクションID(t01,t02等))にて一次紐付けされ、DBのデータは、DBに固有の選別キー(例えばセッションID(s34,s35等))にて一次紐付けされる。
そして、異なる種別のデータどうしは、識別キー(例えばトランザクションID(t01,t02等))にて二次紐付けされる。なお、全てのデータが二次紐づけに必要な識別キーを有しているとは限らない。
二次紐付けが完了すると、パス分析部420は、紐付け結果を登録(記憶)する(処理P460)。
このような紐付け処理が完了すると、パス分析部420は、図4に例示するように、機能抽出処理を実施する(処理P50)。機能抽出処理は、上述した紐付け結果とURL+CGIパラメータとから機能を抽出し分類する処理の一例である。
そして、パス分析部420は、分類結果をパス情報としてパス情報データベース404に登録する(処理P60)。なお、後述するように、問題個所特定の精度向上のために出現確率(頻度)情報を使う方法が考えられる。その場合、パス分析部405は、出現確率情報を出現確率情報データベース405(図1参照)に格納する。
(運用フェーズ)
次に、図5を参照して運用フェーズでの処理例について説明する。
運用フェーズ(運用ブロック402)では、運用データ採取部430により、実運用データのうちURL+CGIパラメータ、レスポンス時間等の情報をネットワークスイッチ50やWebサーバ30から採取する(処理P100)。
次いで、運用ブロック402は、機能選別部440により、採取したデータからURL、CGI等のパラメータを基に機能単位を選別する(処理P110)。
さらに、運用ブロック402は、データスライス分割部450により、機能の抽出処理、すなわち、選別した各機能で正常と異常とが混在しない時間区間を切り出す処理(ステートの変化タイミングを演算する処理)を実施する(処理P120)。なお、選別した機能がパス情報に含まれない場合は、パス情報の機能に当てはめる。
その後、データスライス分割部450は、機能及びレスポンス情報を集計情報として分析対象データテーブル(図示省略)に登録(記憶)する(処理P130)。登録形式の一例は次表1に例示するとおりである。
Figure 2016081483
上記表1の例では区間IDで識別される区間にデータが出現したエントリが登録されている。F3はその区間にデータが存在しなかったことを表現している。なお、区間IDと対応する区間情報は、例示的に、次表2に例示するような別のテーブル(区間テーブル)で管理することができる。区間の長さは、スライス毎に異なり得る。
Figure 2016081483
次いで、運用ブロック402は、問題個所特定部460によって、レスポンスが悪化しているかを判定する(処理P140)。判定は、単独レスポンスや集計単位毎等の単位で行なうことができる。
レスポンスが悪化していなければ、運用ブロック402は、処理P100以降の処理を繰り返す(処理P140のNoルート)。一方、レスポンスが悪化していれば(処理P140でYesの場合)、問題個所特定部460は、集計情報とパス情報とを突き合わせることで問題個所の特定を行なう(処理P150)。
問題個所の特定ができれば(処理P160のYesルート)、問題個所特定部460は、特定した問題個所の情報を表示装置等に出力する(処理P170)。このとき、複数の候補がある場合は例えば優先順位付で複数個出力してよい。ただし、優先順位がつかない場合もある。
出力データの一例を図8に示す。図8の左側には、実運用フェーズでの分析結果の通知画面500の一例が示されている。通知画面500には、例示的に、遅延が発生した日時、推定される遅延個所等の情報が表示される。
ここで、遅延個所についてのより詳細な情報が知りたい場合には、例えば通知画面500に設けられた詳細表示ボタン501を選択することで、図8の右側に例示するような詳細表示画面510を表示できる。詳細表示画面510にも、表示する情報に対応して詳細表示ボタン511〜515を配置することができる。詳細表示画面510において更に詳細な情報が知りたい場合に対応する詳細表示ボタン511〜515を選択することで、更に詳細な情報を表示させることができる。
問題個所の特定ができなかった場合(処理P160のNoルート)、問題個所特定部460は、パス情報の修正を行ない、修正後のパス情報に基づいて処理P150と同様の問題個所の特定を行なう(処理P180)。このとき、問題個所特定部460は、修正したパス情報の記憶(蓄積)やパス情報データベース404のパス情報の更新等を行なうこともできる(処理P190)。
パス情報の修正により問題個所の特定ができれば、問題個所特定部460は、特定した問題個所の情報を表示装置等に出力する(処理P170)。
詳細表示画面510の他の例を図9に示す。図9に示すように、遅延個所のコンポーネントとして複数の候補がある場合、例えば遅延個所である可能性の高い順(尤度順)で、複数のコンポーネントを詳細表示画面510に出力してもよい。また、パス情報が修正された場合には、詳細表示画面510(あるいは通知画面500)に、矛盾の発生によりパス情報が修正(補正)された結果であることを示す「修正有」を表示してもよい。
次に、図5の処理P120及びP130に関連して、正常と異常のデータが混在する場合の問題について図10及び図11を参照して説明する。
図10及び図11において、「異常区間」は異常なデータの時間区間を例示し、「正常区間」は正常なデータの時間区間を例示している。「異常なデータ」は、例えばレスポンス時間(採取したログデータにおける処理時間)が正常範囲よりも長いことを示すデータを意味し、「正常なデータ」は、例えばレスポンス時間が正常範囲にあることを示すデータを意味する。
ここで、同じ機能でもタイミングによって正常なデータと異常なデータとが混在する場合があり、その場合には、既述のマトリックスを使った絞り込みを行なえない。
例えば、レスポンス時間の閾値が1秒(1秒以上なら異常、1秒未満なら正常)の場合、平均すると丁度1秒、を異常と判定(例えば図10の矢印601参照)しても正確な分析であるとはいえない。このように、微妙なタイミングによる問題がある場合に、平均では正常及び異常のいずれかの判定結果となってしまい正しく判定できない。また、複数の機能(F1,F2,…)のレスポンス時間が全て閾値近傍にある場合は分析結果が全く信用できないものになる。なお、ネットワーク機器異常などの分析では、正常時と異常時とがはっきり分かれるため、正常/異常データの混在が生じる可能性は低い。
データスライス分割部450は、正常及び異常のステートが混在しない領域(時間区間)を自動的に切り出すことで絞り込みを可能にする。
基本的な処理の一例としては、まず、各URLで正常及び異常のステートの変化のタイミングを演算し、当該タイミングに基づき、各URLで正常及び異常のステートが混在しない時間区間を区切る。そして、各時間区間が重なり合う範囲で、マトリックスを作って演算(複数の処理(あるいは機能)とモジュールとの「関係の情報」に基づき、問題個所となっている異常モジュールを算出(検出))する。
なお、「関係の情報」(パス情報)は、適宜に更新されてよい。例えば、実運用フェーズにおけるリクエストデータをユーザリクエストデータベース403に保存しておき、事前分析フェーズで出現しなかった未知のデータが実運用フェーズで出現した場合は、保存しておいたリクエストデータを用いて再事前分析を実施することで、「関係の情報」を更新する。
ところで、1つのURLで正常及び異常のステートが混在しない区間を複数のURLで切り出すと、細切れになり過ぎて組み合わせ(計算時間)が膨大になってしまう。そこで、以下の(a)〜(c)に例示する処理のうち、(a)のみ、または(a)+(b)、(a)+(c)、若しくは(a)+(b)+(c)により異常個所の絞り込みを行なう。
(a)異常を含まないスライスを除外する。
(b)より多くのポイント(コンポーネント)を含むスライスを選択して演算〔例えば、URLが利用するコンポーネントは既知(分析済み)なので、組み合わせにより、より多くのコンポーネントを網羅するスライスを選択する。どのURLの組合せを抑えておけば大部分のコンポーネントを網羅できるか、ということを予め計算して組合せの候補を用意しておく〕。
(c)より多くのURLを網羅するスライスを選択して演算
(集計区間を極小化する解決方法)
集計区間を調整することで当該演算を適用可能にしたいが、単に集計区間を短くするだけでは、有効なデータを見つけることができない。なぜなら、集計区間を短くしすぎると同時に出現する機能(URL)が少ないために有効な分析にならず、また、時間幅を変えながら様々な時間幅で分析に適したデータを探すと、組み合わせが爆発して計算量の見積もりができない状態になるからである。
例えば図11に符号602で示すように、集計区間を短くした場合、判定に必要なデータ(この場合、F1,F2,F3及びF4)のデータが揃わない。また、図11に符号603で示すように、更に集計区間を短くして、当該集計区間をスライドしながら探索すれば、タイミングによっては分析に必要な区間が偶然見つかることもある。しかし、組み合わせは無限になり、計算時間が足りない。
(正常区間と異常区間とを分離して重なりで判定)
そこで、データスライス分割部450は、例えば図12に示すように、機能(例えばURL)毎に正常区間と異常区間とを分けて、その区間を重ね合わせた領域を分析に使う、という工夫をする。これにより、計算量を抑えて分析可能なデータを見つけることが可能になり、分析精度が向上する。なお、図12において、機能F1及びF4は時間的前後に同様な異常あるいは正常データが存在しているものとする。また、図12には、機能F3のデータにより区間(判定区間)が2分割された様子を例示している。
(事務処理システムにおける事例)
事務処理システムの新サービス(航空券予約システム)提供で問題が発生した場合について図13及び図14を参照して説明する。
図13には、以下のように機能(F1,F2及びF3)とパスとが設定された様子を例示している。
F1=前清算 パス=p1(旅費)−p2(清算)−p4(DB1)
F2=後清算 パス=p1(旅費)−p3(予約照会)−p5(DB2)−p2(清算)−p4(DB1)
F3=航空券予約状況 パス=p1(旅費)−p3(予約照会)−p5(DB2)
システム運用当初は問題なかったが、1か月後にシステムのスローダウンが発生したとする。直接の原因は、予約照会(p3)では全件探索を実行しており、また旅費の後清算(F2)では航空券予約の有無に関わらず予約照会(p3)を実行しているため、航空券予約状況(F3)と後清算(F2)により予約照会(p3)の負荷が上がったことであった。
運用者は後清算で航空券の予約照会(p3)の負荷が急増することは想像できず、問題の切分けに長時間を要した。
(事務処理システムでの発症)
例えば図14に例示するように、通常の集計区間では、F1=正常、F2=正常、F3=異常、と分類されるため、分析が正しく行なわれない。仮に、F1=正常、F2=異常、F3=異常、であれば判定することが可能である。
(本実施形態による診断)
・事前準備
まず、事前分析ブロック401のパス分析部420(図1参照)は、URL(+引数)で業務及び/又は機能を分類(F1〜F3)し、分類した業務及び/又は機能毎にパス情報を設定する(図16の処理P211及びP212)。例えば、以下のように、機能F1〜F3毎にコンポーネントp1〜p5を設定する。
F1=http://foo/... 前清算:p1−p2−p3
F2=http://boo/... 後清算:p1−p2−p3−p4−p5
F3=http://bar/... 航空券予約状況:p1−p3−p5
・診断概要
F1が正常、F2及びF3が遅延の場合の異常コンポーネントを診断する。F2及びF3が異常の場合、F2及びF3のパス情報から、p1,p2,p3,p4,p5(つまり、本例の場合は全てのコンポーネント)に異常の可能性をあると判断することができる。ここで、F1は正常なので、F1のパス情報からp1,p2,p4が異常の可能性を除外する。
その結果、p3(予約照会)とp5(DB2)とが遅延の原因であると診断する。なお、診断により一次切分けした異常コンポーネントに対して、さらなる監視や分析等を自動実行することで、迅速な対応が可能になる。
図17に実運用フェーズでの処理フローの一例を示す。
まず、データスライス分割部450が、パス毎に正常区間及び異常区間を分類し(処理P221)、各パスで正常区間と異常区間とが混在しない範囲で全区間のスライスを作成する(処理P222)。
次いで、問題個所特定部460(図1参照)が、スライスを順に処理する(処理P223)。まず、問題個所特定部460は、次のスライスがあるか否かをチェックし(処理P224)、次のスライスがあれば(処理P224でYesの場合)、当該スライスに異常区間があるか否かを判定する(処理P225)。異常区間があれば(処理P225でYesの場合)、問題個所特定部460は、異常区間を含むスライスのうち、コンポーネント網羅性の高いスライスを選択し(処理P226)、異常個所の絞込処理を実施する(処理P227)。
そして、問題個所特定部460は、絞込み度を更新し、より絞り込んだスライスを記録する(処理P228)。次いで、問題個所特定部460は、異常個所を特定できたか否かを判定し(処理P229)、特定できた場合(処理P229でYesの場合)、特定した異常個所の情報を表示装置等に表示する等の、通知処理を行なう(処理P230)。
なお、スライスに異常区間が含まれていない場合(処理P225でNoの場合)や、異常個所が特定できない場合(処理P229でNoの場合)は、いずれも処理は処理P223に移行する。また、次のスライスがなければ(処理P224でNoの場合)、通知処理が実施される。
(事務処理システムへの適用)
例えば図15に示すように、正常区間と異常区間とを分類し、各機能の区間を重ね合わせて判定区間毎に判定を行なう。図15の場合、「判定区間1」=「正常,正常,異常」、「判定区間2」=「正常,異常,異常」、「判定区間3」=「正常,正常,異常」となる。この場合、「判定区間2」の領域(範囲)についての分析により、p3(予約照会)及びp5(DB2)が問題個所として絞り込まれる。
(正常区間及び異常区間の分類方法)
正常区間及び異常区間は、まばらに存在する場合と互いに重なり合った場合とが考えられる。
(まばらな場合)
まばらな場合、以下の方式による分類が考えられる。
(方式1)リクエスト−レスポンスデータ(以下「RRデータ」と表記する。)の単位を判定区間とする(図18参照)。別言すると、RRデータの区間=正常区間または異常区間とする。なお、図18において、矩形で示される正常区間あるいは異常区間のデータがRRデータに相当する。
(方式2)正常のRRデータをまとめて正常区間とし、異常のRRデータをまとめて異常区間とする(図19参照)。方式1に比して、区間数を抑えることができるので、処理時間を軽減できる。ここで、図19において、正常区間及び異常区間の切り替わりのRRデータなし区間をどちらに組み入れるかを判定する方式も幾つか考えられる(設定次第)。
(方式2−1)正常区間及び異常区間の切り替わりのRRデータがない区間は、正常でも異常でもなく「データなし」として扱う(図20参照)。正常/異常を厳密に見つけたい場合は本方式2−1を使うとよい。
(方式2−1′)上記の方式2−1と同様であるが、正常区間及び異常区間の閾値を超えるRRデータなし期間については「データなし」として扱う(図21参照)。「データなし」として扱う場合の閾値は、正常/異常RRデータの平均値を使ってもよいし、正常/異常と判断する閾値時間を使ってもよい。
(方式2−2)正常区間及び異常区間の切り替わり(異なる種別(正常/異常))の次のRRデータが出現したタイミングで区間を切り替える(図22参照)。
(方式2−3)同一種別の(正常/異常の種別が同じ)RRデータの最後のRRデータの終了タイミングで区間を切り替える(図23参照)。
(方式2−4)正常RRデータ群及び異常RRデータ群の中間地点で切り替える(図24参照)。なお、中間地点は、非限定的な一例として、データなし区間の中央や、正常RRデータの平均値で区切った地点等とすることができる。
基本的には、方式2−1または方式2−1′を使い、RRデータの存在しない区間が長い場合は「データなし」、として扱うのが良い。なぜなら、あいまいな情報(データが存在しないのに正常として扱う)を元にマトリックスを使った特定処理を行なっても、正しい結果が得られないからである。ただし、あまりにRRデータが少なく、分析のために必要な区間情報が揃わない場合は、例えば閾値をゆるくすることにより、精度を犠牲にして特定処理を行なうようにしてもよい。
(重なり合った場合)
図25に例示するように、RRデータが重なり合う場合、基本的には、図26に例示するように、同一種別のRRデータの開始から終了までを1つの正常区間または異常区間とする。
(方式1)異なる種別(正常/異常)の次のRRデータの開始時点(出現タイミング)で区間を区切る(図27参照)。通常想定される事例では、何らかの原因(例えばDBのロック)により1つの処理に遅延が発生し、他の処理もその処理によって待たされることで同様に遅延する。本方式1は、元となった処理の遅延原因が解消されれば、残りの処理もすぐに終了し、その後のRRデータは正常になるとの想定に基づいている。
(方式2)異なる種別(正常/異常)のRRデータの出現時に、前の種別の最後のRRデータの終了タイミングで区間を区切る(図28参照)。
(方式3)正常のRRデータの開始時に正常区間として切り、正常のRRデータの終了時に区間を区切る(図29参照)。通常はこの方式3を使うとよい。正常のRRデータの終了時に区間を区切る理由は、異常はどの部分にあるか分からないが正常RRデータの終了は、そこまで正常であったことの証左となるからである。正常RRデータの開始時に区間を区切る理由は、正常RRデータの開始は、そこから正常であったことの証左となるからである。
(バリエーション)
できるだけ多数のコンポーネントを網羅するタイミングを探すとよい。多数のコンポーネントが出現するほど絞り込みの度合いが高いからである。また、できるだけ多数の機能(例えばURL種別)が集まるタイミングを探すとよい。パターンが多いほど絞り込みしやすいからである。
例えば、図30(A)に例示する或るタイミングAでは一部の機能(F2)のRRデータが出現しないが、図30(B)に例示する或るタイミングBでは全ての機能(F1,F2,F3)のRRデータが出現する。この場合、タイミングAよりもタイミングBのRRデータを判定に用いるとよい。
また、同じ機能(例えばURL)のRRデータが複数個出現するまで待つとよい。1つだけだと偶然かもしれないからである。例えば図31(A)に例示するタイミングAでは、各機能F1,F2,F3のRRデータがそれぞれ1つだけ出現するが、図31(B)に例示するタイミングBでは各機能F1,F2,F3それぞれのRRデータが複数出現する。この場合、タイミングAよりもタイミングBのRRデータを用いるとよい。
(競合の可能性のある場所を通知する分析装置)
図32(A)に模式的に例示するように、遅延RRデータと時間的に重なるRRデータを切り出して、切り出した範囲で問題個所の絞り込みを行なう。これは、統計値を使ったのでは瞬間的な競合の発生が検知できない、という考えに基づいている。
(具体的な競合を検知)
実際に問題個所として絞り込みができたものを通知する。図32(B)には、p5が具体的な競合個所である例を示している。
(暗黙の競合の検知)
共通の問題個所としては現れないが、問題発生時には高確率で同じように問題が発生する、という場所を暗黙の競合(競合していないはずだが裏で何かしら競合している)として通知する。これは、ある意味で短期分析と長期分析との組み合せに相当する。図32(C)には、p2及びp3が暗黙の競合個所である例を示している。
(競合可能性個所の通知)
具体的な競合及び/又は暗黙の競合を含めて、競合可能性のある個所として通知する。絞り込み度、同時発生確率等から確度をランク付けしてもよい。
(分析時の情報で補完し精度を向上)
分析フェーズの情報では絞り込みができない場合、このチェックポイントで問題なし(または悪化)が証明されれば特定できる、というポイントを抽出する。例えば図33において、p4及びp5のどちらが原因か特定したい場合、事前分析フェーズで使ったデータから、そのポイントを通るリクエストを投入する。ここで、ポイントから「候補リクエスト」を抽出する補完テーブル(インデックス)を用意しておくとより効率的である。
補完テーブルを作成するフローを図34に例示する。
例えば、パス分析部420(図1参照)は、パス情報データベース404におけるパス情報(例えば図35(A)参照)に含まれるポイント(p1,p2,p4,p5)を全て走査し(処理P311)、ポイントが存在するか否かをチェックする(処理P312)。
チェックの結果、ポイントが存在すれば(処理P312でYesの場合)、パス分析部420は、現在注目しているポイント(キーポイント)(x)を通る機能IDを全て抽出する(処理P313)。例えば、図33及び図35(A)において、キーポイントがp4であれば、機能F1及びF3が通るので、機能F1及びF3が抽出される。また、キーポイントがp1であれば、機能F1,F2,F2,F3及びF4が通るので、機能F1,F2,F2,F3及びF4が抽出される。
次いで、パス分析部420は、抽出した機能ID群が使うポイント(Y)を全て抽出する(処理P314)。例えば、抽出された機能がF1及びF3であれば、p1,p2,p3,p4,p5が抽出される。また、抽出された機能がF1,F2,F2,F3及びF4であれば、p1,p2,p4及びp5が抽出される。
そして、パス分析部420は、機能ID(a)毎にポイントの組合せ(x)−(Y)で自機能(a)を通らないポイント(排他ポイント)(z)があれば、(x)との組み合わせをテーブルに出力し(処理P315)、処理P311に戻る。
例えば、機能F1で(Y)=p1,p2,p4,p5を通らないものはなく、機能F3で(Y)=p1,p2,p4,p5を通らないものはp5である。この場合、パス分析部420は、p4,p5,F3のレコードをテーブルに出力する。当該レコードは、p4を通るがp5を通らないものは機能F3であることを意味する(図35(B)参照)。
また、機能F1で通らないポイントはない。機能F2で通らないポイントはp4及びp5である。したがって、パス分析部420は、(p1,p4,F2)及び(p1,p5,F2)のレコードをテーブルに出力する。さらに、機能F3で通らないポイントはp5であるから、パス分析部420は、p1,p5,(F2),F3のレコードをテーブルに出力する。また、F4で通らないポイントはp4であるから、パス分析部420は、p1,p4,(F2),F4のレコードをテーブルに出力する。
以上のようにして、図35(A)に例示するパス情報に対して、図35(B)に例示するような補完テーブル(排他ポイントテーブル)が作成される。なお、上述した処理P312において、ポイントが存在しなければ(処理P312のNoルート)、パス分析部420は、処理を終了する。
なお、問題なし(または悪化)の「候補リクエスト」を絞って抽出できるようにテーブル(インデックス)を用意しておくとより効率的である。データが足りない時にデータを補完するフローを図36に例示する。
パス分析部420は、分析を実施し(処理P321)、複数の候補が存在するか否かをチェックする(処理P322)。例えば、実運用フェーズにおいて、機能F1が異常、機能F2が正常というデータが存在し、機能F3及びF4についてのデータが存在しない場合、p4及びp5が遅延候補になる。
複数の候補が存在すれば(処理P322でYesの場合)、パス分析部420は、候補のポイントを分割する(処理P323)。例えば、候補がp4及びp5であれば、p4とp5とに分割する。
次いで、パス分析部420は、分割したポイントの組合せ全てで排他ポイントテーブル(例えば図35(B)参照)を検索する(処理P324)。例えば、検索キー=p4及び排他ポイントキー=p5で図35(B)に例示する排他ポイントテーブルを検索すると、機能F3が見つかる。また、検索キー=p5及び排他ポイントキー=p4で図35(B)に例示する排他ポイントテーブルを検索すると、機能F4が見つかる。
パス分析部420は、排他ポイントが存在するか否かをチェックし(処理P325)、排他ポイントが存在すれば(処理P325でYesの場合)、見つかった機能群を事前分析フェーズのデータから探して再投入して、再分析を行なう(処理P326)。例えば、処理P324及びP325で見つかった機能F3及びF4に対応するデータを再投入して分析する。
「候補リクエスト」を再投入することで、欠落していた目的のチェックポイントの情報を補完することができて、かつ、問題個所の絞り込み(特定)ができればよい。例えば、機能F3に対応するリクエストを再投入して問題なしなら悪化原因はp5であると判定(特定)できる。
なお、絞り込み(特定)ができなかった場合は他の「候補リクエスト」を使えばよい。例えば、機能F4に対応するリクエストを再投入して悪化した場合なら、悪化原因としてp4が疑わしいと判定できる。複数のリクエストを再投入することで信頼度を高めるようにしてもよい。
(出現確率を利用した精度の向上1)
問題個所特定の精度向上のために、出現確率(頻度)を使う方法が考えられる。
(事前分析フェーズ)
例えば図37に示すように、F1=p1−p2−p3及びp1−p2−p3−p4の2種類のパスを通る場合、F1のパラメータ等の外部情報ではどちらを通るか識別できない。
ここで、p1−p2−p3のパスをF1−1、p1−p2−p3−p4のパスをF1−2とする。F1のパラメータではF1−1及びF1−2のどちらを通るか分類できないが、事前分析フェーズではどちらのパスを通るか識別できるので、パス分析部420それぞれの頻度をカウントする。この結果、F1の場合の出現確率は、例示的に、F1−1が70%、F1−2が30%のように準備できる。
(実運用フェーズ)
実運用フェーズの情報だけでは、パラメータによりF1であることが分かっても、それがF1−1のパスかF1−2のパスか識別できない。ここで、F1が70%の確率でレスポンスがよく、30%の確率でレスポンスが悪い場合、問題個所特定部460によりF1−1とF1−2との差分となるp4の個所が悪化の原因個所であると推定することができる。
(出現確率を利用するフロー)
図4に例示した事前分析フェーズにおけるフローの処理P60において、パス分析部420は、例えば図38に示すような頻度情報(テーブル)を出現確率情報データベース405に登録しておく。
図39に例示するように、パス分析部420は、データと機能とを対応付ける(処理P331)。例えば、「データ1:F1=○」、「データ2:F1=○」、「データ3:F2=○」、「データ4:F3=×」、「データ5:F1=×」…のようにデータと機能とを対応付ける。
次いで、パス分析部420は、複数のパスをもつ機能のデータ群をまとめる(処理P332)。例えば図38に例示する頻度情報テーブルより、機能F1は複数のパス情報をもつことが分かるので、「データ1:F1=○」、「データ2:F1=○」、及び、「データ5:F1=×」の3つデータ群をまとめる。
さらに、パス分析部420は、1つの機能に複数のパスがあるデータについて、正常と異常の比率を求める(処理P333)。上述した例の場合、正常は66.7%、異常は33.3%となる。
そして、パス分析部420は、データの正常と異常の比率が頻度情報と同一とみなせるか否かをチェックする(処理P334)。上述した例の場合、正常は66.7%、異常は33.3%となるので、同一とみなせる。同一とみなせる場合(処理P334でYesの場合)、パス分析部420は、頻度情報と適合するパス情報を対応付ける(処理P335)。一方、同一とみなせない場合(処理P334でNoの場合)、パス分析部420は、頻度が多いパスを代表データとして扱う(処理P336)。
(出現確率を利用した精度の向上2)
図40に例示するように、機能F1のパスはF1(F1−1)=p1−p2−p4−p5とF1(F1−2)=p1−p3−p5の2種類が存在し、機能F2のパスはF2=p1−p3−p5、機能F3のパスはF3=p1−p2−p3であるとする。この場合、機能F1には、パラメータ等によって分類できない複数のパスが存在していることになる。
事前データ採取部410がユーザリクエストデータベース403に保存済みのリクエストデータを再現することで、パス分析部420が例えば図41に例示するように各機能をリクエストデータが通る頻度をカウントする(各Fi、pi毎に頻度をカウントする)。
実運用フェーズでは、機能選別部440が各チェックポイント(pi)の出現頻度をカウントする(図42参照)。ただし、どの機能Fiによるものかといった詳細な情報はログ採取量や紐付け処理等により処理量が増えるのでチェックしない。
ここで、図20において、F1及びF2が悪化し、F3は正常とする。この場合、p4及びp5に悪化原因の可能性が残る。実運用フェーズの機能F1の集計期間中の全リクエストのうち、例示的に、28%(=14/50)のリクエストが悪化しているものとする。この場合、図41に例示した頻度情報テーブルと照らして、F1−2(p1−p3−p5)のパスが悪化していることが推定されるので、p4(F1−1)は悪化していないことが分かる。その結果、p5が原因個所であると判断できる。
次に、図5の処理P150〜P190(図17の処理P227〜P230)に関連して、事前分析フェーズにおいて作成されたパス情報が運用フェーズにおける処理の実行内容と異なる(矛盾する)場合の問題について図43(A)及び(B)を参照して説明する。
運用フェーズにおいて、事前分析フェーズで用いられたコンポーネントとは異なるコンポーネントが用いられる場合がある。この場合、問題個所特定部460は問題個所を特定することが困難となる。
一例として、図43(A)及び(B)に示すように、事前分析フェーズにおいて、機能F1〜F4の全てがコンポーネントp1,p2,p3を経由した場合、パス情報ではF1〜F4のいずれについてもp1,p2,p3が対応付けられる。このとき、F1=異常、F2=正常、F3=異常、F4=正常となった場合を考える。
図43(A)は、運用フェーズにおいて、F2で、事前分析フェーズで使われた(経由した)p1,p2,p3のうちのp3が使用されず、且つこのp3が問題個所である場合を示す。このとき、パス情報ではF2のパスにもp3が含まれているためF2のp3によって問題個所である(F1の)p3が隠蔽されてしまう。このため、問題個所特定部460は、問題個所としてF1のp3を特定することが困難となる。
また、図43(B)は、運用フェーズにおいて、F3で、p1,p2,p3に加えて事前分析フェーズでは使われなかった(経由しなかった)p4が使用され、且つこのp4が問題個所である場合を示す。このとき、パス情報ではF3のパスにp4が含まれていないため、問題個所特定部460は、問題個所としてF3のp4を特定することが困難となる。
図43(A)及び(B)に示すような状況が生じるケースとしては、内部的な状態(時刻,DBから取得した値等)や外面からは識別できないパラメータ等により機能Fiでの処理内容が分岐するような場合が挙げられる。この場合において、事前分析フェーズで当該機能Fiの条件分岐を網羅できなかった場合に、機能Fiでは事前分析フェーズと運用フェーズとで異なるコンポーネントが用いられ得る。なお、図43(A)及び(B)のいずれのパターンでも、正常・異常の機能はそれぞれ1つの機能に限定されず、複数の機能の組み合わせで上記のパターンが構成されることもある。
以下、本実施形態においては、異常な機能Fi中に問題個所となるコンポーネントpj(jは自然数)を発見できない場合を、パス情報とシステム状態(ログ情報に記録された際の機能Fiのパス)との「矛盾状態」と捉えるものとする。矛盾状態は、異常な機能Fiのコンポーネントを正常な機能のコンポーネントが打ち消している状態であるといえる。
(矛盾状態を検出した場合の処理)
以下、問題個所特定部460による図5の処理P160で問題個所が特定されず、矛盾状態が検出された場合の処理について説明する。
基本的な処理の一例としては、問題個所特定部460は、問題個所の特定(図5の処理P150及びP160)において矛盾状態を検出すると、パス情報の修正を行なう(図44〜図47参照)。そして、問題個所特定部460は、問題個所の特定処理を再実施することで、矛盾状態からの問題個所の特定を可能にする。
なお、図44〜図47の上段は、機能とコンポーネントとの対応関係を示すパス情報と、所定期間に実行された各機能のログ情報から得られた各機能のあるタイミング(スライス)での正常又は異常のステートとを組み合わせた表である。この表には、遅延機能が利用するコンポーネント毎に、当該コンポーネントを使用する正常機能の数が設定されている。図44〜図47の下段は問題個所特定部460による補正後のパス情報を示すものである。
パス情報の修正の手法としては、以下の方式が挙げられる。
(方式I)正常機能及び異常機能が混在する複数の機能から、所定の条件に基づき少なくとも1つの機能を削除する。
この方式では、図44及び図45に例示するように、パス情報及び各機能の正常・異常のステートに応じて、正常機能及び異常機能の少なくとも1つを削除する。
(方式I−1)図44の例では、上段に示すように、異常機能F1が使うコンポーネント(p1,p2,p3,p4)、つまり異常候補のコンポーネントを正常機能F2〜F4の組み合わせが全て打ち消している。このような場合、問題個所特定部460は、パス情報において、異常機能F1が使うコンポーネントを打ち消すコンポーネントを持つ正常機能F2〜F4から、信頼度が最も低いコンポーネント(この場合p4)を使う全ての正常機能(この場合F2)を削除する。
ここで、信頼度は、異常候補のモジュールを正常機能が経由する可能性を示す評価値の一例であり、図44(及び図45〜図47)の例では、信頼度として異常機能と重なる正常機能のコンポーネントの数を用いている。
削除後のパス情報は、図44の下段に示すように、正常機能F2が削除されたものとなるため、問題個所特定部460は、問題個所としてp4を特定できる。
なお、図44の上段の例は、特定された結果から、事前分析フェーズでは機能F2がp4を使ったが運用フェーズでは使わなかったパターン(図43(A)のパターン)であると推測される。
(方式I−2)図45の例では、上段に示すように、異常機能F5については問題個所をp6と特定できる。一方、異常機能F1についてはF1が使うコンポーネント(p1,p2,p3,p4)を正常機能F2〜F6の組み合わせが全て打ち消している。このような場合、問題個所特定部460は、パス情報において、問題個所を特定できない異常機能F1を削除する。これにより、結果(既に問題個所として特定されている異常機能F5のp6)に影響を与えずに矛盾状態を解消できる。
削除後のパス情報は、図45の下段に示すように、異常機能F1が削除されたものとなるため、問題個所特定部460は、異常機能F5の問題個所としてp6を特定できる。
なお、図45の上段の例は、特定された結果から、事前分析フェーズでは機能F1がp6を使わなかったが運用フェーズでは使ったパターン(図43(B)のパターン)であると推測される。
ここまで、図44及び図45について、それぞれ上述した(方式I−1)及び(方式I−2)の手法により問題個所が特定される例を示したが、問題個所特定部460は、矛盾状態を検出した場合、(方式I−1)及び(方式I−2)のいずれの手法によっても問題個所を特定することができる。
例えば、図45の上段において、異常機能F1が使うコンポーネント(p1,p2,p3,p4)を打ち消すコンポーネントを持つ正常機能F2〜F6のうち、信頼度が最も低いコンポーネント(この場合p3又はp4)を使う全ての正常機能を削除してもよい。
一例として、問題個所特定部460は、p3を使う全ての正常機能(この場合F3及びF4)を削除し、異常機能F1についてはp3を問題個所として特定してもよい。この特定された結果から、事前分析フェーズでは機能F3及びF4がp3を使ったが運用フェーズでは使わなかったパターン(図43(A)のパターン)であると推測される。
あるいは、問題個所特定部460は、p4を使う全ての正常機能(この場合F2及びF6)を削除し、異常機能F1についてはp4を問題個所として特定してもよい。この場合、事前分析フェーズでは機能F2及びF6がp4を使ったが運用フェーズでは使わなかったパターン(図43(A)のパターン)であると推測される。
問題個所特定部460は、矛盾状態を検出した場合、方式(I)の(I−1),(I−2),若しくは以下の方式(II)の(II−1),(II−2)のいずれを用いるかを、後述する手法により決定することができる。又は、問題個所特定部460は、これらの2以上の方式を用いて特定された結果から最適な結果(例えば絞り込んだコンポーネントの数)を選択してもよい。
なお、(方式I)では、複数の機能から少なくとも1つの機能を削除するものとして説明したが、機能全体(パス情報のレコード)を削除するのではなく、機能が使用する全てのコンポーネント(パス情報のレコード内の全コンポーネント)を削除してもよい。
(方式II)正常機能及び異常機能が混在する複数の機能から、所定の条件に基づき少なくとも1つのコンポーネントを変更する。
この方式では、図46及び図47に例示するように、パス情報及び各機能の正常・異常のステートに応じて、正常機能又は異常機能に対して、一部のコンポーネントの削除又は少なくとも1つのコンポーネントの追加を行なう。なお、図46及び図47の上段では、それぞれ図44及び図45の上段と同様の状況を想定している。
(方式II−1)図46の上段に示すように、問題個所特定部460は、パス情報において、異常機能F1が使うコンポーネントを打ち消すコンポーネントを持つ正常機能F2〜F4から、信頼度が最も低いコンポーネント(この場合p4)を削除する。
削除後のパス情報は、図46の下段に示すように、正常機能F2からp4が削除されたものとなるため、問題個所特定部460は、問題個所としてp4を特定できる。これにより、パス情報の修正を最小限に留め、正常機能F2も問題個所の絞り込みに利用することができるため、分析精度を向上させることができる。
なお、このタイミング(スライス)ではリクエストの発生していない他の機能(例えばF5)がパス情報に存在し、当該機能F5がp4を使う場合、F5については矛盾状態とは無関係であるため、p4を削除しなくてよい。
(方式II−2)図47の上段に示すように、異常機能F1についてはF1が使うコンポーネント(p1,p2,p3,p4)を正常機能F2〜F6の組み合わせが全て打ち消している。このような場合、問題個所を特定できない異常機能F1に、コンポーネントp6を追加する。これにより、結果(既に問題個所として特定されている異常機能F5のp6)に影響を与えずに矛盾状態を解消できる。
削除後のパス情報は、図47の下段に示すように、F1のパスがp1−p2−p3−p4−p6となるため、問題個所特定部460は、異常機能F1及びF5に共通する問題個所としてp6を特定できる。
図46及び図47についても、問題個所特定部460は、矛盾状態を検出した場合、(方式II−1)及び(方式II−2)のいずれの手法によっても問題個所を特定することができる。
例えば、図47の上段において、異常機能F1が使うコンポーネント(p1,p2,p3,p4)を打ち消すコンポーネントを持つ正常機能F2〜F6から、信頼度が最も低いコンポーネント(この場合p3又はp4)を削除してもよい。
一例として、問題個所特定部460は、p3を使う全ての正常機能(この場合F3及びF4)からp3を削除し、異常機能F1についてはp3を問題個所として特定してもよい。この特定された結果から、事前分析フェーズでは機能F3及びF4がp3を使ったが運用フェーズでは使わなかったパターン(図43(A)のパターン)であると推測される。
あるいは、問題個所特定部460は、p4を使う全ての正常機能(この場合F2及びF6)からp4を削除し、異常機能F1についてはp4を問題個所として特定してもよい。この場合、事前分析フェーズでは機能F2及びF6がp4を使ったが運用フェーズでは使わなかったパターン(図43(A)のパターン)であると推測される。
図47の例のように、コンポーネントの追加でも削除でも矛盾状態を解消できる場合、問題個所特定部460は、所定の基準に基づき追加及び削除のいずれかを選択してよい。このとき、問題個所特定部460は、例えば信頼度が低いコンポーネントの削除を優先としてよく、信頼度が(十分)低いコンポーネントの削除で矛盾状態を解消できる場合は、当該コンポーネントを削除してよい。
なお、削除候補のコンポーネントの信頼度が他のコンポーネントの信頼度よりも十分低いとはいえない場合、問題個所特定部460は、コンポーネントの追加を優先してもよい。「信頼度が十分低い」とは、例えば削除対象のコンポーネントについて、正常機能のコンポーネント数が1以下であり且つ他のコンポーネントの信頼度の1/2以下、である場合が挙げられる。図47の例では、p3,p4の信頼度(この場合正常機能のコンポーネント数=2)が1以下ではなく、他のコンポーネントの信頼度(p1,p2=3)の1/2である1.5よりも大きいため、p3,p4の信頼度は十分低いとはいえない。この場合、問題個所特定部460は、p6の追加を優先してもよい。
なお、上述の手法によりパス情報の修正を行ない問題個所を特定した後の運用では、問題個所特定部460は、修正後のパス情報及び修正していないパス情報の少なくとも一方を用いて分析を行ない、分析結果を出力してよい。例えば、問題個所特定部460は、図44の例でパス情報を修正した後の運用において、図5の処理P150では、修正後のパス情報(F1,F3,F4)及び修正していないパス情報(F1〜F4)の少なくとも一方を用いてよい。また、問題個所特定部460は、図46の例でパス情報を修正した後の運用において、図5の処理P150では、修正後のパス情報(F1,F2(p4は削除),F3,F4)及び修正していないパス情報(F1〜F4)の少なくとも一方を用いてよい。
次に、図48〜図55を参照して運用フェーズにおいて矛盾状態を検出した場合の処理例について説明する。
なお、以下の説明では、事前分析ブロック401により以下の情報が生成されているものとする。
・パス情報(基準情報)例
F1, p1:p2:p3:p4, http://foo.com/?tab=
F2, p1:p2:p4:p5, http://foo.com/?col=5
F3, p1:p2:p3:p5, http://foo.com/?col=4
F4, p1:p2:p3, http://foo.com/?ui
・コンポーネント定義情報例
com/foo/pkg/servlet,p1,Servlet
com/foo/pkg/kernel,p2,Kernel
com/foo/pkg/log,p3,Log
org/hibernate/Session,p4,Hibernate
・・・
・パラメータ表例
use,col
delvalue,tab
delvalue,ui
・・・
・遅延判定閾値例
F1=1200ms
F2=1800ms
default=1500ms
なお、パラメータ表は機能選別においてアクセスログのURLに含まれるパラメータの扱いを示す情報である。図49に例示するアクセスログが採取された場合、例えば、“use,col”はURL中の“col=5”のパラメータをそのまま用いることを示し、“delvalue,tab”はURL中の“tab=stop”のパラメータの値を削除し“tab=”のみを用いることを示す。運用ブロック402は、このパラメータ表により図49に示すログの各レコードをパス情報の機能と対応付けることができる。
図49に示す例において、rec1〜rec4の入力時点で処理時間は遅延判定閾値と比較し全て正常値であるが、rec5(F1)の処理時間はF1の閾値1200msよりも大きい2123msであるため、運用ブロック402は遅延(状態変化)を検知する。
図49に示すアクセスログの情報をパス情報に照らすと、図50に示す状態であることがわかる。図50は図44の上段と同様の状態を示しており、問題個所特定部460は、図50の状態では問題個所を特定することができない、つまり矛盾状態を検出する。
上述のように、図5の処理P160において問題個所の特定ができなかった場合(処理P160のNoルート)、問題個所特定部460はパス情報の修正及び問題個所特定の再実施を行なう(処理P180)。このとき、問題個所特定部460は、処理P180として以下の処理を行なうことにより、問題個所(原因コンポーネント)の特定を可能とする。
まず、図48に示すように、問題個所特定部460は、上述した(方式I)及び(方式II)のいずれかからパス情報の修正方法を選択する(処理S181)。選択の手法は、例えばパス情報に含まれる機能数とコンポーネント数とを比較し、機能数の方が多ければ(方式I)を、コンポーネント数の方が多ければ(方式II)を選択するようにしてよい。図50の例では機能(F1〜F4)数=4、コンポーネント(p1〜p5)数=5であるため、問題個所特定部460は(方式II)を選択することとする。
他の例として、例えばコンポーネント数が特定の値(例えば10)よりも多ければ(方式II)を選択し、コンポーネント数が特定の値以下であれば(方式I)を選択するようにしてもよい。
あるいは、例えば機能数が特定の値(例えば20)よりも多ければ(方式I)を選択し、機能数が特定の値以下であり、コンポーネント数が特定の値(例えば30)又は機能数×特定の値(例えば1.5)よりも多ければ(方式II)を選択するようにしてもよい。このとき、いずれの条件も満たさなければ(方式I)を選択するようにしてもよい。
このような条件は、分析装置の管理者により任意に設定可能としてよい。また、パス情報の修正方法は上記のような条件による選択ではなく、いずれかを固定的に用いるようにしてもよい。
さらに、問題個所特定部460は、いずれかの修正方法を用いてパス情報の修正及び問題個所の分析を行なった後、分析結果に応じて他方の修正方法で再分析を行ない、分析結果の良い方(例えば絞り込んだコンポーネント数が少ない方)を採用するようにしてもよい。例えば、問題個所特定部460は、いずれかの修正方法を選択した際に、分析結果として多数のコンポーネントが問題個所として特定されることが続く場合等、問題個所の特定が不十分な(十分な絞り込みができない)場合に、他方の修正方法で再分析を行なうことができる。
なお、修正処理の一度の実行により矛盾状態は解消できるため、問題個所特定部460は、矛盾状態を検出した際に、同じ修正方法を繰り返し何度も実行しなくてよい。
次に、問題個所特定部460は、選択した修正方法(例えば図50の例では機能数:4<コンポーネント数:5であるため(方式II))を用いてパス情報の修正を行なう(処理P182)。例えば、問題個所特定部460は、図46の下段に示すように、機能F2のコンポーネントp4を削除する。
そして、問題個所特定部460は、修正後のパス情報を用いて分析を行ない、問題個所を特定する(処理P183)。図50の例では、問題個所特定部460は、図46の下段に示すように問題個所としてコンポーネントp4を特定する。
また、問題個所特定部460は、原因コンポーネントの特定後、修正を行なったパス情報の管理を行なうことができる(図5の処理P190参照)。
例えば、問題個所特定部460は、図51に示すように、修正したパス情報をRAM等のメモリやハードディスク装置等の記憶装置に蓄積する(処理P191)。このとき、問題個所特定部460は、同じパターンで修正したパス情報毎に修正頻度(例えば修正回数)を記録してよい。図52の例では、F2からp4を削除したパターンの修正回数は20回、F3及びF4からp3を削除したパターンの修正回数は2回、F2からp5を削除したパターンの修正回数は1回である。
次いで、問題個所特定部460は、蓄積する修正後のパス情報が置き換え条件を満たすか否かを判断し(処理P192)、置き換え条件を満たす場合(処理P192のYesルート)、パス情報を置き換え(処理P193)、処理が図5の処理P170に移行する。一方、置き換え条件を満たさない場合(処理P192のNoルート)、パス情報の置き換えを行なわず、処理が図5の処理P170に移行する。
パス情報の置き換え条件としては、例えば、修正回数の最も多いパターンの修正回数が、所定回数(例えば15回)以上、且つ次に修正回数の多いパターンの修正回数の所定倍(例えば10倍)以上である場合が挙げられる。図52の例では、修正回数20回のパターンが、15回以上且つ次に多い2回のパターンの10倍以上であるため、置き換え条件を満たすと判断される。そして、問題個所特定部460は、修正回数20回のパターンにより、パス情報データベース404に記憶されたパス情報の対応する個所(少なくとも機能F2のコンポーネント)を置き換える。
なお、パス情報の置き換え条件は、上述したものに限定されるものではなく、種々の手法を用いることができる。
また、問題個所特定部460は、問題個所を特定(又は絞り込んだ)場合、図5の処理P170において、図9に例示する態様で問題個所を出力する。図50の例では、問題個所特定部460は、図53に例示するように、特定したコンポーネントp4を詳細表示画面510に出力することができる。
なお、パス情報の修正があった場合でも、問題個所特定部460は、修正があったことを必ずしも通知する必要はなく、詳細表示画面510に修正の有無を示さなくてもよい。
問題個所の他の出力例を図54に示す。図54の左側に示す表について、問題個所特定部460は、異常機能F5についてはp6を問題個所として特定するものの、異常機能F1については問題個所を特定できない。この場合において、(方式II−1)によるパス情報の修正が行なわれ、正常機能F2のp4が削除された場合、異常機能F1についてp4が問題個所と特定される。なお、このとき、異常機能F5にもp4が含まれているため、F5の問題個所はp4が追加されてp4,p6となる。
このような場合、問題個所特定部460は、図54の右側の詳細表示画面510に示すように、パス情報の修正の有無による問題個所の特定(絞り込み)結果を併記してもよい。なお、図54の例では、特定した原因コンポーネントを利用する機能(異常機能)についても詳細表示画面510に出力してよい。
(パス情報の修正に用いる信頼度の他の例1)
上述した(方式I)又は(方式II)では、遅延機能と重なる正常機能のコンポーネントの数(遅延機能が利用するコンポーネント毎の、当該コンポーネントを使用する正常機能の数)を信頼度として用いて、パス情報を修正する例を説明した。信頼度としては、上述したものに限定されるものではなく、例えば以下の情報としてもよい。
図55の上段右側は、事前分析フェーズにおいて使用されたコンポーネントの頻度(回数,例えば総数)を機能毎に示す情報である。問題個所特定部460は、パス情報と各機能の正常・異常のステートとを表す表(図55の上段左側)に対して、頻度(回数)情報に基づき重み付けを行なう。これにより、図55の下段に示すように、異常機能が使用するコンポーネント毎に正常機能が使用する頻度を加算した信頼度を得ることができる。一例として、p1は95(F2)+18(F3)+19(F4)=132の信頼度となる。
事前分析ブロック401は、事前分析フェーズにおいて、機能が呼び出される都度、使用するコンポーネントの頻度(回数)を機能毎・コンポーネント毎にカウントし、頻度情報として保存してよい。
図46の例(方式II)に基づくパス情報の修正では、コンポーネントの数を信頼度として用い、F2のp4を削除する結果となった。これに対し、図55の例では、事前分析フェーズにおける頻度情報を重みとして考慮した場合、F3及びF4のp3の信頼度が3であり最も低い(有意に低い)結果となる。なお、「有意に低い」とは、次に低い信頼度(又は全体の信頼度の平均等)よりも所定値(例えば15)又は所定割合(例えば1/10)以上低い、つまり誤差とはいえない程度に低いこととしてよい。
この場合、問題個所特定部460は、正常機能F3及びF4からそれぞれp3を除去したF3=p1−p2−p5,F4=p1−p2を修正後のパス情報とし、異常機能F1についてはp4ではなくp3を問題個所として特定することができる。この特定された結果から、事前分析フェーズでは機能F3及びF4がp3を使ったが運用フェーズでは使わなかったパターン(図43(A)のパターン)であると推測される。
以上のように、異常機能が使用するコンポーネントを、正常機能がどの程度の頻度で使用するのかという頻度情報を用いて信頼度に重み付けを行なうことにより、より信頼性の高い分析を行なうことができ、分析の精度を向上させることができる。
なお、図55の例において、仮にp4の信頼度についても85ではなく5といった有意に低い値の場合、問題個所特定部460は、問題個所をp3及びp4と特定し、これらの信頼度の低さに応じて問題個所を順位付けて通知してもよい。
また、図55の例は、(方式II)ではなく(方式I)についても適用することが可能である。図55の例を(方式I)に適用する場合、問題個所特定部460は、信頼度に基づき、p3を使用する機能F3及びF4を削除すればよい。
(パス情報の修正に用いる信頼度の他の例2)
図55の例では、事前分析フェーズにおける機能Fiの呼び出し毎のコンポーネントの使用有無を頻度情報として用いたが、図56に例示するように、機能Fiを1回呼び出す際にコンポーネントを何回使うかを頻度情報として用いてもよい。
システムによっては、機能が1回呼び出される際に、同じコンポーネントが複数回使用される場合がある。事前分析ブロック401は、この頻度(回数)を機能毎・コンポーネント毎にカウントし、頻度情報として保存してよい。
なお、図56に示す頻度情報に基づく信頼度の算出及びパス情報の修正の手法は、図55を用いて説明した手法と同様であるため、説明を省略する。
図56の例によっても、図55の例と同様に、より信頼性の高い分析を行なうことができ、分析の精度を向上させることができる。
(パス情報の修正処理の他の例1)
問題個所特定部460は、削除候補(修正候補)となるコンポーネントの信頼度に有意な差がない場合、削除候補の全てのコンポーネントを削除してもよい。
例えば図57に示すように、F2のp4,F3のp6,F4のp7のいずれもp1〜p3と比較すれば有意に低いといえるが、p4,p6,p7間では有意な差があるとはいえない。この場合、問題個所特定部460は、p4,p6,p7を全て削除してよい。
なお、問題個所として絞り込んだ複数のコンポーネントの信頼度に有意な差がない場合には、問題個所特定部460は、図58に例示するように、信頼度が低い順、つまり遅延原因である尤度が高い順に出力してもよい。
信頼度が低いコンポーネントは、本来使用されていない可能性が高く、遅延原因である可能性が高いため、図58の例のように原因コンポーネントを信頼度に応じて順位付けをして出力することで、妥当性の高い分析結果を出力することができる。
また、削除候補のコンポーネントの信頼度に有意な差がない場合であっても、削除するコンポーネントの上限を予め指定しておくことで、削除対象を制限することもできる。図57の例の場合、削除候補はF2のp4,F3のp6,F4のp7であるが、削除上限を2と設定していた場合、問題個所特定部460は、信頼度が低い順にF3のp6,F2のp4を削除すればよい。
なお、削除するコンポーネントの上限を指定しておく以外にも、有意な差があるか否かを判断する基準や削除数を判断する基準等、削除の条件を設定しておくことで、削除対象の制限を行なうことが可能である。
また、ここまで(方式II)による例を説明したが、(方式I)についても同様に、削除候補のコンポーネントの信頼度に有意な差がない場合でも、削除候補の全ての機能を削除してもよく、あるいは削除対象の機能の制限を行なってもよい。
(パス情報の修正処理の他の例2)
問題個所特定部460は、修正前後のパス情報の修正比率が指定値を超えた場合、矛盾状態を検出してもパス情報の修正処理を抑止してよい。
ここで、修正比率は、例えば以下のようにして算出することができる。
・全体での算出
修正数/延べコンポーネント数
・各機能Fiでの算出
Fiでの修正数/Fiのコンポーネント数
問題個所特定部460は、例えば、全体での算出を行ない、算出結果の割合(修正比率)が指定値(例えば10%)を超える場合、全体のパス情報の修正処理を行なわなくてよい。図57の例では、修正数=3(F2のp4,F3のp6,F4のp7),延べコンポーネント数=19であり、修正比率は15.8%となる。この場合、修正比率が指定値を超えるため、問題個所特定部460は全体(F2のp4,F3のp6,F4のp7)の修正処理(削除)を抑止する。
また、問題個所特定部460は、例えば、各機能Fiでの算出を行ない、算出結果の割合が指定値(例えば20%)を超える場合、当該機能についてのパス情報の修正処理を行なわなくてよい。図57の例では、F2について、修正数=1(p4),コンポーネント数=4であり、修正比率は25%となる。また、F3について、修正数=1(p6),コンポーネント数=5であり、修正比率は20%となる。さらに、F4について、修正数=1(p7),コンポーネント数=4であり、修正比率は25%となる。この場合、F3については修正比率が指定値を超えず、F2及びF4の修正比率が指定値を超えるため、問題個所特定部460は、F3についてp6を削除する一方、F2及びF4の修正処理(削除)を抑止する。
上記いずれの例についても、修正比率が指定値を超えるほど大きい場合、パス情報の修正が基準情報としてのパス情報に与える影響も大きくなる。また、全ての修正対象のコンポーネントが実際に問題個所である可能性は、修正対象のコンポーネントの数(絞り込めないコンポーネントの数)が多いほど低くなる。
そこで、修正比率が指定値を超える場合に修正処理を抑止し、不正確な(ミスリードとなり得る)分析結果が出力される可能性を低減させることで、分析結果の精度を向上させることができる。
なお、上記いずれの例についても、説明に用いた(方式II)ではなく(方式I)に適用することも可能である。
(パス情報の修正処理の他の例3)
上記の例において修正比率が指定値を超えた場合でも、このときの修正対象のコンポーネント(修正パターン)が妥当であるか否か、つまり全て問題個所であるといえるか否かを、修正後のパス情報の蓄積及び修正頻度(修正回数)の記録により明らかにしてもよい。
すなわち、問題個所特定部460は、修正比率が指定値を超えた場合でも、パス情報の修正処理自体は実行し、修正後のパス情報をメモリや記憶装置等に蓄積してもよい。修正比率が指定値を超えた場合の修正パターンが妥当である場合には、運用ブロック402の運用が進むにつれて当該修正パターンの修正回数が増加し、パス情報と置き換えられるからである。
なお、この場合、問題個所特定部460は、修正後のパス情報による問題個所の特定及び特定結果の出力は抑止し、修正前のパス情報による絞り込み結果のみを出力することとしてよい。
(パス情報の修正処理の他の例4)
上述した(方式I)又は(方式II)によるパス情報の修正に代えて、以下の(方式III)を用いることもできる。
(方式III)問題個所を特定できず矛盾状態を検出したタイミングを含む所定の時間区間に発生したユーザリクエストを、検証環境に再投入することでパス情報を再生成(修正)する。
例えば、運用ブロック402は、運用フェーズにおいても常にリクエストパケットをキャプチャしておく。また、事前分析ブロック401は、運用ブロック402が矛盾状態を検知したタイミング周辺のキャプチャデータを用いて、検証環境(事前分析フェーズ)においてアクセスを再現して詳細ログを取得し、パス情報を再生成する。
なお、問題個所特定部460は、再生成したパス情報によってパス情報データベース404のパス情報を更新してもよいし、上述したようにメモリや記憶装置等に蓄積してもよい。
これにより、矛盾状態を発生させた機能が実際に使用したコンポーネントについてのパス情報が再生成されるため、問題個所特定部460は、再生成されたパス情報を用いて問題個所を確実に且つ容易に特定することができる。
このように、矛盾状態を検知したときのアクセスを再現してパス情報を再生成することによっても、問題個所を特定することができ、分析結果の精度を向上させることができる。
なお、ここまで説明した各例は、(方式I)〜(方式III)に対して任意に組み合わせてよい。
以上のように、一実施形態に係る問題個所特定部460は、問題個所特定処理において問題個所が特定されない場合でも、所定期間に実行した各処理に係るパス情報を、所定の条件に基づき修正する。そして、問題個所特定部460は、正常又は異常のステートの判定結果と修正したパス情報とを用いて異常コンポーネントを特定する。これにより、複数の処理の各々が経由するコンポーネントの情報が正しくない場合でも異常コンポーネントを特定することができ、障害・トラブル発生時の問題解決の迅速化を図ることができる。
10 ネットワーク
20 サーバ
30 Webサーバ
40 AP(アプリケーション)サーバ
50 ネットワークスイッチ(NS)
401 事前分析ブロック
402 運用ブロック
403 ユーザリクエストデータベース
404 パス情報データベース
405 出現確率情報データベース
410 事前データ採取部
420 パス分析部
430 運用データ採取部
440 機能選別部
450 データスライス分割部
460 問題個所特定部
500,520 通知画面
501,511〜515,521,522 詳細表示ボタン
510 詳細表示画面
F1,F2,F3,F4,F5,F6 機能
p1,p2,p3,p4,p5,p6,p7 コンポーネント

Claims (10)

  1. コンピュータに、
    共用するモジュールが存在する複数の処理それぞれについて、各処理が経由するモジュールの情報を記憶し、
    所定期間に実行した複数の処理に関するログ情報に基づき、前記所定期間に実行した各処理の正常又は異常のステートを判定し、
    前記正常又は異常のステートの判定結果と前記所定期間に実行した各処理に係る前記モジュールの情報とを用いて異常モジュールの特定を行なう処理において、異常モジュールが特定されない場合、前記所定期間に実行した各処理に係る前記モジュールの情報を、所定の条件に基づき修正し、
    前記正常又は異常のステートの判定結果と前記修正したモジュールの情報とを用いて異常モジュールを特定する、
    処理を実行させることを特徴とする、分析プログラム。
  2. 前記修正は、前記所定期間に実行した各処理に係る前記モジュールの情報から、少なくとも一つの処理に関する情報を削除することを含む、
    ことを特徴とする、請求項1記載の分析プログラム。
  3. 前記修正は、前記所定期間に実行した各処理に係る前記モジュールの情報から、少なくとも一つの処理について、当該処理が経由するモジュールのうちの一部のモジュールの情報を削除することを含む、
    ことを特徴とする、請求項1記載の分析プログラム。
  4. 前記修正は、前記所定期間に実行した各処理に係る前記モジュールの情報から、少なくとも一つの処理について、当該処理が経由するモジュールの情報に少なくとも一つのモジュールを追加することを含む、
    ことを特徴とする、請求項1記載の分析プログラム。
  5. 前記コンピュータに、
    前記所定期間に実行した各処理に係る前記モジュールの情報に基づいて、前記判定で異常のステートと判定された処理が経由する異常候補のモジュールごとに、当該異常候補のモジュールを前記判定で正常のステートと判定された処理が経由する可能性を示す評価値を算出し、
    前記所定期間に実行した各処理に係る前記モジュールの情報から、前記評価値に基づき前記修正における修正対象の処理又はモジュールを決定する、
    処理を実行させることを特徴とする、請求項1〜4のいずれか1項記載の分析プログラム。
  6. 前記評価値は、前記判定で正常のステートと判定された処理が前記異常候補のモジュールの各々を経由する頻度の情報に基づき重み付けされる、
    ことを特徴とする、請求項5記載の分析プログラム。
  7. 前記コンピュータに、
    前記所定期間に実行した複数の処理に係るユーザリクエストを保存し、
    前記異常モジュールの特定を行なう処理において、異常モジュールが特定されない場合、前記保存したユーザリクエストを再実行する、
    処理を実行させ、
    前記修正は、前記再実行の結果から前記所定期間に実行した各処理が経由するモジュールの情報を再生成することを含む、
    ことを特徴とする、請求項1記載の分析プログラム。
  8. 前記コンピュータに、
    前記修正したモジュールの情報が置き換え条件を満たす場合、前記記憶するモジュールの情報を、前記修正したモジュールに置き換える、
    処理を実行させることを特徴とする、請求項1〜7のいずれか1項記載の分析プログラム。
  9. 共用するモジュールが存在する複数の処理それぞれについて、各処理が経由するモジュールの情報を記憶する手段と、
    所定期間に実行した複数の処理に関するログ情報に基づき、前記所定期間に実行した各処理の正常又は異常のステートを判定する手段と、
    前記正常又は異常のステートの判定結果と前記所定期間に実行した各処理に係る前記モジュールの情報とを用いて異常モジュールの特定を行なう手段と、
    前記異常モジュールの特定を行なう手段により異常モジュールが特定されない場合、前記所定期間に実行した各処理に係る前記モジュールの情報を、所定の条件に基づき修正する手段と、
    前記正常又は異常のステートの判定結果と前記修正したモジュールの情報とを用いて異常モジュールを特定する手段と、
    を備えることを特徴とする、分析装置。
  10. 共用するモジュールが存在する複数の処理それぞれについて、各処理が経由するモジュールの情報を記憶し、
    所定期間に実行した複数の処理に関するログ情報に基づき、前記所定期間に実行した各処理の正常又は異常のステートを判定し、
    前記正常又は異常のステートの判定結果と前記所定期間に実行した各処理に係る前記モジュールの情報とを用いて異常モジュールの特定を行なう処理において、異常モジュールが特定されない場合、前記所定期間に実行した各処理に係る前記モジュールの情報を、所定の条件に基づき修正し、
    前記正常又は異常のステートの判定結果と前記修正したモジュールの情報とを用いて異常モジュールを特定する、
    ことを特徴とする、分析方法。
JP2014215689A 2014-10-22 2014-10-22 分析プログラム、分析装置、及び分析方法 Withdrawn JP2016081483A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014215689A JP2016081483A (ja) 2014-10-22 2014-10-22 分析プログラム、分析装置、及び分析方法
US14/832,111 US20160117224A1 (en) 2014-10-22 2015-08-21 Computer-readable recording medium having stored therein analysis program, analysis apparatus, and analysis method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014215689A JP2016081483A (ja) 2014-10-22 2014-10-22 分析プログラム、分析装置、及び分析方法

Publications (1)

Publication Number Publication Date
JP2016081483A true JP2016081483A (ja) 2016-05-16

Family

ID=55792088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014215689A Withdrawn JP2016081483A (ja) 2014-10-22 2014-10-22 分析プログラム、分析装置、及び分析方法

Country Status (2)

Country Link
US (1) US20160117224A1 (ja)
JP (1) JP2016081483A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020009113A (ja) * 2018-07-06 2020-01-16 富士通株式会社 管理装置、情報処理装置、及びプログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230032678A1 (en) * 2021-07-29 2023-02-02 Micro Focus Llc Abnormality detection in log entry collection

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6125376A (en) * 1997-04-10 2000-09-26 At&T Corp Method and apparatus for voice interaction over a network using parameterized interaction definitions
KR100237184B1 (ko) * 1997-05-02 2000-01-15 서정욱 코드분할다중접속이동통신교환기의트렁크상태관리방법
ATE289140T1 (de) * 2000-05-05 2005-02-15 Nomadix Inc Gerät und verfahren zur überwachung der netzwerkauslastung
JP4766240B2 (ja) * 2005-11-08 2011-09-07 日本電気株式会社 ファイル管理方法、装置、およびプログラム
US7577550B2 (en) * 2007-04-30 2009-08-18 Hewlett-Packard Development Company, L.P. System and method for detecting performance anomalies in a computing system
JP5381519B2 (ja) * 2009-09-01 2014-01-08 富士通株式会社 ディスクへの書き込み位置の誤算出を検出するストレージ制御装置、ストレージシステム、及びアクセス方法。
KR20130040575A (ko) * 2011-10-14 2013-04-24 삼성에스디아이 주식회사 배터리의 고장 검출 장치 및 방법
JP5958348B2 (ja) * 2013-01-07 2016-07-27 富士通株式会社 分析方法、分析装置、及び分析プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020009113A (ja) * 2018-07-06 2020-01-16 富士通株式会社 管理装置、情報処理装置、及びプログラム
JP7142503B2 (ja) 2018-07-06 2022-09-27 富士通株式会社 管理装置、情報処理装置、及びプログラム

Also Published As

Publication number Publication date
US20160117224A1 (en) 2016-04-28

Similar Documents

Publication Publication Date Title
JP5958348B2 (ja) 分析方法、分析装置、及び分析プログラム
CN108011752B (zh) 故障定位分析方法及装置、计算机可读存储介质
US10621212B2 (en) Language tag management on international data storage
Jin et al. A cost-efficient approach to building in continuous integration
US20100262866A1 (en) Cross-concern code coverage assessment
EP3428828A1 (en) System and method for locating and correcting vulnerabilites in a target computer system
CN110795614A (zh) 一种索引自动优化方法及装置
CN111258876B (zh) 一种微服务架构下的精确回归测试方法及装置
JP2016081483A (ja) 分析プログラム、分析装置、及び分析方法
CN111723091A (zh) 基于Oracle数据库的索引处理方法、系统、设备和存储介质
CN112989763B (zh) 数据获取方法、装置、计算机设备及存储介质
US20190361684A1 (en) Systems and methods for providing an application transformation tool
CN116431520A (zh) 测试场景确定方法、装置、电子设备和存储介质
Singh et al. A combined approach to optimize the test suite size in regression testing
JP6336919B2 (ja) ソースコードレビュー方法及びそのシステム
CN110968779A (zh) 网页信息爬取的处理方法和装置
CN115658492A (zh) 内核配置项异常值的检测方法及装置
CN115469844A (zh) 代码处理方法、系统、计算机集群、介质及程序产品
CN110956552A (zh) 保险问题处理方法、装置、设备及存储介质
Uemura et al. Tracking method-level clones and a case study
US20130111450A1 (en) Runtime environment and method for non-invasive monitoring of software applications
US20240143687A1 (en) System and method for managing information sourced by a primary server that is sent to other servers when a user interacts with a web page without distorting the other servers
US11232200B2 (en) Apparatus for selecting representative token from detection names of multiple vaccines, method therefor, and computer readable recording medium storing program for performing the method
US11899737B1 (en) System and method for managing information sourced by a primary server that is sent to other servers when a user interacts with a web page without distorting the other servers
KR102226387B1 (ko) 효율적인 제품 라인 회귀 시험을 위해 시험 항목의 실행 횟수를 줄이는 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170704

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20180723