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

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

Info

Publication number
JP6295801B2
JP6295801B2 JP2014086154A JP2014086154A JP6295801B2 JP 6295801 B2 JP6295801 B2 JP 6295801B2 JP 2014086154 A JP2014086154 A JP 2014086154A JP 2014086154 A JP2014086154 A JP 2014086154A JP 6295801 B2 JP6295801 B2 JP 6295801B2
Authority
JP
Japan
Prior art keywords
module
modules
abnormal
grouping
services
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.)
Active
Application number
JP2014086154A
Other languages
English (en)
Other versions
JP2015207079A (ja
Inventor
堀田 勇次
勇次 堀田
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 JP2014086154A priority Critical patent/JP6295801B2/ja
Priority to US14/668,141 priority patent/US9720751B2/en
Publication of JP2015207079A publication Critical patent/JP2015207079A/ja
Application granted granted Critical
Publication of JP6295801B2 publication Critical patent/JP6295801B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Software Systems (AREA)

Description

本発明は、分析方法、分析装置、及び分析プログラムに関する。
所定の複数の処理を含む複数のサービス、例えばアプリケーションプログラムやネットワークサービス等において、遅延等の異常が発生している処理を特定することが試みられている。例えば、サービス(応答)の遅延が発生した場合に、各処理が出力するログを解析することで、実際に運用している状況下で、異常個所(問題個所)を検出し、原因を突き止める方法がある。
なお、異常個所とは、Webリクエスト等で、システムを構成する装置やネットワーク等における遅延等の異常が発生している部分(処理,コンポーネント)である。例えば異常個所としては、システムを構成するネットワーク,RDB(Relational Database),アプリケーション等のうちの、ネットワークの遅延区間,RDBの遅延原因のDBやテーブル,アプリケーションの遅延原因のメソッド等が挙げられる。
一例として、監視装置によりサービスの各処理の前後のログを採取して状態を監視し続けることで、サービスの異常個所を発見することが可能である。例えばstart−A−B−C−D−endという処理シーケンスの場合、Aの直前、A−Bの中間、B−Cの中間、C−Dの中間、Dの直後、でタイムスタンプが付いたログを採取することで、A〜Dの各処理の遅延を見つけることができる。例えばBが遅延している場合、Bの直前(A−B間)のログとBの直後(B−C間)のログとを参照することで、処理Bを異常個所(異常処理)として特定することができる。
特開2007−264734号公報 国際公開第2008/129635号パンフレット 特開2013−097783号公報
異常個所の分析・検出を行なう分析装置は、予め各サービスが実行する処理(コンポーネント)を記憶しておき、遅延が発生したときに実行されている複数のサービスから、遅延に影響を与えている可能性の高い処理を検出することも考えられる。
しかし、各サービスにおいて異常個所を検出するためには、監視装置は多数の監視個所で大量のログを採取することになる。このため、異常個所の絞り込み、特定には多大な実行オーバーヘッド及びネットワーク負荷が発生する。このように、各処理が出力するログの採取及び解析は、ネットワークの負荷増大等を伴うため、サービスに含まれる処理が多くなるにつれて、検出に時間がかかるとともに、システムのサービス提供に影響を与える場合がある。
また、監視装置は、各サービスが実行する処理を所定の単位でまとめることによって、検出の工数を削減することも考えられるが、処理をまとめる単位によっては、異常となる処理が隠れてしまい、異常個所を検出できない可能性もある。
1つの側面では、本発明は、少ない判断処理で異常処理の検出を可能とすることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
分析方法の一態様は、複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールをグルーピングしたコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶する。また、前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行なう。さらに、異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを前記グルーピングモジュールのトップレベルよりも下位の処単位に展開して、展開した各モジュールのうち、異常であるモジュールが含み正常であるモジュールが含まない処理単位を異常判断する第2の判断処理を行なう。
分析方法の他の態様は、複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールを少なくとも1つ共通するモジュールとして相互に含む複数のグルーピングモジュールを定義するコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶する。また、前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行なう。さらに、異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを含む複数のグルーピングモジュールについて、異常であるグルーピングモジュールが含み正常であるグルーピングモジュールが含まないモジュールを異常と判断する第2の判断処理を行なう。
一態様によれば、少ない判断処理で異常処理を検出することが可能になる。
一実施形態に係るネットワークシステムの一例を示すブロック図である。 サービス(パス)とコンポーネントとの対応関係(パス情報)の一例を示す図である。 (A)〜(D)は一実施形態に係る機能とコンポーネントとの関係をマトリクスで表現した例を示す図である。 本実施形態の事前分析フェーズの分析装置のハードウェア構成及び機能構成を示すブロック図である。 本実施形態に係る詳細ログの一例を示す図である。 本実施形態に係る紐付け結果の一例を示す図である。 本実施形態に係るcid対応表の一例を示す図である。 本実施形態に係るcidセット表の一例を示す図である。 本実施形態に係るpid対応表の一例を示す図である。 本実施形態に係るパス情報の一例を示す図である。 本実施形態に係るコンポーネント定義情報の一例を示す図である。 本実施形態の運用フェーズの分析装置のハードウェア構成及び機能構成を示すブロック図である。 本実施形態に係るアクセスログの一例を示す図である。 本実施形態に係る機能ごとの集計区間に正常と異常なデータとが混在する様子を模式的に示す図である。 図14において正常区間と異常区間とを分離して、重なりで判定する様子を模式的に説明する図である。 本実施形態に係る運用フェーズの分析結果の通知画面例を示す図である。 本実施形態に係る事前分析フェーズの分析装置の動作例を説明するフローチャートである。 本実施形態に係る構成要素抽出処理の手順を説明するフローチャートである。 本実施形態に係る構成要素抽出処理を具体的に説明する図である。 本実施形態に係るサービス情報生成処理の手順を説明するフローチャートである。 本実施形態に係るサービス情報生成処理を具体的に説明する図である。 本実施形態に係る運用フェーズの分析装置の動作例を説明するフローチャートである。 本実施形態に係る分析処理の手順を説明するフローチャートである。 本実施形態に係る分析処理を具体的に説明する図である。 一実施形態に係る分析処理の適用事例を説明する図である。 第1変形例に係る粒度レベルの設定例を説明する図である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕本実施形態の構成
図1〜図16を参照しながら、本実施形態の構成について説明する。
〔1−1〕本実施形態に係るネットワークシステムの構成
図1は、一実施形態に係るネットワークシステム1の一例を示すブロック図である。図1に示すネットワークシステム1は、例示的に、インターネット等のネットワーク10、ネットワーク10に接続されたサーバ群20,30及び40、ネットワークスイッチ50、並びに、分析装置100及び200等をそなえる。サーバ群20,30及び40には、例示的に、Webサーバ30や、アプリケーション(AP)サーバ40、その他のサーバ20等が含まれる。なお、サーバ群20,30及び40としては、PC(Personal Computer)やサーバ等の情報処理装置が挙げられる。
APサーバ40は、例えば、CPU(Central Processing Unit)等の処理部、ROM(Read Only Memory),RAM(Random Access Memory)等のメモリ、HDD(Hard Disk Drive),SSD(Solid State Drive)等の記憶装置、LCD(Liquid Crystal Display)等の表示装置、印刷装置等をそなえることができる。APサーバ40においては、CPUがメモリや記憶装置から所定のアプリケーションプログラムを読み出して実行することにより、各種機能が実現される。表示装置や印刷装置には、例えばCPUによる演算結果等を出力することができる。なお、他のサーバ20やWebサーバ30についても、上述と同様のCPU,メモリ,記憶装置,表示装置,及び印刷装置等がそなえられてよい。
ところで、図1に示すように、ネットワークシステム1は、事前分析フェーズ1Aにおいては分析装置100を含み、運用フェーズ1Bにおいては分析装置200を含む。
分析装置100は、事前分析フェーズ1Aにおいて、後述するサービス情報を生成する。また、分析装置200は、運用フェーズ1Bにおいて、分析装置100によって事前に生成されたサービス情報に基づき異常個所を特定する。つまり、分析装置100は、運用フェーズ1Bの構成と同様の条件で、分析装置200が分析を行なう前にサービス情報を生成しておくのである。なお、本実施形態において、異常個所とは、例えばシステムを構成する装置やネットワーク等における遅延等の異常が発生している部分(処理,コンポーネント)である。
このように、事前分析フェーズ1Aは、運用フェーズ1Bで使用されるネットワーク10,サーバ群20,30及び40,並びにネットワークスイッチ50等の構成を再現していることが好ましい。換言すれば、事前分析フェーズ1Aの構成は、運用フェーズ1Bの構成と共通(完全同一)のものでなくてもよく、例えば運用フェーズ1Bのステージング環境等、運用フェーズ1Bとは異なるハードウェアをそなえた構成であってもよい。或いは、事前分析フェーズ1A及び運用フェーズ1Bの少なくとも一方がVM(Virtual Machine)であってもよい。
なお、分析装置100及び200としての機能は、それぞれ、APサーバ40等によって実現されることができ、また、ネットワークシステム1に含まれる他のPCやサーバ等の情報処理装置によって実現されてもよい。さらに、分析装置100及び200としての機能は、1台のAPサーバ40又は1台の情報処理装置等によって実現されてもよい。
本実施形態に係る分析装置100及び200の動作について、簡単に説明する。
まず、分析装置100は、分析装置200において運用時に余分なオーバヘッドやネットワーク負荷を発生させることなく異常個所を特定するために、事前に詳細なログを採取分析してサービスごとのサービス情報を生成する。このとき、分析装置100は、予めキャプチャ済みの実データやテストデータを再現(リプレイ)するなどして採取したデータを用いて、システムの各サービスのパスを分類する。
例えば図2に示すごとくp1〜p5をネットワークコンポーネントとした場合、分析装置100は、各コンポーネントp1〜p5を流れるメッセージデータ(ログ)を分析する。そして、分析装置100は、例えばネットワーク上のリソースを示すURL(Uniform Resource Locator)+CGI(Common Gateway Interface)パラメータでパスを分類する。
すると、各サービス(URLi(iは自然数))は次のようなパスを通ることが分かる。
URL1=p1-p2 -p4-p5
URL2=p1 -p3 -p5
URL3=p1-p2
URL4= p3-p4
なお、コンポーネントpj(jは自然数)は分析装置100及び200が分析を行なう単位である。以下、「コンポーネント」を、「処理」という場合がある。また、「サービス」を「機能」或いは「URL」という場合がある。なお、「パス」は、「コンポーネント」の集合として位置付けられる。ここで、URLiは、ユーザにより呼び出されたコンポーネントの組み合わせ、つまりサービスを特定するための識別子であり、一般的なインターネット上のリソースを特定するための識別子に限定する意図はない。
分析装置100は、上述した分類により、サービス情報の一例としてのパス情報及びコンポーネント定義情報を生成することができる。なお、パス情報は、各URLiと複数のコンポーネントpjとの対応関係を示す情報、つまり各サービスURLiに含まれるコンポーネントpjの組み合わせを示す情報(使用されるコンポーネントpjを特定する情報)である。また、コンポーネント定義情報は、コンポーネントpjの詳細情報、例えばコンポーネントの呼出名や、コンポーネントがまとめられている場合の詳細なコンポーネントの情報である。
ここで、通常時に比べてURL1及びURL2が遅延した場合、分析装置200は、分析装置100が上述の如く分析したサービス情報に照らすことで、URL1とURL2とが通過するコンポーネントを推定することができる。図2の例では、分析装置200は、全てのコンポーネントp1,p2,p3,p4及びp5が異常の可能性を持つと判断することができる。
さらに、分析装置200は、例えば、URL3及びURL4は遅延していないという情報と、URL3及びURL4のパス情報とにより、URL1,URL2及びURL3の共通パスであるp1,p2,p3,p4には問題がないと判断できる。その結果、分析装置200は、残ったp5を遅延の原因と診断することができる。
なお、分析対象がプログラムの場合、コンポーネントpjは、例示的に以下のように、メソッド(関数)呼出し単位や、ブロック単位、利用者指定のログ出力個所単位、あるいはこれらのいずれかの組み合わせを単位として処理することができる。
・メソッド(関数)呼出し単位
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}等
なお、コンポーネントpjは、一般的なURLの要素としてのuid(ユーザID)等のID単位であってもよく、サーバ群20,30,40、ネットワーク装置、装置間のネットワーク等の装置・ネットワーク単位であってもよい。
パス情報は、単純な例としては図3(A)に示すようにURL1〜URL4(サービス)とコンポーネントp1〜p5とをマトリクスで表現することができる。
図3(B)に例示するように、分析装置200は、悪化したサービス(図2の例でURL1及びURL2)のコンポーネントを論理和(OR)で検出する。次いで、図3(C)に例示するように、分析装置200は、悪化していないサービス(図2の例でURL3及びURL4)のコンポーネントをORで検出する。
さらに、図3(D)に例示するように、分析装置200は、図3(B)の結果と図3(C)の結果とで排他的論理和(XOR)をとる。次いで、分析装置200は、図3(B)の結果と図3(D)の結果とで論理積(AND)をとる。本例において当該ANDの結果は図3(D)と同じである。図3(D)に例示するように、ANDの結果により、「1」が残っているp5が問題個所と特定できる。
〔1−2〕対比例
ここで、本実施形態に係る分析装置100及び200の対比例について説明する。
アプリケーションプログラムやネットワークコンポーネント等のサービスで異常個所を見つけるためには、事前に用意したパス情報やコンポーネント定義情報と、運用時に得られる運用情報とを用いて、原因コンポーネントを推定することが考えられる。
例えば、事前の分析により、以下の(方式1)又は(方式2)の手法でコンポーネントの粒度を決定し、コンポーネントを定義する事が考えられる。なお、粒度とは、コンポーネントの粒の大きさであり、コンポーネントをどの程度の詳細度で絞り込んで結果を通知するか、という処理単位である。処理単位が粗すぎると問題の切り分けが不十分になり、細かすぎると分析処理に時間と大量のリソースを消費することになる。
(方式1)一律にレベルを決めてコンポーネント化する手法
ユーザから呼び出されたサービスに含まれる最細粒度のモジュール(処理)として、以下の4つがある場合を考える。ただし、下記の各行はモジュール(処理)の呼出名である。また、例えば1行目において、“com.lang.Java.”はパッケージ、“Foo1”はクラス、“#Meth1”はメソッドである。これら各行のモジュールは、例えば上述したメソッド(関数)呼出し単位であり、APサーバ40等のアプリケーションにより実行される処理である。
com.lang.Java.Foo1#Meth1
com.lang.Java.Foo2#Meth2
com.user.Pkg#Meth1
com.user.Pkg#Meth2
上記のクラス,メソッドがある場合、例えばlevel=3でコンポーネントを自動定義するなら、つまり、各サービスにおいて、最上位の要素(例えば左端の“com”)から3つまでの要素を一括りのコンポーネントとしてまとめるなら、
p1=com.lang.Java
p2=com.user.Pkg
となる。
また、例えばlevel=4でコンポーネントを自動定義するなら、
p1=com.lang.Java.Foo1
p2=com.lang.Java.Foo2
p3=com.user.Pkg#Meth1
p4=com.user.Pkg#Meth2
となる。
(方式2)要素数を決めてコンポーネント化する手法
ユーザから呼び出されたサービスに含まれるモジュールとして、以下の複数のモジュールがある場合を考える。ただし、以下の例では、パッケージ.クラス“com.lang.Java.Foo1”のメソッド“#Meth2”〜“#Meth22”を省略して“...”で表している。
com.lang.Java.Foo1#Meth1
...
com.lang.Java.Foo1#Meth23
com.lang.Java.Foo2#Meth1
com.lang.Java.Foo2#Meth2
com.user.Pkg#Meth1
com.user.Pkg#Meth2
com.user.Pkg#Meth3
上記のクラス,メソッドがある場合、例えば末端部の要素数>3でコンポーネントを自動定義するなら、つまり要素数>3の場合にコンポーネントとしてまとめるなら、
p1=com.lang.Java.Foo1(“#Meth1”〜“#Meth23”がまとめられた)
p2=com.lang.Java.Foo2#Meth1
p3=com.lang.Java.Foo2#Meth2
p4=com.user.Pkg#Meth1
p5=com.user.Pkg#Meth2
p6=com.user.Pkg#Meth3
となる。
また、例えば末端部の要素数>2でコンポーネントを自動定義するなら、
p1=com.lang.Java.Foo1(“#Meth1”〜“#Meth23”がまとめられた)
p2=com.lang.Java.Foo2#Meth1
p3=com.lang.Java.Foo2#Meth2
p4=com.user.Pkg(“#Meth1”〜“#Meth3”がまとめられた)
となる。
このように、上記(方式1)又は(方式2)の手法により、分析装置は、閾値としてのレベル又は要素数を変化させることで、コンポーネントを定義する粒度を調整することができる。そして、分析装置は、パス情報及び上述のように定義したコンポーネント定義情報と、運用時に得られる運用情報(例えばログデータ)とを用いて、異常個所のコンポーネントを推定することができる。
しかしながら、上述した(方式1)及び(方式2)において、適切な粒度を決定することは難しい。
例えば、コンポーネントを粗い粒度とした場合((方式1)や(方式2)において閾値となるレベルや要素数が小さい場合)、分析装置は、運用フェーズにおいて分析の絞り込みを間違うことがある。
例示的に、コンポーネント定義により、以下のサービスのコンポーネントが定義されているものとする。
URL1=p1-p2-p3(p31-p32-p33)
URL2=p1 -p3(p31 -p33)
なお、上記の例で、URL1におけるコンポーネントp3は、上記(方式1)又は(方式2)の手法により末尾の括弧内のコンポーネントp31,p32及びp33がまとめられたものである。同様に、URL2におけるコンポーネントp3は、末尾の括弧内のコンポーネントp31及びp33がまとめられたものである。つまり、括弧内はより細かい粒度の場合のパス情報を示す。以下、このような階層的なコンポーネントは、上位の階層のコンポーネントの末尾の括弧を付し、括弧内に下位の階層のコンポーネントを表記して示す。
ここで、p32のコンポーネントが遅延原因の場合、以下のようにp32を含むURL1は遅延し、p32を含まないURL2は遅延しない。
×URL1=p1-p2-p3
○URL2=p1 -p3
これを分析装置によって分析すると、異常個所として、遅延したパスにのみ含まれるコンポーネントp2が抽出される。実際にはp32が遅延原因であるが、上記(方式1)又は(方式2)の手法によりp31〜p33は(p32の有無によらず)p3としてまとめられたため、このような誤った分析結果になる。
さらに、上記の例において、
○URL3=p1-p2
というサービス情報がある場合には、URL3はp2を含むパスであるのに遅延していないため、分析装置によりp2が異常個所ではないと判断され、異常個所として何も抽出されない。
一方、例えば、コンポーネントを細かい粒度とした場合((方式1)(方式2)において閾値となるレベルや要素数が大きい場合)、運用フェーズにおいて分析装置の処理の負荷が高くなる。すなわち、上述したような粗い粒度における異常個所の誤検出を避けるためには、分析装置は、p1,p2及びp3等を全てより細かい粒度としたサービス情報を生成し、分析を行なうことが考えられる。
しかし、細粒度の分析は、大量のメモリ量を消費し分析にも時間がかかるため、運用中のリアルタイムの分析には適さない。また、より細かい粒度としてどこまで細くすればよいか(閾値となるレベルや要素数をどう設定すればよいか)を判断することは難しい。
例示的に、URL数が以下のように10通りあり、各URLが10コンポーネントを通る粗い粒度とした場合、
URL1=p1-p2-p3-p4-p5-p6-p7-p8-p9-p10
URL2=p2-p3-p4-p5-p6-p7-p8-p9-p10-p11
URL10=...
分析装置による分析の際の演算は、
URL10通り×コンポーネント10通り=100通り
となる。
さらに細粒度にし、以下のように各コンポーネントが100コンポーネントに展開された場合、
p1=p1.1-p1.2-p1.3...-p1.100
p2=p2.1-p2.2...-p2.100
各URLは以下のようになる。
URL1=p1.1-p1.2...-p1.100-p2.1-p2.2...-p2.100...-p10.100
URL2= ...
そして、この場合の分析装置による分析の際の演算は、
URL10通り×コンポーネント100通り=1000通り
となる。
このように、(方式1)又は(方式2)を用いた解析手法で最適な粒度を定義することは難しく、最適な粒度で分析しなかった結果、間違った分析結果になることもある。
〔1−3〕本実施形態に係る分析装置の構成
これに対し、本実施形態に係る分析装置100及び200は、それぞれ事前分析フェーズ1A及び運用フェーズ1Bにおいて後述する処理を実行することで、少ない判断処理で異常モジュール(遅延コンポーネント,異常処理)の検出を可能とすることができる。
以下、図4〜図16を参照しながら、本実施形態に係る分析装置100及び200の構成について説明する。
〔1−3−1〕事前分析フェーズの分析装置の構成
はじめに、図4を参照しながら、事前分析フェーズ1Aの分析装置100の構成について説明する。図4は、本実施形態の事前分析フェーズ1Aの分析装置100のハードウェア構成及び機能構成を示すブロック図である。分析装置100は、上述したように、APサーバ40等、又は、サーバ群20,30,40とは別体の情報処理装置にそなえられることができる。本実施形態において、分析装置100は、サーバ群20,30,40とは別体の情報処理装置にそなえられているものとする。
分析装置100は、例示的に、CPU,MPU(Micro-Processing Unit),コンピュータ等の処理部110と、RAM,HDD等の記憶部120とをそなえる。
処理部110は、例示的に、ログ採取部111,ログ加工部112,機能抽出部113,サービス情報生成部114をそなえる。処理部110は、記憶部120から所定のアプリケーションプログラム(分析プログラム)を読み出して実行することで、これらの機能を実現することができる。また、記憶部120は、上記分析プログラムを保存するほか、処理部110による事前分析処理に用いられる各種情報を保存することができる。記憶部120は、当該各種情報として、例えば、詳細ログ121,紐付け結果122,cid対応表123,cidセット表124,pid対応表125,パス情報126,及びコンポーネント定義情報127を保存することができる。
上記分析プログラムは、コンピュータ読取可能な記録媒体に記録された形態で提供されてもよい。この場合、処理部110は、読出装置等のインタフェースを介して当該記録媒体からプログラムを読み取り、内部記憶装置または外部記憶装置に転送及び格納して、当該プログラムを実行することができる。
なお、記録媒体としては、例えばフレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク等の光ディスクや、USB(Universal Serial Bus)メモリやSDカード等のフラッシュメモリが挙げられる。CDとしては、CD−ROM、CD−R(CD-Recordable)、CD−RW(CD-Rewritable)等が挙げられる。また、DVDとしては、DVD−ROM、DVD−RAM、DVD−R、DVD−RW、DVD+R、DVD+RW等が挙げられる。
次いで、処理部110によって実現される、ログ採取部111,ログ加工部112,機能抽出部113,サービス情報生成部114としての機能について、図5〜図11を参照しながら説明する。
ログ採取部111は、ユーザリクエストのデータ(リクエスト等)を仮想ユーザのデータとしてネットワーク10(図4において図示省略)に投入(発行)する。なお、ログ採取部111により発行されるリクエストは、予め用意したテストシナリオに基づくリクエストであってもよい。或いは、ログ採取部111は、運用フェーズ1Bでの実際のリクエスト及び状態をパケットキャプチャ等により保存しておき、実運用時の運用状態を再現してもよい。
ネットワーク10を介してリクエストを受けたAPサーバ40では、当該リクエストに応じた処理が、アプリケーション41によって実行され、当該リクエストに対応するリクエストログが、ログ出力部42から分析装置100へ出力される。なお、事前分析フェーズ1Aにおいては、他のサーバ20やWebサーバ30からも同様にしてリクエストログがログ出力部42から分析装置100へ出力される。
ログ採取部111は、APサーバ40等のログ出力部42から図5に例示する詳細ログ121を採取して、記憶部120に保存する。
図5は、本実施形態に係る詳細ログ121の一例を示す図である。詳細ログ121は、ログ出力部42によって出力されるログ(リクエストログ)の一例である。詳細ログ121には、例示的に、時刻(例えば図5の1行目の“timestamp1”),トランザクションID(tid;例えば図5の1行目の“tid1”)、値(呼出名;例えば図5の1行目の“com.lang.Java.Foo1#Meth1”)等が含まれる。なお、詳細ログ121において、tidが共通のログは、1つのトランザクションすなわちサービスで実行されたモジュール(処理)のログである。
ログ加工部112,機能抽出部113,サービス情報生成部114は、仮想ユーザのデータ投入による結果として各サーバから採取したメッセージデータについて、パス分析を行ない、その分析結果を例えばサービス情報として記憶部120に格納する。なお、分析装置100が生成するサービス情報には、パス情報126及びコンポーネント定義情報127が含まれる。
以下、ログ加工部112,機能抽出部113,サービス情報生成部114の処理について説明する。
ログ加工部112は、詳細ログ121に基づき、サービス(トランザクション,リクエスト)ごとにログの紐付けを行ない、紐付け結果122を生成して、記憶部120に保存する。例えば、ログ加工部112は、詳細ログ121を参照して、リクエストごとにトランザクションIDが共通するログ(モジュール(処理))の紐付けを行なうことにより、図6に示す紐付け結果122を生成することができる。
図6は、本実施形態に係る紐付け結果122の一例を示す図である。紐付け結果122は、例えば図5に示す詳細ログ121に対して、リクエストごとに、当該リクエストが属する(含まれる)サービスの識別情報を付した情報である。より具体的に、紐付け結果122は、図6に示すように、サービスの識別子の一例としてのURLと、トランザクションIDと、モジュールの呼出名(パッケージ,クラス,メソッド)とを含むことができる。なお、紐付け結果122には詳細ログ121における時刻の情報が含まれてもよい。
機能抽出部113は、紐付け結果122に基づき、各サービス(URL,機能)について細粒度での構成要素(モジュール(処理))を抽出し、cid対応表123及びcidセット表124を生成して、記憶部120に保存する。例えば、機能抽出部113は、紐付け結果122を参照して、互いに重複しないモジュールごとに一意のID(cid;例えばck(kは自然数)と表記)を割り当て、ckとクラス,メソッドとの対応表であるcid対応表123を生成することができる。また、機能抽出部113は、紐付け結果122を参照して、各サービス(トランザクション)に当該サービスに含まれるモジュールのcidを対応付けたcidセット表124を生成することができる。
図7は、本実施形態に係るcid対応表123の一例を示す図であり、図8は、本実施形態に係るcidセット表124の一例を示す図である。cid対応表123は、例えばID(cid)と値(呼出名)とを含むことができる。一例として、cid対応表123は、図7に示すように、ID“c1”と、値“jpn.user.Pkg1#Meth1”とを含む。また、cidセット表124は、例えばサービスのURLと、サービスに対応するtidと、サービスに含まれるモジュール群に対応する1以上のcid(cidセット)とを含むことができる。一例として、cidセット表124は、図8に示すように、URL“URL1”と、tid“tid1”と、cidセット“c1,c2,c4,c5,c6”とを含む。
なお、機能抽出部113によるcid対応表123及びcidセット表124の生成前に、例えばログ加工部112又は機能抽出部113により、紐付け結果122から同一のトランザクションにおいてモジュールが重複するログが除去されることが好ましい。これにより、cid対応表123及びcidセット表124には、同一のモジュールが複数のcidとして登録されずに済むため、後述するサービス情報生成部114及び分析装置200における処理負荷を軽減することができる。
機能抽出部113による具体的な処理(cid対応表123,cidセット表124の作成)の手順については、図18及び図19を参照しながら後述する。
サービス情報生成部114は、cid対応表123及びcidセット表124に基づき、サービスごとに共通部分(共通モジュール(共通処理))を比較してコンポーネントを定義し、サービス情報(パス情報126及びコンポーネント定義情報127)を生成する。そして、サービス情報生成部114は、生成したサービス情報を記憶部120に保存する。なお、分析装置100が分析装置200とは異なる情報処理装置により実現される場合、サービス情報生成部114は、後述するpid対応表125とサービス情報(パス情報126及びコンポーネント定義情報127)とを分析装置200に送信してもよい。
以下、cid対応表123における複数のモジュール(処理)のうち、最上位の階層で共通するものがないモジュールについては、最上位の階層をトップレベルと呼ぶ。また、cid対応表123における複数のモジュールのうち、最上位の階層で共通するものがあるモジュールについては、共通するものがなくなる直前の階層をトップレベルと呼ぶ。例えば、図7に示すモジュールc1は、最上位の階層の値“jpn”がc1にのみ存在する(トップレベルで共通するものがない)ため、c1におけるトップレベルは最上位の階層となる。また、図7に示すモジュールc3,c4及びc5は、互いに“com.lang.Java.Foo1”まで共通する階層を持つため、c3,c4及びc5におけるトップレベルは共通するものがなくなる直前の階層となる。
サービス情報生成部114は、具体的には、cid対応表123を参照して、各モジュール(例えばc1,c2,...)について、最上位の階層から下位の階層に向けて順に、他のモジュールとの間で共通する階層を抽出してトップレベルを検出し、分類を行なうことができる。そして、サービス情報生成部114は、図9に示すpid対応表125を生成して、記憶部120に保存することができる。次いで、サービス情報生成部114は、cidセット表124及びpid対応表125に基づき、図10に示すパス情報126を生成し、cid対応表123及びpid対応表125に基づき、図11に示すコンポーネント定義情報127を生成することができる。
図9は、本実施形態に係るpid対応表125の一例を示す図である。pid対応表125は、例えばID(pid)と値(cid)とを含むことができる(図9の範囲A参照)。一例として、pid対応表125は、図9の1行目に示すように、ID“p1”と、値“c1”とを含む。ここで、c1は、上述のようにトップレベル(最上位の階層)の値“jpn”がc1にのみ存在する(トップレベルで共通するものがない)ため、単独でコンポーネントp1が割り当てられる。
他の例として、pid対応表125は、図9の3行目〜5行目に示すように、ID“p3.1”と、値“c3”とを含む。ここで、モジュールc3,c4及びc5は、上述のようにトップレベル(共通するものがなくなる直前の階層)の値“com.lang.Java.Foo1”はc3,c4及びc5で共通するため、これらのモジュールについてまとめてコンポーネントp3が割り当てられる。このとき、c3,c4及びc5を区別するために個別の添え字(“.1”,“.2”及び“.3”)が付加され、それぞれp3.1,p3.2及びp3.3としてpid対応表125に保存される。
また、pid対応表125は、図9の6行目〜7行目(図9の範囲B参照)に示すように、各サービス(URL)に含まれる個別のコンポーネント(図9の例ではp3.1,p3.2及びp3.3)の集合がグループ化されて設定される。このとき、サービス間で完全一致しない集合についてはそれぞれ個別にグループ化される。
一例として、図9の6行目に示すように、URL1のcidセット(図7参照)に含まれる個別のコンポーネントの集合は、モジュールc3,c4及びc5に対応するコンポーネントp3.1,p3.2及びp3.3である。また、図9の7行目に示すように、URL2のcidセット(図7参照)に含まれる個別のコンポーネントの集合は、モジュールc3及びc5に対応するコンポーネントp3.1及びp3.3である。この場合、これらの集合はサービス(URL)間で完全一致しない集合であるため、それぞれ個別にグループ化される。そして、pid対応表125において、URL1のコンポーネントp3.1,p3.2及びp3.3がコンポーネントp3.aに対応付けられ、URL2のコンポーネントp3.1及びp3.3がコンポーネントp3.bに対応付けられて保存される。
図10は、本実施形態に係るパス情報126の一例を示す図であり、図11は、本実施形態に係るコンポーネント定義情報127の一例を示す図である。パス情報(第1の情報)126は、サービスごとに、サービスに含まれるコンポーネント(グルーピング処理)を対応付けた情報である。例えばサービスのURLと、サービスに含まれるモジュール群に対応する1以上のpid(pidセット)とを含むことができる。一例として、パス情報126は、図10に示すように、URL“URL1”と、pidセット“p1,p2,p3.a”とを含む。なお、パス情報126は、cidセット表124のcidセット内のcidを、pid対応表125に基づきpidに置き換えたものとすることができる。
また、コンポーネント定義情報(第2の情報)127は、コンポーネント(グルーピング処理)に含まれるモジュールをグルーピングされた階層ごとに示す情報である。例えばpidと値(モジュール又はコンポーネント)とを含むことができる。一例として、コンポーネント定義情報127は、図11の1行目に示すように、pid“p1”と、値“jpn.user.Pkg1#Meth1”とを含む。また、他の例として、コンポーネント定義情報127は、図11の3行目に示すように、pid“p3.a”と、値“p3.1,p3.2,p3.3”とを含み、図11の5行目に示すように、pid“p3.1”と、値“com.lang.Java.Foo1#Meth1”とを含む。このように、コンポーネント定義情報127は、サービス情報生成部114により定義されたコンポーネントの階層構造を規定する情報であるといえる。なお、コンポーネント定義情報127は、pid対応表125の値に設定されたcidを、cid対応表123に基づき呼出名(“com.lang.Java.Foo1#Meth1”等)に置き換えたものとすることができる。
上述のように、cid対応表123,cidセット表124,pid対応表125,パス情報126及びコンポーネント定義情報127は、互いに補完可能な情報を持つ。従って、機能抽出部113及びサービス情報生成部114は、サービス情報の生成過程において、これらの情報123〜127のうちの少なくとも1つの生成及び記憶部120への保存を省略してもよい。
ここで、上述した(方式1)及び(方式2)の手法では、コンポーネントp1,p2及びp3は、互いに共通のモジュールを含まないように生成される。
一方、本実施形態に係る分析装置100は、共通部分(共通コンポーネントp3.1及びp3.3)を含むコンポーネントp3.a及びp3.bを定義している。つまり、分析装置100は、パス情報126に、第1のサービスに含まれる第1のグルーピング処理と、第2のサービスに含まれ、グルーピングされた複数の処理のうちの一部の処理のみが第1のグルーピング処理と共通する第2のグルーピング処理と、を互いに区別可能に記憶する。このように、本実施形態においては、コンポーネントの定義において、共通部分を含みつつ互いのコンポーネントp3.a及びp3.bを区別可能な態様で、モジュールや下位の階層のコンポーネントp3.1,p3.2及びp3.3を階層化するのである。これにより、(方式1)又は(方式2)において各モジュールを単にレベルや要素数等に応じて階層化して、コンポーネントp31,p32及びp33等がコンポーネントp3としてまとめられる場合と異なり、間違った分析結果になることを抑止できる。
なお、コンポーネントp3.a及びp3.bは、添え字を付加されることで他のコンポーネントp1及びp2と区別されているが、コンポーネントp3.a及びp3.bを単にコンポーネントp3と定義してもよい。この場合、コンポーネントp3には、共通部分を含むことを示す属性値を持たせ、当該属性値をテーブル等で管理してもよい。
サービス情報生成部114による具体的な処理(pid対応表125,パス情報126,コンポーネント定義情報127の作成)の手順については、図20及び図21を参照しながら後述する。
〔1−3−2〕運用フェーズの分析装置の構成
次に、図12を参照しながら、運用フェーズ1Bの分析装置200の構成について説明する。図12は、本実施形態の運用フェーズ1Bの分析装置200のハードウェア構成及び機能構成を示すブロック図である。分析装置200は、上述したように、APサーバ40等、又は、サーバ群20,30,40とは別体の情報処理装置にそなえられることができる。本実施形態において、分析装置200は、サーバ群20,30,40とは別体の情報処理装置にそなえられているものとする。なお、記述のように、分析装置200は分析装置100と同一の情報処理装置により実現されてもよい。
分析装置200は、処理部210が実行する処理や記憶部220が保存する情報が異なるものの、分析装置100と同様の構成をそなえることができる。以下、特に言及しない限り、分析装置200は分析装置100と同様の構成をそなえるものとする。
処理部210は、例示的に、ログ採取部211,機能選別部212,データスライス分割部213,問題個所特定部214,結果出力部215をそなえる。処理部210は、記憶部220から所定のアプリケーションプログラム(分析プログラム)を読み出して実行することで、これらの機能を実現することができる。また、記憶部220は、上記分析プログラムを保存するほか、処理部210による異常個所特定処理に用いられる各種情報を保存することができる。記憶部220は、当該各種情報として、分析装置100が生成したpid対応表125,パス情報126,及びコンポーネント定義情報127を保存することができるほか、例えばアクセスログ221を保存することができる。
なお、分析装置200においても、上記分析プログラムは、コンピュータ読取可能な記録媒体に記録された形態で提供されてもよい。この場合、処理部210は、読出装置等のインタフェースを介して当該記録媒体からプログラムを読み取り、内部記憶装置または外部記憶装置に転送及び格納して、当該プログラムを実行することができる。分析装置100及び200が異なる情報処理装置により実現される場合には、上記分析プログラムは、事前分析フェーズ1A及び運用フェーズ1Bのそれぞれに係る機能で分割されて、分析装置100及び200に提供されてよい。
次いで、処理部210によって実現される、ログ採取部211,機能選別部212,データスライス分割部213,問題個所特定部214,結果出力部215としての機能について、図12〜図16を参照しながら説明する。
ログ採取部211は、運用フェーズ1Bにおいて実運用でサーバ20,30,40に流れるデータから例えばURL+CGIパラメータ等を例えばログデータとして採取する。なお、実運用では「前面のサーバ」の情報のみ採取するようにしてよい。「前面のサーバ」とは、事前分析フェーズ1Aにおける「全サーバ」と対比して、ユーザからのリクエストを受け付ける、最もユーザ側のサーバを意味する。図1に例示する構成ではWebサーバ30が「前面のサーバ」サーバに相当し得る。この場合、ログ採取部211は、Webサーバ30のログ出力部32からログデータを採取する。ただし、構成によっては、ネットワークスイッチ50或いは負荷分散サーバ(ロードバランサ;図示省略)が「前面のサーバ」に相当することもあれば、APサーバ40が「前面のサーバ」に相当することもある。
ログ採取部211が採取するログデータの一例を、図13に示す。図13は、本実施形態に係るアクセスログ221の一例を示す図である。アクセスログ221は、例えばWebサーバ30へのWebリクエストのURLと、Webサーバ30におけるWebリクエストの(受信或いは応答)時刻と、Webリクエストへの応答にかかった時間とを含むことができる。一例として、アクセスログ221は、図13に示すように、URL“http://foo.com/a.cgi?〜”と、時刻“timestamp1”と、応答時間“3ms”とを含む。
機能選別部212は、採取したログデータを分析装置100から予め取得したパス情報126と照らして、ログデータの機能選別(分類)を行なう。
データスライス分割部213は、選別した各機能(サービス)で正常と異常とが混在しない時間区間を切り出す処理(ステートの変化タイミングを演算する処理)を実施する。なお、選別した機能がパス情報126に含まれない場合は、パス情報126のサービスに当てはめる。
以下、正常と異常のデータが混在する場合の問題について図14及び図15を参照して説明する。図14は、本実施形態に係る機能ごとの集計区間に正常と異常なデータとが混在する様子を模式的に示す図であり、図15は、図14において正常区間と異常区間とを分離して、重なりで判定する様子を模式的に説明する図である。
図14において、「異常区間」は異常なデータの時間区間を例示し、「正常区間」は正常なデータの時間区間を例示している。「異常なデータ」は、例えばレスポンス時間が正常範囲よりも長いことを示すデータを意味し、「正常なデータ」は、例えばレスポンス時間が正常範囲にあることを示すデータを意味する。
ここで、同じ機能でもタイミングによって正常なデータと異常なデータとが混在する場合があり、その場合には、パス情報126に基づく図3(A)〜図3(D)を用いて既述のマトリクスを使った絞り込みを行なうことは困難である。
例えば、レスポンス時間の閾値が1秒(1秒以上なら異常、1秒未満なら正常)の場合、平均すると丁度1秒、を異常と判定(例えば図14の矢印301参照)しても正確な分析であるとはいえない。このように、微妙なタイミングによる問題がある場合に、平均では正常及び異常のいずれかの判定結果となってしまい正しく判定することが難しい。また、複数の機能(URL1,URL2,…)のレスポンス時間が全て閾値近傍にある場合は分析結果の信頼性が大きく低下する。
そこで、データスライス分割部213は、正常及び異常のステートが混在しない領域(時間区間)を自動的に切り出すことで絞り込みを可能にする。
基本的な処理の一例としては、まず、データスライス分割部213は、アクセスログ221に基づき、各URLで正常及び異常のステートの変化のタイミングを演算し、当該タイミングに基づき、各URLで正常及び異常のステートが混在しない時間区間を区切る。
また、データスライス分割部213は、例えば図15に示すように、機能(例えばURL)ごとに正常区間と異常区間とを分けて、その区間を重ね合わせた領域を分析に用いてもよい。これにより、計算量を抑えて分析可能なデータを見つけることが可能になり、分析精度が向上する。なお、図15において、サービスURL1及びURL4は時間的前後に同様な異常あるいは正常データが存在しているものとする。また、図15には、サービスURL3のデータにより区間(判定区間)が2分割された様子を例示している。
問題個所特定部214は、データスライス分割部213により区切られた、各URLで正常及び異常のステートが混在しない時間区間に基づいて、サービスの正常及び異常の状態が変化した(切り替わった)ことを検出すると、分析処理を実行する。
具体的には、問題個所特定部(第1判断部)214は、各時間区間が重なり合う範囲で、図3を用いて既述のように、マトリクスを作って演算(複数のサービスとモジュールとのパス情報126に基づき、問題個所となっている異常モジュールを算出(検出))する(第1の判断処理)。そして、問題個所特定部(第2判断部)214は、パス情報126及びコンポーネント定義情報127と照らし合わせて問題個所の絞込み又は特定を行なう(第2の判断処理)。
より具体的に、問題個所特定部214は、マトリクスの演算により原因個所として抽出したコンポーネントが共通コンポーネントを持つ場合は、共通コンポーネントを細粒度に展開して分析処理を行なう。
一例として、問題個所特定部214が、サービスURL1及びURL2について以下の判定をした場合を想定する。
URL1:遅延
URL2:正常
なお、URL1及びURL2のパス情報126は、以下であるとする(図10参照)。
URL1=p1-p2-p3.a
URL2=p1-p2-p3.b
この場合、問題個所特定部214は、マトリクスによる分析によって、遅延が生じているURL1にのみ存在するコンポーネントp3.aが遅延の原因であると推定する。
次いで、問題個所特定部214は、コンポーネントp3.aには、共通コンポーネントを持つ同一階層の他のコンポーネントが存在するか否かを、コンポーネント定義情報127に照らして判定する。コンポーネントp3.aには、共通コンポーネントp3.1及びp3.3を持つ同一階層のコンポーネントp3.bが存在する。
そこで、問題個所特定部214は、
p3.a:遅延
p3.b:正常
という情報と、コンポーネント定義情報127から得られる
p3.a=p3.1-p3.2-p3.3
p3.b=p3.1 -p3.3
という細粒度のパス情報とを用いてマトリクスによる分析を行ない、遅延が生じているp3.aにのみ存在するコンポーネントp3.2が遅延の原因(異常処理)であると推定する。
なお、分析装置200が用いるパス情報126は、適宜に更新されてよい。例えば、分析装置200は、運用フェーズ1Bにおけるリクエストデータをユーザリクエストとして記憶部220等に保存しておく。そして、事前分析フェーズ1Aで出現しなかった未知のデータが運用フェーズ1Bで出現した場合、分析装置200は、保存しておいたリクエストデータを用いて再事前分析を実施することで、パス情報126を更新してもよい。
結果出力部215は、問題個所特定部214により推定された問題個所(異常処理)の情報を表示装置等に出力する。出力データの一例を図16に示す。図16は、本実施形態に係る運用フェーズ1Bの分析結果の通知画面例を示す図である。図16の紙面上側には、運用フェーズ1Bでの分析結果の通知画面400の一例が示されている。
通知画面400には、例示的に、サービス(パス)とコンポーネントとの対応関係(パス情報)が表示される。また、通知画面400に表示されたパス情報のうち、推定された問題個所のコンポーネント(或いはモジュール)のラベル(図16の符号401参照)は、他のラベルとは異なる表示になる(例えば色を変えて表示される)。このとき、結果出力部215は、問題個所として複数の候補がある場合は例えば優先順位付で複数個出力してよい(例えば問題個所の可能性が最も高いp4を他の候補p6及びp7よりも濃い色で表示する等)。なお、優先順位が付かない場合もある。
また、問題個所のラベルは選択可能(例えばマウス等によりクリック可能)になっており、ユーザが当該ラベルを選択すると、紙面下側に示す詳細表示画面410が表示される。なお、結果出力部215は、原因コンポーネントを自動で詳細表示してもよい。
詳細表示画面410には、例示的に、ラベル(コンポーネント)名、分析期間、分析期間内の原因コンポーネントを使ったリクエスト数、分析期間内の原因コンポーネントを使ったURL、原因コンポーネントが統合するパッケージ群等の情報が表示される。
なお、結果出力部215は、遅延原因となったコンポーネントを使うURLをクリップボードにコピーするボタン(図16の符号411参照)等を表示してもよい。また、結果出力部215は、問題個所特定部214が分析の際に自動で細粒度に展開するのと同様に、通知画面400上でも自動で細粒度に展開するようにしてもよい。例えば、問題個所特定部214によりコンポーネントp3.aに含まれるコンポーネントp3.2が遅延の原因(異常処理)であると推定された場合には、上記の詳細表示画面410に、“p3.2=com.lang.Java.Foo1#Meth2”が遅延原因であることを示す情報が表示される。
なお、上述した通知画面400は、問題個所特定部214による問題個所の推定が完了する前(例えば分析開始前後)から表示されていてもよい。
また、結果出力部215は、パス情報や問題個所を表示装置等に表示せず、メール等でユーザに通知してもよく、分析結果をファイルに格納してもよい。
以上のように、分析装置100は、事前分析フェーズ1Aにおいて、使用コンポーネントを事前に最細粒度で分析し、より細粒度のコンポーネントで共通コンポーネントの有無を考慮した複数の粒度でコンポーネント定義を生成する。すなわち、分析装置100は、複数の階層を持つ処理を複数含むサービスについて、サービスごとの各処理を共通する階層の有無を考慮して所定の階層でグルーピングしたサービス情報を生成し、記憶する。
また、分析装置200は、運用フェーズ1Bにおいて、共通コンポーネントを持つコンポーネントが原因個所であると分析した場合は、そのコンポーネントを(グループ化されたコンポーネントでなくなるまで)細粒度化して再分析する。このように、分析装置200は、段階的に原因個所を特定する。すなわち、分析装置200は、複数のサービスに関するログデータ及びサービス情報に基づき、1以上のサービスに含まれる処理について、異常の有無を判断する第1の判断処理を行なう。また、分析装置200は、異常と判断された処理がグルーピングされたグルーピング処理である場合、サービス情報に基づき、異常と判断されたグルーピング処理を所定の階層よりも下位の階層の1以上の処理に展開して、展開した1以上の処理について異常の有無を判断する第2の判断処理を行なう。
このように、分析装置100及び200によれば、粗い粒度での分析のように原因個所の判定を間違えることなく、かつ細粒度の分析のようにリアルタイム性を損なうことなく原因個所の分析をすることが可能となる。
〔1−4〕本実施形態に係る分析装置の動作例
次に、上述のごとく構成された本実施形態に係る分析装置100及び200の動作例について説明する。
〔1−4−1〕事前分析フェーズの分析装置の動作例
はじめに、図17に示すフローチャート(ステップS1〜S4)に従って、本実施形態に係る分析装置100の動作例について説明する。
分析装置100は、事前分析フェーズ1Aにおいて、ログ採取部111からネットワーク10経由でサーバ20,30及び40にリクエストを発行する。リクエストを受けたサーバ20,30及び40では、当該リクエストに応じた処理が実行され、当該リクエストに対応するリクエストログが分析装置100へ出力される。なお、リクエストは、例えばユーザリクエストデータベース(図示省略)に予め用意したリクエストデータを再生することで発行される。リクエストの発行処理は、所定の終了条件が満たされるまで繰り返される。なお、リクエストデータとしては、実運用時に採取したものや、テストデータとして生成したもの等を用いることができる。
そして、ログ採取部111は、リクエストログの一例としての詳細ログ121を、サーバ20,30及び40等から受信し採取する(ステップS1)。ログ採取部111によって採取された詳細ログ121は記憶部120に保存される。
この後、ログ加工部112は、詳細ログ121に基づき、サービス(トランザクション,リクエスト)ごとにログの紐付けを行ない、紐付け結果122を生成して、記憶部120に保存する(ステップS2)。
次いで、機能抽出部113は、紐付け結果122に基づき、各サービス(URL,機能)について細粒度での構成要素(モジュール(処理))を抽出し、cid対応表123及びcidセット表124を生成して、記憶部120に保存する(ステップS3)。ステップS3での処理手順、つまり機能抽出部113による処理(構成要素抽出処理)の手順については、図18及び図19を参照しながら後述する。
サービス情報生成部114は、ステップS3で作成されたcid対応表123及びcidセット表124基づき、サービスごとに共通部分(共通モジュール(共通処理))を比較してコンポーネントを定義する。そして、サービス情報生成部114は、サービス情報(パス情報126及びコンポーネント定義情報127)を生成して記憶部120に保存する(ステップS4)。ステップS4での処理手順、つまりサービス情報生成部114による処理(サービス情報生成処理)の手順については、図20及び図21を参照しながら後述する。
〔1−4−1−1〕構成要素抽出処理
次に、図18に示すフローチャート(ステップS11〜S18)及び図19に示すテーブル例を参照しながら、分析装置100(機能抽出部113)の構成要素抽出処理の動作例について説明する。
はじめに、機能抽出部113は、構成要素抽出処理において、ログ加工部112により生成された紐付け結果122(図19参照)を参照し、未処理のtidセットがあるか否かを判断する(ステップS11)。未処理のtidセットがある場合(ステップS11のYesルート)、機能抽出部113は、紐付け結果122に未処理のレコードがあるか否かを判断する(ステップS12)。
未処理のレコードがない場合(ステップS12のNoルート)、処理がステップS11に移行する。一方、未処理のレコードがある場合(ステップS12のYesルート)、機能抽出部113は、未処理のレコードのモジュールが、同一tid内で未出現か否かを判断する(ステップS13)。未処理のレコードのモジュールが同一tid内で未出現ではない場合(ステップS13のNoルート)、機能抽出部113は当該レコードを重複として除去し(ステップS14,図19の重複除去例122参照)、処理がステップS12に移行する。なお、紐付け結果122の重複除去は、機能抽出部113ではなくログ加工部112による紐付け結果122の生成の際に行なわれてもよい。
一方、ステップS13において、未処理のレコードのモジュールが同一tid内で未出現の場合(ステップS13のYesルート)、機能抽出部113は、当該モジュール内のメソッドがcid対応表123に未登録か否かを判断する(ステップS15)。メソッドが未登録の場合(ステップS15のYesルート)、当該メソッドをcid対応表123(図19参照)に登録し(ステップS16)、処理がステップS17に移行する。なお、cid対応表123(最細粒度テーブル)において最細粒度の要素は全てのURL及びtidで共通となる。また、メソッドが登録済の場合(ステップS15のNoルート)、処理がステップS17に移行する。
ステップS17では、機能抽出部113は、cid対応表123を参照して当該モジュール内のメソッドからcidを抽出して記憶し、処理がステップS12に移行する。
また、ステップS1において、未処理のtidセットがない場合(ステップS11のNoルート)、機能抽出部113は、ステップS17で抽出し記憶した1以上のcid(cidセット)をcidセット表124(図19参照)に登録する(ステップS18)。このとき、機能抽出部113は、当該cidセットを対応するtid及びURLに関連付ける。
以上により、機能抽出部113による構成要素抽出処理が終了する。
〔1−4−1−2〕サービス情報生成処理
次に、図20に示すフローチャート(ステップS21〜S24)及び図21に示すテーブル例を参照しながら、分析装置100(サービス情報生成部114)のサービス情報生成処理の動作例について説明する。
はじめに、サービス情報生成部114は、サービス情報生成処理において、cid対応表123でトップレベルから共通するものを抽出して分類し、pid対応表125(図21参照)を生成して記憶部120に保存する(ステップS21)。例えば図21のcid対応表123において、c1のトップレベルの“jpn”は、cid対応表123中でc1のみであるため、c1には単独でコンポーネントp1が割り当てられ、pid対応表125に登録される(pid対応表125のA領域1行目参照)。また、例えば図21のcid対応表123において、c3のトップレベルの“com.lang.Java.Foo1”は、cid対応表123中でc3,c4及びc5で共通するため、c3,c4及びc5には共通でコンポーネントp3が割り当てられる。このとき、p3には、c3,c4及びc5を区別するために添え字“.1”,“.2”及び“.3”が付加され、pid対応表125に登録される(図21のA領域の3〜5行目参照)。
次いで、サービス情報生成部114は、複数要素を持つpidに対してcidセット表124で完全一致しない集合をグループ化し(ステップS22)、pid対応表125を更新する(図21のpid対応表(更新)125のB領域参照)。例えば図21のpid対応表125において、複数の要素を持つコンポーネントはp3のみであり、p3に相当するcidセットは、URL1ではc3,c4及びc5、URL2ではc3及びc5である。この場合、c3,c4及びc5とc3及びc5とは完全一致しないため、サービス情報生成部114は、各サービスをグループ化し、それぞれp3.a及びp3.bとしてpid対応表125を更新する。
そして、サービス情報生成部114は、グループ化したpidの中に下位レベルに共通する処理があるか否かを判断する(ステップS23)。下位レベルに共通する処理がある場合(ステップS23のYesルート)、処理がステップS21に移行する。例えば、図21のcid対応表123において、c3及びc4が以下のモジュールであった場合を考える。
c3:com.lang.Java.Foo1.Boo2#Meth1
c4:com.lang.Java.Foo1.Boo2#Meth2
図21の例では、URL1はc3,c4及びc5が“com.lang.Java.Foo1”でグループ化されているが、c3及びc4についてはさらに1つ下の階層の“Boo2”も共通である。この場合、サービス情報生成部114は、c3及びc4を“com.lang.Java.Foo1.Boo2”でまとめるために、ステップS21の処理を再度実行するのである。なお、図21に示すテーブル例では、ステップS23のYesルートに対応するものはない。
また、ステップS23において、下位レベルに共通する処理がない場合(ステップS23のNoルート)、サービス情報生成部114は、結果をサービス情報として格納し(ステップS24)、処理が終了する。例えば、サービス情報生成部114は、cidセット表124及びpid対応表125に基づき、パス情報126を生成し、cid対応表123及びpid対応表125に基づき、コンポーネント定義情報127を生成する(図21参照)。
以上により、サービス情報生成部114によるサービス情報生成処理が終了する。
〔1−4−2〕運用フェーズの分析装置の動作例
次に、図22に示すフローチャート(ステップS31〜S34)に従って、本実施形態に係る分析装置200の動作例について説明する。
分析装置200は、運用フェーズ1Bにおいて、前面のサーバの一例としてのWebサーバ30からログデータを入力され、ログ採取部211はログデータ(例えばアクセスログ221)を採取する(ステップS31)。
次いで、機能選別部212は、採取したデータからURL、CGI等のパラメータを基に機能単位を選別する。
さらに、データスライス分割部213は、選別した各機能(URL)で正常と異常とが混在しない時間区間を切り出す処理(ステートの変化タイミングを演算する処理)を実施する。なお、選別した機能がパス情報126に含まれない場合は、パス情報126の機能に当てはめる。
その後、問題個所特定部214は、データスライス分割部213により区切られた、各機能で正常及び異常のステートが混在しない時間区間に基づいて、サービスの正常及び異常の状態が変化したことを検出すると、分析処理を実行する(ステップS32)。
また、問題個所特定部214は、分析処理により原因個所として推定(抽出)したコンポーネントが共通コンポーネントを持つ場合は、共通コンポーネントを細粒度に展開して分析処理を行なう(ステップS33)。ステップS33の分析処理は、最細粒度になるまで、階層的に展開及び分析が繰り返される。ステップS33での処理手順、つまり問題個所特定部214による処理(分析処理)の手順については、図23及び図24を参照しながら後述する。
最後に、結果出力部215は、問題個所特定部214により推定された問題個所(異常処理)の情報を表示装置等に出力する(ステップS34)。
以上により、運用フェーズ1Bの分析装置200の処理が終了する。
〔1−4−2−1〕分析処理
次に、図23に示すフローチャート(ステップS41〜S47)及び図24に示すテーブル例を参照しながら、分析装置200(問題個所特定部214)の分析処理の動作例について説明する。
はじめに、問題個所特定部214は、分析処理の対象データ(図24の(a)参照)があるか否かを判断する(ステップS41)。対象データがない場合(ステップS41のNoルート)、処理が終了する。一方、対象データがある場合(ステップS41のYesルート)、問題個所特定部214は、パス情報126を参照して、対象データから遅延要素(遅延コンポーネント)を特定する(ステップS42,図24の(b)参照)。
例えば、問題個所特定部214は、図24に示すように対象データのうちのURL1が遅延する一方、URL2が正常であり、URL1にはURL2に含まれないコンポーネントp3.aがある場合、p3.aを遅延原因の要素と推定する。
次いで、問題個所特定部214は、ステップS42で特定した要素があるか否か、つまり要素が特定されたか否かを判断する(ステップS43)。特定した要素がない場合(ステップS43のNoルート)、処理がステップS46に移行する。一方、特定した要素がある場合(ステップS43のYesルート)、問題個所特定部214は、コンポーネント定義情報127を参照して、特定した要素にサブ要素(サブコンポーネント)があるか否かを判断する(ステップS44)。
特定要素にサブ要素がない場合(ステップS44のNoルート)、問題個所特定部214は、特定した要素を機能選別部212に出力し(ステップS45)、他に未処理の要素があるか否かを判断する(ステップS46)。未処理の要素がある場合(ステップS46のYesルート)、処理がステップS41に移行する。一方、未処理の要素がない場合(ステップS46のNoルート)、処理が終了する。
また、特定要素にサブ要素がある場合(ステップS44のYesルート)、問題個所特定部214は、コンポーネント定義情報127(又はpid対応表125)を参照して特定要素をサブ要素に展開する(図24の(c)参照)。そして、問題個所特定部214は、展開したサブ要素を対象データとして(ステップS47)、ステップS41の処理を再度実行する。
なお、サブ要素について、ステップS41のYesルートを経てステップS42の処理が実行されると、問題個所特定部214は、図24の(d)に示すように、要素p3.2を遅延要素として特定する。要素p3.2には、サブ要素はないため、問題個所特定部214は、コンポーネント定義情報127を参照して、特定した要素p3.2に関する以下の情報を、結果出力部215に出力する(図24の(e)参照)。
特定した要素:p3.2=c4=com.lang.Java.Foo1#Meth2
以上により、問題個所特定部214による分析処理が終了する。
〔2〕適用事例
次に、図25を参照しながら、一実施形態に係る分析装置200の適用事例を説明する。図25に示すパス情報126は、以下のように表すことができる。
URL1=p1-p2.a(p2.1) -p3.a(p3.1-p3.2-p3.3)
URL2=p1-p2.b(p2.1-p2.2)-p3.b(p3.1 -p3.3)
・コンポーネントp3.2が遅延原因の場合
コンポーネントp3.2が遅延原因の場合、コンポーネントp3.2はURL1のみに含まれるため、問題個所特定部214は、サービスURL1及びURL2について以下の判定をする。
URL1:遅延
URL2:正常
このとき、問題個所特定部214は、パス情報126に基づくマトリクスによる分析によって、遅延が生じているURL1にのみ存在するコンポーネントp2.a又はp3.aが遅延の原因であると推定する。
次いで、問題個所特定部214は、コンポーネントp2及びp3について、それぞれ細粒度化(サブコンポーネントに展開)する。問題個所特定部214は、例えばp2についてマトリクスに基づく分析を行なうが、遅延が生じているp2.aにのみ存在するコンポーネントは存在しないため、原因個所は特定されない。
×p2.a=p2.1
○p2.b=p2.1-p2.2
一方、問題個所特定部214は、p3についてマトリクスに基づく分析を行ない、遅延が生じているp3.aにのみ存在するコンポーネントp3.2を原因個所として抽出(推定)することができる。
×p3.a=p3.1-p3.2-p3.3
○p3.b=p3.1 -p3.3
・コンポーネントp2.2が遅延原因の場合
コンポーネントp2.2が遅延原因の場合、コンポーネントp2.2はURL2のみに含まれるため、問題個所特定部214は、サービスURL1及びURL2について以下の判定をする。
URL1:正常
URL2:遅延
このとき、問題個所特定部214は、パス情報126に基づくマトリクスによる分析によって、遅延が生じているURL2にのみ存在するコンポーネントp2.b又はp3.bが遅延の原因であると推定する。
次いで、問題個所特定部214は、コンポーネントp2及びp3について、それぞれ細粒度化(サブコンポーネントに展開)する。問題個所特定部214は、例えばp2についてマトリクスに基づく分析を行ない、遅延が生じているp2.bにのみ存在するコンポーネントp2.2を原因個所として抽出(推定)することができる。
○p2.a=p2.1
×p2.b=p2.1-p2.2
一方、問題個所特定部214は、p3についてマトリクスに基づく分析を行なうが、遅延が生じているp3.bにのみ存在するコンポーネントは存在しないため、原因個所は特定されない。
○p3.a=p3.1-p3.2-p3.3
×p3.b=p3.1 -p3.3
本適用事例を(方式1)及び(方式2)の手法で分析した場合、URL1及びURL2におけるp2及びp3はいずれもp2及びp3としてまとめられるため、URL1及びURL2は一致してしまい、遅延原因として何も検出されない。
これに対し、一実施形態に係る分析装置200によれば、図25に示すように複数個所で、モジュールを所定の粒度(所定の階層)でコンポーネント化していても、正確に異常処理を推定することができる。また、粒度を粗く(上位の階層で処理をグルーピング)しても原因個所の判定を正確に行なうことができる。さらに、原因個所の可能性があるコンポーネントについてのみ、コンポーネントを展開し階層的な分析を繰り返すので、サービス全体を細粒度で分析する場合と対比して、リアルタイム性を損なうことなく高速に原因個所の分析・推定をすることが可能になる。
〔3〕変形例
一実施形態に係る分析装置100又は200は、上述したものに限定されるものではない。以下、一実施形態に係る分析装置100又は200の変形例について説明する。
〔3−1〕第1変形例
一実施形態に係る分析装置200は、最も粗い(トップレベルの)粒度で分析を開始するものとして説明したが、これに限定されるものではない。
すなわち、一実施形態に係る分析装置200(問題個所特定部214)は、粗い粒度から分析処理を開始し、コンポーネントの共通性等により細かい粒度を展開して処理を行なうが、細粒度から分析を開始してもよい。
例えば、ユーザが予め分析開始の粒度レベルを設定しておくことで、分析装置200(問題個所特定部214)は、パス情報126を設定した粒度レベルまで展開した状態から分析を開始してもよい。
図26は、第1変形例に係る粒度レベルの設定例を説明する図である。ユーザ等は、例えば予めレベル2やレベル3等の粒度レベルを分析装置200に通知(設定)しておき、分析装置200は、通知された粒度レベルを記憶部220等に記憶する。なお、分析装置200は、パス情報126とコンポーネント定義情報127(或いはpid対応表125)とに基づき、設定された粒度レベルを認識することができる。
例えば、一実施形態に係る分析装置200(問題個所特定部214)が、図26に示すレベル1のパス情報126が入力され、サービスURL1及びURL2について以下の判定をした場合を想定する。
URL1:遅延
URL2:正常
この場合、一実施形態に係る分析装置200は、レベル1から分析処理を開始し、コンポーネントp1及びp2は絞り込みにより原因候補から外れるため、レベル2のp3.a及びp3.bを展開して、更なる分析処理を行なう。
一方、第1変形例に係る分析装置200(問題個所特定部214)は、仮に粒度レベル2から処理を開始することが設定(定義)されている場合、以下のようにパス情報126をレベル2に展開した状態から分析処理を開始する。
URL1=p1-p2-p3.1-p3.2.a
URL2=p1-p2-p3.1-p3.2.b
第1変形例に係る分析装置200は、上記のようにレベル2に展開したパス情報126に入力例の遅延/正常を当てはめると、コンポーネントp1,p2及びp3.1は絞り込みにより原因候補から外れる。そこで、第1変形例に係る分析装置200は、レベル2に展開したパス情報126を、さらにレベル3(p3.2.a及びp3.2.b)に展開して、分析装置を行なう。
このように、分析装置200は、問題個所特定部214の分析処理において、1以上のサービスに含まれる処理のうちのグループ化されたコンポーネントについては、コンポーネント定義情報127に基づき所定の階層よりも下位の階層の1以上の処理に展開してから、異常の有無を判断する。
このようにすることで、コンポーネント定義を最も粗い粒度としたパス情報126が簡素な場合(細粒度に展開して分析することが明らかな場合)、第1変形例に係る分析装置200は、設定された粒度レベルまで初めから展開した状態で分析を開始できる。従って、第1変形例に係る分析装置200によれば、異常処理の検出時間を短縮することができる。
〔3−2〕第2変形例
第1変形例では、粒度レベルをユーザが設定するものとして説明したが、これに限定されるものではない。例えば、第2変形例に係る分析装置200は、第1変形例に係る分析装置200に加えて、データの傾向を学習して分析開始粒度を決定する(所定の階層を他の階層に変化させる)機能をそなえてもよい。
例えば、第2変形例に係る分析装置200は、所定の回数、パスの状態変化の検出及び問題個所の分析を繰り返すことで、遅延原因となる可能性の高いコンポーネントを学習することができる。この学習結果は、例えば分析装置200がpid対応表125やコンポーネント定義情報127等に対して、遅延原因と推定したコンポーネントに累積の推定回数を設定すること等により管理することができる。
そして、第2変形例に係る分析装置200は、学習結果に基づき、遅延原因となる可能性の高いコンポーネント(及び当該コンポーネントの近傍のコンポーネント等)を予め細粒度に展開した状態で、分析処理を行なう。なお、分析装置200は、学習結果に基づきパス情報126やコンポーネント定義情報127等を更新してもよい。
なお、分析装置200が予め展開するコンポーネントは、1つでも複数でもよい。分析装置200が「いくつのコンポーネントを展開するか」や「どのレベルまで展開するか」は、ユーザによる設定や計算リソースによる自動制限等の手法で決定することができる。
このように、第2変形例に係る分析装置200によれば、実際に遅延原因となったコンポーネントを学習し、遅延原因となる可能性の高いコンポーネント等に対して、上述した第1変形例を適用することができる。従って、遅延原因となる可能性の高いコンポーネントについて、初めから展開した状態で分析を開始できるため、異常処理の検出時間をさらに短縮することができる。
〔3−3〕第3変形例
一実施形態に係る分析装置100は、ログ採取部111が採取した詳細ログ121に基づいて、コンポーネント定義情報127を生成するものとして説明したが、これに限定されるものではない。
例えば、分析装置200は、ユーザが定義して記憶部220に格納したコンポーネント定義情報127(及びパス情報126等)を用いてもよい。この場合、分析装置100はコンポーネント定義情報127等の生成を省略することができる。また、分析装置100は、ユーザにより定義されたコンポーネント定義情報127等の内容を考慮して他の情報(例えばpid対応表125等)を生成してもよい。なお、分析装置200は、分析装置100により生成され、ユーザによって更新(加工)されたコンポーネント定義情報127等を用いてもよい。
例えばアプリケーションやネットワーク、システム全体の設計等の段階で、頻繁に使用される(遅延原因になる可能性が高い)モジュールがわかっている場合、ユーザは、当該モジュールを考慮してコンポーネント定義情報127を定義することができる。例えば、ユーザは、頻繁に使用されるモジュールを含むコンポーネントについては、比較的細粒度或いは最細粒度でコンポーネントを定義することができる。なお、ユーザは、使用される頻度が低い(遅延原因になる可能性が低い)モジュールについては、粗い粒度でコンポーネントを定義してもよい。
これにより、遅延原因となる可能性の高いコンポーネントについて、初めから展開した状態で分析を開始できるため、異常処理の検出時間を短縮することができる。
〔3−4〕第4変形例
また、分析装置200は、分析結果を学習してコンポーネント定義情報127(及びパス情報126等)を動的に変更してもよい。
例えば、あるレベル(階層)のコンポーネントにおいて、次(下位)のレベルのコンポーネント(サブコンポーネント)の数が多く、且つ当該あるレベルのコンポーネントが遅延原因と判定される頻度が高い場合がある。このような場合、分析装置200は、当該コンポーネントを分割して複数のコンポーネントとして定義しなおしてコンポーネント定義情報127等を更新することで、分析の効率を上げることができる。
〔4〕その他
以上、本発明の好ましい実施形態及び変形例について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、上述した実施形態では、URL内のパラメータやアプリケーションのモジュールを対象とした場合について説明したが、本発明は、これに限定されるものではない。例えば、本発明は、POSTメソッドやHTTP(Hypertext Transfer Protocol)ヘッダのパラメータ等にも同様に適用され、上述と同様の効果を奏することができる。
また、図1に示す事前分析フェーズ1Aの構成は、分析装置100を含めて、pid対応表125やサービス情報(パス情報126及びコンポーネント定義情報127)等の生成及び分析装置200への保存が完了した後は、撤去(削除)されてもよい。すなわち、事前分析フェーズ1A(分析装置100)は、運用フェーズ1Bで用いるサービス情報等を生成するための構成であるため、サービス情報等の生成・保存後は少なくとも分析装置100は不要となる。
また、上述した各変形例において、コンポーネント定義情報127のほかにパス情報126やpid対応表125等がユーザによって生成されてもよく、この場合、事前分析フェーズ1A(少なくとも分析装置100)を省略してもよい。
〔5〕付記
以上の実施形態及び各変形例に関し、さらに以下の付記を開示する。
(付記1)
複数の階層を持つ処理を複数含むサービスについて、サービスごとの各処理を共通する階層の有無を考慮して所定の階層でグルーピングしたサービス情報を記憶し、
複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれる処理について、異常の有無を判断する第1の判断処理を行ない、
異常と判断された処理がグルーピングされたグルーピング処理である場合、前記サービス情報に基づき、前記異常と判断されたグルーピング処理を前記所定の階層よりも下位の階層の一以上の処理に展開して、展開した一以上の処理について異常の有無を判断する第2の判断処理を行なう、
ことを特徴とする、分析方法。
(付記2)
前記サービス情報は、サービスごとに、サービスに含まれるグルーピング処理を対応付けた第1の情報を含み、
前記第1の情報に、第1のサービスに含まれる第1のグルーピング処理と、第2のサービスに含まれ、グルーピングされた複数の処理のうちの一部の処理のみが前記第1のグルーピング処理と共通する第2のグルーピング処理と、を互いに区別可能に記憶する、
ことを特徴とする、付記1記載の分析方法。
(付記3)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記第1の判断処理において、前記一以上のサービスに含まれる処理のうちのグルーピング処理については、前記第2の情報に基づき前記所定の階層よりも下位の階層の一以上の処理に展開してから、異常の有無を判断する、
ことを特徴とする、付記1又は付記2記載の分析方法。
(付記4)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記第2の判断処理の処理結果を記憶し、
記憶した処理結果に基づき、前記所定の階層を他の階層に変化させる、
ことを特徴とする、付記1又は付記2記載の分析方法。
(付記5)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記第2の判断処理の処理結果を記憶し、
記憶した処理結果に基づき、所定のグルーピング処理を分割して複数のグルーピング処理とする、
ことを特徴とする、付記1又は付記2記載の分析方法。
(付記6)
前記第2の判断処理において、
異常と判断された処理がグルーピング処理である場合、異常と判断された処理がグルーピング処理でなくなるまで、段階的に前記異常と判断された処理をさらに下位の階層の一以上の処理に展開して、展開した一以上の処理について異常の有無を判断する、
ことを特徴とする、付記1〜5のいずれか1項記載の分析方法。
(付記7)
複数のサービスに関する前記ログデータに基づき、各サービスの状態に正常及び異常の状態が混在しない時間区間を取得し、
前記第1の判断処理において、
取得した時間区間に実行された一以上のサービスに含まれる処理について、異常の有無を判断する、
ことを特徴とする、付記1〜6のいずれか1項記載の分析方法。
(付記8)
複数の階層を持つ処理を複数含むサービスについて、サービスごとの各処理を共通する階層の有無を考慮して所定の階層でグルーピングしたサービス情報を記憶する記憶部と、
複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれる処理について、異常の有無を判断する第1の判断処理を行なう第1判断部と、
異常と判断された処理がグルーピングされたグルーピング処理である場合、前記サービス情報に基づき、前記異常と判断されたグルーピング処理を前記所定の階層よりも下位の階層の一以上の処理に展開して、展開した一以上の処理について異常の有無を判断する第2の判断処理を行なう第2判断部と、をそなえる
ことを特徴とする、分析装置。
(付記9)
前記サービス情報は、サービスごとに、サービスに含まれるグルーピング処理を対応付けた第1の情報を含み、
前記記憶部は、第1のサービスに含まれる第1のグルーピング処理と、第2のサービスに含まれ、グルーピングされた複数の処理のうちの一部の処理のみが前記第1のグルーピング処理と共通する第2のグルーピング処理と、を互いに区別可能に設定された前記第1の情報を記憶する、
ことを特徴とする、付記8記載の分析装置。
(付記10)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記第1判断部は、前記一以上のサービスに含まれる処理のうちのグルーピング処理については、前記第2の情報に基づき前記所定の階層よりも下位の階層の一以上の処理に展開してから、異常の有無を判断する、
ことを特徴とする、付記8又は付記9記載の分析装置。
(付記11)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記記憶部は、前記第2の判断処理の処理結果を記憶し、
記憶した処理結果に基づき、前記所定の階層を他の階層に変化させる、
ことを特徴とする、付記8又は付記9記載の分析装置。
(付記12)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記記憶部は、前記第2の判断処理の処理結果を記憶し、
記憶した処理結果に基づき、所定のグルーピング処理を分割して複数のグルーピング処理とする、
ことを特徴とする、付記8又は付記9記載の分析装置。
(付記13)
前記第2判断部は、
異常と判断された処理がグルーピング処理である場合、異常と判断された処理がグルーピング処理でなくなるまで、段階的に前記異常と判断された処理をさらに下位の階層の一以上の処理に展開して、展開した一以上の処理について異常の有無を判断する、
ことを特徴とする、付記8〜12のいずれか1項記載の分析装置。
(付記14)
複数のサービスに関する前記ログデータに基づき、各サービスの状態に正常及び異常の状態が混在しない時間区間を取得する取得部をさらにそなえ、
前記第1判断部は、
取得した時間区間に実行された一以上のサービスに含まれる処理について、異常の有無を判断する、
ことを特徴とする、付記8〜13のいずれか1項記載の分析装置。
(付記15)
コンピュータに、
複数の階層を持つ処理を複数含むサービスについて、サービスごとの各処理を共通する階層の有無を考慮して所定の階層でグルーピングしたサービス情報を記憶し、
複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれる処理について、異常の有無を判断する第1の判断処理を行ない、
異常と判断された処理がグルーピングされたグルーピング処理である場合、前記サービス情報に基づき、前記異常と判断されたグルーピング処理を前記所定の階層よりも下位の階層の一以上の処理に展開して、展開した一以上の処理について異常の有無を判断する第2の判断処理を行なう、
処理を実行させることを特徴とする、分析プログラム。
(付記16)
前記サービス情報は、サービスごとに、サービスに含まれるグルーピング処理を対応付けた第1の情報を含み、
前記コンピュータに、
前記第1の情報に、第1のサービスに含まれる第1のグルーピング処理と、第2のサービスに含まれ、グルーピングされた複数の処理のうちの一部の処理のみが前記第1のグルーピング処理と共通する第2のグルーピング処理と、を互いに区別可能に記憶する、
処理を実行させることを特徴とする、付記15記載の分析プログラム。
(付記17)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記第1の判断処理において、前記一以上のサービスに含まれる処理のうちのグルーピング処理については、前記第2の情報に基づき前記所定の階層よりも下位の階層の一以上の処理に展開してから、異常の有無を判断する、
ことを特徴とする、付記15又は付記16記載の分析プログラム。
(付記18)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記コンピュータに、
前記第2の判断処理の処理結果を記憶し、
記憶した処理結果に基づき、前記所定の階層を他の階層に変化させる、
処理を実行させることを特徴とする、付記15又は付記16記載の分析プログラム。
(付記19)
前記サービス情報は、グルーピング処理に含まれる処理をグルーピングされた階層ごとに示す第2の情報を含み、
前記コンピュータに、
前記第2の判断処理の処理結果を記憶し、
記憶した処理結果に基づき、所定のグルーピング処理を分割して複数のグルーピング処理とする、
処理を実行させることを特徴とする、付記15又は付記16記載の分析プログラム。
(付記20)
前記第2の判断処理において、
異常と判断された処理がグルーピング処理である場合、異常と判断された処理がグルーピング処理でなくなるまで、段階的に前記異常と判断された処理をさらに下位の階層の一以上の処理に展開して、展開した一以上の処理について異常の有無を判断する、
ことを特徴とする、付記15〜19のいずれか1項記載の分析プログラム。
(付記21)
前記コンピュータに、
複数のサービスに関する前記ログデータに基づき、各サービスの状態に正常及び異常の状態が混在しない時間区間を取得する、
処理を実行させ、
前記第1の判断処理において、
取得した時間区間に実行された一以上のサービスに含まれる処理について、異常の有無を判断する、
ことを特徴とする、付記15〜20のいずれか1項記載の分析プログラム。
1 ネットワークシステム
1A 事前分析フェーズ
1B 運用フェーズ
10 ネットワーク
20 サーバ
30 Webサーバ
40 AP(アプリケーション)サーバ
50 ネットワークスイッチ(NS)
100,200 分析装置
110,210 処理部
120,220 記憶部
111,211 ログ採取部
112 ログ加工部
113 機能抽出部
114 サービス情報生成部
121 アクセスログ
122 紐付け結果
123 cid対応表
124 cidセット表
125 pid対応表
126 パス情報(第1の情報)
127 コンポーネント定義情報(第2の情報)
212 機能選別部
213 データスライス分割部(取得部)
214 問題個所特定部(第1判断部,第2判断部)
221 アクセスログ
400 通知画面
401 ラベル
410 詳細表示画面
411 ボタン
URL1,URL2,URL3,URL4 サービス
c1,c2,c3,c4,c5 モジュール
p1,p2,p3,p4,p5 コンポーネント
p2.1,p2.2,p2.a,p2.b コンポーネント
p3.1,p3.2,p3.3,p3.a,p3.b コンポーネント

Claims (8)

  1. 複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールをグルーピングしたコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶し、
    前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行ない、
    異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを前記グルーピングモジュールのトップレベルよりも下位の処単位に展開して、展開した各モジュールのうち、異常であるモジュールが含み正常であるモジュールが含まない処理単位を異常判断する第2の判断処理を行なう、
    ことを特徴とする、分析方法
  2. 複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールを少なくとも1つ共通するモジュールとして相互に含む複数のグルーピングモジュールを定義するコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶し、
    前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行ない、
    異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを含む複数のグルーピングモジュールについて、異常であるグルーピングモジュールが含み正常であるグルーピングモジュールが含まないモジュールを異常と判断する第2の判断処理を行なう、
    ことを特徴とする、分析方法。
  3. 前記第2の判断処理において、
    異常と判断されたモジュールがグルーピングモジュールである場合、異常と判断されたモジュールがグルーピングモジュールでなくなるまで、段階的に前記異常と判断されたモジュールをさらに下位の階層の一以上のモジュールに展開して、展開した一以上のモジュールについて異常の有無を判断する、
    ことを特徴とする、請求項2に記載の分析方法。
  4. 複数のサービスに関する前記ログデータに基づき、各サービスにおいて正常状態及び異常状態が混在しない時間区間を取得し、
    前記第1の判断処理において、
    取得した時間区間に実行された一以上のサービスに含まれるモジュールについて、異常の有無を判断する、
    ことを特徴とする、請求項1〜のいずれか1項記載の分析方法。
  5. 複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールをグルーピングしたコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶する記憶部と、
    前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行なう第1判断部と、
    異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを前記グルーピングモジュールのトップレベルよりも下位の処単位に展開して、展開した各モジュールのうち、異常であるモジュールが含み正常であるモジュールが含まない処理単位を異常判断する第2の判断処理を行なう第2判断部と、をそなえる
    ことを特徴とする、分析装置。
  6. 複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールを少なくとも1つ共通するモジュールとして相互に含む複数のグルーピングモジュールを定義するコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶する記憶部と、
    前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行なう第1判断部と、
    異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを含む複数のグルーピングモジュールについて、異常であるグルーピングモジュールが含み正常であるグルーピングモジュールが含まないモジュールを異常と判断する第2の判断処理を行なう第2判断部と、をそなえる、
    ことを特徴とする、分析装置。
  7. コンピュータに、
    複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールをグルーピングしたコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶し、
    前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行ない、
    異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを前記グルーピングモジュールのトップレベルよりも下位の処単位に展開して、展開した各モジュールのうち、異常であるモジュールが含み正常であるモジュールが含まない処理単位を異常判断する第2の判断処理を行なう、
    処理を実行させることを特徴とする、分析プログラム。
  8. コンピュータに、
    複数の階層を持つモジュールを複数含む複数のサービスについて、前記の各サービスを構成するモジュールについて、前記の各モジュールの下位階層の処理単位が共通するモジュールを少なくとも1つ共通するモジュールとして相互に含む複数のグルーピングモジュールを定義するコンポーネント定義情報と、サービスがどのグルーピングされたモジュールによって構成されているかを示すパス情報とをサービス情報として記憶し、
    前記複数のサービスに関するログデータ及び前記サービス情報に基づき、一以上のサービスに含まれるモジュールについて、異常の有無を判断する第1の判断処理を行ない、
    異常と判断されたモジュールがグルーピングされたグルーピングモジュールである場合、前記サービス情報に基づき、前記異常と判断されたグルーピングモジュールを含む複数のグルーピングモジュールについて、異常であるグルーピングモジュールが含み正常であるグルーピングモジュールが含まないモジュールを異常と判断する第2の判断処理を行なう、
    処理を実行させることを特徴とする、分析プログラム。
JP2014086154A 2014-04-18 2014-04-18 分析方法、分析装置、及び分析プログラム Active JP6295801B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014086154A JP6295801B2 (ja) 2014-04-18 2014-04-18 分析方法、分析装置、及び分析プログラム
US14/668,141 US9720751B2 (en) 2014-04-18 2015-03-25 Analysis method, analysis apparatus and computer-readable recording medium having stored therein analysis program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014086154A JP6295801B2 (ja) 2014-04-18 2014-04-18 分析方法、分析装置、及び分析プログラム

Publications (2)

Publication Number Publication Date
JP2015207079A JP2015207079A (ja) 2015-11-19
JP6295801B2 true JP6295801B2 (ja) 2018-03-20

Family

ID=54322110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014086154A Active JP6295801B2 (ja) 2014-04-18 2014-04-18 分析方法、分析装置、及び分析プログラム

Country Status (2)

Country Link
US (1) US9720751B2 (ja)
JP (1) JP6295801B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6828558B2 (ja) * 2017-03-30 2021-02-10 富士通株式会社 管理装置、管理方法及び管理プログラム
US11018949B2 (en) * 2017-07-14 2021-05-25 Accenture Global Solutions Limited System for generating an architecture diagram
CN107798235B (zh) * 2017-10-30 2020-01-10 清华大学 基于one-hot编码机制的无监督异常访问检测方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3863423B2 (ja) * 2001-12-17 2006-12-27 Necエレクトロニクス株式会社 論理回路の故障箇所推定方法、および、論理回路の故障箇所推定プログラム
JP4737624B2 (ja) * 2006-03-06 2011-08-03 株式会社日立ソリューションズ アプリケーションの障害原因の特定作業支援システム
JP5040136B2 (ja) 2006-03-27 2012-10-03 富士通セミコンダクター株式会社 チューニング支援装置、チューニング支援プログラム、チューニング支援プログラムを記録したコンピュータ読み取り可能な記録媒体およびチューニング支援方法
US8286135B2 (en) * 2006-10-17 2012-10-09 Cray Inc. Performance visualization including hierarchical display of performance data
US7685475B2 (en) * 2007-01-09 2010-03-23 Morgan Stanley Smith Barney Holdings Llc System and method for providing performance statistics for application components
JP5299272B2 (ja) 2007-04-12 2013-09-25 富士通株式会社 分析プログラムおよび分析装置
US20100138833A1 (en) * 2008-12-01 2010-06-03 Microsoft Corporation Resource coverage and analysis
US8407321B2 (en) * 2010-04-21 2013-03-26 Microsoft Corporation Capturing web-based scenarios
US8566800B2 (en) * 2010-05-11 2013-10-22 Ca, Inc. Detection of method calls to streamline diagnosis of custom code through dynamic instrumentation
US9251032B2 (en) 2011-11-03 2016-02-02 Fujitsu Limited Method, computer program, and information processing apparatus for analyzing performance of computer system
CN103378982A (zh) * 2012-04-17 2013-10-30 深圳市腾讯计算机系统有限公司 互联网业务运行监测方法和系统

Also Published As

Publication number Publication date
US20150301866A1 (en) 2015-10-22
US9720751B2 (en) 2017-08-01
JP2015207079A (ja) 2015-11-19

Similar Documents

Publication Publication Date Title
JP6264849B2 (ja) 分析方法、分析装置、及び分析プログラム
Sprenkle et al. An empirical comparison of test suite reduction techniques for user-session-based testing of web applications
CN110928772B (zh) 一种测试方法及装置
JP6217212B2 (ja) テストプログラム、テスト方法及びテスト装置
US8850393B2 (en) Method and apparatus for testing software
Deissenboeck et al. Model clone detection in practice
US8024617B2 (en) Method and apparatus for cause analysis involving configuration changes
Yandrapally et al. Robust test automation using contextual clues
US20150269058A1 (en) Completing functional testing
US20110145793A1 (en) Method and apparatus to semantically connect independent build and test processes
CN109144882A (zh) 一种基于程序不变量的软件故障定位方法及装置
US20060288149A1 (en) Generating static performance modeling factors in a deployed system
JP2008242540A (ja) テスト仕様書生成プログラム、およびテスト仕様書生成装置
JP6295801B2 (ja) 分析方法、分析装置、及び分析プログラム
CN106156355A (zh) 日志处理方法及装置
US9342784B1 (en) Rule based module for analyzing computing environments
CN101308471A (zh) 一种恢复数据的方法及装置
US20230004487A1 (en) System and method for anomaly detection and root cause automation using shrunk dynamic call graphs
De Pauw et al. Discovering conversations in web services using semantic correlation analysis
CN103713995A (zh) 潜在缺陷识别
Sandeep et al. CLUEBOX: A Performance Log Analyzer for Automated Troubleshooting.
Luo et al. Clustering and tailoring user session data for testing web applications
JP2010009127A (ja) 管理プログラムおよび管理装置
Wong et al. An approach towards designing a prescriptive analytical logic model for software application root cause analysis
JP6601232B2 (ja) 分析方法、分析装置、及び分析プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180115

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180123

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180205

R150 Certificate of patent or registration of utility model

Ref document number: 6295801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150