(58)【調査した分野】(Int.Cl.,DB名)
前記プロセッサが、前記非トランザクションデータを前記トランザクションデータと相関させることによって、各グループが対応している前記1つ以上のアクションのうちの前記トリガアクションを識別するように、更に構成され、
前記プロセッサが、前記非トランザクションデータが前記トランザクションデータに対応している確率を判定することによって、前記ユーザによって取られた前記トリガアクションを識別するように、更に構成されている、請求項1に記載のシステム。
【発明を実施するための形態】
【0006】
コンピュータのユーザのアクションを判定及びラベリングする能力は、リモートサービスとのユーザのインタラクションを監視するために重要であり得る。例えば、ユーザアクション情報は、リモートサービスのセキュリティを損なう異常挙動を検出するために使用され得る。しかしながら、単一のユーザアクションは、特定のユーザアクションを示すものでもないか、又は示唆するものですらない多数のトランザクションを含む可能性があるため、クライアント−サーバトランザクションデータを見ることによってユーザアクションを判定することは困難であり得る。これは、ユーザアクションの結果として1つ以上の任意のアクションが生成されることに起因し得る。例えば、ファイルの削除を伴うトランザクションは、ユーザがクリックすることによってファイルを選択すること(要求)、及びHTTPサーバがウェブページを更新してファイルが選択されたことを示すこと(応答)の要求−応答のペアを含み得る。このトランザクションを単独で見ると、この要求−応答のペアがユーザアクション「ファイルを削除する」に実際に関連付けられていると判定することは困難である。むしろ、トランザクションが任意であるため、ファイルモニタはこのトランザクションを任意の数のユーザアクションに関連付けることができる。したがって、ログファイルトランザクション情報を有意義に解釈して対応するユーザアクションを検出することができるシステムの必要性が存在する。
【0007】
本開示の教示は、対応するユーザアクションを判定するために、ログファイルトランザクション情報をユーザのインタラクションと相関させる利点を認識している。以下は、これらの及び他の所望の機能を提供するためのクライアント−サーバトランザクションをアノテーションするシステム及び方法を説明する。
【0008】
図1は、クライアント−サーバトランザクションに関連付けられているネットワーク100を示す。ネットワーク100は、各々が互いに通信可能に結合されたクライアントコンピュータ110、HTTPサーバ120、プロキシサーバ130、及び監視デバイス140を含むことができる。
【0009】
一般に、本開示の教示は、ログファイル相関器180を使用して、トランザクションデータを非トランザクションデータと相関させてクライアント−サーバトランザクションをアノテーションすることを認識している。監視デバイス140は、トランザクションデータ150(クライアントコンピュータ110とHTTPサーバ120との間のやりとりを表す)、及び非トランザクションデータ170(トランザクションデータ150に関連するイベントコレクタ160によって収集された情報を表す)を受信することができる。監視デバイス140上でログファイル相関器180を実行することは、トランザクションデータ150を非トランザクションデータ170と相関させることによって、ログファイルトランザクションのアノテーションを促す。ログファイルをアノテーションすることは、クライアントコンピュータ110のユーザによって行われたアクションの識別を容易にすることができる。
【0010】
ネットワーク100は、オーディオ、ビデオ、信号、データ、メッセージ、又はそれらの任意の組み合わせを送信することができる任意の相互接続システムを指すことができる。ネットワーク100は、公衆交換電話網、パブリック又はプライベートデータネットワーク、ローカルエリアネットワーク(LAN)、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、大都市圏ネットワーク(MAN)、広域ネットワーク(WAN)、インターネット、企業イントラネット、又は任意の他の好適な通信リンク、あるいはこれらの組み合わせなどのローカル、地域、若しくはグローバル通信又はコンピュータネットワーク、を含むことができる。これらのネットワークの1つ以上のうちの1つ以上の部分は、有線又は無線であってもよい。例示的な無線ネットワーク100は、無線PAN(WPAN)(例えば、BLUETOOTH(登録商標) WPAN)、WI−FIネットワーク、WI−MAXネットワーク、携帯電話ネットワーク(例えば、汎欧州デジタル移動電話方式(GSM(登録商標))ネットワーク)、若しくは他の好適な無線ネットワーク、又はこれらのうちの2つ以上の組み合わせを含むことができる。
【0011】
クライアントコンピュータ110は、ハードウェア、ソフトウェア、若しくは埋め込み論理構成要素、又は2つ以上のかかる構成要素の組み合わせを含み、クライアントコンピュータ110によって実装又はサポートされる適切な機能を実行することができる電子デバイスであってもよい。限定ではなく一例として、クライアントコンピュータ110は、デスクトップコンピュータ、ノートブック若しくはラップトップコンピュータ、ネットブック、タブレットコンピュータ、電子書籍、GPSデバイス、カメラ、携帯情報端末(PDA)、ハンドヘルド電子デバイス、携帯電話、スマートフォン、他の好適な電子デバイス、又はそれらの任意の好適な組み合わせなどのコンピュータシステムを含むことができる。本開示は、任意の好適なクライアントコンピュータ140を意図している。
【0012】
クライアントコンピュータ110は、ネットワーク100の1つ以上の構成要素(例えば、HTTPサーバ120、プロキシサーバ130、及び監視デバイス140)に通信可能に結合されてもよい。一部の実施形態では、クライアントコンピュータ110は、MICROSOFT INTERNET EXPLORER、GOOGLE CHROME、又はMOZILLA FIREFOXなどのウェブブラウザを含んでもよく、1つ以上のアドオン、プラグイン、又は他の拡張子(例えば、イベントコレクタ160)を有してもよい。クライアントコンピュータ110のユーザは、ウェブブラウザを特定のサーバに向けるユニフォームリソースロケータ(URL)又は他のアドレスを入力してもよく、ウェブブラウザは、ハイパーテキスト転送プロトコル(HTTP)要求(例えば、要求152)を生成し、HTTP要求をHTTPサーバ120に通信してもよい。サーバは、HTTP要求を受け入れ、HTTP要求に応答する1つ以上のファイル(例えば、応答154)をクライアントコンピュータ110に通信してもよい。応答ファイルは、1つ以上のハイパーテキストマークアップ言語(HTML)ファイル、拡張マークアップ言語(XML)ファイル、JavaScript(登録商標) Object Notation(JSON)ファイル、カスケーディングスタイルシート(CSS)ファイル、画像、他のファイル、又はHTTP経由で転送可能な任意の他の好適なデータを含むことができる。クライアントコンピュータ110は、ユーザへの提示のために、サーバからの応答ファイルに基づいて、ウェブページをレンダリングしてもよい。本開示は、HTTPトランザクションデータをアノテーションすることを具体的に説明し得るが、本開示は、ハイパーテキスト転送プロトコルセキュア(HTTP/S)トランザクションデータ又は任意の好適なネットワークプロトコルに関連する任意の他のトランザクションデータをアノテーションすることを認識している。
【0013】
一部の実施形態では、クライアントコンピュータ110は、イベントコレクタ160を含む。イベントコレクタ160は、クライアントコンピュータ110上で発生したイベントに関する非トランザクションデータ160を収集するように構成されてもよい。一部の実施形態では、イベントコレクタ160は、クライアント側ソフトウェア(例えば、非トランザクションデータ170)内で発生したイベントに関する非トランザクション情報を捕捉する。例えば、イベントコレクタ160は、ウェブブラウザ及び/又はクライアントコンピュータ110上で動作するアプリケーションとのユーザのインタラクションに関連している情報を捕捉することができる。本明細書で使用するとき、インタラクションとは、ソフトウェアによって認識され、かつソフトウェアの状態の変化又はソフトウェアによる出力の生成をもたらし得る、ソフトウェアアプリケーションとの任意のインタラクションを指す。一部の実施形態では、イベントコレクタ160は、クライアント側ソフトウェアの拡張(例えば、ブラウザプラグイン)であってもよい。他の実施形態では、イベントコレクタ160は、クライアント側ソフトウェアのコードに導入されたコードの一部であってもよい。
【0014】
イベントコレクタ160によって捕捉された非トランザクションデータ170は、イベントログ(例えば、以下の
図4を参照して図解及び説明されるイベントログを参照のこと)に格納されてもよい。イベントログは、ユーザイベントのタイムスタンプ及びユーザイベントのトリガに関するデータなどの非トランザクションデータ170を含んでもよい。例として、イベントのトリガは、マウスクリック、マウスホバー、キーボード入力、及び/又はマウス、指、若しくはスタイラスによるドラッグ、タップ、若しくはピンチを含んでもよい。本開示は、特定のイベントトリガを説明するが、本開示は、イベントをトリガし得るクライアントコンピュータ110との任意の好適なユーザインタラクションを意図している。
【0015】
非トランザクションデータ170は、イベントの時点でのソフトウェアの表示の状態に関連している情報を含んでもよい。例えば、イベントの時点での表示に関する情報は、表示の全部若しくは一部のスクリーンショット、スクリーンショットから処理されたデータ、及び/又は表示の内部表現の全部若しくは一部の処理から生じるデータ構造を含んでもよい。例えば、内部表現は、文書オブジェクトモデル(「DOM」)及び/又はQtモデリング言語などの階層ツリーであってもよい。表示の内部表現は、
図4を参照して以下で更に詳細に説明される。
【0016】
非トランザクションデータ170はまた、イベントが発生した表示内の位置を含んでもよい。本開示は、「位置」が、表示の座標系においてイベントが発生しているものとして理解され得るところから近似的に推論され得る任意の情報を指し得ることを意図している。例えば、位置データは、マウスクリックの位置に対応している座標ペアとして表されてもよい。別の例として、位置データは、キーボードのストロークが記録されているリーフノードに至る表示のツリー表現におけるノードのパスとして表されてもよい。更に別の例として、位置データは、ユーザが画面をタップしたユーザインターフェース内のサブウィンドウによって表されてもよい。
【0017】
イベントコレクタ160によって収集された非トランザクションデータ170は、更なる処理のためにネットワークを介して送信されてもよい。例えば、クライアントコンピュータ110は、非トランザクションデータ170を、プロキシサーバ130を介して監視デバイス140に送信してもよい。別の例として、クライアントコンピュータ110は、非トランザクションデータ170を監視デバイス140に直接送信してもよい。一部の実施形態では、非トランザクションデータは、通信インターフェース監視デバイス140によって受信される。本開示は、監視デバイス140が非トランザクションデータ170を受信する特定の方法を説明しているが、本開示は、監視デバイス140が非トランザクションデータ170を受信する任意の好適な方法を認識している。
【0018】
HTTPサーバ120は、一部の実施形態では、ウェブサーバであってもよい。HTTPサーバ120は、クライアントコンピュータ(例えば、クライアントコンピュータ110)からの要求152を処理し、応答154をクライアントコンピュータに返してもよい。この要求−応答のやりとりは、本明細書では、単一のトランザクションと称される。
【0019】
クライアントコンピュータ110とHTTPサーバ120との間の1つ以上のトランザクションは、クライアント−サーバトランザクションデータ(本明細書では「トランザクションデータ」とも称される)150を含んでもよい。トランザクションデータ150は、クライアントコンピュータ110とHTTPサーバ120との間の全てのやりとり(トランザクション)を表してもよい。一部の実施形態では、トランザクションデータ150は、単一の要求−応答のペア(152及び154)であってもよい。他の実施形態では、トランザクションデータ150は、2つ以上の要求−応答のペア(152及び154)を含んでもよい。クライアント−サーバトランザクションデータ150については、
図3を参照して以下に更に詳細に説明する。
【0020】
プロキシサーバ130は、一部の実施形態では、ネットワーク環境100上に存在してもよい。プロキシサーバ130は、クライアントコンピュータ(例えば、クライアントコンピュータ110)とウェブサーバ(例えば、HTTPサーバ120)との間の仲介手段として機能してもよい。一部の実施形態では、プロキシサーバ130は、クライアント−サーバトランザクションデータ150を記録してもよい。
【0021】
クライアント−サーバトランザクションデータ150は、トランザクションの連続ストリーム(例えば、
図3のトランザクションデータ305のストリーム)として記録されてもよい。一部の実施形態では、プロキシサーバ130は、トランザクションデータ150を内部ストレージドライブに保存することができる。その他の実施形態では、プロキシサーバ130によって記録されたトランザクションデータは、監視デバイス140のストレージ又はメモリのような外部ストレージドライブに保存されてもよい。本開示は、プロキシサーバを、トランザクションデータを記録するものとして説明及び図解するが、本開示は、クライアントコンピュータ110とサーバ120との間でトランザクションデータ150を捕捉するように構成された任意の好適な構成要素を認識している。
【0022】
監視デバイス140は、一部の実施形態では、ネットワーク環境100上に存在してもよい。一部の実施形態では、監視デバイス140は、
図6のコンピュータシステム600のようなコンピュータシステムである。一部の実施形態では、監視デバイス140は、クライアント−サーバトランザクションデータ150を格納するように構成されてもよい。監視デバイス140はまた、ログファイル相関器180を格納するように構成されてもよい。ログファイル相関器180は、本発明の実施形態に従う、クライアント−サーバトランザクション150のアノテーションを容易にするデータ処理プログラムである。一部の実施形態では、監視デバイス140はまた、非トランザクションデータ170を格納してもよい。
【0023】
一部の実施形態では、ログファイル相関器180は、
図2を参照して以下に説明する方法200に従ってログファイルトランザクションをアノテーションする。トランザクションデータ150、及びそれを分割することは、
図3を参照して図解及び説明される。非トランザクションデータ、具体的にはウェブサイトの内部表現は、
図4を参照して以下に図解及び説明される。本開示の特定の実施形態に従った、トランザクション及び非トランザクション情報を処理する様々なフローが、
図5A〜
図5Dを参照して図解及び説明される。最後に、ログファイル相関器を実行するように構成された監視デバイス140のようなコンピュータシステムが、
図6を参照して図解及び説明される。
【0024】
図2は、クライアント−サーバトランザクションをアノテーションするための方法200を示すフロー図である。一部の実施形態では、
図1のログファイル相関器180は、
図2の方法を実施してもよい。
図2の方法は、コントローラのメモリ(例えば、
図6のメモリ620)のようなコンピュータ可読媒体に格納されたアルゴリズムを表してもよい。
【0025】
ここで
図2に戻ると、方法200は工程205で開始してもよい。工程210で、ログファイル相関器180はトランザクションデータを受信する。一部の実施形態では、トランザクションデータは、プロキシサーバ130から監視デバイス140によって受信される。一部の実施形態では、トランザクションデータは、監視デバイス140の通信インターフェースによって受信される。
【0026】
上述したように、トランザクションデータは、クライアントコンピュータ110とHTTPネットワーク120との間のやりとりを指すことができる。トランザクションデータは、特定の時間期間、HTTPトラフィックの単一のストリームとして受信されてもよい。トランザクションデータは、クライアントコンピュータ110とHTTPサーバ120との間のイベントに対応している複数のトランザクションを含んでもよい。これらのイベントは、ユーザアクションに関連していてもよい。本明細書で使用するとき、ユーザアクションとは、クライアントソフトウェアを介してリモートサービスで発生する、1つ以上のイベントに対応しているクライアント−コンピュータのユーザの目的を指すことができる。一部の実施形態では、ユーザアクションは、クラウドアプリケーションによってサポートされることが知られているアクションであってもよい。例えば、ユーザアクションは、電子メールの送信、電子メールの受信、アップロード、ダウンロード、ファイルの送信、ファイルの移動、ファイルの削除、インスタントメッセージの送信、インスタントメッセージの受信、連絡先の追加などのうちの1つであってもよい。本開示は、ユーザアクションの特定のタイプを説明するが、本開示は、クライアントコンピュータ110のユーザの任意の好適なアクションを意図している。一部の実施形態では、方法200は工程220に続いてもよい。
【0027】
工程220で、ログファイル相関器180は、非トランザクションデータを受信する。一部の実施形態では、ログファイル相関器180は、クライアントコンピュータ110のイベントコレクタ160から非トランザクションデータを受信する。非トランザクションデータは、ユーザイベントのタイムスタンプ、ユーザイベントのトリガに関するデータ、ユーザイベントの時点での表示の状態、及び/又はユーザイベントが発生した表示内の位置を含んでもよい。一部の実施形態では、方法は、工程230に続く。
【0028】
工程230で、ログファイル相関器180は、トランザクションデータを部分に分割する。本明細書で使用するとき、「部分」という用語は、「バースト」という用語と交換可能に使用され得る。例えば、
図3を参照すると、これらの部分は、トランザクションのバーストと称される。一部の実施形態では、トランザクションデータの分割は、判定論的である。本明細書で使用するとき、判定論的分割とは、アルゴリズムが2回以上実行された場合でも、トランザクションデータの単一のセットから同じ部分を生成するアルゴリズムを指す。他の実施形態では、トランザクションデータの分割はランダム化される。本明細書で使用するとき、ランダム化された分割とは、アルゴリズムが2回以上実行されるときに、トランザクションデータの単一のセットから異なる部分を生成し得るアルゴリズムを指す。トランザクションデータの分割は、有限の一連の工程として、又は反復的に最適化若しくは統計的推定として実施されてもよい。一部の実施形態では、トランザクションデータの分割は、トランザクション到着間隔時間(すなわち、1つのトランザクションの開始又は終了時間から測定して、時間的に連続して発生するトランザクションの発生間の時間)、トランザクションの時点と収集されたイベントデータとの関係、及びトランザクションの内容、長さ、及び/又はテキストの特徴、並びに/あるいはイベントの内容、長さ、及び/又はテキストの特徴に基づいている。トランザクションデータ150は、各トランザクションが単一の部分に属するか、又は1つ以上の部分に属する確率を示す値が割り当てられるように分割されてもよい。
【0029】
典型的には、単一のユーザアクションに関連するトランザクションは、同時に、又はほぼ同時に発生し、休止又は非活動期間が続く。本明細書で使用するとき、非活動期間とはまた、非トランザクションデータ170に関連付けられていないか、又は、対応していない時間期間を指すことができる。したがって、時間的に密接に発生するトランザクション(部分/バースト)を識別することは、単一のユーザアクションを示すことができる。
【0030】
トランザクションデータは、全てのトランザクションのタイムスタンプを含んでもよい。一部の実施形態では、ログファイル相関器180は、各トランザクションのタイムスタンプに基づいて、トランザクションデータをトランザクションの部分に分割する。例えば、単一の部分内の全てのトランザクションは、同時に、又はほぼ同時に発生してもよい。一部の実施形態では、トランザクションデータは、非活動期間に基づいて分割される。例えば、第1の部分に対応しているトランザクションの第1のセットは、第1の時間期間内に発生することがあり、この第1の部分に非活動期間が続くことがあり、ここで、今度は、第2の時間期間内に発生する第2の部分に対応しているトランザクションの第2のセットが続くことがある。一部の実施形態では、方法200は、工程240に続いてもよい。
【0031】
工程240で、ログファイル相関器180は、部分を1つ以上のグループに分類する。一部の実施形態では、部分は、1つの部分と別の部分との類似性に基づいてグループに分類される。類似している部分が同じユーザアクションに対応している可能性があるため、グループは類似性に基づいて分類されてもよい。したがって、一部の実施形態では、ログファイル相関器180によって作成されたグループの数は、トランザクションデータ150のストリームに関連付けられているユーザアクションの数に対応している。他の実施形態では、ログファイル相関器180によって作成されたグループの数は、トランザクションデータ150のストリームに関連付けられているユーザアクションの数よりも大きい。例えば、一部の実施形態では、トランザクションデータ150が非トランザクションデータ(例えば、非活動期間中に記録されたトランザクションデータ150)と対応していない場合、ログファイル相関器180は、インスタンス内のユーザアクションよりも多くのグループを作成する。別の例として、単一のユーザのアクションに関連付けられているトラフィックが区別可能である(例えば、ファイルのダウンロードに関連付けられているトラフィックは、フォルダのダウンロードに関連付けられているトラフィックと区別可能であり得る)場合に、ログファイル相関器180は、インスタンス内のユーザアクションよりも多くのグループを作成することがある。更に他の実施形態では、ログファイル相関器180は、ユーザアクションよりも少ないグループを作成してもよい。これは、例えば、2つの別個のユーザアクションのトラフィックがほぼ同一である場合に発生する可能性がある(例えば、ユーザアクション「名前変更」のトラフィックは、ユーザアクション「移動」のトラフィックとほぼ同じである)。
【0032】
部分は、一部の実施形態では、各分割が単一のグループに属するように分類されてもよい。他の実施形態では、部分は、特定のグループへの帰属の確率に基づいて分類されてもよい。例えば、一部の実施形態では、部分は、部分が1つ以上のグループに属する確率を示す値を割り当てられてもよい。帰属の確率は、任意の合理的な尺度によって判定されてもよい。
【0033】
一部の実施形態では、部分を1つ以上のグループに分類することは、部分内の全てのトランザクションのテキスト及び/又は構造的類似性、部分の中で最も固有のトランザクションのテキスト及び/又は構造的類似性、非常に類似したトランザクションが異なる部分にわたって発生する順序、並びに/あるいは異なる部分からの非常に類似したトランザクションに存在する差違の規則性、に基づいている。一部の実施形態では、部分自体に関する情報は、部分をグループに分類するための類似性の有用な尺度(例えば、1つの部分内のトランザクションの数)であってもよい。
【0034】
1つの部分が別の部分と類似しているかどうかを判定することは、一部の実施形態では、1つの部分の別の部分との類似性を測定することを含む。例えば、一部の実施形態では、類似性は、統計的分析に基づいて判定される。例えば、一部の実施形態では、余弦差は、1つの部分と別の部分との間で計算される。
【0035】
類似度は、一部の実施形態では、閾値に基づいて判定される。例えば、一部の実施形態では、2つの部分間の余弦差が閾値と比較される。一部の実施形態では、余弦差が閾値以下である場合、2つの部分が類似していると判定される。他の実施形態では、余弦差が閾値よりも大きい場合、2つの部分は類似していないと判定される。
【0036】
2つの部分が類似していると判定することは、一部の実施形態では、部分のトランザクションを比較することを含む。例えば、第1の部分は5つのトランザクションを含んでもよく、第2の部分は4つのトランザクションを含んでもよい。かかる場合、システムは、3つの類似しているトランザクションを共有していることを理由に、2つの部分が類似していると判定してもよい。他の実施形態では、2つの部分の非トランザクションデータ170を比較することによって、2つの部分の類似性を判定してもよい。本開示は、類似性を判定する特定の方法を説明するが、類似性は任意の好適な方法で判定されてもよい。
【0037】
各グループは、一部の実施形態では、1つ以上の部分を含む。他の実施形態において、1つの部分は、それ自体のグループを含んでもよい。例えば、任意の他の部分と類似していない部分は、特定のユーザアクションに対応している、それ自体のグループを含んでもよい。
【0038】
2つ以上の部分のグループに分類できない部分は、類似していないとみなされ得る。一部の実施形態では、1つ以上の類似していない部分は、1つ以上のグループを含んでもよい。かかるグループは、グループ内のいずれの部分とも類似していないため、「ノイズが多い」とみなされ得る。一部の実施形態では、「ノイズの多い」グループは、更なる処理から除外されてもよい。他の実施形態では、「ノイズの多い」グループを使用して、結果として生じるアノテーションに対する確実性を確立することができる。一部の実施形態では、方法200は、工程250に続く。
【0039】
工程250で、ログファイル相関器180は、非トランザクションデータに基づいて、各グループに対応している可能性のあるユーザアクションを識別する。一部の実施形態では、非トランザクションデータに基づいて可能なユーザアクションを識別することは、非トランザクションデータとトランザクションデータと相関させることを含む。一部の他の実施形態では、可能なユーザアクションを識別することは、非トランザクションデータがトランザクションデータに対応している確率を判定することを含む。
【0040】
例えば、ログファイル相関器180は、関連するトランザクション及びイベントのタイムスタンプに基づいて、トランザクションデータの第1の部分を非トランザクションデータの第1の部分と相関させてもよい。非トランザクションデータの第1の部分は、マウスクリックの時点での表示のスクリーンショットを含んでもよい。スクリーンショットは、テキスト「ダウンロード」、「アップロード」、「削除」、ファイル名のリスト(例えば、「2015_quarterly_reports.docx」及び「2016_quaterly_reports.docx」)を記述してもよく、カーソルが「OK」を確認のプロンプト上で選択したことを示す。ログファイル相関器180は、可能なアクションのうちのどのアクションが、ユーザが撮影したスクリーンショット(ダウンロード、アップロード又は削除)に記述したかを推論してもよい。一部の実施形態では、この推論は、アクションテキストからカーソルまでの距離の測定に基づいていてもよい。例えば、ログファイル相関器180は、カーソルがテキスト「ダウンロード」に最も近い距離にあり、テキスト「アップロード」又は「除去」から遠くにあったと判定してもよい。かかるシナリオでは、ログファイル相関器180は、トランザクションデータの第1の部分に関連付けられているユーザアクションが「ダウンロード」であると判定してもよい。
【0041】
同様に、ログファイル相関器180は、各グループについて可能なユーザアクションを識別してもよい。例えば、ログファイル相関器180は、ユーザの表示上のイベントと表示に記述されたユーザアクションとの間の距離を測定することにより、グループについて、全ての非トランザクションデータを検査してもよい。この情報に基づいて、ログファイル相関器180は、表示に記述された各ユーザアクションの確率を判定してもよい。例えば、ログファイル相関器180は、カーソルが特定のグループに関連しているスクリーンショットの82%において、アクションテキスト「ダウンロード」に最も近かったと判定してもよい。ログファイル相関器はまた、カーソルが、グループに関連しているスクリーンショットの2%において、アクションテキスト「アップロード」に最も近かったこと、及びカーソルが、グループに関連しているスクリーンショットの16%において、アクションテキスト「名前変更」に最も近かったことを判定してもよい。この情報に基づいて、ログファイル相関器180は、特定のグループが、その関連する確率がグループの中で最高であるため、ユーザアクション「ダウンロード」に関連していると識別してもよい。本開示は、非トランザクションデータからユーザアクションを推論する特定の方法を述べているが、本開示は、非トランザクションデータからユーザアクションを任意の好適な方法で推論することを認識している。
【0042】
ログファイル相関器180は、一部の実施形態では、非トランザクションデータに基づいて、グループについて2つ以上のユーザアクションを識別してもよい。例えば、ログファイル相関器180は、これらのユーザアクションの各々が同じ確率(例えば、ユーザアクションがダウンロードである33%の確率、ユーザアクションアップロードである33%の確率、及びユーザアクションが名前変更である33%の確率)を有している場合、グループがユーザアクション「ダウンロード」、「アップロード」、及び「名前変更」に関連していることを識別してもよい。かかるシナリオでは、ログファイル相関器180は、ユーザアクションがそのグループについて不明であると判定してもよい。一部の実施形態では、ログファイル相関器180は、グループについて、2つ以上のユーザアクションを識別することに応答して、更なる処理のためにグループにフラグを立ててもよい。フラグが立てられたことに応答して、ファイルモニタは、識別情報を手動でレビューするために通知されてもよい。
【0043】
一部の実施形態では、可能なユーザアクションを識別することは、閾値分析を含む。例えば、ログファイル相関器180は、特定のユーザアクションがユーザによって取られた確率が80%である場合、特定のユーザアクションを可能なユーザアクションとして選択してもよい。各グループについて可能なユーザアクションを識別することに関する上記の例を参照すると、ログファイル相関器180は、「ダウンロード」を、その関連する確率(82%)が閾値(80%)を超えたことを理由として、グループについての可能なユーザアクションとして識別してもよい。一部の他の実施形態では、ログファイル相関器180は、1つ以上の可能なユーザアクションに関連付けられている確率のいずれもが閾値を超えない場合、ユーザアクションが「不明」であると判定してもよい。ログファイル相関器180が、ユーザアクションがグループについて「不明」であると判定した場合、ログファイル相関器180は、手動レビューのためにグループにフラグを立ててもよい。一部の実施形態では、方法200は、工程260に続いてもよい。
【0044】
工程260で、ログファイル相関器180は、1つ以上のグループのうちの各グループにラベリングする。一部の実施形態では、各グループは、工程250で実施される識別に少なくとも部分的に基づいてラベリングされる。例えば、ログファイル相関器180は、グループがユーザアクション「ファイルのアップロード」に対応している可能性が高いと識別することに応答して、グループ「ファイルのアップロード」にラベリングしてもよい。一部の実施形態では、グループ内の各部分は、対応するユーザアクションの識別に基づいてラベリングされてもよい。一部の実施形態では、方法200は、工程265で終了する。
【0045】
したがって、非トランザクションデータをトランザクションデータと相関させることによって、ログファイル相関器180は、クライアント−サーバトランザクションをアノテーションすることができる。その結果、トランザクションデータを人間が監視することにより、トランザクションの部分の各グループに対応している可能なユーザアクションを判定することができる。
【0046】
動作中、クライアントコンピュータ(例えば、クライアントコンピュータ110)のユーザは、ネットワーク(例えば、HTTPネットワーク120)にアクセスするリモートサービスソフトウェアの使用を開始する。ユーザがソフトウェアとインタラクションすると、トランザクション及び非トランザクションデータが生成及び記録され得る。上述したように、プロキシサーバ130は、トランザクションデータを記録し、それを監視デバイス140に格納させることができる。一部の実施形態では、監視デバイス140の通信インターフェースは、トランザクションデータ150をプロキシサーバ130から受信し、監視デバイス140のプロセッサは、トランザクションデータ150を内部ストレージに格納させる。
【0047】
ログファイル相関器180は、一部の実施形態では、トランザクションデータをバーストに分割するように構成される。
図3は、分割のためのトランザクションデータ305のストリームを示す。上述したように、トランザクションデータ305は、1つ以上のユーザアクションに関連付けられている複数の要求−応答のペアを含んでもよい。本開示は、トランザクションデータをブラウザとサーバとの間の直接的なやりとりとして説明することができるが、要求−応答のペアは、複数の通信チャネルを介して同時に動作してもよい。例えば、
図3は、トランザクションデータが3つのチャネル340(例えば、通信チャネル340a〜c)を介して通信されることを示す。
【0048】
図3で描写するように、トランザクションデータ305のストリームは、「A」として示される「ログイン」アクションと、「B」として示される「ファイルを削除する」アクションと、の2つの別個のユーザアクションに関する。縦の点線は、ウェブページとのユーザインタラクション320を表す。例えば、インタラクション320aは、ユーザがウェブページ上の「ログイン」ボタンをクリックすることに対応し得る。別の例として、インタラクション320bは、ユーザがファイルをクリックすることに対応しており、インタラクション320cは、ユーザがウェブページ上の「削除する」ボタンをクリックすることに対応していてもよい。
【0049】
前述のように、単一のユーザアクションは、1つ以上のイベントに対応している1つ以上のトランザクションに関連付けられていてもよい。本明細書で使用するとき、イベントとは、ソフトウェア状態において変化を引き起こすか、又はソフトウェア出力を生成する、クライアントコンピュータ110との任意のユーザインタラクションを指す。
図3に描写するように、各要求−応答のペアは、単一のトランザクション330を構成し、要求(黒い箱として示される)及び応答(白い箱として示される)を含む。一部のユーザアクションは単一のトランザクション330を含み得るが、一部のユーザアクションは2つ以上のトランザクション(例えば、ログインアクション「A」及び削除アクション「B」を参照のこと)を含む。例として、
図3で描写したように、「ファイルを削除する」アクションBは、以下のイベントに対応し得る4つのトランザクション330g〜jを含む。(1)ファイルの選択、(2)ファイル削除の表示、(3)ファイル削除の確認、及び(4)ページのリフレッシュ。
【0050】
トランザクションデータは、特定のユーザアクションに対応している部分に分割されてもよい。例えば、一部の実施形態では、ログファイル相関器180は、トランザクションデータ305をバースト310(例えば、バースト310a及び310b)に分割するように動作可能である。一部の実施形態では、トランザクションデータ305は、特定のトランザクション330に割り当てられたタイムスタンプに基づいて分割される。
【0051】
一般に、ユーザは、ユーザがソフトウェアとインタラクションし、別のアクションを取る前にHTTPサーバからの応答を待つように、連続的にアクションを取る。例えば、ユーザは、ウェブページをフェッチする要求を送信し、ログインしようと試みる前にHTTPサーバがウェブページを取得するのを待ってもよい。典型的には、単一のユーザインタラクションは、秒単位で分割された連続した一連のトランザクションを迅速に生成し、これらの非常に短い間隔は、ユーザのインタラクション間の比較的長い間隔とは区別可能である。したがって、トランザクションデータ305は、バースト的になる傾向があり、すなわち、各トランザクションに短いか又は長い間隔が続くことがあり、ここで、短い間隔は、トランザクションが単一のユーザインタラクションに応答していることを示すことができ、長い間隔は、トランザクションが新しいユーザアクションに対応していることを示すことができる。これらの指示に基づいて、ログファイル相関器180は、短い及び長い間隔を識別し、それに応じてトランザクションデータ150を分割することができる。
【0052】
ログファイル相関器180は、トランザクションデータ305に関連付けられているタイムスタンプを使用して、間隔を識別してもよい。一部の実施形態では、ログファイル相関器180は、迅速に連続して発生する全てのトランザクションを単一のバーストとしてクラスタリングする。例えば、
図3に描写するように、トランザクションデータ305は、「ログイン」アクションAに対応している時点に密接に関連する複数のトランザクション330a〜f、その後に続く識別可能な非活動期間350、その後に続く「ファイルを削除する」アクションBに密接に関連している複数のトランザクション330g〜jを示す。このように、トランザクション330a〜fは、第1のバースト310aにクラスタリングされてもよく、トランザクション330g〜jは、第2のバースト310bにクラスタリングされてもよい。したがって、1つ以上のトランザクション330は(例えば時点によって)、関連しているものとして識別されてもよく、単一のバースト310にクラスタリングされてもよい。上述したように、バースト310は、単一のユーザアクションを示しているか又は示唆している可能性がある。例えば、バースト310aはユーザアクションAに対応している可能性があり、バースト310bはユーザアクションBに対応している可能性がある。
【0053】
ログファイル相関器180は、一部の実施形態では、バースト310を1つ以上のグループに分類してもよい。バーストの分類は、1つのバーストの別のバーストとの類似性に基づいていてもよい。一部の実施形態では、バーストは、各バーストに含まれる非トランザクションデータの類似性に基づいて1つ以上のグループに分類される。他の実施形態では、バーストは、各バーストに含まれるトランザクションデータの類似性に基づいて1つ以上のグループに分類される。例えば、第1のバーストは、表1の以下のトランザクションデータを含むことができる。
【0055】
第2のバーストは、表2の以下のトランザクションデータを含むことができる。
【0057】
ログファイル相関器180は、バースト1及びバースト2のトランザクションデータを比較し、これらのバーストが類似しており、同じグループに属すると判定してもよい。例えば、ログファイル相関器180は、バースト1及びバースト2が、5つの同一の要求−応答のペアを共有するため、バースト1及びバースト2が類似しており、したがって同じグループに属すると判定してもよい。
【0058】
本開示では、トランザクション情報を人間可読形式で記述及び説明するが、これは、トランザクションデータの典型的な形式ではない。ほとんどの場合、トランザクションデータは、人間にとって無意味である。場合によっては、トランザクションデータは、完全な暗号である。
【0059】
図3を別の例として取り上げると、ログファイル相関器180は、トランザクション330a〜fがトランザクション330g〜jと十分に類似していないため、第1のバースト310aが第2のバースト310bと類似していないと判定することができる。かかる場合、ログファイル相関器180は、第1のバースト310a及び第2のバースト310bを、トランザクションデータ305のストリーム内の他のバースト310と比較し続けてもよい。上述したように、本開示は任意の好適な方法でバーストを分類することを認識している。一部の実施形態では、トランザクションデータ305の各バースト310は、1つ以上の類似したバースト310を含むグループにあってもよい。他の実施形態では、1つ以上のバースト310は、それ自体のグループを含むことができる(例えば、バースト310がトランザクションデータ305の任意の他のバースト310と類似していない場合)。
【0060】
特定の状況では、ユーザアクションがグループに関連付けられていると判定することが望ましい場合がある。上述のように、応答−要求のペアが単一のユーザアクションを示していない可能性があるため、どのユーザアクションがグループに関連付けられているかを判定することは困難であることがある。したがって、本開示は、非トランザクションデータをトランザクションデータと相関させて、クライアント−サーバトランザクションデータのアノテーションを容易にすることを認識している。
【0061】
ログファイル相関器180は、一部の実施形態では、各グループに対応している可能なユーザアクションを識別することができる。例えば、ログファイル相関器180は、上記のバースト1及びバースト2を含むグループが、ユーザアクション「電子メールを送信する」に対応している可能性があると識別してもよい。一部の実施形態では、ユーザアクションがグループに対応しているかどうかを識別することは、非トランザクションデータに基づいている。
【0062】
図4は、ホバーイベントに関連している表示の内部表現を示す。上述のように、クライアントコンピュータ110のイベントコレクタ160は、
図6に描写される内部表現のような非トランザクションデータを捕捉してもよい。一部の実施形態では、イベントコレクタ160は、表示に関連付けられている全ての非トランザクションデータを捕捉する。他の実施形態では、イベントコレクタ160は、表示の一部のみに関連付けられている非トランザクションデータを捕捉する。例えば、イベントコレクタ160は、ユーザがインタラクションしたウェブページの部分(直接階層のノード)及びユーザがインタラクションした可能性のある部分(直接階層から1レベル深いノード)に関連付けられている非トランザクションデータを捕捉し、ウェブページの残りの部分に関連付けられている非トランザクションデータを除外してもよい。
【0063】
図4に描写するように、イベントコレクタ160は、ユーザがインタラクションしたウェブページのノード(網掛けのノード)、及びユーザがインタラクションした可能性のあるノード(実線で囲まれた白いノード)に関連付けられている非トランザクションデータを捕捉する。例えば、ノード405は、マウスクリックイベントを表してもよく、一方でノード410は、ホバーイベントを表してもよい。
図4に描写するように、イベントコレクタ160は、他のノード(破線で囲まれた白いノード)に関連付けられている非トランザクションデータ170を捕捉しない。このモデルを使用すると、イベントコレクタ160は、ユーザアクションを判定することに関係しない可能性がある情報を無視しながら、ユーザアクションを判定することに関係する情報を収集する可能性があり得る。
【0064】
上述したように、非トランザクションデータ170は、ユーザイベントのタイムスタンプ、ユーザイベントのトリガに関するデータ、ユーザイベントの時点での表示の状態、及び/又はユーザイベントが発生した表示内の位置を含んでもよい。一部の実施形態では、イベントコレクタ110は、ユーザインタラクションごとにウェブページのビジュアルの全部又は一部を取得するように構成されてもよい。非トランザクションデータはまた、イベントの位置も含むため、ログファイル相関器180は、特定の時点でユーザがウェブページ上でインタラクションしていた内容を判定してもよい。
【0065】
例えば、
図4では、イベントコレクタ160は、ホバーイベント410に関連している非トランザクションデータ170を捕捉した。イベントログは、このイベントに関連付けられている全ての関係する非トランザクションデータ170を人間可読形式で表示してもよい。例えば、イベントログは、以下のように表示してもよい。
【0067】
イベントログからの非トランザクションデータ170を使用して、ログファイル相関器180は、イベントを識別してもよい。例えば、ここでログファイル相関器180は、クライアントコンピュータ110のユーザが13:01に「サブタスクノート」ノードの上でホバーしたことを識別してもよい。
【0068】
この識別は、次いで、イベントを特定のトランザクションと相関させるために使用されてもよい。この相関は、イベント及びトランザクションに関連付けられているタイムスタンプに基づいていてもよい。したがって、ログファイル相関器180は、特定のトランザクションが特定のイベントに対応していると判定してもよい。
【0069】
一例として、ユーザがファイルをダウンロードしたい場合は、ウェブページ上の「ダウンロード」ボタンをクリックする。このユーザインタラクションに関連付けられているトランザクションデータは「ダウンロード」を列挙しない場合があるが、ウェブページは列挙する。イベントコレクタ160は、このマウスクリックに関連付けられている非トランザクションデータを捕捉してもよい。例えば、イベントコレクタ160は、ウェブページのビジュアル、マウスクリックの時点、及びマウスクリックの位置を捕捉してもよい)。ログファイル相関器180は、次いで、ユーザがページ上の特定のポイントでクリックし、ユーザがクリックしたポイントに位置するテキストは「ダウンロード」とラベリングされたと判定してもよい。結果として、ログファイル相関器180は、イベントと同じタイムスタンプを共有するトランザクションが単語「ダウンロード」に関連付けられているはずであると判定してもよい。したがって、非トランザクションデータ170をトランザクションデータ150と相関させて、クライアント−サーバトランザクションのストリーム内の各トランザクションに意味を与えることができる。
【0070】
ログファイル相関器180は、一部の実施形態では、グループが特定のユーザアクションに対応していることを識別するように構成される。例えば、ログファイル相関器180は、グループ1がユーザアクション「電子メールを送信する」に関連していると識別してもよい。一部の実施形態では、ログファイル相関器180は、非トランザクションデータ170に基づいて、グループが特定のユーザアクションに対応していると識別する。
【0071】
上記で詳述したように、ログファイル相関器180は、非トランザクション170をトランザクションデータ150と相関させることによって、各トランザクションに対応しているイベントを識別してもよい。ログファイル相関器180は、次いで、識別されたイベントのうちの1つを、グループに対応しているユーザアクションとして選択してもよい。例えば、ログファイル相関器180は、イベントがグループ内に現れる回数に基づいて、識別されたイベントを選択してもよい。別の例として、ログファイル相関器180は、閾値分析に基づいて、識別されたイベントを選択してもよい。
【0072】
ログファイル相関器180は、グループ内の特定のトランザクションが無意味なイベントに関連することを判定するように更に構成されてもよい。例えば、ログファイル相関器180は、複数のグループに現れるトランザクションがユーザアクションを示すものではなく、更なる処理から除外されるべきであると判定してもよい。一部の実施形態では、ログファイル相関器180は、無意味なイベントに対応しているトランザクションを無視するように構成されてもよい。例えば、ログファイル相関器180は、識別されたイベントのうちの1つを選択するときに、無意味なイベントを無視するように構成されてもよい。結果として、グループについて識別されたユーザアクションは、ログファイル相関器180が無意味であると判定したイベントに基づくことはない。
【0073】
図2を参照して上述したように、ログファイル相関器180はまた、トランザクションデータと相関することがより困難な非トランザクションデータを受信してもよい(例えば、非トランザクションデータが2つ以上の可能なユーザアクションを含む場合)。このように、本開示は、ログファイル相関器180が、非トランザクションデータに基づいて特定のユーザアクションが発生した確率又は可能性を判定することによって、ユーザによって取られる可能性のあるユーザアクションを識別できることを認識している。
【0074】
ログファイル相関器180は、一部の実施形態では、グループについて識別されたユーザアクションに少なくとも基づいて、グループをラベリングするように構成されてもよい。一例として、ログファイル相関器180は、第1のグループのトランザクションがユーザアクション「電子メールを送信する」と関連している可能性があるという識別に基づいて、第1のグループ「電子メールを送信する」をラベリングしてもよい。一部の実施形態では、各グループは、全ての他のグループとは異なるようにラベリングされてもよい。一部の実施形態では、2つ以上のグループが同じラベルを共有してもよい。一部の実施形態では、グループは、2つ以上のユーザアクションでラベリングされてもよい。かかる場合、ログファイル相関器180は、更なる手動処理のために、かかるグループにフラグを立ててもよい。
【0075】
図5A〜
図5Dは、クライアント−サーバトランザクションをアノテーションする異なるフローを示す。
図5A〜
図5Dを参照して使用するとき、「バースト識別」、「バーストクラスタリング」、及び「アクションラベリング」という用語は、本開示の実施形態に従うトランザクション及び非トランザクションデータを処理する異なるステージを指す。「バースト識別」とは、
図5A〜
図5Dを参照して使用するとき、トランザクションデータをバーストに分割することを指す。「バーストクラスタリング」とは、
図5A〜
図5Dを参照して使用するとき、バーストを1つ以上のグループ(各グループはユーザアクションを示す)にクラスタリングすることを指す。「アクションラベリング」とは、
図5A〜5Dを参照して使用するとき、グループが特定のユーザアクションに対応しているという識別に基づいて、グループをラベリングすることを指す。
【0076】
図5Aは、連続して発生する3つの処理ステージを示す。例えば、トランザクション及び非トランザクション情報を受信すると、ログファイル相関器180は、バースト識別ステージ505を開始し、ここで、1つ以上のバーストがトランザクションデータから生成される。ログファイル相関器180は、次いで、バーストクラスタリングステージ510を開始してもよく、ここで、1つ以上のバーストは1つ以上のグループに分類される。ログファイル相関器180は、次いで、アクションラベリングステージ515を開始してもよく、ここで、1つ以上のバーストは、グループが関連付けられているユーザアクションに基づいてラベリングされる。
【0077】
図5B及び
図5Cは、2つの処理ステージが同時に発生し、1つの処理ステージが連続して発生する処理フローを示す。本明細書で使用するとき、「同時に」とは、処理ステージの結果が互いに依存していることを意味する。
図5Bは、バースト識別505及びバーストクラスタリング510のステージが同時に発生し得、アクションラベリングステージ515が続くことを示す。
図5Cは、バーストクラスタリング510及びアクションラベリング515のステージを同時に開始する前に発生するバースト識別ステージを示す。
【0078】
最後に、
図5Dは、3つの処理ステージが同時に発生し得ることを示す。したがって、システムは、バースト識別ステージ505、バーストクラスタリングステージ510、及び動作ラベリングステージ515を同時に開始することができる。
【0079】
図6は、例示的なコンピュータシステム600を示す。上述したように、監視デバイス140は、コンピュータシステム600のようなコンピュータシステムであってもよい。コンピュータシステム600は、任意の好適な物理的形態の任意の好適なコンピューティングシステムであってもよい。限定ではなく一例として、
コンピュータシステム600は、仮想マシン(VM)、組み込みコンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(例えば、コンピュータオンモジュール(COM)若しくはシステムオンモジュール(SOM))、デスクトップコンピュータシステム、ラップトップ若しくはノートブックコンピュータシステム、メインフレーム、コンピュータシステムのメッシュ、サーバ、アプリケーションサーバ、又はこれらのうちの2つ以上の組み合わせであってもよい。適切な場合には、コンピュータシステム600は、1つ以上のコンピュータシステム600を含み得、一体型若しくは分散型であり、複数の位置にわたり、複数のマシンにわたり、又は1つ以上のネットワーク内に1つ以上のクラウド構成要素を含み得る、クラウド内に駐在してもよい。適切な場合には、1つ以上のコンピュータシステム600は、本明細書に記載又は図解される1つ以上の方法のうちの1つ以上の工程を、実質的な空間的又は時間的な制限なく実施してもよい。限定ではなく一例として、1つ以上のコンピュータシステム600は、本明細書に記載又は図解される1つ以上の方法のうちの1つ以上の工程を、リアルタイムに又はバッチモードで実施してもよい。1つ以上のコンピュータシステム600は、適切な場合には、本明細書に記載又は図解される1つ以上の方法のうちの1つ以上の工程を、異なる時点又は異なる位置で実施してもよい。
【0080】
1つ以上のコンピュータシステム600は、本明細書で説明又は図解される1つ以上の方法のうちの1つ以上の工程を実施してもよい。特定の実施形態では、1つ以上のコンピュータシステム600は、本明細書に説明又は図解された機能を提供する。特定の実施形態では、1つ以上のコンピュータシステム600上で動作するソフトウェアは、本明細書で説明又は図解される1つ以上の方法のうちの1つ以上の工程を実施し、あるいは本明細書に説明又は図解される機能を提供する。特定の実施形態は、1つ以上のコンピュータシステム600のうちの1つ以上の部分を含む。本明細書では、コンピュータシステムへの参照は、コンピューティングデバイスを包含することができ、適切な場合には、その逆も可能である。更に、コンピュータシステムへの参照は、適切な場合には、1つ以上のコンピュータシステムを包含することができる。
【0081】
本開示は、任意の好適な数のコンピュータシステム600を意図している。本開示は、任意の好適な物理的形態を採るコンピュータシステム600を意図している。限定ではなく一例として、コンピュータシステム600は、埋め込みコンピュータシステム、システムオンチップ(SOC)、シングルボードコンピュータシステム(SBC)(例えば、コンピュータオンモジュール(COM)若しくはシステムオンモジュール(SOM)など)、デスクトップコンピュータシステム、ラップトップ又はノートブックコンピュータシステム、インタラクティブキオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、携帯情報端末(PDA)、サーバ、タブレットコンピュータシステム、又はこれらのうちの2つ以上の組み合わせであってもよい。適切な場合には、コンピュータシステム600は、1つ以上のコンピュータシステム600を含み得、一体型若しくは分散型であり、複数の位置にわたり、複数のマシンにわたり、複数のデータセンタにわたり、又は1つ以上のネットワーク内に1つ以上のクラウド構成要素を含み得る、クラウド内に駐在してもよい。適切な場合には、1つ以上のコンピュータシステム600は、本明細書に記載又は図解される1つ以上の方法のうちの1つ以上の工程を、実質的な空間的又は時間的な制限なく実施してもよい。限定ではなく一例として、1つ以上のコンピュータシステム600は、本明細書に記載又は図解される1つ以上の方法のうちの1つ以上の工程を、リアルタイムに又はバッチモードで実施してもよい。1つ以上のコンピュータシステム600は、適切な場合には、本明細書に記載又は図解される1つ以上の方法のうちの1つ以上の工程を、異なる時点又は異なる位置で実施してもよい。
【0082】
コンピュータシステム600は、
図6に描写されるような一部の実施形態では、プロセッサ610、メモリ620、ストレージ630、入力/出力(I/O)インターフェース640、通信インターフェース650、及びバス660を含んでもよい。本開示は、特定の構成において特定の数の特定の構成要素を有する特定のコンピュータシステムを説明及び図解するが、本開示は、任意の好切な配置の任意の好適な数の任意の好適な構成要素を有する任意の好適なコンピュータシステムを意図している。
【0083】
プロセッサ610は、特定の実施形態では、コンピュータプログラムを構成するような命令を実行するためのハードウェアを含む。例えば、プロセッサ610は、ログファイル相関器180を実行して、クライアント−サーバトランザクション150のアノテーションを容易にしてもよい。限定ではなく一例として、命令を実行するために、プロセッサ610は、内部レジスタ、内部キャッシュ、メモリ620、又はストレージ630から命令を取り出し(又はフェッチし)得、その命令を復号及び実行し、次いで、1つ以上の結果を内部レジスタ、内部キャッシュ、メモリ620、又はストレージ630に書き込んでもよい。
【0084】
特定の実施形態では、プロセッサ610は、データ、命令、又はアドレス用の1つ以上の内部キャッシュを含んでもよい。本開示は、適切な場合には、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ610を意図している。限定ではなく一例として、プロセッサ610は、1つ以上の命令キャッシュ、1つ以上のデータキャッシュ、及び1つ以上の変換ルックアサイドバッファ(TLB)を含んでもよい。命令キャッシュ内の命令は、メモリ620又はストレージ630内の命令のコピーであってもよく、命令キャッシュは、プロセッサ610による命令の検索を加速してもよい。データキャッシュ内のデータは、プロセッサ610で実行中の命令が演算するためのメモリ620又はストレージ630内のデータ、プロセッサ610で実行中の後続の命令によるアクセスのために、又はメモリ620若しくはストレージ630に書き込むために、プロセッサ610で実行された以前の命令の結果、あるいは他の適好なデータのコピーであってもよい。データキャッシュは、プロセッサ610による読み出し又は書き込み演算を加速してもよい。TLBは、プロセッサ610の仮想アドレス変換を加速してもよい。特定の実施形態では、プロセッサ610は、データ、命令、又はアドレス用の1つ以上の内部レジスタを含んでもよい。本開示は、適切な場合には、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ610を意図している。適切な場合には、プロセッサ610は、1つ以上の演算論理装置(ALU)を含んでもよく、マルチコアプロセッサであってもよく、又は1つ以上のプロセッサ175を含んでもよい。本開示は、特定のプロセッサを説明及び図解するが、本開示は、任意の好適なプロセッサを意図している。
【0085】
メモリ620は、プロセッサ610が実行するための命令、又はプロセッサ610が演算するためのデータを格納するためのメインメモリを含んでもよい。限定ではなく一例として、コンピュータシステム600は、ストレージ630又は別のソース(例えば、別のコンピュータシステム600など)からメモリ620に命令をロードしてもよい。プロセッサ610は、次いで、メモリ620から内部レジスタ又は内部キャッシュに命令をロードしてもよい。命令を実行するために、プロセッサ610は、内部レジスタ又は内部キャッシュから命令を取り出し、その命令を復号してもよい。命令の実行中又は実行後に、プロセッサ610は、1つ以上の結果(中間又は最終結果であり得る)を内部レジスタ又は内部キャッシュに書き込んでもよい。プロセッサ610は、その結果の1つ以上をメモリ620に書き込んでもよい。特定の実施形態では、プロセッサ610は、1つ以上の内部レジスタ若しくは内部キャッシュ内、又はメモリ620内(ストレージ630又は他の場所ではなく)の命令のみを実行し、1つ以上の内部レジスタ若しくは内部キャッシュ内、又はメモリ620内(ストレージ630又は他の場所ではなく)のデータのみに対して演算する。1つ以上のメモリバス(これはそれぞれアドレスバス及びデータバスを含み得る)は、プロセッサ610をメモリ620に結合してもよい。バス660は、後述するように、1つ以上のメモリバスを含んでもよい。特定の実施形態では、プロセッサ610とメモリ620との間に1つ以上のメモリ管理ユニット(MMU)が駐在し、プロセッサ610によって要求されたメモリ620へのアクセスを容易にする。特定の実施形態では、メモリ620は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適切な場合には、揮発性メモリであってもよい。このRAMは、適切な場合には適切な場合には、ダイナミックRAM(DRAM)又はスタティックRAM(SRAM)であってもよい。更に、このRAMは、シングルポート又はマルチポートのRAMであってもよい。本開示は、任意の好適なRAMを意図している。メモリ620は、適切な場合には、1つ以上のメモリ180を含んでもよい。本開示は特定のメモリを説明及び図解するが、本開示は任意の好適なメモリを意図している。
【0086】
ストレージ630は、データ又は命令の大容量ストレージを含んでもよい。限定ではなく一例として、ストレージ630は、ハードディスクドライブ(HDD)、フロッピーディスクドライブ、フラッシュメモリ、及び光ディスク、光磁気ディスク、磁気テープ、若しくはユニバーサルシリアルバス(USB)ドライブ、又はこれらの2つ以上の組み合わせを含んでもよい。ストレージ630は、適切な場合には、取り外し可能又は取り外し不能(又は固定)媒体を含んでもよい。ストレージ630は、適切な場合には、コンピュータシステム600の内部又は外部にあってもよい。特定の実施形態では、ストレージ630は、不揮発性の固体メモリである。特定の実施形態では、ストレージ630は、読み出し専用メモリ(ROM)を含む。適切な場合には、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書き換え可能ROM(EAROM)、若しくはフラッシュメモリ、又はこれらの2つ以上の組み合わせであってもよい。本開示は、任意の好適な物理的形態を採る大容量ストレージ630を意図している。ストレージ630は、適切な場合には、プロセッサ610とストレージ630との間の通信を容易にする1つ以上のストレージ制御ユニットを含んでもよい。適切な場合には、ストレージ630は、1つ以上のストレージ140を含んでもよい。本開示は特定のストレージを説明及び図解するが、本開示は任意の好適なストレージを意図している。
【0087】
I/Oインターフェース640は、コンピュータシステム600と1つ以上のI/Oデバイスとの間の通信のための1つ以上のインターフェースを提供するハードウェア、ソフトウェア、又はその両方を含んでもよい。コンピュータシステム600は、適切な場合には、これらのI/Oデバイスのうちの1つ以上を含んでもよい。これらのI/Oデバイスの1つ以上は、人間とコンピュータシステム600との間の通信を可能にすることができる。限定ではなく例として、I/Oデバイスは、キーボード、キーパッド、マイクロホン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なI/Oデバイス、又はこれらのうちの2つ以上の組み合わせを含んでもよい。I/Oデバイスは、1つ以上のセンサを含んでもよい。本開示は、任意の好適なI/Oデバイス、及びそれらのための任意の好適なI/Oインターフェース185を意図している。適切な場合には、I/Oインターフェース640は、プロセッサ610がこれらのI/Oデバイスのうちの1つ以上を駆動することを可能にする1つ以上のデバイス又はソフトウェアドライバを含んでもよい。I/Oインターフェース640は、適切な場合には、1つ以上のI/Oインターフェース185を含んでもよい。本開示は、特定のI/Oインターフェースを説明及び図解するが、本開示は、任意の好適なI/Oインターフェースを意図している。
【0088】
通信インターフェース650は、コンピュータシステム600と1つ以上の他のコンピュータシステム600又は1つ以上のネットワーク(例えばネットワーク100)との間の通信(例えば、パケットベースの通信など)のための1つ以上のインターフェースを提供するハードウェア、ソフトウェア、又はその両方を含んでもよい。限定ではなく一例として、通信インターフェース650は、イーサネット(登録商標)又は他のワイヤベースのネットワークと通信するネットワークインターフェースコントローラ(NIC)又はネットワークアダプタ、あるいはWi−Fiネットワークなどのワイヤレスネットワークと通信するワイヤレスNIC(WNIC)又はワイヤレスアダプタを含んでもよい。本開示は、任意の好適なネットワーク及びそのための任意の好適な通信インターフェース650を意図している。限定ではなく一例として、コンピュータシステム600は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、大都市圏ネットワーク(MAN)、若しくはインターネットの1つ以上の部分、又はこれらのうちの2つ以上の組み合わせと通信してもよい。これらのネットワークの1つ以上のうちの1つ以上の部分は、有線又は無線であってもよい。限定ではなく一例として、コンピュータシステム600は、無線PAN(WPAN)(例えば、BLUETOOTH(登録商標) WPANなど)、WI−FIネットワーク、WI−MAXネットワーク、携帯電話ネットワーク(例えば、汎欧州デジタル移動電話方式(GSM(登録商標))ネットワークなど)、若しくは他の好適な無線ネットワーク、又はこれらのうちの2つ以上の組み合わせと通信してもよい。コンピュータシステム600は、適切な場合には、これらのネットワークのいずれかのための任意の好適な通信インターフェース650を含んでもよい。通信インターフェース650は、適切な場合には、1つ以上の通信インターフェース190を含んでもよい。本開示は、特定の通信インターフェースを説明及び図解するが、本開示は、任意の好適な通信インターフェースを意図している。
【0089】
バス660は、コンピュータシステム600の構成要素を互いに結合するハードウェア、ソフトウェア、又はその両方を含んでもよい。限定ではなく一例として、バス660は、アクセラレーテッドグラフィックスポート(AGP)若しくは他のグラフィックスバス、強化業界標準アーキテクチャ(EISA)バス、フロントサイドバス(FSB)、ハイパートランスポート(HT)相互接続、業界標準アーキテクチャ(ISA)バス、インフィニバンド相互接続、低ピンカウント(LPC)バス、メモリバス、マイクロチャネルアーキテクチャ(MCA)バス、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクスプレス(PCIe)バス、シリアルアドバンストテクノロジアタッチメント(SATA)バス、ビデオエレクトロニクス規格協会ローカル(VLB)バス、若しくは別の好適なバス、又はこれらの2つ以上の組み合わせを含んでもよい。バス660は、適切な場合には、1つ以上のバス212を含んでもよい。本開示は、特定のバスを説明及び図解するが、本開示は、任意の好適なバス又は相互接続を意図している。
【0090】
コンピュータシステム600の構成要素は、統合又は分離されていてもよい。一部の実施形態では、コンピュータシステム600の構成要素は、それぞれ単一のシャーシ内に収容されてもよい。コンピュータシステム600の動作は、より多くの、より少ない、又は他の構成要素によって実施されてもよい。更に、コンピュータシステム600の動作は、ソフトウェア、ハードウェア、他のロジック、又はこれらの任意の好適な組み合わせを含み得る、任意の好適なロジックを使用して実施されてもよい。
【0091】
本明細書では、コンピュータ可読非一時的ストレージ媒体は、適切な場合には、1つ以上の半導体ベースの又は他の集積回路(IC)(例えば、フィールドプログラマブルゲートアレイ(FPGA)若しくは特定用途向けIC(ASIC)など)、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピーディスク、フロッピーディスクドライブ(FDD)、磁気テープ、固体ドライブ(SSD)、RAMドライブ、セキュアデジタルカード若しくはドライブ、任意の他の好適なコンピュータ可読非一時的ストレージ媒体、又はこれらのうちの2つ以上の任意の好適な組み合わせを含んでもよい。コンピュータ可読非一時的ストレージ媒体は、適切な場合には、揮発性、不揮発性、又は揮発性と不揮発性との組み合わせであってもよい。
【0092】
本明細書では、別段に明記されていない限り、又は文脈によって示されていない限り、「又は」は排他的ではなく包含的である。したがって、本明細書では、別段に明記されていない限り、又は文脈によって示されていない限り、「A又はB」は「A、B、又はその両方」を意味する。更に、別段に明記されていない限り、又は文脈によって示されていない限り、「及び」は共同及び個別の両方である。したがって、本明細書では、別段に明記されていない限り、又は文脈によって示されていない限り、「A及びB」は、「A及びBが共同的に、又は個別的に」を意味する。
【0093】
本開示の範囲は、当業者なら理解するはずである、本明細書で説明又は図解される例示的実施形態に対する全ての変更、置換、変形、改変、及び修正を包含する。本開示の範囲は、本明細書で説明又は図解される例示的実施形態に限定されない。更に、本開示は、本明細書のそれぞれの実施形態が特定の構成要素、要素、機能、動作、又は工程を含むものとして説明及び図解するが、これらの実施形態のいずれも、当業者なら理解するはずである、本明細書のどこかで説明又は図解される構成要素、要素、機能、動作、又は工程のいずれかの任意の組み合わせ又は置換を含むことができる。更に、特定の機能を実施するように適合され、配置され、実施することが可能であり、実施するように構成され、実施することが可能にされ、実施するように動作可能である装置又はシステムあるいは装置又はシステムの構成要素に対する添付の特許請求の範囲での参照は、その装置、システム、又は構成要素がそのように適合され、配置され、可能であり、構成され、可能にされ、動作可能にされる限り、その装置、システム、構成要素又はその特定の機能が活動化され、オンにされ、又はロック解除されるか否かに関わらず、その装置、システム、構成要素を包含する。