(57)【要約】【課題】メッセージを分類する分類パターンの作成の効率化を図ること。【解決手段】分類パターン作成装置１００は、ＳＱＬデータを粗く分類した後に、所定の閾値に達するまで、分類パターンを分解する。具体的に、分類パターン作成装置１００は、第１のパターン文字列ｐ１に適合するＳＱＬデータ群１１１に含まれるＳＱＬデータに対応して、ＳＱＬデータのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。続けて、分類パターン作成装置１００は、部分文字列に対応して、部分文字列を含むＳＱＬデータを検出する。そして、分類パターン作成装置１００は、部分文字列に対応して検出したＳＱＬデータに基づいて、ＳＱＬデータに対応して抽出した部分文字列からいずれかの部分文字列を特定する。続けて、分類パターン作成装置１００は、特定した部分文字列を用いて、新たな分類パターンｐ２を作成する。【選択図】図１
2015022732.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第１のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する、
処理を実行することを特徴とする分類パターン作成方法。
【請求項２】
前記特定する処理は、
前記部分文字列に対応して検出した前記メッセージの個数に基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする請求項１に記載の分類パターン作成方法。
【請求項３】
前記メッセージ群に含まれるメッセージは、サーバに処理を要求するメッセージであり、
前記特定する処理は、
前記メッセージ群の各々のメッセージと、前記各々のメッセージが前記サーバに送信されてから前記サーバから応答があるまでの応答時間と、を関連付けた情報を参照して、前記部分文字列に対応して検出した前記メッセージが前記サーバに送信されてから前記サーバから応答があるまでの応答時間に基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする請求項１または２に記載の分類パターン作成方法。
【請求項４】
前記特定する処理は、
前記情報を参照して、前記部分文字列に対応して検出した前記メッセージの前記応答時間を累積した合計応答時間に基づいて、前記メッセージに対応して検出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする請求項３に記載の分類パターン作成方法。
【請求項５】
前記メッセージ群は、前記コンピュータに接続されたサーバによって送信または受信されたメッセージであり、
前記コンピュータが、
前記サーバによって送信または受信されたメッセージ群を取得し、
取得した前記サーバによって送信または受信されたメッセージ群が前記第２のパターン文字列に適合する割合を算出する、
処理を実行することを特徴とする請求項１〜４のいずれか一つに記載の分類パターン作成方法。
【請求項６】
前記コンピュータが、
算出した前記割合に基づいて、前記第２のパターン文字列を再度作成するか否かを判断する、処理を実行し、
前記部分文字列を抽出する処理は、
前記第２のパターン文字列を再度作成すると判断した場合、取得した前記サーバによって送信または受信されたメッセージ群のうちの前記第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出することを特徴とする請求項５に記載の分類パターン作成方法。
【請求項７】
前記コンピュータが、
前記第２のパターン文字列を作成した場合、前記メッセージ群が前記第２のパターン文字列に適合する割合を算出し、
前記メッセージ群が前記第２のパターン文字列に適合する割合と、取得した前記サーバによって送信または受信されたメッセージ群が前記第２のパターン文字列に適合する割合との差に基づいて、前記第２のパターン文字列を削除するか否かを判断し、
前記第２のパターン文字列を再度作成すると判断し、かつ、前記第２のパターン文字列を削除すると判断した場合、前記サーバによって送信または受信されたメッセージ群を取得する前に作成した前記第２のパターン文字列を削除する、
処理を実行することを特徴とする請求項６に記載の分類パターン作成方法。
【請求項８】
プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する抽出部と、
前記抽出部が抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出する検出部と、
前記部分文字列に対応して前記検出部が検出した前記メッセージに基づいて、前記メッセージに対応して前記抽出部が抽出した前記部分文字列からいずれかの部分文字列を特定する特定部と、
前記第１のパターン文字列と前記特定部が特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する作成部と、
を有することを特徴とする分類パターン作成装置。
【請求項９】
コンピュータに、
プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第１のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する、
処理を実行させることを特徴とする分類パターン作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分類パターン作成方法、分類パターン作成装置、および分類パターン作成プログラムに関する。
【背景技術】
【０００２】
従来、メッセージ群を分類して、分類結果に従ってメッセージを分析する技術がある。関連する技術として、たとえば、形態素解析結果によりテキストデータに繰り返し出現する単語の組合せから検出した頻出パターンを属性とする各テキストデータの特徴パターンと、テキストデータのクラスを指定するクラスデータとを基に分類ルールを作成する技術がある。また、出現頻度が閾値以上となるメッセージのメタデータをキーワードとし、キーワードに関連する第１のフィルタとキーワードに関連しない第２のフィルタとに分け、キーワードごとの第１のフィルタグループと第２のフィルタグループとを作成する技術がある。（たとえば、下記特許文献１、２を参照。）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−２４０５１７号公報
【特許文献２】特開２０１２−１２３５３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、サーバが送受信するメッセージの分類パターンを作成することが困難である。たとえば、サーバが送受信するメッセージの傾向を特定することが困難であると、分類パターンの作成基準を決定することが困難となる。
【０００５】
１つの側面では、本発明は、メッセージを分類する分類パターンを効率的に作成できる分類パターン作成方法、分類パターン作成装置、および分類パターン作成プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、抽出した部分文字列に対応して、メッセージ群から部分文字列を含むメッセージを検出し、部分文字列に対応して検出したメッセージに基づいて、メッセージに対応して抽出した部分文字列からいずれかの部分文字列を特定し、第１のパターン文字列と特定したいずれかの部分文字列とに基づいて、メッセージ群を分類する第２のパターン文字列を作成する分類パターン作成方法、分類パターン作成装置、および分類パターン作成プログラムが提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、メッセージを分類する分類パターンの作成の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態１にかかる分類パターン作成装置の動作例を示す説明図である。
【図２】図２は、実施の形態１にかかる分類パターン作成装置とシステム可視化装置と顧客システムとの接続例を示す説明図である。
【図３】図３は、分類パターン作成装置のハードウェア構成例を示すブロック図である。
【図４】図４は、システム可視化装置と分類パターン作成装置との機能構成例を示すブロック図である。
【図５】図５は、第１の分解例における基本分類表の記憶内容の一例を示す説明図である。
【図６】図６は、第１の分解例における予約語表の記憶内容の一例を示す説明図である。
【図７】図７は、第１の分解例におけるＳＱＬ学習用データの一例を示す説明図である。
【図８】図８は、第１の分解例におけるＳＱＬ分類パターン表の記憶内容の一例を示す説明図である。
【図９】図９は、第１の分解例におけるＳＱＬ学習用データの分類の一例を示す説明図である。
【図１０】図１０は、第１の分解例における分類パターンの分解の一例を示す説明図である。
【図１１】図１１は、第１の分解例におけるＳＱＬ分類パターンの更新の一例を示す説明図である。
【図１２】図１２は、第１の分解例における分類パターン作成処理手順の一例を示すフローチャートである。
【図１３】図１３は、第２の分解例におけるＳＱＬ学習用データの一例を示す説明図である。
【図１４】図１４は、第２の分解例におけるＳＱＬ分類パターン表の記憶内容の一例を示す説明図である。
【図１５】図１５は、第２の分解例における分類パターンの分解の一例を示す説明図である。
【図１６】図１６は、第２の分解例におけるＳＱＬ分類パターンの更新の一例を示す説明図である。
【図１７】図１７は、第２の分解例における分類パターン作成処理手順の一例を示すフローチャートである。
【図１８】図１８は、第３の分解例におけるＳＱＬ分類パターン表の記憶内容の一例を示す説明図である。
【図１９】図１９は、第３の分解例における分類パターンの分解の一例を示す説明図である。
【図２０】図２０は、第３の分解例におけるＳＱＬ分類パターンの更新の一例を示す説明図である。
【図２１】図２１は、第３の分解例における分類パターン作成処理手順の一例を示すフローチャートである。
【図２２】図２２は、システム可視化装置と実施の形態２にかかる分類パターン作成装置との機能構成例を示すブロック図である。
【図２３】図２３は、実施の形態２にかかる分類パターン再作成判定処理手順の一例を示すフローチャートである。
【図２４】図２４は、システム可視化装置と実施の形態３にかかる分類パターン作成装置の機能構成例を示すブロック図である。
【図２５】図２５は、実施の形態３にかかるＳＱＬ分類パターン表の記憶内容の例を示す説明図である。
【図２６】図２６は、実施の形態３にかかる分類パターン再作成判定処理手順の一例を示すフローチャートである。
【図２７】図２７は、実施の形態３にかかる分類パターン再作成処理手順の一例を示すフローチャート（その１）である。
【図２８】図２８は、実施の形態３にかかる分類パターン再作成処理手順の一例を示すフローチャート（その２）である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、開示の分類パターン作成方法、分類パターン作成装置、および分類パターン作成プログラムの実施の形態を詳細に説明する。
【００１０】
（実施の形態１）
図１は、実施の形態１にかかる分類パターン作成装置の動作例を示す説明図である。分類パターン作成装置１００は、メッセージ（電文）の分析を行うときに用いられる、メッセージを分類する分類パターンを作成するコンピュータである。メッセージは、プロトコルに従った文字列である。したがって、分類パターン作成装置１００は、プロトコルに対応付いた分類ルールを作成することになる。プロトコルとしては、アプリケーション層のプロトコルであるＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＩＩＯＰ（Ｉｎｔｅｒｎｅｔ  Ｉｎｔｅｒ−ＯＲＢ  Ｐｒｏｔｏｃｏｌ）、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）や、セッション層のプロトコルであるＳＱＬ等がある。以下の例では、ＳＱＬを例にして説明する。以下、ＳＱＬに従ったメッセージを、「ＳＱＬデータ」と呼称する。
【００１１】
分類パターンは、文字列の並びを表現するパターン文字列で表されている。以下、パターン文字列を、単に、「分類パターン」と呼称する。分類パターンは、統計分析を行う分析者によって、ＳＱＬデータを閲覧して文字列マッチング用の正規表現を組み立てられる。この場合、分析対象のシステムが増改築されると、システム構成が複雑となり、結果、どのようなメッセージが出現するのか特定することが難しい。どのようなメッセージが出現するのか特定することが難しいと、分類パターンの作成基準を決定することが困難となる。また、ＳＱＬデータは、入れ子構造になる場合があり、分類パターンを作成するのが困難である。さらに、分類ルールで分類した結果による統計処理の結果が、統計分析を行う分析者の期待にそぐわない結果である場合、期待に沿うような分類ルールを作成することになる。この場合も、分析者が再度分類パターンを作成することはコストがかかる。
【００１２】
そこで、分類パターン作成装置１００は、予約語を含む分類パターンに適合したＳＱＬデータ群の中で予約語と対になる高頻出の文字列を、予約語に続く文字列とする分類パターンを作成する。これにより、分類パターン作製装置１００は、システム性能を左右するＳＱＬデータ群を分類するパターンを作成することができる。
【００１３】
分類パターン作成装置１００は、ＳＱＬデータを粗く分類した後に、所定の閾値に達するまで、分類パターンを分解する。具体的に、分類パターン作成装置１００は、第１のパターン文字列ｐ１に適合するＳＱＬデータ群１１１に含まれるＳＱＬデータに対応して、ＳＱＬデータのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。第１の分類パターンｐ１は、プロトコルにより定義された予約語を含む。また、第１の分類パターンｐ１は、分析対象のシステムに依存する文字列が含まれておらず、ＳＱＬの基本構文のいずれかにマッチするような正規表現で表される。第１のパターン文字列の例は、図５で示す。部分文字列は、予約語の直前または直後のうちのいずれか一方の文字列の重複がないように抽出する。
【００１４】
図１の例では、ＳＱＬデータ群１１１に含まれるメッセージとして、メッセージ１１１−１〜１１１−３がある。そして、第１の分類パターンｐ１に適合したＳＱＬデータ群の中にある予約語が、“ＳＥＬＥＣＴ”と、“ＦＲＯＭ”と、“ＷＨＥＲＥ”とである。ＳＱＬデータ群１１１の各ＳＱＬデータの中の、“ＳＥＬＥＣＴ”の直後の文字列としては、それぞれ、“＊”と、“ｉｄ，ｎａｍｅ”とがある。また、ＳＱＬデータ群１１１の各ＳＱＬデータの中の、“ＦＲＯＭ”の直後の文字列としては、“ＴＢＬ１”がある。さらに、ＳＱＬデータ群１１１の各ＳＱＬデータの中の、“ＷＨＥＲＥ”の直後の文字列としては、それぞれ、“ｎｕｍ＝’１００’”と、“ｃｏｄｅ＝’１００’”と、“ｎｕｍ  ＞  （ＳＥＬＥＣＴ  ＡＶＧ（ｎｕｍ）  ＦＲＯＭ  ＴＢＬ１）”とがある。
【００１５】
したがって、分類パターン作成装置１００は、予約語“ＳＥＬＥＣＴ”と直後の文字列からなる部分文字列として、“ＳＥＬＥＣＴ  ＊”と、“ＳＥＬＥＣＴ  ｉｄ，ｎａｍｅ”と、を抽出する。また、分類パターン作成装置１００は、予約語“ＦＲＯＭ”と直後の文字列からなる部分文字列として、“ＦＲＯＭ  ＴＢＬ１”を抽出する。さらに、分類パターン作成装置１００は、“ＷＨＥＲＥ”と直後の文字列からなる部分文字列として、“ＷＨＥＲＥ  ｎｕｍ＝’１００’”と、“ＷＨＥＲＥ  ｃｏｄｅ＝’１００’”と、を抽出する。さらに、分類パターン作成装置１００は、“ＷＨＥＲＥ”と直後の文字列からなる部分文字列として、“ＷＨＥＲＥ  ｎｕｍ  ＞  （ＳＥＬＥＣＴ  ＡＶＧ（ｎｕｍ）  ＦＲＯＭ  ＴＢＬ１）”を抽出する。
【００１６】
続けて、分類パターン作成装置１００は、部分文字列に対応して、部分文字列を含むＳＱＬデータを検出する。そして、分類パターン作成装置１００は、部分文字列に対応して検出したＳＱＬデータに基づいて、ＳＱＬデータに対応して抽出した部分文字列からいずれかの部分文字列を特定する。具体的には、分類パターン作成装置１００は、部分文字列を含むＳＱＬデータの数が最大となる部分文字列を特定してもよいし、部分文字列を含むＳＱＬデータの応答時間や応答時間の合計が最大となる部分文字列を特定してもよい。図１では、ＳＱＬデータの数が最大となる部分文字列を特定する例を用いる。
【００１７】
図１の例では、検出したＳＱＬデータの個数として、“ＳＥＬＥＣＴ  ＊”と、“ＳＥＬＥＣＴ  ｉｄ，ｎａｍｅ”を含むＳＱＬデータの個数は、それぞれ、２、１である。また、“ＦＲＯＭ  ＴＢＬ１”を含むＳＱＬデータの個数は、３である。さらに、“ＷＨＥＲＥ  ｎｕｍ＝’１００’”と、“ＷＨＥＲＥ  ｃｏｄｅ＝’１００’”と、“ＷＨＥＲＥ  ｎｕｍ  ＞  （ＳＥＬＥＣＴ  ＡＶＧ（ｎｕｍ）  ＦＲＯＭ  ＴＢＬ１）”を含むＳＱＬデータの個数は、それぞれ１、１、１である。
【００１８】
したがって、分類パターン作成装置１００は、部分文字列を含むＳＱＬデータの個数が最大となる部分文字列として、“ＦＲＯＭ  ＴＢＬ１”を特定する。そして、分類パターン作成装置１００は、特定した部分文字列を用いて、新たな分類パターンｐ２を作成する。具体的に、分類パターン作成装置１００は、分類パターンｐ２として、分類パターンｐ１の２つ目の（．＊）を“  ＴＢＬ１  ”に置き換えた、“／＾ＳＥＬＥＣＴ（．＊）ＦＲＯＭ  ＴＢＬ１  ＷＨＥＲＥ（．＊）＄／”とする。
【００１９】
続けて、分類パターン作成装置１００と、分類パターン作成装置１００が作成した分類パターンを利用するシステム可視化装置と、システム可視化装置が可視化するシステムとの関係を、図２を用いて説明する。
【００２０】
図２は、実施の形態１にかかる分類パターン作成装置とシステム可視化装置と顧客システムとの接続例を示す説明図である。顧客システム２０１は、システム可視化装置２０２と接続する。システム可視化装置２０２は、分類パターン作成装置１００と管理者端末２０３とに接続する。顧客システム２０１は、Ｗｅｂサーバ２１１と、アプリケーションサーバ２１２と、ＤＢ（ＤａｔａＢａｓｅ）サーバ２１３と、スイッチ２１４と、スイッチ２１５と、を有する。スイッチ２１４は、インターネットなどのネットワーク２０４に接続する。
【００２１】
顧客システム２０１は、分析対象となるシステムである。顧客システム２０１は、たとえば、会計システムであったり、人事システムであったりする。Ｗｅｂサーバ２１１は、ネットワーク２０４に接続されたクライアントソフトウェアのウェブブラウザに対して、ＨＴＭＬやオブジェクトの表示を提供する。アプリケーションサーバ２１２は、Ｗｅｂサーバ２１１とＤＢサーバ２１３との橋渡しを担うサーバであり、データの加工などを行う。ＤＢサーバ２１３は、顧客システム２０１が記憶する情報を蓄積する。
【００２２】
システム可視化装置２０２は、顧客システム２０１のスイッチ２１４とスイッチ２１５とからパケットを集約したのちメッセージとして組み立てて、メッセージを分析する。具体的には、システム可視化装置２０２は、サーバ間のデータ流量を分析したり、サーバ間の平均応答時間を分析したりする。たとえば、システム可視化装置２０２は、メッセージをＨＴＴＰ、ＩＩＯＰ等のプロトコルに分類し、プロトコルごとに、メッセージの平均応答時間、メッセージの分類結果の内訳等を解析する。
【００２３】
管理者端末２０３は、システム可視化装置２０２に顧客システム２０１の分析指示を行う。たとえば、顧客システム２０１に不具合が発生した場合や、キャパシティプランニングの一環として、管理者端末２０３は、管理者端末２０３を利用する管理者の操作により、システム可視化装置２０２に顧客システム２０１の分析指示を行う。そして、管理者端末２０３は、分析結果を表示する。
【００２４】
（分類パターン作成装置１００のハードウェア）
図３は、分類パターン作成装置のハードウェア構成例を示すブロック図である。図３では、分類パターン作成装置１００のハードウェア構成例を説明する。図３において、分類パターン作成装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０３と、を含む。また、分類パターン作成装置１００は、ディスクドライブ３０４およびディスク３０５と、通信インターフェース３０６と、を含む。また、ＣＰＵ３０１〜通信インターフェース３０６はバス３０７によってそれぞれ接続される。
【００２５】
ＣＰＵ３０１は、分類パターン作成装置１００の全体の制御を司る演算処理装置である。ＲＯＭ３０２は、ブートプログラムなどのプログラムを記憶する不揮発性メモリである。ＲＡＭ３０３は、ＣＰＵ３０１のワークエリアとして使用される揮発性メモリである。
【００２６】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリードおよびライトを制御する制御装置である。ディスクドライブ３０４には、たとえば、磁気ディスクドライブ、ソリッドステートドライブなどを採用することができる。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する不揮発性メモリである。たとえばディスクドライブ３０４が磁気ディスクドライブである場合、ディスク３０５には、磁気ディスクを採用することができる。また、ディスクドライブ３０４がソリッドステートドライブである場合、ディスク３０５には、半導体素子メモリを採用することができる。
【００２７】
通信インターフェース３０６は、ネットワークと内部のインターフェースを司り、他の装置からのデータの入出力を制御する制御装置である。具体的に、通信インターフェース３０６は、通信回線を通じてネットワークを介して他の装置に接続される。通信インターフェース３０６には、たとえば、モデムやＬＡＮアダプタなどを採用することができる。
【００２８】
また、システム可視化装置２０２と、Ｗｅｂサーバ２１１と、アプリケーションサーバ２１２と、ＤＢサーバ２１３と、スイッチ２１４と、スイッチ２１５とも、分類パターン作成装置１００と同様のハードウェア構成を有する。管理者端末２０３は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ディスクドライブ、ディスク、キーボード、マウスを有する。
【００２９】
（システム可視化装置２０２と分類パターン作成装置１００との機能）
次に、システム可視化装置２０２と分類パターン作成装置１００との機能について説明する。図４は、システム可視化装置と分類パターン作成装置との機能構成例を示すブロック図である。システム可視化装置２０２は、パケット受信部４０１と、メッセージ組立部４０２と、メッセージ分類部４０３と、メッセージ統計処理部４０４とを有する。パケット受信部４０１〜メッセージ統計処理部４０４は、記憶装置に記憶されたプログラムをシステム可視化装置２０２のＣＰＵが実行することにより、パケット受信部４０１〜メッセージ統計処理部４０４それぞれの機能を実現する。
【００３０】
また、分類パターン作成装置１００は、分類部４０５と、抽出部４０６と、検出部４０７と、特定部４０８と、作成部４０９と、を含む。制御部となる分類部４０５〜作成部４０９は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、分類部４０５〜作成部４０９それぞれの機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、分類部４０５〜作成部４０９は、記憶装置に記憶されたプログラムをシステム可視化装置２０２のＣＰＵが実行してもよい。
【００３１】
また、分類パターン作成装置１００は、基本分類表４１１と、予約語表４１２と、ＳＱＬ学習用データ４１３と、ＳＱＬ分類パターン表４１４と、ＨＴＴＰ分類パターン表４１５と、図示していないがＳＱＬ、ＨＴＴＰ以外の分類パターン表とにアクセス可能である。基本分類表４１１と、予約語表４１２と、ＳＱＬ学習用データ４１３は、ＲＡＭ３０３、ディスク３０５等の記憶装置に格納される。また、ＳＱＬ分類パターン表４１４と、ＨＴＴＰ分類パターン表４１５と、ＳＱＬ、ＨＴＴＰ以外のプロトコルの分類パターン表とは、システム可視化装置２０２のＲＡＭ、ディスクといった記憶装置に格納される。
【００３２】
基本分類表４１１については、図５で後述する。予約語表４１２については、図６で後述する。ＳＱＬ分類パターン表４１４については、図８、図１４、図１８で後述する。
【００３３】
ＳＱＬ学習用データ４１３は、顧客システム２０１のサーバによって送信または受信されたメッセージである。また、顧客システム２０１内の各サーバに処理を要求するメッセージであってもよい。ＳＱＬ学習用データ４１３については、図７、図１３で後述する。
【００３４】
パケット受信部４０１は、スイッチ２１４とスイッチ２１５とから顧客システム２０１で送受信されるパケットデータ４２１を受信する。メッセージ組立部４０２は、パケット受信部４０１が受信したパケットデータ４２１を組み立てて、メッセージを作成する。メッセージ分類部４０３は、メッセージ組立部４０２が組み立てたメッセージを、ＳＱＬ分類パターン表４１４、ＨＴＴＰ分類パターン表４１５、等に従って分類する。メッセージ統計処理部４０４は、メッセージ分類部４０３が分類したメッセージを統計分析する。メッセージ統計処理部４０４は、分析結果を管理者端末２０３に送信する。
【００３５】
分類部４０５は、ＳＱＬ学習用データ４１３のＳＱＬデータを、基本分類表にある分類パターンに従って分類する。分類した結果は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納される。
【００３６】
抽出部４０６は、第１の分類パターンに適合するＳＱＬデータ群に含まれるＳＱＬデータに対応して、ＳＱＬデータのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。具体的な抽出例は、図１０、図１５、図１９で後述する。なお、抽出した部分文字列の内容、または部分文字列を示すポインタが、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納される。
【００３７】
検出部４０７は、抽出部４０６が抽出した部分文字列に対応して、ＳＱＬデータ群から部分文字列を含むＳＱＬデータを検出する。具体的な検出例は、図１０、図１５、図１９で後述する。なお、検出したＳＱＬデータ、またはＳＱＬデータが格納されたアドレスが、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納される。
【００３８】
特定部４０８は、部分文字列に対応して検出部４０７が検出したＳＱＬデータに基づいて、ＳＱＬデータに対応して抽出部４０６が抽出した部分文字列からいずれかの部分文字列を特定する。
【００３９】
具体的に、特定部４０８は、部分文字列に対応して検出部４０７が検出したＳＱＬデータの個数に基づいて、ＳＱＬデータに対応して抽出した部分文字列からいずれかの部分文字列を特定してもよい。具体的な特定例は、図１０で後述する。たとえば、特定部４０８は、部分文字列に対応して検出部４０７が検出したＳＱＬデータの個数が最大となる部分文字列を特定してもよい。または、特定部４０８は、部分文字列に対応して検出部４０７が検出したＳＱＬデータの個数が検出部４０７が検出したＳＱＬデータ群の半数以上となった部分文字列を特定してもよい。
【００４０】
具体的に、特定部４０８は、ＳＱＬ学習用データ４１３を参照して、部分文字列に対応して検出部４０７が検出したＳＱＬデータの応答時間に基づいて、ＳＱＬデータに対応して抽出した部分文字列からいずれかの部分文字列を特定してもよい。部分文字列に対応して検出部４０７が検出したＳＱＬデータの応答時間は、部分文字列に対応して検出したＳＱＬデータの応答時間の平均値でもよいし、最大値でもよい。具体的な特定例は図１５で後述する。
【００４１】
また、特定部４０８は、ＳＱＬ学習用データ４１３を参照して、部分文字列に対応して検出部４０７が検出したＳＱＬデータの応答時間を累積した合計応答時間に基づいて、ＳＱＬデータに対応して検出した部分文字列からいずれかの部分文字列を特定してもよい。具体的な特定例は図１９で後述する。
【００４２】
作成部４０９は、第１の分類パターンと特定部４０８が特定したいずれかの部分文字列とに基づいて、ＳＱＬデータ群を分類する第２の分類パターンを作成する。具体的な作成例は、図１０、図１５、図１９で後述する。なお、作成した第２の分類パターンは、ＳＱＬ分類パターン表４１４等に格納される。
【００４３】
分類パターン作成装置１００は、ＳＱＬ学習用データ４１３を参照して基本分類表４１１内の分類パターンを分解する。以下、基本分類パターンの分解の例として、第１の分解例〜第３の分解例を示す。また、“−ｅｘ１”が付与された符号は、第１の分解例に関するものであることを示す。同様に、“−ｅｘ２”が付与された符号は、第２の分解例に関するものであることを示し、“−ｅｘ３”が付与された符号は、第３の分解例に関するものであることを示す。
【００４４】
（第１の分解例）
第１の分解例は、ＳＱＬデータの個数に基づいて、分類パターンを分解する例である。以下、図５〜図１２を用いて、第１の分解例について説明する。
【００４５】
図５は、第１の分解例における基本分類表の記憶内容の一例を示す説明図である。基本分類表４１１−ｅｘ１は、プロトコルにより定義された予約語と、予約語の対となる文字列の集合を正規表現を用いて表現した文字列とからなる第１のパターン文字列を記憶する。
【００４６】
図５に示す基本分類表４１１−ｅｘ１は、レコード５０１−１〜５０１−３を有する。基本分類表４１１−ｅｘ１は、項番と、分類パターンと、いう２つのフィールドを含む。項番フィールドには、パターンを識別する番号が格納される。分類パターンフィールドには、どのシステムでも適用できる、最も原始的なＳＱＬパターンが格納される。また、以下の説明と、図とにおいて、レコードの後ろに末尾符号“ｐ”が付与された場合、該当のレコードの分類パターンを示す。たとえば、分類パターン５０１−１ｐは、“／＾ＳＥＬＥＣＴ（．＊）ＦＲＯＭ（．＊）ＷＨＥＲＥ（．＊）＄／”である。
【００４７】
たとえば、レコード５０１−１は、項番１となる分類パターンが、“／＾ＳＥＬＥＣＴ（．＊）ＦＲＯＭ（．＊）ＷＨＥＲＥ（．＊）＄／”であることを示す。
【００４８】
また、基本分類表４１１−ｅｘ１の各ＳＱＬパターンは、正規表現を用いて表現される。たとえば、分類パターン５０１−１ｐは、先頭が“ＳＥＬＥＣＴ”であり、いずれかの文字が０回以上続き、“ＦＲＯＭ”が続き、いずれかの文字が０回以上続き、“ＷＨＥＲＥ”が続き、いずれかの文字が０回以上続いて終了する文字列に適合する。
【００４９】
なお、ＳＱＬデータ全てに適合した分類パターンとして、基本分類表４１１−ｅｘ１は、“／＾（．＊）＄／”を記憶しておいてもよい。
【００５０】
図６は、第１の分解例における予約語表の記憶内容の一例を示す説明図である。予約語表４１２−ｅｘ１は、予約語を記憶するテーブルである。図６に示す予約語表４１２−ｅｘ１は、レコード６０１−１〜６０１−４を有する。予約語表４１２−ｅｘ１は、ＳＱＬ予約語という１つのフィールドを含む。ＳＱＬ予約語フィールドには、ＳＱＬによって定義される予約語が格納される。
【００５１】
たとえば、レコード６０１−１は、ＳＱＬの予約語として、“ＳＥＬＥＣＴ”があることを示す。また、ＨＴＴＰの例として、予約語表４１２−ｅｘ１の各レコードには、たとえば、“ＧＥＴ”、“ＰＯＳＴ”等が格納される。
【００５２】
図７は、第１の分解例におけるＳＱＬ学習用データの一例を示す説明図である。ＳＱＬ学習用データ４１３−ｅｘ１は、分類パターンを作成するために用いるＳＱＬデータである。具体的に、ＳＱＬ学習用データ４１３−ｅｘ１は、顧客システム２０１において過去に採取したＳＱＬデータである。図７に示すＳＱＬ学習用データ４１３−ｅｘ１は、ＳＱＬデータ７０１−１〜７０１−４を含む。
【００５３】
たとえば、ＳＱＬデータ７０１−１は、“ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  ＴＢＬ１  ＷＨＥＲＥ  ｎｕｍ＝’１００’”であることを示す。
【００５４】
図８は、第１の分解例におけるＳＱＬ分類パターン表の記憶内容の一例を示す説明図である。ＳＱＬ分類パターン表４１４−ｅｘ１は、第１の分解例に従って、作成した分類パターンを記憶する情報である。
【００５５】
図８に示すＳＱＬ分類パターン表４１４−ｅｘ１は、レコード８０１−１〜８０１−５を有する。ＳＱＬ分類パターン表４１４−ｅｘ１は、順位と、分類パターンと、出現頻度と、分解可能フラグと、いう４つのフィールドを含む。
【００５６】
順位フィールドには、分類パターンの順位が格納される。分類パターンフィールドには、作成された分類パターンが格納される。出現頻度フィールドには、ＳＱＬ学習用データ４１３−ｅｘ１のＳＱＬデータのうち該当の分類パターンに分類された頻度が格納される。たとえば、出現頻度フィールドには、ＳＱＬ学習用データ４１３−ｅｘ１が１０００個のＳＱＬデータを有していれば、１０００個のうち該当の分類パターンに分類された個数が格納される。分解可能フラグフィールドには、該当の分類パターンが２つ以上の分類パターンに分解可能であるか否かを示す識別子が格納される。識別子としては、該当の分類パターンが分解可能であることを示す“分解可能”識別子と、該当の分類パターンが分解不可能であることを示す“分解不可能”とがある。
【００５７】
たとえば、レコード８０１−１は、１番目の順位の分類パターンとして、ＳＱＬ学習用データ４１３−ｅｘ１が有するＳＱＬデータが最も多く分類された分類パターンが、“／＾ＳＥＬＥＣＴ（．＊）ＦＲＯＭ  ＴＢＬ１  ＷＨＥＲＥ（．＊）＄／”であることを示す。さらに、レコード８０１−１は、１番目の順位の分類パターンの出現頻度が３，６５８であり、分解可能であることを示す。
【００５８】
図９は、第１の分解例におけるＳＱＬ学習用データの分類の一例を示す説明図である。分類パターン作成装置１００は、始めに、ＳＱＬ学習用データ４１３−ｅｘ１にあるＳＱＬデータを基本分類表４１１−ｅｘ１の分類パターンごとに分類する。具体的に、分類パターン作成装置１００は、ＳＱＬ学習用データ４１３−ｅｘ１にあるＳＱＬデータごとに、基本分類表４１１−ｅｘ１の分類パターンにヒットするか否かを判断して、ヒットした場合、該当のＳＱＬデータをヒットした分類パターンに分類する。
【００５９】
たとえば、図９の例では、分類パターン作成装置１００は、ＳＱＬデータ７０１−１、７０１−２、７０１−４を、分類パターン５０１−１ｐに分類する。
【００６０】
図１０は、第１の分解例における分類パターンの分解の一例を示す説明図である。ＳＱＬ学習用データ４１３−ｅｘ１にあるＳＱＬデータを分類した後、分類パターン作成装置１００は、出現頻度が最も高い分類パターンを分解する。
【００６１】
図１０の例では、分類パターン５０１−１ｐが最も高い分類パターンであり、ＳＱＬ学習用データ４１３−ｅｘ１のうち分類パターン５０１−１ｐに分類されたＳＱＬデータの個数が３６５８個であったとする。このとき、分類パターン作成装置１００は、分類パターン５０１−１ｐに適合したＳＱＬデータ群の各ＳＱＬデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。
【００６２】
図１０の例では、分類パターン５０１−１ｐに適合したＳＱＬデータ群の中にある予約語が、“ＳＥＬＥＣＴ”と、“ＦＲＯＭ”と、“ＷＨＥＲＥ”とである。分類パターン５０１−１ｐに適合したＳＱＬデータ群の各ＳＱＬデータの中の、“ＳＥＬＥＣＴ”の直後の文字列としては、それぞれ、“＊”、“ｉｄ”、“ｉｄ，ｎａｍｅ”とがある。また、分類パターン５０１−１ｐに適合したＳＱＬデータ群の各ＳＱＬデータの中の、“ＦＲＯＭ”の直後の文字列としては、それぞれ、“ＴＢＬ１”、“Ｓｔｏｒｅｓ”、“Ｕｓｅｒｓ”とがある。さらに、分類パターン５０１−１ｐに適合したＳＱＬデータ群の各ＳＱＬデータの中の、“ＷＨＥＲＥ”の直後の文字列としては、それぞれ、“ｙｅａｒ＝’２０１３’”、“ｎｕｍ＞’５０’”とがある。
【００６３】
したがって、分類パターン作成装置１００は、予約語“ＳＥＬＥＣＴ”と予約語の直後の文字列からなる部分文字列として、“ＳＥＬＥＣＴ  ＊”と、“ＳＥＬＥＣＴ  ｉｄ”と、“ＳＥＬＥＣＴ  ｉｄ，ｎａｍｅ”と、を抽出する。また、分類パターン作成装置１００は、予約語“ＦＲＯＭ”と予約語の直後の文字列からなる部分文字列として、“ＦＲＯＭ  ＴＢＬ１”と、“ＦＲＯＭ  Ｓｔｏｒｅｓ”と、“Ｆｒｏｍ  Ｕｓｅｒｓ”と、を抽出する。さらに、分類パターン作成装置１００は、予約語“ＷＨＥＲＥ”と予約語の直後の文字列からなる部分文字列として、“ＷＨＥＲＥ  ｙｅａｒ＝’２０１３’”と、“ＷＨＥＲＥ  ｎｕｍ＞’５０’”と、を抽出する。
【００６４】
続けて、分類パターン作成装置１００は、部分文字列に対応して、部分文字列を含むＳＱＬデータの個数が最大となる部分文字列を特定する。
【００６５】
図１０の例では、分類パターン作成装置１００が“ＳＥＬＥＣＴ  ＊”、“ＳＥＬＥＣＴ  ｉｄ”、“ＳＥＬＥＣＴ  ｉｄ，ｎａｍｅ”を含むＳＱＬ学習用データ４１３−ｅｘ１内のＳＱＬデータを検出した個数は、それぞれ、２，５３０、５００、６２８である。また、分類パターン作成装置１００が“ＦＲＯＭ  ＴＢＬ１”、“ＦＲＯＭ  Ｓｔｏｒｅｓ”、“ＦＲＯＭ  Ｕｓｅｒｓ”を含むＳＱＬ学習用データ４１３−ｅｘ１内のＳＱＬデータを検出した個数は、それぞれ、３，１２３、３３５、２００である。さらに、分類パターン作成装置１００が“ＷＨＥＲＥ  ｙｅａｒ＝’２０１３’”、“ＷＨＥＲＥ  ｎｕｍ＞’５０’”を含むＳＱＬ学習用データ４１３−ｅｘ１内のＳＱＬデータを検出した個数は、それぞれ、１，５００、２，１５８である。
【００６６】
したがって、分類パターン作成装置１００は、部分文字列を含むＳＱＬデータの個数が最大となる部分文字列として、“ＦＲＯＭ  ＴＢＬ１”を特定する。そして、分類パターン作成装置１００は、特定した部分文字列を用いて、新たな分類パターンを作成する。
【００６７】
具体的に、分類パターン作成装置１００は、分類パターン５０１−１ｐが分類したＳＱＬデータのうち、最頻出の部分文字列を含むＳＱＬデータを分類する分類パターン１００１−ｐを作成する。併せて、分類パターン作成装置１００は、分類パターン５０１−１ｐが分類したＳＱＬデータのうち、最頻出以外の部分文字列を含むＳＱＬデータを分類する分類パターン１００２−ｐを作成する。分類パターン１００２−ｐの“（？！ＴＢＬ１）”は、“ＴＢＬ１”以外の部分文字列を検出する正規表現である。
【００６８】
なお、特定した部分文字列が、ＳＱＬデータ７０１−４のうちの“ＷＨＥＲＥ  ｎｕｍ  ＞  （ＳＥＬＥＣＴ  ＡＶＧ（ｎｕｍ）  ＦＲＯＭ  ＴＢＬ１）”となったとする。この場合、分類パターン作成装置１００は、最頻出の部分文字列を含むＳＱＬデータを分類する分類パターンとして、“ＳＥＬＥＣＴ（．＊）ＦＲＯＭ（．＊）ＷＨＥＲＥ  ｎｕｍ  ＞  （ＳＥＬＥＣＴ  ＡＶＧ（ｎｕｍ）  ＦＲＯＭ  ＴＢＬ１）”を作成する。このように、分類パターン作成装置１００は、入れ子構造となるＳＱＬデータであっても、分類パターンとして登録することができる。
【００６９】
図１１は、第１の分解例におけるＳＱＬ分類パターンの更新の一例を示す説明図である。分類パターン作成装置１００は、分類パターン５０１−１ｐを、分類パターン１００１−ｐと分類パターン１００２−ｐとに分解した内容となるように、ＳＱＬ分類パターン表４１４−ｅｘ１を更新する。
【００７０】
具体的には、分類パターン作成装置１００は、分類パターン１００１−ｐを有するレコード１１０１−１を１番目の順位として追加するとともに、分類パターン１００２−ｐを有するレコード１１０１−２を４番目の順位として追加する。レコード１１０１−２の出現頻度は、ＳＱＬ学習用データ４１３−ｅｘ１の内の“ＦＲＯＭ”の後であり、“ＷＨＥＲＥ”の前の文字列が“Ｓｔｏｒｅｓ”、“Ｕｓｅｒｓ”となるＳＱＬデータの個数３３５、２００の和である５３５となる。そして、分類パターン作成装置１００は、レコード８０１−１を削除する。
【００７１】
図１２は、第１の分解例における分類パターン作成処理手順の一例を示すフローチャートである。第１の分解例における分類パターン作成処理は、基本分類表４１１にある分類パターンを、第１の分解例に従って分割することにより分類パターンを分解する処理である。
【００７２】
分類パターン作成装置１００は、基本分類表４１１−ｅｘ１を参照して、ＳＱＬ学習用データを分類パターンごとに分類する（ステップＳ１２０１）。次に、分類パターン作成装置１００は、分類結果として、分類パターンと、該当の分類パターンに適合した頻度と“分類可能”識別子とをＳＱＬ分類パターン表４１４−ｅｘ１に格納する（ステップＳ１２０２）。続けて、分類パターン作成装置１００は、分類パターンの数が閾値に達したか否かを判断する（ステップＳ１２０３）。分類パターンの数が閾値に達した場合（ステップＳ１２０３：Ｙｅｓ）、分類パターン作成装置１００は、第１の分解例における分類パターン作成処理を終了する。
【００７３】
分類パターンの数が閾値に達していない場合（ステップＳ１２０３：Ｎｏ）、分類パターン作成装置１００は、分解可能な分類パターンのうち、出現頻度が最も高い分類パターンを選択する（ステップＳ１２０４）。続けて、分類パターン作成装置１００は、選択した分類パターンに適合されたＳＱＬデータ群を選択する（ステップＳ１２０５）。次に、分類パターン作成装置１００は、選択したＳＱＬデータ群の各ＳＱＬデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する（ステップＳ１２０６）。続けて、分類パターン作成装置１００は、部分文字列ごとに、選択したＳＱＬデータ群から、部分文字列を含むＳＱＬデータを検出する（ステップＳ１２０７）。
【００７４】
次に、分類パターン作成装置１００は、検出したＳＱＬデータの内容が全て同一か否かを判断する（ステップＳ１２０８）。検出したＳＱＬデータの内容が全て同一である場合（ステップＳ１２０８：Ｙｅｓ）、分類パターン作成装置１００は、選択した分類パターンの分解可能フラグを“分解不可能”に設定する（ステップＳ１２０９）。そして、分類パターン作成装置１００は、ステップＳ１２０４の処理に移行する。
【００７５】
検出したＳＱＬデータの内容が全て同一でない場合（ステップＳ１２０８：Ｎｏ）、分類パターン作成装置１００は、複数の部分文字列のうち、検出したＳＱＬデータの出現頻度が最大の部分文字列を特定する（ステップＳ１２１０）。次に、分類パターン作成装置１００は、特定した部分文字列を含むＳＱＬデータを分類する新たな分類パターンを作成する（ステップＳ１２１１）。続けて、分類パターン作成装置１００は、特定した部分文字列を含まないＳＱＬデータを分類する新たな分類パターンを作成する（ステップＳ１２１２）。
【００７６】
次に、分類パターン作成装置１００は、作成した２つの分類パターンの出現頻度を算出する（ステップＳ１２１３）。続けて、分類パターン作成装置１００は、作成した２つの分類パターンを用いて、ＳＱＬ分類パターン表４１４−ｅｘ１を更新する（ステップＳ１２１４）。そして、分類パターン作成装置１００は、ステップＳ１２０３の処理に移行する。第１の分解例における分類パターン作成処理を実行することにより、分類パターン作成装置１００は、ＳＱＬデータの出現頻度に基づいて分類パターンを分解することができる。
【００７７】
（第２の分解例）
第２の分解例は、平均応答時間に基づいて、分類パターンを分解する例である。以下、図１３〜図１７を用いて第２の分解例について説明する。第２の分解例における基本分類表４１１および予約語表４１２については、それぞれ、第１の分解例における基本分類表４１１−ｅｘ１、予約語表４１２−ｅｘ１と同一であるため、説明を省略する。
【００７８】
図１３は、第２の分解例におけるＳＱＬ学習用データの一例を示す説明図である。ＳＱＬ学習用データ４１３−ｅｘ２は、分類パターンを作成するために用いるＳＱＬデータである。図１３に示すＳＱＬ学習用データ４１３−ｅｘ２は、ＳＱＬデータ１３０１−１〜１３０１−４を含む。ＳＱＬデータ１３０１−１〜１３０１−４は、応答時間が付与される。応答時間は、可視化装置が各ＳＱＬデータを検出してから、サーバがＳＱＬデータに対応する応答メッセージを送信して、可視化装置が応答メッセージを受信するまでの時間である。
【００７９】
たとえば、ＳＱＬデータ１３０１−１は、“ＳＥＬＥＣＴ  ＊  ＦＲＯＭ  ＴＢＬ１  ＷＨＥＲＥ  ｎｕｍ＝’１００’”を検出してから、１５．０［ｍｓ］後に応答メッセージがあったことを示す。
【００８０】
図１４は、第２の分解例におけるＳＱＬ分類パターン表の記憶内容の一例を示す説明図である。ＳＱＬ分類パターン表４１４−ｅｘ２は、第２の分解例に従って、作成した分類パターンを記憶する情報である。
【００８１】
図１４に示すＳＱＬ分類パターン表４１４−ｅｘ２は、レコード１４０１−１〜１４０１−５を有する。ＳＱＬ分類パターン表４１４−ｅｘ２は、ＳＱＬ分類パターン表４１４−ｅｘ１が有する出現頻度フィールドの代わりに、平均応答時間フィールドを有する。
【００８２】
平均応答時間フィールドは、ＳＱＬ学習用データ４１３−ｅｘ１のＳＱＬデータのうち該当の分類パターンに分類されたＳＱＬデータの応答時間の平均値が格納される。たとえば、レコード１４０１−１は、１番目の順位の分類パターンとなる分類パターン１４０１−１ｐに分類されたＳＱＬデータの平均応答時間が１３．５［ｍｓ］であり、分解可能であることを示す。
【００８３】
図１５は、第２の分解例における分類パターンの分解の一例を示す説明図である。ＳＱＬ学習用データ４１３−ｅｘ２にあるＳＱＬデータを分類した後、分類パターン作成装置１００は、平均応答時間が最も長い分類パターンを分解する。
【００８４】
図１５の例では、分類パターン１４０１−１ｐが最も高い分類パターンであり、ＳＱＬ学習用データ４１３−ｅｘ２のうち分類パターン１４０１−１ｐに分類されたＳＱＬデータの平均応答時間が１３．５［ｍｓ］であったとする。このとき、分類パターン作成装置１００は、分類パターン１４０１−１ｐに適合したＳＱＬデータ群の各ＳＱＬデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。抽出した部分文字列の例は、図１０で説明した例と同一であるため、説明を省略する。
【００８５】
続けて、分類パターン作成装置１００は、部分文字列に対応して、部分文字列を含むＳＱＬデータの平均応答時間が最大となる部分文字列を特定する。
【００８６】
たとえば、“ＳＥＬＥＣＴ  ＊”、“ＳＥＬＥＣＴ  ｉｄ”、“ＳＥＬＥＣＴ  ｉｄ，ｎａｍｅ”を含むＳＱＬ学習用データ４１３−ｅｘ２内のＳＱＬデータの平均応答時間は、それぞれ１４．３［ｍｓ］、１１．３［ｍｓ］、９．５［ｍｓ］である。また、“ＦＲＯＭ  ＴＢＬ１”、“ＦＲＯＭ  Ｓｔｏｒｅｓ”、“ＦＲＯＭ  Ｕｓｅｒｓ”を含むＳＱＬ学習用データ４１３−ｅｘ２内のＳＱＬデータの平均応答時間は、それぞれ１４．５［ｍｓ］、１０．８［ｍｓ］、１１．９［ｍｓ］である。さらに、“ＷＨＥＲＥ  ｙｅａｒ＝’２０１３’”、“ＷＨＥＲＥ  ｎｕｍ＞’５０’”を含むＳＱＬ学習用データ４１３−ｅｘ２内のＳＱＬデータの平均応答時間は、それぞれ、１１．２［ｍｓ］、１８．５［ｍｓ］である。
【００８７】
したがって、分類パターン作成装置１００は、部分文字列を含むＳＱＬデータの平均応答時間が最大となる部分文字列として、“ＷＨＥＲＥ  ｎｕｍ＞’５０’”を特定する。そして、分類パターン作成装置１００は、特定した部分文字列を用いて、新たな分類パターンを作成する。
【００８８】
具体的に、分類パターン作成装置１００は、分類パターン１４０１−１ｐが分類したＳＱＬデータのうち、平均応答時間が最大の部分文字列を含むＳＱＬデータを分類する分類パターン１５０１−ｐを作成する。併せて、分類パターン１４０１−１ｐが分類したＳＱＬデータのうち、平均応答時間が最大以外の部分文字列を含むＳＱＬデータを分類する分類パターン１５０２−ｐを作成する。
【００８９】
さらに、ＳＱＬデータ全てに適合した分類パターンとして、“／＾（．＊）＄／”の平均応答時間が最大であったとする。たとえば、日時処理が行われた結果、レコードを削除するＳＱＬデータ“ＤＥＬＥＴＥ  ＦＲＯＭ  ＴＢＬ１”が送信され、顧客システム２０１のＤＢサーバ２１３が“ＤＥＬＥＴＥ  ＦＲＯＭ  ＴＢＬ１”の処理に時間がかかったとする。このとき、分類パターン作成装置１００は、“／＾（．＊）＄／”に適合した“ＤＥＬＥＴＥ  ＦＲＯＭ  ＴＢＬ１”や、他のＳＱＬデータを特定する。そして、“ＤＥＬＥＴＥ  ＦＲＯＭ  ＴＢＬ１”の平均応答時間が最大であれば、分類パターン作成装置１００は、ＳＱＬ分類パターン表４１４−ｅｘ２に、“ＤＥＬＥＴＥ  ＦＲＯＭ  ＴＢＬ１”を登録する。
【００９０】
図１６は、第２の分解例におけるＳＱＬ分類パターンの更新の一例を示す説明図である。分類パターン作成装置１００は、分類パターン１４０１−１ｐを、分類パターン１５０１−ｐと分類パターン１５０２−ｐとに分解した内容となるように、ＳＱＬ分類パターン表４１４−ｅｘ２を更新する。
【００９１】
具体的には、分類パターン作成装置１００は、分類パターン１５０１−ｐを有するレコード１６０１−１を１番目の順位として追加するとともに、分類パターン１５０２−ｐを有するレコード１６０１−２を２番目の順位として追加する。レコード１６０１−２の平均応答時間は、ＳＱＬ学習用データ４１３−ｅｘ２内の“ＷＨＥＲＥ”の後の文字列が“ｙｅａｒ＝’２０１３’”となるＳＱＬデータの平均応答時間である１１．２［ｍｓ］となる。そして、分類パターン作成装置１００は、レコード１４０１−１を削除する。
【００９２】
なお、図１６において、平均応答時間が最大以外の文字列が２以上ある場合の平均応答時間を算出する場合、平均応答時間が最大以外の文字列を有する個数による加重平均を算出すればよい。たとえば、図１５において、ＳＱＬ学習用データ４１３−ｅｘ２内の“ＦＲＯＭ”の後であり“ＷＨＥＲＥ”の前の文字列が“ＴＢＬ１”となるＳＱＬデータの平均応答時間が最大であったとする。さらに、ＳＱＬ学習用データ４１３−ｅｘ２内の“ＦＲＯＭ”の後であり“ＷＨＥＲＥ”の前の文字列が“Ｓｔｏｒｅｓ”、“Ｕｓｅｒｓ”となるＳＱＬデータの個数が、それぞれ、４０、５０であったとする。
【００９３】
このとき、分類パターン作成装置１００は、平均応答時間が最大以外の文字列を含むＳＱＬデータを分類する分類パターンの平均応答時間を、（４０×１０．８＋５０×１１．９）／（４０＋５０）＝１１．４［ｍｓ］と算出する。
【００９４】
図１７は、第２の分解例における分類パターン作成処理手順の一例を示すフローチャートである。第２の分解例における分類パターン作成処理は、基本分類表４１１にある分類パターンを、第２の分解例に従って分割することにより分類パターンを分解する処理である。また、第２の分解例における分類パターン作成処理は、ステップＳ１７０４、ステップＳ１７１０、ステップＳ１７１３以外のステップの処理内容は、図１２の下２桁が同一番号のステップの処理内容と同一であるため、説明を省略する。
【００９５】
ステップＳ１７０３：Ｎｏの場合、または、ステップＳ１７０９の処理終了後、分類パターン作成装置１００は、分解可能な分類パターンのうち、平均応答時間が最大の分類パターンを選択する（ステップＳ１７０４）。ステップＳ１７０４の処理終了後、分類パターン作成装置１００は、ステップＳ１７０５の処理に移行する。
【００９６】
また、ステップＳ１７０８：Ｎｏの場合、分類パターン作成装置１００は、複数の部分文字列のうち、検出したＳＱＬデータの平均応答時間が最大の部分文字列を特定する（ステップＳ１７１０）。ステップＳ１７１０の処理終了後、分類パターン作成装置１００は、ステップＳ１７１１の処理に移行する。
【００９７】
また、ステップＳ１７１２の処理終了後、分類パターン作成装置１００は、作成した２つの分類パターンの平均応答時間を算出する（ステップＳ１７１３）。ステップＳ１７１３の処理終了後、分類パターン作成装置１００は、ステップＳ１７１４の処理に移行する。第２の分解例における分類パターン作成処理を実行することにより、分類パターン作成装置１００は、平均応答時間に基づいて分類パターンを分解することができる。
【００９８】
（第３の分解例）
第３の分解例は、合計応答時間に基づいて、分類パターンを分解する例である。以下、図１８〜図２１を用いて第３の分解例について説明する。第３の分解例における基本分類表４１１および予約語表４１２については、それぞれ、第１の分解例における基本分類表４１１−ｅｘ１、予約語表４１２−ｅｘ１と同一であるため、説明を省略する。また、第３の分解例におけるＳＱＬ学習用データ４１３は、ＳＱＬ学習用データ４１３−ｅｘ２と同一であるため、説明を省略する。
【００９９】
図１８は、第３の分解例におけるＳＱＬ分類パターン表の記憶内容の一例を示す説明図である。ＳＱＬ分類パターン表４１４−ｅｘ３は、第３の分解例に従って、作成した分類パターンを記憶する情報である。
【０１００】
図１８に示すＳＱＬ分類パターン表４１４−ｅｘ３は、レコード１８０１−１〜１８０１−５を有する。ＳＱＬ分類パターン表４１４−ｅｘ３は、ＳＱＬ分類パターン表４１４−ｅｘ１が有する出現頻度フィールドの代わりに、合計応答時間フィールドを有する。
【０１０１】
合計応答時間フィールドは、ＳＱＬ学習用データ４１３−ｅｘ２のＳＱＬデータのうち該当の分類パターンに分類されたＳＱＬデータの応答時間の合計値が格納される。たとえば、レコード１８０１−１は、１番目の順位の分類パターンとなる分類パターン１８０１−１ｐに分類されたＳＱＬデータの合計応答時間が４９．４［ｓ］であり、分解可能であることを示す。
【０１０２】
図１９は、第３の分解例における分類パターンの分解の一例を示す説明図である。ＳＱＬ学習用データ４１３−ｅｘ２にあるＳＱＬデータを分類した後、分類パターン作成装置１００は、合計応答時間が最も長い分類パターンを分解する。
【０１０３】
図１９の例では、分類パターン１８０１−１ｐが最も高い分類パターンであり、ＳＱＬ学習用データ４１３−ｅｘ２のうち分類パターン１８０１−１ｐに分類されたＳＱＬデータの合計応答時間が４９．４［ｓ］であったとする。このとき、分類パターン作成装置１００は、分類パターン１８０１−１ｐに適合したＳＱＬデータ群の各ＳＱＬデータに対応して、予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。抽出した部分文字列の例は、図１０で説明した例と同一であるため、説明を省略する。
【０１０４】
続けて、分類パターン作成装置１００は、部分文字列に対応して、部分文字列を含むＳＱＬデータの合計応答時間が最大となる部分文字列を特定する。
【０１０５】
たとえば、“ＳＥＬＥＣＴ  ＊”、“ＳＥＬＥＣＴ  ｉｄ”、“ＳＥＬＥＣＴ  ｉｄ，ｎａｍｅ”を含むＳＱＬ学習用データ４１３−ｅｘ２内のＳＱＬデータの合計応答時間は、それぞれ３６．２［ｓ］、５．７［ｓ］、６．０［ｓ］である。また、“ＦＲＯＭ  ＴＢＬ１”、“ＦＲＯＭ  Ｓｔｏｒｅｓ”、“ＦＲＯＭ  Ｕｓｅｒｓ”を含むＳＱＬ学習用データ４１３−ｅｘ２内のＳＱＬデータの合計応答時間は、それぞれ４５．３［ｓ］、３．６［ｓ］、２．４［ｓ］である。さらに、“ＷＨＥＲＥ  ｙｅａｒ＝’２０１３’”と、“ＷＨＥＲＥ  ｎｕｍ＞’５０’”を含むＳＱＬ学習用データ４１３−ｅｘ２内の合計応答時間は、それぞれ、１６．８［ｓ］、３９．９［ｓ］である。
【０１０６】
したがって、分類パターン作成装置１００は、部分文字列を含むＳＱＬデータの平均応答時間が最大となる部分文字列として、“ＦＲＯＭ  ＴＢＬ１’”を特定する。そして、分類パターン作成装置１００は、特定した部分文字列を用いて、新たな分類パターンを作成する。
【０１０７】
具体的に、分類パターン作成装置１００は、分類パターン１８０１−１ｐが分類したＳＱＬデータのうち、合計応答時間が最大の部分文字列を含むＳＱＬデータを分類する分類パターン１９０１−ｐを作成する。併せて、分類パターン１８０１−１ｐが分類したＳＱＬデータのうち、合計応答時間が最大以外の部分文字列を含むＳＱＬデータを分類する分類パターン１９０２−ｐを作成する。
【０１０８】
図２０は、第３の分解例におけるＳＱＬ分類パターンの更新の一例を示す説明図である。分類パターン作成装置１００は、分類パターン１８０１−１ｐを、分類パターン１９０１−ｐと分類パターン１９０２−ｐとに分解した内容となるように、ＳＱＬ分類パターン表４１４−ｅｘ３を更新する。
【０１０９】
具体的には、そして、分類パターン作成装置１００は、分類パターン１９０１−ｐを有するレコード２０００−１を１番目の順位として追加するとともに、分類パターン１９０２−ｐを有するレコード２０００−２を４番目の順位として追加する。レコード２００１−２の合計応答時間は、“ＦＲＯＭ”の後であり、“ＷＨＥＲＥ”の前の文字列が“Ｓｔｏｒｅｓ”、“Ｕｓｅｒｓ”となるＳＱＬデータの合計応答時間３．６、２．４の和である６．０［ｓ］となる。そして、分類パターン作成装置１００は、レコード１８０１−１を削除する。
【０１１０】
図２１は、第３の分解例における分類パターン作成処理手順の一例を示すフローチャートである。第３の分解例における分類パターン作成処理は、基本分類表４１１にある分類パターンを、第３の分解例に従って分割することにより分類パターンを分解する処理である。また、第３の分解例における分類パターン作成処理は、ステップＳ２１０４、ステップＳ２１１０、ステップＳ２１１３以外のステップの処理内容は、図１７の下２桁が同一番号のステップの処理内容と同一であるため、説明を省略する。さらに、ステップＳ２１０４、ステップＳ２１１０、ステップＳ２１１３の処理は、ステップＳ１７０４、ステップＳ１７１０、ステップＳ１７１３の“平均応答時間”が“合計応答時間”に置き換わっただけである。
【０１１１】
また、ステップＳ２１０４の処理において、“合計応答時間”の代わりに、“平均応答時間”が最大の分類パターンを選択してもよい。さらに、ステップＳ２１１０の処理において、“合計応答時間が最大の部分文字列を特定”する代わりに、“出現頻度が最大の部分文字列を特定”してもよい。
【０１１２】
第３の分解例における分類パターン作成処理を実行することにより、分類パターン作成装置１００は、合計応答時間に基づいて分類パターンを分解することができる。
【０１１３】
以上説明したように、分類パターン作成装置１００によれば、分類パターン作成装置１００は、予約語を含む分類パターンに適合したＳＱＬデータ群の中で予約語と対になる高頻出の文字列を、予約語に続く文字列とする分類パターンを作成する。これにより、分類パターン作製装置１００は、システム性能を左右するＳＱＬデータ群を分類するパターンを作成することができる。また、分類パターン作成装置１００は、メッセージの複雑さに依存しておらず、システム構成や出現パターンを人間が認識しなくてよい。また、分類パターン作成装置１００は、予約語か予約語以外かという単純な解析を行っており、複雑な構文解析を行わなくてよい。以上より、分類パターン作成装置１００は、高速かつ低コストで分類パターンを作成することができる。
【０１１４】
また、分類パターン作成装置１００によれば、ＳＱＬデータの出現頻度に基づいて分類パターンを分解してもよい。これにより、作成した分類パターンを利用するシステム可視化装置２０２は、顧客システム２０１内で送受信されるＳＱＬデータを、出現頻度という観点で分類することができる。
【０１１５】
また、分類パターン作成装置１００によれば、ＳＱＬデータの平均応答時間に基づいて分類パターンを分解してもよい。平均応答時間が大きいＳＱＬデータは、サーバの処理に時間がかかるＳＱＬデータである。したがって、作成した分類パターンを利用するシステム可視化装置２０２は、顧客システム２０１内で送受信されるＳＱＬデータを、顧客システム２０１のサーバの処理に時間がかかる点で分類することができる。
【０１１６】
また、分類パターン作成装置１００によれば、ＳＱＬデータの合計応答時間に基づいて分類パターンを分解してもよい。平均応答時間が大きいＳＱＬデータは、顧客システム２０１の性能を支配するデータであり、サーバに高い負荷を与えるデータである。したがって、作成した分類パターンを利用するシステム可視化装置２０２は、顧客システム２０１内で送受信されるＳＱＬデータを、顧客システム２０１のサーバの負荷が高い順で分類することができる。
【０１１７】
（実施の形態２）
実施の形態１にかかる分類パターン作成装置１００は、過去に採取したＳＱＬデータを用いて、分類パターンを作成する。この場合、過去に採取したＳＱＬデータと、運用中に送受信されるＳＱＬデータの傾向が変化し、分類パターンに適合しないＳＱＬデータが多くなる可能性がある。たとえば、過去に採取したＳＱＬデータが日中に取得したデータであり、運用中のＳＱＬデータとして、夜間発行されたデータである場合である。
【０１１８】
そこで、実施の形態２にかかる分類パターン作成装置は、運用中に分類パターンを更新することを特徴とする。なお、実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。また、実施の形態２にかかる分類パターン作成装置における、基本分類パターンの分解については、第１の分解例〜第３の分解例のうちいずれの分解例を適用してもよい。以下の説明では、第１の分解例を適用した例を用いて説明する。
【０１１９】
図２２は、システム可視化装置と実施の形態２にかかる分類パターン作成装置との機能構成例を示すブロック図である。実施の形態２にかかる分類パターン作成装置２２００は、分類部４０５と、検出部４０７〜作成部４０９と、取得部２２０１と、算出部２２０２と、判断部２２０３と、抽出部２２０４と、を有する。取得部２２０１〜抽出部２２０４は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、取得部２２０１〜抽出部２２０４それぞれの機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、取得部２２０１〜抽出部２２０４は、記憶装置に記憶されたプログラムをシステム可視化装置２０２のＣＰＵが実行してもよい。
【０１２０】
また、分類パターン作成装置２２００は、実データＤＢ２２１１にアクセス可能である。実データＤＢ２２１１は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納される。実データＤＢ２２１１は、ＳＱＬ学習用データ４１３と同一のデータ構造である。実データＤＢ２２１１は、システム可視化装置２０２によって運用中に組み立てられたＳＱＬデータを格納する記憶領域である。
【０１２１】
取得部２２０１は、顧客システム２０１内の各サーバによって送信または受信されたＳＱＬデータ群を実データＤＢ２２１１から取得する。
【０１２２】
算出部２２０２は、取得部２２０１が取得したサーバによって送信または受信されたＳＱＬデータ群が第２の分類パターンに適合する割合を算出する。たとえば、取得部２２０１が取得したＳＱＬデータ群が１０００個であり、第２のパターン文字列に適合したＳＱＬデータが５０であれば、算出部２２０２は、５０／１０００＝５［％］と算出する。また、作成した第２の分類パターンが複数あれば、算出部２２０２は、第２の分類パターンに適合した割合の合計を算出する。第２の分類パターンに適合した割合の合計を、以下、「パターン適合率」と称する。なお、算出結果は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納される。
【０１２３】
判断部２２０３は、算出部２２０２が算出したパターン適合率に基づいて、第２の分類パターンを再度作成するか否かを判断する。たとえば、判断部２２０３は、パターン適合率が所定の閾値未満であれば、第２の分類パターンを再度作成すると判断する。なお、判断結果は、ＲＡＭ３０３、ディスク３０５といった記憶装置に格納される。
【０１２４】
抽出部２２０４は、抽出部４０６が有する機能を有する。さらに、抽出部２２０４は、判断部２２０３が第２の分類パターンを再度作成すると判断した場合、取得部２２０１が取得したＳＱＬデータ群のうちの第１の分類パターンに適合するＳＱＬデータ群を抽出する。そして、抽出部２２０４は、抽出したＳＱＬデータ群に含まれるＳＱＬデータに対応して、ＳＱＬデータのうちの予約語と予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する。
【０１２５】
図２３は、実施の形態２にかかる分類パターン再作成判定処理手順の一例を示すフローチャートである。実施の形態２にかかる分類パターン再作成判定処理は、分類パターンを再作成するか否かを判定する処理である。また、分類パターン再作成判定処理は、分類パターン作成装置２２００とシステム可視化装置２０２とが協働して実行することが好ましい。理由として、後述するステップＳ２３０３の処理の一部とステップＳ２３０４との処理は、元々システム可視化装置２０２が行っている処理であるためである。
【０１２６】
以下の説明では、分類パターン作成装置２２００が、ステップＳ２３０３の処理の一部と、ステップＳ２３０４との処理と、以外の処理全てを行うこととする。逆に、分類パターン作成装置２２００が、ステップＳ２３０８とステップＳ２３０９との処理を行い、他の処理をシステム可視化装置２０２が行ってもよい。
【０１２７】
分類パターン作成装置２２００は、更新時刻を現在時刻＋一定期間に設定する（ステップＳ２３０１）。次に、分類パターン作成装置２２００は、パターン適合率を０に設定する（ステップＳ２３０２）。続けて、システム可視化装置２０２は、パケットデータから組み立てたＳＱＬデータを実データＤＢ２２１１に格納する（ステップＳ２３０３）。システム可視化装置２０２から実データＤＢ２２１１にＳＱＬデータを格納したことの通知を受けた後、分類パターン作成装置２２００は、実データＤＢ２２１１からＳＱＬデータを取得して、分類パターンに適合したか否かを判定する（ステップＳ２３０４）。なお、基本分類表４１１に、ＳＱＬデータ全てに適合した分類パターンを用意した場合、分類パターン作成装置２２００は、ＳＱＬデータ全てに適合した分類パターン以外の分類パターンに適合した場合に、分類パターンに適合したと判定する。
【０１２８】
ここで、ステップＳ２３０３の処理のうちの、“パケットデータからＳＱＬデータを組み立てる”処理と、ステップＳ２３０４の処理のうちの、“分類パターンに適合したか否か判定する”処理については、元々システム可視化装置２０２が行っている処理である。したがって、図２３の処理のうち、ステップＳ２３０３の処理の一部と、ステップＳ２３０４との処理と、以外の処理全てを、分類パターン作成装置２２００が行ってもよい。
【０１２９】
次に、システム可視化装置２０２は、パターン適合率を、分類パターンに適合したか否かの判定結果を用いて算出する（ステップＳ２３０５）。続けて、システム可視化装置２０２は、更新時刻が現在時刻より小さいか否かを判断する（ステップＳ２３０６）。更新時刻が現在時刻以上である場合（ステップＳ２３０６：Ｎｏ）、システム可視化装置２０２は、ステップＳ２３０３の処理に移行する。
【０１３０】
更新時刻が現在時刻より小さい場合（ステップＳ２３０６：Ｙｅｓ）、システム可視化装置２０２は、パターン適合率が所定の閾値より小さいか否かを判断する（ステップＳ２３０７）。所定の閾値の指定は、分類パターン作成装置２２００の開発者や、顧客システム２０１の管理者が行う。
【０１３１】
パターン適合率が所定の閾値より小さい場合（ステップＳ２３０７：Ｙｅｓ）、システム可視化装置２０２は、分類パターン作成装置２２００に、実データＤＢ２２１１のＳＱＬデータをＳＱＬ学習用データ４１３として、ＳＱＬ分類パターン表４１４を再作成するように指示する（ステップＳ２３０８）。指示後、システム可視化装置２０２は、分類パターン作成装置２２００から通知があるまで待機する。ＳＱＬ分類パターン表４１４の再作成について、分類パターン作成装置２２００は、ＳＱＬ分類パターン表４１４の全レコードを削除して、図１２に示した処理を行う。続けて、分類パターン作成装置２２００は、再作成した分類パターンを、ＳＱＬ分類パターン表４１４に反映する（ステップＳ２３０９）。ステップＳ２３０９の処理終了後、分類パターン作成装置２２００は、システム可視化装置２０２に反映完了の通知を行う。
【０１３２】
通知を受け付けたシステム可視化装置２０２は、パターン適合率を０に設定する（ステップＳ２３１０）。ステップＳ２３１０の処理終了後、または、パターン適合率が所定の閾値以上である場合（ステップＳ２３０７：Ｎｏ）、システム可視化装置２０２は、更新時刻を現在時刻＋一定期間に設定する（ステップＳ２３１１）。ステップＳ２３１１の処理終了後、システム可視化装置２０２は、ステップＳ２３０３の処理に移行する。実施の形態２にかかる分類パターン再作成判定処理を実行することにより、分類パターン作成装置２２００は、パターン適合率が低下した際に、分類パターンを再作成することができる。
【０１３３】
以上説明したように、分類パターン作成装置２２００によれば、顧客システム２０１内のサーバによって送信または受信されたＳＱＬデータが、第２の分類パターンに適合するパターン適合率を算出してもよい。分類パターン作成装置２２００は、パターン適合率を管理者端末２０３に出力して、管理者端末２０３の管理者が、パターン適合率を閲覧して第２の分類パターンを再作成するか否かを判断することができる。
【０１３４】
また、分類パターン作成装置２２００によれば、パターン適合率に基づいて第２の分類パターンを再度作成すると判断した場合、顧客システム２０１内の各サーバによって送信または受信されたＳＱＬデータ群を用いて第２の分類パターンを作成してもよい。これにより、作成した分類パターンを利用するシステム可視化装置２０２は、顧客システム２０１内で送受信されるＳＱＬデータの傾向が変化した場合でも、ＳＱＬデータの傾向に応じた分類パターンでＳＱＬデータを分類することができる。
【０１３５】
（実施の形態３）
実施の形態２にかかる分類パターン作成装置は、運用中に分類パターンを初期化して、一から再作成を行う。この場合、新たに作成した分類パターンと、初期化する前の分類パターンとが大きく異なる場合がある。そこで、実施の形態３にかかる分類パターン作成装置は、分類パターンを一から再作成するか、今使用中の分類パターンを残すか否かを判断することを特徴とする。なお、実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。また、実施の形態３にかかる分類パターン作成装置における、基本分類パターンの分解については、第１の分解例〜第３の分解例のうちいずれの分解例を適用してもよい。以下の説明では、第１の分解例を適用した例を用いて説明する。
【０１３６】
図２４は、システム可視化装置と実施の形態３にかかる分類パターン作成装置の機能構成例を示すブロック図である。実施の形態３にかかる分類パターン作成装置２４００は、分類部４０５と、検出部４０７〜作成部４０９と、取得部２２０１と、抽出部２２０４と、算出部２４０１と、判断部２４０２と、削除部２４０３と、を有する。算出部２４０１〜削除部２４０３は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、算出部２４０１〜削除部２４０３それぞれの機能を実現する。記憶装置とは、具体的には、たとえば、図３に示したＲＯＭ３０２、ＲＡＭ３０３、ディスク３０５などである。また、算出部２４０１〜削除部２４０３は、記憶装置に記憶されたプログラムをシステム可視化装置２０２のＣＰＵが実行してもよい。
【０１３７】
算出部２４０１は、算出部２２０２が有する機能を有する。さらに、算出部２４０１は、第２の分類パターンを作成した場合、ＳＱＬ学習用データ４１３のＳＱＬデータ群が第２の分類パターンに適合する割合を算出する。
【０１３８】
判断部２４０２は、判断部２２０３が有する機能を有する。さらに、判断部２４０２は、ＳＱＬデータ群が第２の分類パターンに適合する割合と、取得部２２０１が取得したＳＱＬデータ群が第２の分類パターンに適合する割合との差に基づいて、第２の分類パターンを削除するか否かを判断する。具体的な判断例は、図２７で示す。
【０１３９】
削除部２４０３は、判断部２４０２が第２の分類パターンを再度作成すると判断し、かつ、第２の分類パターンを削除すると判断した場合、古い第２の分類パターンを削除する。古い第２の分類パターンとは、顧客システム２０１の各サーバによって送信または受信されたＳＱＬデータ群を取得する前に作成したパターンである。
【０１４０】
図２５は、実施の形態３にかかるＳＱＬ分類パターン表の記憶内容の例を示す説明図である。ＳＱＬ分類パターン表２４１１は、第１の分解例に従って、作成した分類パターンを記憶する情報である。また、ＳＱＬ分類パターン表２４１１は、学習時ＳＱＬデータに対して分類を行ったＳＱＬ分類パターン用と、運用時における実データＤＢ２２１１のＳＱＬデータに対して分類を行ったＳＱＬ分類パターン用と、の２つがある。
【０１４１】
図２５に示すＳＱＬ分類パターン表２４１１は、レコード２５０１−１〜２５０１−５を有する。ＳＱＬ分類パターン表２４１１は、ＳＱＬ分類パターン表４１４−ｅｘ１が有するフィールドと、さらに、出現率フィールドを有する。
【０１４２】
出現率フィールドは、該当のＳＱＬ分類パターンが、学習時ＳＱＬデータ、または、実データＤＢ２２１１のＳＱＬデータに出現した割合を示す。たとえば、レコード２５０１−１は、１番目の順位の分類パターンとなる分類パターン２５０１−１ｐに分類されたＳＱＬデータの出現頻度が３，６５８であり、出現率が３１．２［％］であり、分解可能であることを示す。
【０１４３】
次に、図２６〜図２８を用いて、実施の形態３にかかるフローチャートの説明を行う。なお、運用前に行う分類パターン初期作成処理は、図１２に示す第１の分解例における分類パターン作成処理とほぼ同一であるため、図示を省略する。図１２のフローチャートからの変更点として、ステップＳ１２０１の処理の実行後、分類パターン作成装置２４００は、各分類パターンの出現率を算出する。そして、ステップＳ１２０１の処理の実行後、分類パターン作成装置２４００は、作成した２つの分類パターンに対する出現率を算出する。
【０１４４】
図２６は、実施の形態３にかかる分類パターン再作成判定処理手順の一例を示すフローチャートである。実施の形態３にかかる分類パターン再作成判定処理は、分類パターンを再作成するか否かを判定する処理である。また、ステップＳ２６０１〜ステップＳ２６０５、ステップＳ２６０７、ステップＳ２６０８、ステップＳ２６１０〜ステップＳ２６１２は、ステップＳ２３０１〜ステップＳ２３０７、ステップＳ２３０９〜ステップＳ２３１１と同一処理のため、説明を省略する。
【０１４５】
ステップＳ２６０５の処理終了後、分類パターン作成装置２４００は、各分類パターンの出現率を、分類パターンに適合したか否かの判定結果を用いて更新する（ステップＳ２６０６）。ステップＳ２６０６の処理終了後、分類パターン作成装置２４００は、ステップＳ２６０７の処理に移行する。
【０１４６】
ステップＳ２６０８：Ｙｅｓの場合、分類パターン作成装置２４００は、分類パターン再作成処理を実行する（ステップＳ２６０９）。分類パターン再作成処理については、図２７および図２８で説明する。ステップＳ２６０９の処理終了後、分類パターン作成装置２４００は、ステップＳ２６１０の処理に移行する。実施の形態３にかかる分類パターン再作成判定処理を実行することにより、分類パターン作成装置２４００は、パターン適合率が低下した際に、分類パターンを再作成することができる。
【０１４７】
図２７は、実施の形態３にかかる分類パターン再作成処理手順の一例を示すフローチャート（その１）である。また、図２８は、実施の形態３にかかる分類パターン再作成処理手順の一例を示すフローチャート（その２）である。実施の形態３にかかる分類パターン再作成処理は、分類パターンを再作成する処理である。
【０１４８】
分類パターン作成装置２４００は、前回学習時における分類パターンの出現率の分布と、運用時における分類パターンの出現率の分布とのずれを算出する（ステップＳ２７０１）。ずれの具体的な算出方法として、たとえば、分類パターン作成装置２４００は、前回学習時のＳＱＬ分類パターン表２４１１と、運用時におけるＳＱＬ分類パターン表２４１１と、の１番目の分類パターンの出現率の差の２乗を求める。同様に、分類パターン作成装置２４００は、前回学習時と運用時とにおける２番目の分類パターンの出現率の差の２乗、…、を求めた後、出現率の差の２乗の累計を、ずれとして算出する。また、分類パターン作成装置２４００は、差の２乗の和以外に、前回学習時と運用時とにおける出現率の分散値や、標準偏差をずれとしてもよい。
【０１４９】
次に、分類パターン作成装置２４００は、ずれが所定のずれ量以上か否かを判断する（ステップＳ２７０２）。ずれが所定のずれ量以上である場合（ステップＳ２７０２：Ｙｅｓ）、分類パターン作成装置２４００は、ＳＱＬ分類パターン表２４１１の各レコードを削除する（ステップＳ２７０３）。一方、ずれが所定のずれ量未満である場合（ステップＳ２７０２：Ｎｏ）、分類パターン作成装置２４００は、現在のＳＱＬ分類パターン表２４１１の末尾に基本分類表４１１の分類パターンを追加する（ステップＳ２７０４）。続けて、分類パターン作成装置２４００は、各分類パターンの出現率を０に設定する（ステップＳ２７０５）。
【０１５０】
ステップＳ２７０３、またはステップＳ２７０５の処理終了後、分類パターン作成装置２４００は、基本分類表４１１を参照して、実データＤＢ２２１１のＳＱＬデータを分類パターンごとに分類する（ステップＳ２７０６）。次に、分類パターン作成装置２４００は、各分類パターンの出現率を算出する（ステップＳ２７０７）。
【０１５１】
ステップＳ２７０７の処理終了後、または、後述するステップＳ２８０６、ステップＳ２８１２の処理終了後、分類パターン作成装置２４００は、出現頻度が０より大きい分類パターンの数が所定の閾値に達したか否かを判断する（ステップＳ２７０８）。出現頻度が０より大きいＳＱＬ分類パターンの数が所定の閾値に達していない場合（ステップＳ２７０８：Ｎｏ）、分類パターン作成装置２４００は、続けて、分解可能な分類パターンがあるか否かを判断する（ステップＳ２７０９）。分解可能な分類パターンがない場合（ステップＳ２７０９：Ｎｏ）、分類パターン作成装置２４００は、図２８に示すステップＳ２８０１の処理に移行する。
【０１５２】
出現頻度が０より大きいＳＱＬ分類パターンの数が所定の閾値に達した場合（ステップＳ２７０８：Ｙｅｓ）、または、分解可能な分類パターンがある場合（ステップＳ２７０９：Ｙｅｓ）、分類パターン作成装置２４００は、出現頻度が多い順に、所定の閾値分の分類パターンを選択する（ステップＳ２７１０）。次に、分類パターン作成装置２４００は、選択しなかった分類パターンを削除する（ステップＳ２７１１）。ステップＳ２７１１の処理終了後、分類パターン作成装置２４００は、実施の形態３にかかる分類パターン再作成処理を終了する。
【０１５３】
図２８における、ステップＳ２８０１〜ステップＳ２８１０、ステップＳ２８１２の処理は、図１２におけるステップＳ１２０４〜ステップＳ１２１４と同一処理であるため、説明を省略する。ステップＳ２８１０の処理終了後、分類パターン作成装置２４００は、作成した２つの分類パターンの出現率を算出する（ステップＳ２８１１）。ステップＳ２８１１の処理終了後、分類パターン作成装置２４００は、ステップＳ２８１２の処理に移行する。実施の形態３にかかる分類パターン再作成処理を実行することにより、分類パターン作成装置２４００は、過去の分類パターンを継承して分類パターンを再作成することができる。
【０１５４】
以上説明したように、分類パターン作成装置２４００によれば、取得したＳＱＬデータ群の第２の分類パターンのパターン適合率と、ＳＱＬ学習用データ４１３の第２の分類パターンのパターン適合率との差に基づいて、古い第２の分類パターンを削除してもよい。古い第２の分類パターンを削除しないことにより、作成した分類パターンを利用するシステム可視化装置２０２は、分類パターンが変わるたびに可視化された分類結果の見え方が大きく変わるということを抑制することができる。
【０１５５】
なお、本実施の形態で説明した分類パターン作成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分類パターン作成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本分類パターン作成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１５６】
上述した実施の形態１〜３に関し、さらに以下の付記を開示する。
【０１５７】
（付記１）コンピュータが、
プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第１のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する、
処理を実行することを特徴とする分類パターン作成方法。
【０１５８】
（付記２）前記特定する処理は、
前記部分文字列に対応して検出した前記メッセージの個数に基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする付記１に記載の分類パターン作成方法。
【０１５９】
（付記３）前記メッセージ群に含まれるメッセージは、サーバに処理を要求するメッセージであり、
前記特定する処理は、
前記メッセージ群の各々のメッセージと、前記各々のメッセージが前記サーバに送信されてから前記サーバから応答があるまでの応答時間と、を関連付けた情報を参照して、前記部分文字列に対応して検出した前記メッセージが前記サーバに送信されてから前記サーバから応答があるまでの応答時間に基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする付記１または２に記載の分類パターン作成方法。
【０１６０】
（付記４）前記特定する処理は、
前記情報を参照して、前記部分文字列に対応して検出した前記メッセージの前記応答時間を累積した合計応答時間に基づいて、前記メッセージに対応して検出した前記部分文字列からいずれかの部分文字列を特定することを特徴とする付記３に記載の分類パターン作成方法。
【０１６１】
（付記５）前記メッセージ群は、前記コンピュータに接続されたサーバによって送信または受信されたメッセージであり、
前記コンピュータが、
前記サーバによって送信または受信されたメッセージ群を取得し、
取得した前記サーバによって送信または受信されたメッセージ群が前記第２のパターン文字列に適合する割合を算出する、
処理を実行することを特徴とする付記１〜４のいずれか一つに記載の分類パターン作成方法。
【０１６２】
（付記６）前記コンピュータが、
算出した前記割合に基づいて、前記第２のパターン文字列を再度作成するか否かを判断する、処理を実行し、
前記部分文字列を抽出する処理は、
前記第２のパターン文字列を再度作成すると判断した場合、取得した前記サーバによって送信または受信されたメッセージ群のうちの前記第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出することを特徴とする付記５に記載の分類パターン作成方法。
【０１６３】
（付記７）前記コンピュータが、
前記第２のパターン文字列を作成した場合、前記メッセージ群が前記第２のパターン文字列に適合する割合を算出し、
前記メッセージ群が前記第２のパターン文字列に適合する割合と、取得した前記サーバによって送信または受信されたメッセージ群が前記第２のパターン文字列に適合する割合との差に基づいて、前記第２のパターン文字列を削除するか否かを判断し、
前記第２のパターン文字列を再度作成すると判断し、かつ、前記第２のパターン文字列を削除すると判断した場合、前記サーバによって送信または受信されたメッセージ群を取得する前に作成した前記第２のパターン文字列を削除する、
処理を実行することを特徴とする付記６に記載の分類パターン作成方法。
【０１６４】
（付記８）プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する抽出部と、
前記抽出部が抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出する検出部と、
前記部分文字列に対応して前記検出部が検出した前記メッセージに基づいて、前記メッセージに対応して前記抽出部が抽出した前記部分文字列からいずれかの部分文字列を特定する特定部と、
前記第１のパターン文字列と前記特定部が特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する作成部と、
を有することを特徴とする分類パターン作成装置。
【０１６５】
（付記９）プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出する抽出部と、
前記抽出部が抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出する検出部と、
前記部分文字列に対応して前記検出部が検出した前記メッセージに基づいて、前記メッセージに対応して前記抽出部が抽出した前記部分文字列からいずれかの部分文字列を特定する特定部と、
前記第１のパターン文字列と前記特定部が特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する作成部と、
を有するコンピュータを含むことを特徴とする分類パターン作成装置。
【０１６６】
（付記１０）コンピュータに、
プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第１のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する、
処理を実行させることを特徴とする分類パターン作成プログラム。
【０１６７】
（付記１１）プロトコルにより定義された予約語を含む第１のパターン文字列に適合するメッセージ群に含まれるメッセージに対応して、当該メッセージのうちの前記予約語と前記予約語の直前または直後のうちのいずれか一方の文字列とからなる部分文字列を抽出し、
抽出した前記部分文字列に対応して、前記メッセージ群から前記部分文字列を含むメッセージを検出し、
前記部分文字列に対応して検出した前記メッセージに基づいて、前記メッセージに対応して抽出した前記部分文字列からいずれかの部分文字列を特定し、
前記第１のパターン文字列と特定した前記いずれかの部分文字列とに基づいて、前記メッセージ群を分類する第２のパターン文字列を作成する、
処理を実行させる分類パターン作成プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【０１６８】
１００  分類パターン作成装置
１１１  ＳＱＬデータ群
４０５  分類部
４０６、２２０４  抽出部
４０７  検出部
４０８  特定部
４０９  作成部
４１１  基本分類表
４１２  予約語表
４１３  ＳＱＬ学習用データ
４１４、２４１１  ＳＱＬ分類パターン表
２２０１  取得部
２２０２、２４０１  算出部
２２０３、２４０２  判断部
２４０３  削除部
【図１】
2015022732.tif 000003
【図２】
2015022732.tif 000004
【図３】
2015022732.tif 000005
【図４】
2015022732.tif 000006
【図５】
2015022732.tif 000007
【図６】
2015022732.tif 000008
【図７】
2015022732.tif 000009
【図８】
2015022732.tif 000010
【図９】
2015022732.tif 000011
【図１０】
2015022732.tif 000012
【図１１】
2015022732.tif 000013
【図１２】
2015022732.tif 000014
【図１３】
2015022732.tif 000015
【図１４】
2015022732.tif 000016
【図１５】
2015022732.tif 000017
【図１６】
2015022732.tif 000018
【図１７】
2015022732.tif 000019
【図１８】
2015022732.tif 000020
【図１９】
2015022732.tif 000021
【図２０】
2015022732.tif 000022
【図２１】
2015022732.tif 000023
【図２２】
2015022732.tif 000024
【図２３】
2015022732.tif 000025
【図２４】
2015022732.tif 000026
【図２５】
2015022732.tif 000027
【図２６】
2015022732.tif 000028
【図２７】
2015022732.tif 000029
【図２８】
2015022732.tif 000030