JP7180681B2 - 情報処理装置、制御方法、及びプログラム - Google Patents

情報処理装置、制御方法、及びプログラム Download PDF

Info

Publication number
JP7180681B2
JP7180681B2 JP2020547832A JP2020547832A JP7180681B2 JP 7180681 B2 JP7180681 B2 JP 7180681B2 JP 2020547832 A JP2020547832 A JP 2020547832A JP 2020547832 A JP2020547832 A JP 2020547832A JP 7180681 B2 JP7180681 B2 JP 7180681B2
Authority
JP
Japan
Prior art keywords
event
string
dictionary data
information
sequence
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
JP2020547832A
Other languages
English (en)
Other versions
JPWO2020065960A1 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2020065960A1 publication Critical patent/JPWO2020065960A1/ja
Application granted granted Critical
Publication of JP7180681B2 publication Critical patent/JP7180681B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は履歴の管理に関する。
種々のイベントの履歴を管理する技術が開発されている。例えば特許文献1は、循環バッファで調査対象イベントのログを管理する技術を開示している。循環バッファであるため、バッファの最後尾までログが書き込まれたら、バッファの先頭に戻り、既存のログを上書きってログの書き込みが継続される。ただし、所定IDのイベントが格納されている領域については、上書きを行わないようにする。
特許文献2は、ログのデータ量が閾値以上になった場合に、ログファイルからエラーログ及びエラーログに関連するログを抽出し、抽出したログ以外のログをログファイルから削除する技術を開示している。ここで、エラーログに関連するログは、エラーログの前後n秒に記録されたログ、又はエラーログの前後n件に記録されたログである。
特開2014-146074号公報 特開2013-065244号公報
特許文献1や特許文献2の技術を利用すると、特定のイベント以外のイベントについての情報をログから削除することができる。しかしながら、これらの技術では、当該特定のイベントについての情報はログにそのまま残ることになる。そのため例えば、ログに残すように設定された特定のイベントが多く発生した場合には、ログのサイズが大きくなってしまう。
本発明は、上述の課題に鑑みてなされたものであり、その目的の一つは、イベントの履歴を効率的に管理する技術を提供することである。
本発明の情報処理装置は、1)辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定部と、2)特定された代替表現を含む情報を出力する出力部と、を有する。辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す。
本発明の制御方法はコンピュータによって実行される。当該制御方法は、1)辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定ステップと、2)特定された代替表現を含む情報を出力する出力ステップと、を有する。辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す。
本発明のプログラムは、本発明の制御方法が有する各ステップをコンピュータに実行させる。
本発明によれば、イベントの履歴を効率的に管理する技術が提供される。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
実施形態1の情報処理装置の動作の概要を表す図である。 実施形態1の第1情報処理装置の構成を例示する図である。 第1情報処理装置を実現するための計算機を例示する図である。 実施形態1の第1情報処理装置によって実行される処理の流れを例示するフローチャートである。 イベント履歴をテーブル形式で例示する図である。 整流部を有する第1情報処理装置を例示するブロック図である。 辞書データをテーブル形式で例示する図である。 第2イベント履歴列をテーブル形式で例示する図である。
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
[実施形態1]
<概要>
図1は、実施形態1の情報処理装置の動作の概要を表す図である。図1は情報処理装置2000の動作についての理解を容易にするための概念的な図であり、情報処理装置2000の動作を具体的に限定するものではない。
情報処理装置2000は、複数のイベント履歴12によって表されるイベント列を、より簡潔な代替表現20で表す。イベント履歴12は、対象のコンピュータシステム(以下、対象システム)において発生したイベントに関する情報である。対象システムは、1つ以上の任意のマシンで構成される。マシンは、物理マシンであってもよいし、仮想マシンであってもよい。イベントは、例えば、対象システムに含まれるマシンで動作するプロセスが行った活動(ファイルや他のプロセスへのアクセスなど)を表す。
代替表現20は、イベント列を別の形で表す情報である。例えば、代替表現20は、イベント列が持つ意味や、イベント列によって実現される一連の処理の名称などを表す。例えば、プロセスの活動をシステムコール単位でイベント履歴12に記録するように構成された対象システムにおいて、複数のシステムコールの実行を伴う API(Application Programming Interface) X が実行されたとする。この場合、API X の中で実行される複数のシステムコールそれぞれについてのイベント履歴12が記録される。そのため、これらのイベント履歴12によって示されるイベント列(複数のシステムコールの列)は、API X の実行という1つのまとまった意味を持つ。よって、このケースでは、複数のイベント履歴12によって示されるイベント列を、「API X の実行」などといった代替表現20で簡潔に表現できる。
そこで情報処理装置2000は、複数のイベント履歴12によって表されるイベント列について、代替表現20を特定する。代替表現20の特定は、辞書データ30を利用して行われる。辞書データ30は、イベント列と、そのイベント列に対応する代替表現20とを対応づけた情報である。さらに情報処理装置2000は、特定した代替表現20を含む出力情報を出力する。
例えば図1の例において、情報処理装置2000は、「e1, e10, e3, e4, e5」というイベント列を取得している。ここで、辞書データ30において、「e1, e10」というイベント列に対して、「API 1」という代替表現20が対応づけられている。また、辞書データ30において、「e3, e4, e5」というイベント列に対して、「API 3」という代替表現20が対応づけられている。そこで、情報処理装置2000は、取得したイベント列のうち、「e1, e10」というイベント列に対して「API 1」という代替表現20を特定し、「e3, e4, e5」というイベント列に対して「API 3」という代替表現20を特定する。そして情報処理装置2000は、「API 1」という代替表現20及び「API 3」という代替表現20を含む情報を出力する。例えば、情報処理装置2000は、これらの代替表現20を順に示すファイルを記憶装置に記憶する。
<作用効果>
本実施形態の情報処理装置2000によれば、辞書データ30を用い、複数のイベント履歴12によって表されるイベント列について、代替表現20が特定される。そして、代替表現20を含む情報が出力される。こうすることで、複数のイベント履歴12の代わりに、これらをより簡潔に表した代替表現20を管理することで、対象システムで発生したイベントを管理することができる。これにより、対象システムで発生したイベントの履歴の管理に要する計算機資源(記憶装置に容量など)を少なくすることができるため、イベントの履歴を効率よく管理できるようになる。
また、代替表現20でイベントの履歴を管理することにより、対象システムの挙動を人が理解しやすくなる。例えば、API の実行に伴って複数のシステムコールが実行されたとする。この場合、各システムコールの名称等を見るよりも、それらのシステムコールを呼び出した API の名称等を見た方が、対象システムの挙動を容易に理解することができる。
以下、本実施形態の情報処理装置2000についてさらに詳細に説明する。
<情報処理装置2000の機能構成の例>
図2は、実施形態1の情報処理装置2000の構成を例示する図である。情報処理装置2000は、特定部2020及び出力部2040を有する。特定部2020は、複数のイベント履歴12によって表されるイベント列について、辞書データ30を用いて、代替表現20を特定する。出力部2040は、代替表現20を含む出力情報を出力する。辞書データ30は、イベント列と、そのイベント列に対応する代替表現20との対応付けを示す。
<情報処理装置2000のハードウエア構成>
情報処理装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、情報処理装置2000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
図3は、情報処理装置2000を実現するための計算機1000を例示する図である。計算機1000は任意の計算機である。例えば計算機1000は、Personal Computer(PC)やサーバマシンなどの据え置き型の計算機である。その他にも例えば、計算機1000は、スマートフォンやタブレット端末などの可搬型の計算機である。計算機1000は、情報処理装置2000を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
計算機1000は、バス1020、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120を有する。バス1020は、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ1040などを互いに接続する方法は、バス接続に限定されない。
プロセッサ1040は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)などの種々のプロセッサである。メモリ1060は、RAM(Random Access Memory)などを用いて実現される主記憶装置である。ストレージデバイス1080は、ハードディスク、SSD(Solid State Drive)、メモリカード、又は ROM(Read Only Memory)などを用いて実現される補助記憶装置である。
入出力インタフェース1100は、計算機1000と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース1100には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。
ネットワークインタフェース1120は、計算機1000を通信網に接続するためのインタフェースである。この通信網は、例えば LAN(Local Area Network)や WAN(Wide Area Network)である。ネットワークインタフェース1120が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
ストレージデバイス1080は、情報処理装置2000の各機能構成部を実現するプログラムモジュールを記憶している。プロセッサ1040は、これら各プログラムモジュールをメモリ1060に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
<処理の流れ>
図4は、実施形態1の情報処理装置2000によって実行される処理の流れを例示するフローチャートである。特定部2020は、辞書データ30を用いて、複数のイベント履歴12によって表されるイベント列についての代替表現20を特定する(S102)。出力部2040は、代替表現20を含む出力情報を出力する(S104)。
<イベント履歴12について>
イベント履歴12は、過去の或る時点において対象システム上で(対象システムに含まれるマシン上で)発生したイベントに関する情報である。イベント履歴12は、イベントの発生時刻とイベントの内容とを対応づけて示す。
例えばイベント履歴12は、コンピュータシステム10上で動作するプロセスの活動の履歴を表す。例えばプロセスの活動は、システムコール単位で記録される。或るプロセスが他のプロセスを客体として活動する場合、これらのプロセスは互いに同一の OS(Operating System)上で動作するものであってもよいし、互いに異なる OS 上で動作するものであってもよい。後者の例としては、例えば、ソケットインタフェースを利用することで、或るプロセスが他の OS 上で動作する別のプロセスと通信を行うことが考えられる。
例えばイベントは、主体、客体、活動内容、及び発生時刻という4つの要素を表す情報によって識別される。そこで例えば、イベント履歴12は、主体を表す主体情報、客体を表す客体情報、活動の内容を表す内容情報、及び発生時刻の組み合わせを示す。
主体情報は、例えば、そのイベントを発生させたプロセスを識別する情報である。以下、プロセスを識別する情報をプロセス識別情報と呼ぶ。具体的には、プロセス識別情報は、プロセスID(Identifier)を含む。ただし、複数のスレッドが動作するプロセスについてのプロセス識別情報は、プロセスIDに加え、スレッドIDをさらに含む。
また、プロセス識別情報は、プロセスの実行ファイルに関する情報をさらに含んでもよい。プロセスの実行ファイルに関する情報とは、例えば、実行ファイルの名称やパス、実行ファイルのハッシュ値、実行ファイルのデジタル署名、又は実行ファイルで実現されるアプリケーションの名称などである。
客体情報は、例えば、その客体の種別及び識別情報である。客体の種別は、例えば、プロセス、ファイル、又はソケットなどである。客体がプロセスである場合、客体情報にはそのプロセスのプロセス識別情報が含まれる。
客体がファイルである場合、客体情報には、そのファイルを識別する情報(以下、ファイル識別情報)が含まれる。ファイル識別情報は、例えばファイルの名称やパスなどである。また、客体がファイルである場合、客体情報には、そのファイルのハッシュ値や、ファイルシステムの識別子とファイルシステム上でのファイルを構成するディスクブロックの識別子(inode 番号やオブジェクトID)の組み合わせなどが含まれていてもよい。
客体がソケットである場合、例えば客体情報には、ソケットに割り当てられた識別子が含まれる。
内容情報は、例えば、種々ある活動内容に予め割り当てておく識別子である。例えば、「プロセスを起動する」、「プロセスを停止する」、「ファイルをオープンする」、「ファイルからデータを読み込む」、「ファイルにデータを書き込む」、「ソケットをオープンする」、「ソケットからデータを読み込む」、又は「ソケットにデータを書き込む」などといった活動の内容に、互いに異なる識別子を割り当てておく。なお、ソケットに対するアクセスは、そのソケットに対応づけられた他の装置へのアクセスを意味する。
システムコール単位でイベントが記録される場合、内容情報は、システムコールの識別情報を示してもよい。システムコールの識別情報は、例えば、システムコール名やシステムコール番号である。また、内容情報には、システムコールに与えた引数の内容(引数自体の値や、引数として与えたポインタが指し示すメモリ領域に格納されているデータ)など、システムコールがどのような条件下で実行されたかを表す情報がさらに示されてもよい。
図5は、イベント履歴12をテーブル形式で例示する図である。以下、図5のテーブルをテーブル200と呼ぶ。テーブル200の各レコードは、1つのイベント履歴12を表す。テーブル200は、主体情報202、客体情報204、内容情報206、及び発生時刻207を含む。主体情報202は、プロセスID208、スレッドID209、及びパス210を含む。客体情報204は、種別212及び識別情報214を含む。発生時刻207は、イベントが発生した時刻を示す。
ここで、イベント履歴12は、対象システム上におけるプロセスの活動を記録することで生成される。プロセスの活動を記録する技術には、既存の技術を利用することができる。
<イベント履歴12の取得>
特定部2020は、処理対象とする複数のイベント履歴12を取得する。具体的には、特定部2020は、イベント履歴12が時系列で並べられたイベント履歴列10を取得する。イベント履歴列10は、特定部2020からアクセス可能な記憶装置に記憶されている。この記憶装置を、履歴記憶装置を呼ぶ。履歴記憶装置は、情報処理装置2000の内部に設けられていてもよいし、情報処理装置2000の外部に設けられていてもよい。
例えば履歴記憶装置には、ログファイルが記憶されている。例えばこのログファイルには、発生時刻の昇順に、複数のイベント履歴12が記録されている。特定部2020は、このログファイルに記録されている情報を順に読み出すことで、イベント履歴列10を取得する。
<<イベントの整流>>
ここで、イベント履歴列10には、様々な動作主体の動作によって生じたイベントの履歴が含まれうる。このような場合、情報処理装置2000は、イベント履歴列10に含まれるイベント履歴12を、動作主体ごとにグループ分けする。このグループ分けを「イベントの整流」とも呼ぶ。
イベントの整流を行う機能を有する機能構成部を、整流部2060と呼ぶ。図6は、整流部2060を有する情報処理装置2000を例示するブロック図である。整流部2060は、イベント履歴列10に含まれるイベント履歴12を、動作主体が同一であるイベント履歴12ごとにグループ分けする。動作主体は、イベント履歴12の主体情報に含まれるプロセスIDによって特定できる。ただし、動作主体がスレッドである場合には、動作主体は、「プロセスID、スレッドID」のペアによって特定される。
なお、イベントの整流は、情報処理装置2000以外の装置によって行われてもよい。この場合、特定部2020は、グループごとにイベント履歴列10を取得する。
<代替表現20の特定:S102>
特定部2020は、辞書データ30を用いて、複数のイベント履歴12によって示されるイベント列についての代替表現20を特定する(S102)。具体的には、特定部2020は、イベント履歴列10を取得し、取得したイベント履歴列10に含まれる複数のイベント履歴12によって示されるイベントの列(以下、第1イベント列14)について、1つ以上の代替表現20の特定を行う。
<<辞書データ30について>>
ここで、代替表現20の特定には、辞書データ30が利用される。ここでは、辞書データ30について具体的に説明する。辞書データ30は、イベント列と、そのイベント列に対応する代替表現20とを対応づけたデータである。ここで、辞書データ30に示されるイベント列を第2イベント列と呼ぶ。
図7は、辞書データ30をテーブル形式で例示する図である。図7に示されるテーブルを、テーブル300と表記する。テーブル300は、第2イベント列302と、代替表現304という2つの列を有する。第2イベント列302は、イベントを表す情報が時系列で並べられたデータである。代替表現304は、第2イベント列302に示される第2イベント列に対応づけられる代替表現20である。
ここで、第2イベント列302に含まれる各イベントは、例えば、プロセスの活動の客体と内容の組み合わせ(何に対して何をしたか)によって定められる。例えば、「ファイルAの読み込み」は、「ファイルA」を客体とし、「ファイルの読み込み」を内容とするプロセスの活動である。そこで例えば、第2イベント列302が示す各イベントの情報は、イベント履歴12における客体情報と内容情報の組み合わせ(図5のテーブル200における客体情報204及び内容情報206)とすることができる。
辞書データ30が示す代替表現20は、例えば、対応する第2イベント列が持つ意味や、対応する第2イベント列によって実現される処理の名称などを表す。例えば、或る API の実行に伴って生じるイベントの列を第2イベント列に示すケースは、対応する代替表現20は、その API の識別情報(名称など)を表す。なお、同一名称の API が複数バージョン存在し、バージョンによって発生するイベント列が異なる場合、API の識別情報には、バージョン情報も含めることが好適である。
また、API によっては、API の実行条件(API に与える引数の内容や環境変数など)によって、実行される処理が異なることもある。この様な場合、代替表現20には、API の識別情報に加え、実行条件を表す情報も含めることが好適である。例えば図7のテーブル300は、代替表現304において、API 識別情報306に加え、実行条件308を示している。
なお、代替表現20が示す情報は、人が目で見る情報として出力されることを考慮して、人の目で見て理解しやすいテキストデータであってもよい。例えば、hoo という API があるとする。また、引数 a の値を0以上として hoo を実行するとイベント A 及び B が発生し、引数 a の値を0未満として hoo を実行するとイベント C 及び D が発生するとする。この場合、「A, B」という第2イベント列に対応づける代替表現20は、「API:hoo; 引数:a>=0」というテキストデータとし、「C, D」という第2イベント列に対応づける代替表現20は、「API:hoo; 引数:a<0」というテキストデータとする。このようなテキストデータを出力することにより、「どの API がどのような実行条件の下で実行されたのか」を人が容易に把握できる。
なお、辞書データ30が示すのは、イベント列と API との対応づけに限定されない。例えば辞書データ30は、API に限らず、任意の関数と、その関数の実行によって生じるイベントの列とを対応づけてもよい。なお、ここでいう関数とは、一連の処理を1つにまとめて定義した処理群を意味し、プロシージャやメソッドなども含まれるものとする。また、イベント列に対応づけられるのは、関数に限定されなくてもよい。
<<代替表現20の特定方法>>
例えば特定部2020は、第1イベント列14から、いずれかの第2イベント列とマッチする部分イベント列を1つ以上抽出する。そして、情報処理装置2000は、抽出した各部分イベント列についての代替表現20を特定する。具体的には、特定部2020は、部分イベント列とマッチした第2イベント列に対応する代替表現20を、その部分イベント列についての代替表現20として特定する。
第1イベント列と第2イベント列とのマッチングについて、より具体的に説明する。例えば特定部2020は、辞書データ30に示される各第2イベント列について、第1イベント列の先頭から始まる部分イベント列との類似度を算出する。例えば、長さがnの第2イベント列については、第1イベント列の先頭から始まる長さnの部分イベント列と比較する。特定部2020は、閾値以上の類似度が算出された部分イベント列と第2イベント列のペアについて、これらがマッチしたものとして扱う。
特定部2020は、或る部分イベント列と第2イベント列とがマッチしたら、その部分イベント列を、第1イベント列14から抽出する。そして、特定部2020は、抽出した部分イベント列とマッチした第2イベント列に対応する(辞書データ30において対応づけられている)代替表現20を、その部分イベント列についての代替表現20として特定する。特定部2020は、抽出した部分イベント列を除外した第1イベント列14について、さらに同様の処理を繰り返し行う。処理の繰り返しは、第1イベント列14が無くなるまでおこなわれる。
なお、第1イベント列14の先頭から始まる部分イベント列が、いずれの第2イベント列ともマッチしなかったとする。この場合、例えば特定部2020は、先頭のイベント履歴12を第1イベント列14から除外した後、さらに第1イベント列14と第2イベント列とのマッチングを行う。
また、第1イベント列14の先頭から始まる部分イベント列との類似度が閾値以上である第2イベント列が複数存在したとする。この場合、例えば特定部2020は、閾値以上の類似度が算出された部分イベント列のうち、最長の部分イベント列を第1イベント列14から抽出する。そして、特定部2020は、その部分イベント列とマッチした第2イベント列に対応する代替表現20を、その部分イベント列の代替表現20として特定する。
例えば、第1イベント列14の先頭から始まる長さ2の部分イベント列A1が第2イベント列B1とマッチし、第1イベント列14の先頭から始まる長さ4の部分イベント列A2が第2イベント列B2とマッチしたとする。この場合、特定部2020は、長さ4の部分イベント列A2を第1イベント列14から抽出し、部分イベント列A2の代替表現20を、辞書データ30において第2イベント列B2と対応づけられている代替表現20とする。
<<類似度について>>
イベント列間の類似度を定める方法について説明する。特定部2020は、部分イベント列が示す複数のイベントと、第2イベント列が示すイベントとについて、先頭から互いに同一の順位にあるイベント同士で類似度を算出する。すなわち、特定部2020は、「第2イベント列のn番目のイベントについて、部分イベント列のn番目のイベント(第1イベント列14の先頭からn番目のイベント)との類似度を算出する」という処理を、第2イベント列に含まれる全てのイベントについて行う。そして、特定部2020は、算出された複数の類似度を用いて、第2イベント列と部分イベント列との間の類似度を算出する。例えば、特定部2020は、算出された複数の類似度を合計した値、掛け合わせた値、又は平均した値などを、第2イベント列と部分イベント列との間の類似度として算出する。
イベント同士の類似度は、例えば、そのイベントによって表されるプロセスの活動の客体及び活動内容の類似度合いに基づいて算出する。例えば特定部2020は、部分イベント列のi番目のイベントの客体及び内容(i番目のイベント履歴12が示す客体情報及び内容情報)と、第2イベント列のi番目のイベントの客体と活動内容との類似度を算出する。例えば特定部2020は、客体同士の類似度と、活動内容同士の類似度とについて、合計値、乗算値、又は平均値などを算出し、算出した値をイベント同士の類似度とする。
より具体的な例として、プロセスの活動がシステムコールなどの関数単位で記録されるとする。この場合、イベント履歴12が示すプロセスの活動の客体と内容は、関数の識別情報及びその関数の実行条件(引数の内容など)によって特定される。そこで、イベント履歴12と第2イベント列のいずれもが、イベントを表す情報として、関数の識別情報とその実行条件を含むようにしておく。そして特定部2020は、部分イベント列が示す各関数の識別情報及び実行条件と、第2イベント列が示す各関数の識別情報及び実行条件との類似度を算出する。
例えば類似度は、0以上1以下の値で定める。そして、比較するイベント同士で、関数の識別情報と実行条件の全てが一致すれば、類似度を1とする。そして、イベント同士で一致する情報が少ないほど、類似度が小さくなるようにする。ただし、関数の識別情報の一致・不一致には、実行条件の一致・不一致よりも大きな重みを与えることが好適である。関数が異なれば処理の内容は大きく異なる一方で、引数などの実行条件が多少違っても処理の内容はあまり変わらないことが多いためである。
例えば、イベント同士の類似度の最大値1のうち、0.5 は、関数の識別情報の一致・不一致で定める。すなわち、関数の識別情報が一致したら、類似度の値に 0.5 を設定する。そして、この類似度に対し、実行条件の一致度合い(0から0.5の間の値)を加算した値を、イベント同士の類似度とする。
<<動作主体が複数存在するケースについて>>
前述した様に、イベント履歴列10には、それぞれ異なる動作主体についてのイベント履歴12が含まれることがある。この場合、特定部2020は、イベント履歴列10を前述したグループに分割し、グループごとに第1イベント列14を得て、各第1イベント列14について代替表現20の特定を行う。
<出力情報の出力:S106>
出力部2040は、代替表現20を含む情報を出力する(S106)。例えば出力部2040は、第1イベント列14から第2イベント履歴列を生成し、第2イベント履歴列を出力する。第2イベント履歴列は、第2イベント履歴を時系列で示す。1つの第2イベント履歴は、第1イベント列14から抽出された1つの部分イベント列について特定された代替表現20を示す。言い換えれば、第2イベント履歴列は、第1イベント列14に含まれるイベント履歴12を第2イベント履歴で置き換えたものである。
図8は、第2イベント履歴列をテーブル形式で例示する図である。図8のテーブルをテーブル400と呼ぶ。テーブル400は、発生時刻402及び代替表現404という2つの列を有する。
第2イベント履歴は、複数のイベント履歴12を1つに集約したものであると言える。そのため、対象システムで発生したイベントの履歴を、イベント履歴12に変えて第2イベント履歴で管理することにより、対象システムで発生したイベントの履歴の管理に要する計算機資源(記憶装置に容量など)を少なくすることができる。
また、第2イベント履歴でイベントの履歴を管理することにより、対象システムの挙動を人が理解しやすくなる。例えば、API の実行に伴って複数のシステムコールが実行されたとする。この場合、各システムコールの名称等を見るよりも、それらのシステムコールを呼び出した API の名称等を見た方が、対象システムの挙動を容易に理解することができる。
第2イベント履歴の出力先は、例えば記憶装置である。例えば出力部2040は、第1イベント列14ごと(動作主体ごと)に、第2イベント履歴が記録されたログファイルを生成する。すなわち、出力部2040は、1つの第1イベント列14から生成した1つ以上の第2イベント履歴を、発生時刻順にログファイルに記録して、記憶装置に記憶させる。ただし、第2イベント履歴の出力先は、ディスプレイ装置や他の装置(サーバマシンなど)であってもよい。
<辞書データ30の生成方法について>
辞書データ30は、予め生成して記憶装置に記憶させておく。ここでは、辞書データ30を生成する方法について例示する。辞書データ30の生成は、情報処理装置2000によって行われてもよいし、情報処理装置2000以外の装置によって行われてもよい。以下、辞書データ30の生成を行う装置を、第2情報処理装置3000と呼ぶ。
第2情報処理装置3000は、テストシステムの挙動の記録を解析することによって、辞書データ30を生成する。テストシステムは、対象システムと同様に、イベント履歴12を記憶装置に記憶させるように構成されている。
さらに、テストシステムは、代替表現20を利用して表現したい一連のイベントについて、その開始時点を表す情報(以下、開始情報)と、その終了時点を表す情報(以下、終了情報)も、記憶装置に記憶させる。例えば、開始情報と終了情報は、イベント履歴12と共に、ログファイルに記録される。
例えば、API の実行によって発生する一連のシステムコールの実行を、一連のイベントとして扱いたいとする。この場合、例えばテストシステムは、API 呼び出しをフックし、その API の実行の前で、API に関する情報(識別情報や実行条件)を示す開始情報を記録する。さらにテストシステムは、API の実行の後に、開始情報との対応が分かる態様で、終了情報を記録する。例えば、開始情報と終了情報に同一の識別情報(例えば、ランダム値)を含めることで、開始情報と終了情報との対応を把握することができる。
ここで、API 呼び出しをフックして、API の実行の前後で所定の処理が実行されるようにする技術には、既存の技術を利用することができる。例えば、フック対象の API について、その API が呼び出された際に代わりに呼び出されるラッパ関数を定義しておく。そして、ラッパ関数は、「開始情報の記録、API の実行、終了情報の記録」という順で処理を行うように実装される。このようなラッパ関数を定義しておけば、API 呼び出しを行うことによって対応するラッパ関数が実行されるため、「開始情報、API の実行に伴って発生する各イベントを表すイベント履歴12、終了情報」という順に情報が記録されるようになる。
テストシステムの操作者は、テストシステム上で、辞書データ30に含めたい API を呼び出すアプリケーションや OS を実行することで、その API の実行によって発生するイベントの記録を行う。ここで、同一の API であっても、実行条件に応じて実行される処理がそれぞれ異なることがある。そのため、テストシステムでは、同一の API を様々な実行条件で実行し、各実行条件下でイベントの記録を行うことが好ましい。そこで例えば、対象の API を呼び出す種々のアプリケーション(OS 付属のアプリケーションや、対象システムが導入されている組織で標準的に使用されているアプリケーションなど)を複数回実行させて、イベントの記録を行う。なお、アプリケーションや OS に複数のバージョンがある場合、様々なバージョンのアプリケーションや OS を実行させることが好ましい。
第2情報処理装置3000は、開始情報と終了情報との間に記録された一連のイベントを第2イベント列とする辞書データ30を生成する。例えば前述したように、「開始情報、API の実行によって生じる各イベントについてのイベント履歴12、及び終了情報」という順にログファイルに記録されるとする。この場合、第2情報処理装置3000は、ログファイルを解析することで、開始情報と終了情報のペアを特定する。そして、特定されたペアの開始情報と終了情報の間に記録されている複数のイベント履歴12によって表されるイベント列を第2イベント列とし、開始情報に示されている API に関する情報を代替表現20として、辞書データ30を生成する。代替表現20は、例えば、開始情報に示されているAPI の識別情報及び API の実行条件で表される。
ここで、対象システムで複数の動作主体が動作する場合、ログファイルには、様々な動作主体の動作によって生じるイベントがインタリーブした状態で記憶されうる。そこで、ログファイルに出力される各情報には、イベントの動作主体が示されるようにしておく。例えばイベント履歴12には、動作主体を示す主体情報が含まれる。また、開始情報にも、イベント履歴12の主体情報に相当する主体情報(プロセスIDやスレッドIDなど)を含めるようにする。第2情報処理装置3000は、開始情報と終了情報のペアを特定したら、開始情報と終了情報の間に記録されているイベント履歴12の中から、開始情報が示す主体情報と一致する主体情報を示すイベント履歴12を抽出する。そして、抽出したイベント履歴12を、開始情報と終了情報で特定される API の実行によって発生するイベントとして特定する。
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記各実施形態の組み合わせ、又は上記以外の様々な構成を採用することもできる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
1. 辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定部と、
前記特定された代替表現を含む情報を出力する出力部と、を有し、
前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す、情報処理装置。
2. 前記特定部は、
同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、1.に記載の情報処理装置。
3. 前記特定部は、
複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、2.に記載の情報処理装置。
4. 前記出力部は、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、2.又は3.に記載の情報処理装置。
5. 前記辞書データが示す代替表現は、関数の識別情報を含み、
前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、1.乃至4.いずれか一つに記載の情報処理装置。
6. 前記関数は API(Application Programming Interface)である、5.に記載の情報処理装置。
7. コンピュータによって実行される制御方法であって、
辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定ステップと、
前記特定された代替表現を含む情報を出力する出力ステップと、を有し、
前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示す、制御方法。
8. 前記特定ステップにおいて、
同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、7.に記載の制御方法。
9. 前記特定ステップにおいて、
複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、8.に記載の制御方法。
10. 前記出力ステップにおいて、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、8.又は9.に記載の制御方法。
11. 前記辞書データが示す代替表現は、関数の識別情報を含み、
前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、7.乃至10.いずれか一つに記載の制御方法。
12. 前記関数は API(Application Programming Interface)である、11.に記載の制御方法。
13. 7.乃至12.いずれか一つに記載の制御方法の各ステップをコンピュータに実行させるプログラム。

Claims (11)

  1. 辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定部と、
    前記特定された代替表現を含む情報を出力する出力部と、を有し、
    前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示
    前記辞書データが示す代替表現は、関数の識別情報を含み、
    前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、
    情報処理装置。
  2. 前記特定部は、
    同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
    前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、請求項1に記載の情報処理装置。
  3. 前記特定部は、
    複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
    前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、請求項2に記載の情報処理装置。
  4. 前記出力部は、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、請求項2又は3に記載の情報処理装置。
  5. 前記関数は API(Application Programming Interface)である、請求項1乃至4いずれか一項に記載の情報処理装置。
  6. コンピュータによって実行される制御方法であって、
    辞書データを用いて、複数のイベント履歴によって表されるイベント列の代替表現を特定する特定ステップと、
    前記特定された代替表現を含む情報を出力する出力ステップと、を有し、
    前記辞書データは、イベント列と、そのイベント列に対応する代替表現とを対応付けて示
    前記辞書データが示す代替表現は、関数の識別情報を含み、
    前記辞書データが示すイベント列は、対応づけられた識別情報によって特定される関数の実行によって生じるイベントの列を示す、
    制御方法。
  7. 前記特定ステップにおいて、
    同一の動作主体の動作によって発生した各イベントの前記イベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を1つ以上抽出し、
    前記部分イベント列とマッチした前記辞書データのイベント列に対応する代替表現を、その部分イベント列に対応する代替表現として特定する、請求項に記載の制御方法。
  8. 前記特定ステップにおいて、
    複数のイベント履歴を示すイベント履歴列を取得し、前記イベント履歴列に含まれる複数のイベント履歴を、イベントの動作主体ごとのグループに分け、
    前記グループごとに、そのグループに含まれる複数のイベント履歴で構成されるイベント列から、前記辞書データに示されるいずれかのイベント列とマッチする部分イベント列を抽出する、請求項に記載の制御方法。
  9. 前記出力ステップにおいて、複数のイベント履歴で構成されるイベント列について、そのイベント列から抽出した各前記部分イベント列をその部分イベント列とマッチした前記代替表現で置き換えたイベント列を生成し、前記生成したイベント列を表す情報を出力する、請求項又はに記載の制御方法。
  10. 前記関数は API(Application Programming Interface)である、請求項6乃至9いずれか一項に記載の制御方法。
  11. 請求項乃至10いずれか一項に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
JP2020547832A 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム Active JP7180681B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/036444 WO2020065960A1 (ja) 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2020065960A1 JPWO2020065960A1 (ja) 2021-08-30
JP7180681B2 true JP7180681B2 (ja) 2022-11-30

Family

ID=69952515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020547832A Active JP7180681B2 (ja) 2018-09-28 2018-09-28 情報処理装置、制御方法、及びプログラム

Country Status (3)

Country Link
US (1) US11762713B2 (ja)
JP (1) JP7180681B2 (ja)
WO (1) WO2020065960A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079817A (ja) 2013-10-16 2015-04-23 キヤノン株式会社 露光装置
WO2017141589A1 (ja) 2016-02-17 2017-08-24 日立オートモティブシステムズ株式会社 車両制御装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013065244A (ja) 2011-09-20 2013-04-11 Toshiba Corp 情報処理装置およびログ管理方法
JP6079266B2 (ja) 2013-01-25 2017-02-15 富士通株式会社 制御装置、ログ格納方法及び制御プログラム
US11043298B2 (en) * 2016-07-18 2021-06-22 Abbyy Development Inc. System and method for visual analysis of event sequences
US10942937B2 (en) * 2017-04-14 2021-03-09 Seagate Technology Llc Data mining systems
US10764149B2 (en) * 2018-09-12 2020-09-01 The Mitre Corporation Cyber-physical system evaluation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015079817A (ja) 2013-10-16 2015-04-23 キヤノン株式会社 露光装置
WO2017141589A1 (ja) 2016-02-17 2017-08-24 日立オートモティブシステムズ株式会社 車両制御装置

Also Published As

Publication number Publication date
WO2020065960A1 (ja) 2020-04-02
US11762713B2 (en) 2023-09-19
US20210357274A1 (en) 2021-11-18
JPWO2020065960A1 (ja) 2021-08-30

Similar Documents

Publication Publication Date Title
CN106326067B (zh) 一种在压力测试下对cpu性能进行监控的方法及装置
JP6888019B2 (ja) メモリアクセスコマンドの転送記述子
US9658834B2 (en) Program visualization device, program visualization method, and program visualization program
JP2015075964A (ja) ログ出力条件設定プログラム、装置、および方法
CN105117489B (zh) 一种数据库管理方法、装置及电子设备
CN109522273B (zh) 一种实现数据写入的方法及装置
EP3163449B1 (en) Analysis device, analysis method, and storage medium in which analysis program is recorded
US9286036B2 (en) Computer-readable recording medium storing program for managing scripts, script management device, and script management method
US9405786B2 (en) System and method for database flow management
JP7180681B2 (ja) 情報処理装置、制御方法、及びプログラム
US11513884B2 (en) Information processing apparatus, control method, and program for flexibly managing event history
JP6075013B2 (ja) ログ取得プログラム、ログ取得装置及びログ取得方法
JP7211427B2 (ja) 情報処理装置、制御方法、及びプログラム
US8775873B2 (en) Data processing apparatus that performs test validation and computer-readable storage medium
JP2009157441A (ja) 情報処理装置、ファイル再配置方法およびプログラム
CN110780983A (zh) 任务异常处理方法、装置、计算机设备以及存储介质
WO2012111167A1 (ja) トレース情報取得方法、コンピュータシステム及びプログラム
US20180081780A1 (en) Trace-information management system, trace-information management method, and trace-information management program product
JP2016081126A (ja) ジョブ制御言語自動生成プログラム
JP2006309536A (ja) ファイル管理プログラム、及びファイル管理装置
US11604718B1 (en) Profiling by unwinding stacks from kernel space using exception handling data
JP2014167744A (ja) 機械学習装置、機械学習方法、およびプログラム
JP6885599B2 (ja) 業務可視化装置、業務可視化方法、及びプログラム
CN114116291B (zh) 日志检测方法、日志检测装置、计算机设备及存储介质
JP2015135562A (ja) 情報処理装置及び情報処理方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210310

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220623

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: 20221018

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221031

R151 Written notification of patent or utility model registration

Ref document number: 7180681

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151