[go: up one dir, main page]

JP7675006B2 - トレース管理装置、トレース管理方法、及びトレース管理プログラム - Google Patents

トレース管理装置、トレース管理方法、及びトレース管理プログラム Download PDF

Info

Publication number
JP7675006B2
JP7675006B2 JP2021213903A JP2021213903A JP7675006B2 JP 7675006 B2 JP7675006 B2 JP 7675006B2 JP 2021213903 A JP2021213903 A JP 2021213903A JP 2021213903 A JP2021213903 A JP 2021213903A JP 7675006 B2 JP7675006 B2 JP 7675006B2
Authority
JP
Japan
Prior art keywords
request
information
requests
trace
relationship
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
JP2021213903A
Other languages
English (en)
Other versions
JP2023097666A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2021213903A priority Critical patent/JP7675006B2/ja
Publication of JP2023097666A publication Critical patent/JP2023097666A/ja
Application granted granted Critical
Publication of JP7675006B2 publication Critical patent/JP7675006B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、プロセスから出力されて送信されるリクエストにトレース情報を付与する技術に関する。
マイクロサービスアーキテクチャのような分散システムでは、障害や性能劣化の原因解析のため、リクエストの流れをトレースする分散トレーシングが用いられる。分散トレーシングは、一連のリクエストの流れに、同一のトレースIDを付与することで、リクエストの流れのトレースをすることができる。リクエストにトレースIDを付与するためには、リクエストを発行するアプリケーション内にハードコードしておくことが必要である。
アプリケーションにトレースIDを付与させるようにするには、コストを要する問題がある。また、アプリケーションが他社製品である等の場合においては、アプリケーションにハードコードすることが不可能であり、トレースIDを付与させることができない。
トレースIDを付与する技術としては、例えば、Python・Java(登録商標)等のスクリプトや中間言語を解析してHTTP受信/転送の対応関係を把握し、アプリケーションの起動時に、必要な箇所にトレースIDを付与するコードを埋め込む技術が知られている(例えば、非特許文献1参照)。
Jonathan Mace, Ryan Roelke, and Rodrigo Fonseca. 2015. Pivot tracing: dynamic causal monitoring for distributed systems. In Proceedings of the 25th Symposium on Operating Systems Principles (SOSP '15). Association for Computing Machinery, New York, NY, USA, P.378-393.
しかし、特許文献1に開示された技術は、スクリプトや中間言語に対して適用可能な技術であり、C言語などのバイナリ形式のアプリケーションに対して適用することができない。
したがって、バイナリ形式のアプリケーションに対しては、ハードコードする必要があり、コストを要するか、或いは、ハードコードできないという問題が依然として残っている。
本発明は、上記事情に鑑みなされたものであり、その目的は、アプリケーションのプロセスから出力される送信リクエストに対して容易且つ適切にトレース情報を付与することのできる技術を提供することにある。
上記目的を達成するため、一観点に係るトレース管理装置は、第1装置から受信された受信リクエストを入力し、第2装置へ送信する送信リクエストを出力するプロセスを実行し、前記送信リクエストに対してトレース情報を付与して第2装置へ送信するトレース管理装置であって、プロセッサを有し、前記プロセッサは、前記プロセスにおける前記受信リクエストと前記受信リクエストに対応する前記送信リクエストとの生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、前記特定した受信リクエストに付与されているトレース情報の少なくとも一部の情報を、前記特定した送信リクエストに付与するトレース情報に含めて、前記第2装置へ送信する。
本発明によれば、アプリケーションのプロセスから出力される送信リクエストに対して容易且つ適切にトレース情報を付与することができる。
図1は、第1実施形態に係る計算機の機能構成図である。 図2は、第1実施形態に係るトラフィック情報の構成図である。 図3は、第1実施形態に係るID対応情報の構成図である。 図4は、第1実施形態に係るフィルタ情報の構成図である。 図5は、第1実施形態に係る計算機のハードウェア構成図である。 図6は、第1実施形態に係る情報取得の流れを説明する図である。 図7は、第1実施形態に係るトレース情報制御処理のフローチャートである。 図8は、第2実施形態に係る計算機が対象とするプロセスの例を説明する図である。 図9は、第2実施形態に係る計算機の機能構成図である。 図10は、第2実施形態に係る付加情報の一例の構成図である。 図11は、第2実施形態に係るトラフィック情報の一例を示す図である。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、「プログラム」を動作主体として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶部及びインターフェース部のうちの少なくとも1つを用いながら行うため、処理の動作主体が、プロセッサ(或いは、プロセッサを有する計算機)とされてもよい。プログラムは、プログラムソースから計算機にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
図1は、第1実施形態に係る計算機の機能構成図である。
計算機100は、例えば、図示しない分散システムの一部を構成する計算機であり、リソース管理装置の一例である。計算機100は、物理的な計算機(物理計算機)であってもよく、物理的な計算機のリソースに基づいて構成される仮想的な計算機(仮想計算機)であってもよい。計算機100は、アプリケーションを実行する1以上のプロセス110と、ID付与サーバ120とを備える。本実施形態では、プロセス110と、ID付与サーバ120とは、例えば、計算機100で実行されるOS(Operating System)のカーネルを共有している。プロセス110は、1以上のスレッド111を有する。スレッド111には、例えば、外部の装置(第1装置)から受信された受信リクエストを入力して処理し、受信リクエストに基づいて、外部の装置(第2装置)に送信するための1以上の送信リクエストを生成して出力する処理を実行するものがある。
ID付与サーバ120は、プロセス110が出力する送信リクエストに対してトレース情報を付与して送信する処理を行う。ID付与サーバ120は、トラフィック取得プログラム121と、ID操作プログラム122と、パターン分析プログラム123と、マッピングプログラム124と、通信プログラム125と、トラフィック情報126と、ID対応情報127と、対象情報128と、パターンロジック129と、フィルタ情報132とを格納する。
トラフィック取得プログラム121は、後述するプロセッサ201(図5参照)により実行されることにより、プロセス110に入力された受信リクエストや、プロセス110から出力された送信リクエストに関するトラフィック情報を取得し、トラフィック情報126に格納する。トラフィック取得プログラム121は、例えば、OSがLinux(登録商標)である場合には、Straceコマンドを利用してsystemcallを取得することによりトラフィック情報を取得してもよく、又はBPF(Berkeley Packet Filter)により通信データを取得することによりトラフィック情報を取得してもよい。本実施形態では、トラフィック取得プログラム121は、例えば、フィルタ情報132に指定された条件に適合するトラフィック情報を取得する。
ID操作プログラム122は、プロセッサ201により実行されることにより、受信リクエストからID情報(トラフィック情報)を取得してID対応情報127に格納したり、送信リクエストに対してID情報を付与したりする。本実施形態では、ID操作プログラム122は、送信リクエストのHTTPヘッダに対してID情報を格納するためL7(application layer)制御が可能である。
本実施形態では、例えば、受信リクエストのID情報から取得して送信リクエストに含める(伝播)するID情報としては、W3C(World Wide Web Consortium)のTrace Context規格に従う場合には、少なくともtrace-id(トレースIDの一例)を含み、trace-flag、tracestateをさらに含んでもよく、B3 PropagationのTrace Context規格に従う場合には、少なくともx-b3-traceid(トレースIDの一例)を含み、x-b3-parentspanid、x-b3-sampled、x-3b―flagsをさらに含んでもよい。
trace-idは、一連のトラフィックの流れを表すIDである。trace-flagは、例えば、サンプリングレートなどである。trace-flagについては、受信リクエストのデータを伝播せずに、ID付与サーバ120で独自の値を設定してもよい。tracestateは、ベンダ独自のデータである。tracestateについては、ID付与サーバ120の処理に応じたパラメータ(例えば、Span-id)を追加してもよい。
x-b3-traceidは、一連のトラフィックの流れを表すIDである。x-b3-parentspanidは、受信リクエストのx-b3-spanidである。なお、x-b3-parentspanidは必須ではなく、受信リクエストにパラメータがなければ伝播させなくてよい。x-b3-sampledは、サンプルするか否かを示す情報である。受信リクエストにパラメータがなければx-b3-sampledを伝播させなくてもよい。x-3b―flagsは、デバックの有無を示す情報である。受信リクエストにパラメータがなければx-b3-flagsを伝播させなくてもよい。
パターン分析プログラム123は、トラフィック情報126にある受信リクエスト及び送信リクエストの生成関係のパターンがパターンロジック129の判定ロジック130のパターンに適合するか否かを判定する。マッピングプログラム124は、マッピングロジック131を用いてトラフィック情報126の対応する受信リクエストと送信リクエストとの関連付けを行う。通信プログラム125は、スレッド111から出力された送信リクエストを宛先の装置(第2装置)に送信する。本実施形態では、通信プログラム125は、例えば、後述する通信パターン分析(図7のステップS10)においては、ID操作プログラム122によってID情報が付与されていない送信リクエストを送信し、後述するID付与処理(図7のステップS12)においては、ID操作プログラム122によってID情報が付与された送信リクエストを送信する。
トラフィック情報126は、例えば、テーブル形式のデータであり、プロセスにおけるスレッドに入力された受信リクエストと、スレッドから出力された送信リクエストとに関する情報(トラフィック情報)を格納する。ID対応情報127は、受信リクエストに含まれているトレース情報(ID情報)を格納する。対象情報128は、ID付与の対象とするプロセス(対象プロセス)を指定する情報(例えば、プロセスID)を格納する。
パターンロジック129は、送信リクエストに対してトレース情報を付与する対象となるパターンがあるかを判定し、該当するパターンに従って対象の送信リクエストに対してトレース情報を付与するロジックである。パターンロジック129は、対象とするパターンの数だけ用意されている。パターンロジック129は、判定ロジック130と、マッピングロジック131とを含む。判定ロジック130と、マッピングロジック131とは、例えば、計算機100の管理者に設定されてもよく、他のシステムにより設定されてもよい。
判定ロジック130は、プロセス110の受信リクエストと送信リクエストとに対して判定すべきパターン、すなわち、トラフィック情報126の受信リクエストと送信リクエストとに対して判定すべきパターンを示すロジックである。判定ロジック130のパターンとしては、1つの受信リクエストに対して、1以上のN個の送信リクエストが生成されるパターン(生成関係の一例)がある。なお、Nの値は、パターン分析プログラム123によりトラフィック情報126に基づいて動的に決定される。
マッピングロジック131は、判定ロジック130が判定しているパターンを有する場合において、このパターンに適合する送信リクエスト及び受信リクエストを特定するためのロジックである。本実施形態では、マッピングロジック131は、受信リクエストと、受信リクエストの受信後に生成されたN個の送信リクエストとを対応するとして特定するためのロジックである。
フィルタ情報132は、トラフィック取得プログラム121が取得するトラフィック情報を指定する情報(フィルタ情報)を格納する。
次に、トラフィック情報126について詳細に説明する。
図2は、第1実施形態に係るトラフィック情報の構成図である。
トラフィック情報126は、トレース情報を付与する対象となるプロセス(対象プロセス)に対して入力されるリクエスト(受信リクエスト)及び対象プロセスから出力されるリクエスト(送信リクエスト)に関する情報(トレース情報)の履歴情報を格納する。トラフィック情報126は、リクエストごとのエントリを格納する。トラフィック情報126のエントリは、種類301と、プロセスID302と、スレッドID303と、送信元IP304と、送信元Port305と、宛先IP306と、宛先Port307とのフィールドを含む。
種類301には、エントリに対応するリクエストが受信リクエストか、送信リクエストかを示す種類が格納される。プロセスID302には、エントリに対応するリクエストに関わるプロセスのID(プロセスID)が格納される。スレッドID303には、エントリに対応するリクエストに関わるスレッドのID(スレッドID)が格納される。送信元IP304には、エントリに対応するリクエストの送信元のIP(Internet Protocol)アドレスが格納される。送信元Port305には、エントリに対応するリクエストの送信元のポートの番号が格納される。宛先IP306には、エントリに対応するリクエストの宛先のIPアドレスが格納される。宛先Port307には、エントリに対応するリクエストの宛先のポートの番号が格納される。
次に、ID対応情報127について詳細に説明する。
図3は、第1実施形態に係るID対応情報の構成図である。
ID対応情報127は、対応する送信リクエストにトレース情報を付与する対象となる受信リクエスト(対象受信リクエスト)に含まれるトレース情報を格納する。ID対応情報127は、対象受信リクエストごとのエントリを格納する。
ID対応情報127のエントリは、送信元IP401と、送信元Port402と、宛先IP403と、宛先Port404と、ID情報405とのフィールドを含む。
送信元IP401には、エントリに対応する受信リクエストの送信元のIPアドレスが格納される。送信元Port402には、エントリに対応する受信リクエストの送信元のポートの番号が格納される。宛先IP403には、エントリに対応する受信リクエストの宛先のIPアドレスが格納される。宛先Port404には、エントリに対応する受信リクエストの宛先のポートの番号が格納される。ID情報405には、エントリに対応する受信リクエストのID情報が格納される。なお、ID情報405には、受信リクエストのトレース情報の中の送信リクエストのトレース情報に含める必要がある情報(少なくともトレースID)のみ格納するようにしてもよい。
次に、フィルタ情報132について詳細に説明する。
図4は、第1実施形態に係るフィルタ情報の構成図である。
フィルタ情報132は、トラフィック取得プログラム121により取得しないリクエストを指定するエントリを格納する。フィルタ情報132のエントリは、送信元IP801と、送信元Port802と、宛先IP803と、宛先Port804とのフィールドを含む。
送信元IP801には、取得しないリクエストの送信元のIPアドレスが格納される。なお、いずれの値でよい場合には、送信元IP801には、いずれの値でもよいことを示す値(例えば、*)が格納される。送信元Port802には、取得しないリクエストの送信元のPortの番号が格納される。いずれの値でよい場合には、送信元Port802には、いずれの値でもよいことを示す値(例えば、*)が格納される。宛先IP803には、取得しないリクエストの宛先のIPアドレスが格納される。いずれの値でよい場合には、宛先IP803には、いずれの値でもよいことを示す値(例えば、*)が格納される。宛先Port804には、取得しないリクエストの宛先のポートの番号が格納される。いずれの値でよい場合には、宛先Port804には、いずれの値でもよいことを示す値(例えば、*)が格納される。
例えば、フィルタ情報132の1行目のエントリは、宛先IPが10.0.0.254のリクエストの全てが取得しない対象となることを示している。
次に、計算機100について詳細に説明する。
図5は、第1実施形態に係る計算機のハードウェア構成図である。
計算機100は、例えば、PC(Personal Computer)、サーバ等の物理計算機によって構成されている。計算機100は、プロセッサ201と、通信インターフェース(I/F)202と、主記憶装置203と、補助記憶装置204と、内部バス205とを備えている。プロセッサ201と、通信インターフェース(I/F)202と、主記憶装置203と、補助記憶装置204とは、内部バス205を介して接続されている。
通信I/F202は、例えば、有線LANカードや無線LANカードなどのインターフェースであり、ネットワーク210を介して他の装置(例えば、分散システムを構成する他の計算機等)と通信する。
プロセッサ201は、主記憶装置203及び/又は補助記憶装置204に格納されているプログラムに従って各種処理を実行する。
主記憶装置203は、記憶部の一例であり、例えば、RAM(RANDOM ACCESS MEMORY)であり、プロセッサ201で実行されるプログラムや、必要な情報を記憶する。本実施形態では、主記憶装置203は、例えば、OSや、トラフィック取得プログラム121、ID操作プログラム122、パターン分析プログラム123、マッピングプログラム124、通信プログラム125、トラフィック情報126、ID対応情報127、対象情報128、パターンロジック129、フィルタ情報132等を格納する。なお、これらを補助記憶装置204に格納してもよい。ここで、トレース管理プログラムは、例えば、トラフィック取得プログラム121、ID操作プログラム122、パターン分析プログラム123、及びマッピングプログラム124で構成される。
補助記憶装置204は、記憶部の一例であり、例えば、ハードディスクドライブや、SSD(Solid State Drive)等であり、プロセッサ201で実行されるプログラムや、プロセッサ201に利用されるデータを記憶する。
次に、計算機100による処理動作について説明する。
まず、計算機100による各種情報の取得について説明する。この各種情報の取得は、例えば、対象となっているプロセス110のスレッド111がリクエストを受信(入力)したり、送信(出力)したりする毎に実行される。
計算機100のトラフィック取得プログラム121は、対象となるプロセス110のスレッド111における受信リクエスト及び送信リクエストの宛先IP、宛先Port、送信元IP、及び送信元Portを取得して、トラフィック情報126に格納する。例えば、トラフィック取得プログラム121は、BPFツールにおけるtcpconnectやtcpacceptなどのコマンドによる出力結果から、宛先IP、宛先Port、送信元IP、及び送信元Portを取得してもよく、System call情報を取得し、connect及びgetsocketから送信リクエストの宛先IP、宛先Port、送信元IP、及び送信元Portを取得し、acceptから受信リクエストの宛先IP、宛先Port、送信元IP、及び送信元Portを取得してもよい。なお、トラフィック取得プログラム121は、エラー(例えば、System call情報の返り値が0以外のsystem call等)となっているリクエストについては、トラフィック情報126に格納しないようにしている。
一方、計算機100のID操作プログラム122は、例えば、受信リクエストをスレッドの前に受信するリバースプロキシや、BPFツールを用いて、受信リクエストの宛先IP、宛先Port、送信元IP、及び送信元Portと、受信リクエストのHTTPヘッダに含まれるID情報(トレース情報)とを取得し、ID対応情報127に格納する。なお、トラフィック取得プログラム121は、エラー(例えば、System call情報の返り値が0以外のsystem call等)となっているリクエストについては、ID対応情報127に格納しないようにしている。
このように、計算機100においては、スレッド111における受信リクエスト及び送信リクエストの宛先IP、宛先Port、送信元IP、及び送信元Portや、受信リクエストのID情報を取得し、管理することができる。
次に、計算機100によるトレース情報制御処理について説明する。
図7は、第1実施形態に係るトレース情報制御処理のフローチャートである。
ID付与サーバ120のパターン分析プログラム123は、パターンロジック129の判定ロジック130を使用して、トラフィック情報126のリクエストが判定ロジック130のパターンを満たしているか否かを分析する通信パターン分析を実行する(ステップS10)。パターン分析プログラム123は、分析結果をシステムログなどに出力する。なお、パターン分析プログラム123は、分析結果とトラフィック情報126の分析結果に関係するリクエストとをユーザの端末等に出力してもよい。
パターン分析プログラム123は、例えば、一定時間(例えば、5分)及び/又は分析したトラフィック量(リクエスト量)が一定量となるまで、通信パターン分析を実行する。なお、通信パターン分析において、判定ロジック130のパターンを満たしていることを検出できない場合には、パターン分析プログラム123は、通信パターンなしと判定する。
次いで、マッピングプログラム124は、ID付与処理で対応可能か否か、すなわち、判定ロジック130のパターンを満たしているとの分析結果であるか否かを判定する(ステップS11)。この結果、判定ロジック130のパターンを満たしているとの分析結果でない場合(ステップS11:No)には、マッピングプログラム124は、処理を終了する一方、判定ロジック130のパターンを満たしているとの分析結果である場合(ステップS11:Yes)には、マッピングプログラム124は、処理をステップS12に進める。
ステップS12においては、マッピングプログラム124及びID操作プログラム122は、ID付与処理を常時実行する。ID付与処理においては、マッピングプログラム124は、マッピングロジック131を使用して、トラフィック情報126における、対応する受信リクエストと送信リクエストとを特定する。本実施形態では、1つの受信リクエストと、その後に送信されるN個の送信リクエストとが対応すると特定される。ここで、マッピングプログラム124は、特定した受信リクエストと送信リクエストとについての送信元IP、送信元Port、宛先IP、及び宛先Portの組をまとめて記憶する。次いで、ID操作プログラム122は、マッピングプログラム124により特定された送信リクエストに対して、受信リクエストのID情報を付与する、具体的には、マッピングプログラム124は、ID対応情報127から受信リクエストのID情報を取得し、取得したID情報に基づくID情報を送信リクエストのHTTPヘッダのパラメータとして設定する。なお、マッピングプログラム124は、受信リクエストに対応する全ての送信リクエストを送信した場合、例えば、受信リクエストに対応する正常応答を返す場合には、ID対応情報127からこの受信リクエストのエントリを削除してもよい。
このように、マッピングプログラム124によりID情報が付与された送信リクエストは、通信プログラム125により、送信リクエストの宛先の装置に対して送信されることとなる。
上記した実施形態によると、プロセス110に変更を加えることなく、プロセス110から出力される送信リクエストに対して、対応する受信リクエストのトレース情報中の伝播が必要な情報を適切にトレース情報に付加することができる。これにより、リクエストに付加されているトレース情報(トレースID等)を用いて、リクエストの流れを適切にトレースし、分析に利用することができる。
次に、第2実施形態について説明する。
図8は、第2実施形態に係る計算機が対象とするプロセスの例を説明する図である。
第2実施形態に係る計算機100A(図9参照)が対象とするプロセス110としては、受信リクエストを受け取ったスレッド111(Thread1)と、送信リクエストを出力するスレッド111(Thread1000,1001)とが異なっているプロセスを想定している。本実施形態では、送信リクエストを出力するスレッド111は、複数存在し、これらのスレッド111に対して受信リクエストに基づく処理がラウンドロビンで(順番に)振り分けられるものとする。このプロセス110においては、Thread1のトラフィック情報は、受信リクエストのみであり、Thread1000とThread1001とのトラフィック情報は、送信リクエストのみとなる。
このプロセス110において、Thread1が、受信リクエスト(受信A)を受信すると、Thread1000が、この受信リクエストに対応する送信リクエスト(送信B)を出力し、Thread1が、受信リクエスト(受信C)を受信すると、次の順番のThread1001が、この受信リクエストに対応する送信リクエスト(送信D)を出力する。同様に、受信リクエスト(受信E)を受信すると、次の順番のThread1000が、受信リクエストに対応する送信リクエスト(送信F)を出力する。図8の例では、1つの受信リクエストに対して、スレッド111が1つの送信リクエストを送信するようにしているが、1つの受信リクエストに対してスレッド111が複数の送信リクエストを送信するようにしてもよい。なお、1つのスレッド111における送信リクエストの出力順序は、対応する受信リクエストの順序が維持されているものとする。
次に、第2実施形態に係る計算機100Aについて説明する。
図9は、第2実施形態に係る計算機の機能構成図である。なお、第2実施形態に係る計算機100Aについて、第1実施形態に係る計算機100と同様な部分については同一の符号を付すこととする。
計算機100Aにおいて、プロセス110は、情報検出プログラム900を有してもよい。情報検出プログラム900は、プロセス110における付加情報(後述する付加情報903と同様な情報)を検出し、付加情報をID付与サーバ120Aに送信する。なお、情報検出プログラム900を有さない場合には、プロセス110のプログラムを変更する必要がなく、情報検出プログラム900を有する場合には、プロセス110のプログラムを大きく変更することなく比較的簡易な変更により対応できる。
ID付与サーバ120Aは、ID付与サーバ120に対して、付加情報903をさらに格納し、パターン分析プログラム123に代えてパターン分析プログラム901を備え、マッピングプログラム124に代えてマッピングプログラム902を備え、パターンロジック129に、判定ロジック904及びマッピングロジック905を備える。
付加情報903は、プロセス110における複数のスレッド111の実行順番と、1つの受信リクエストに対して1つのスレッド111から出力される送信リクエストの数とを示す情報(生成関係情報の一例)である。本実施形態では、付加情報903は、スレッド111における実際の受信リクエストと送信リクエストとの実際の送信元IP、送信元Port、宛先IP、及び宛先Portの組の情報(サンプル)も含まれている。付加情報903は、プロセス110の情報検出プログラム900から受信するようにしてもよく、計算機100Aの管理者による入力により受け付けてもよい。
パターン分析プログラム901は、付加情報903を用いて、トラフィック情報126にある受信リクエスト及び送信リクエストがパターンロジック129の判定ロジック904のパターンに適合するか否かを判定する。マッピングプログラム902は、付加情報903とマッピングロジック905を用いて、トラフィック情報126から対応する受信リクエストと送信リクエストとを特定し、それらの関連付けを行う。
判定ロジック904は、プロセス110の受信リクエストと送信リクエストとに対して判定すべき条件、すなわち、トラフィック情報126の受信リクエストと送信リクエストとに対して判定すべきパターンを示すロジックである。判定ロジック904のパターンとしては、例えば、スレッド111が呼び出される順番がラウンドロビンであり、スレッド111の読み出し順序が判明しており、対応する受信リクエストと送信リクエストとのサンプルが付加情報903として与えられており、そのサンプルが実際にトラフィック情報126に格納されていることである。
マッピングロジック905は、判定ロジック130が判定しているパターンを有する場合において、このパターンに適合する受信リクエストと送信リクエストとを特定するためのロジックである。本実施形態では、マッピングロジック905は、付加情報903のスレッド111における受信リクエストと送信リクエストの対応関係に基づいて、トラフィック情報126から次の受信リクエストと、その受信リクエストに対応する次のスレッドの送信リクエストとを特定することを繰り返し実行するロジックである。例えば、図8の例においては、マッピングロジック905は、受信Aと送信Bとのサンプルから、次の受信Cと次の順番のThread1001の送信Dとの対応関係を特定し、さらに、以降の受信についても同様に特定するロジックである。
次に、付加情報903について説明する。
図10は、第2実施形態に係る付加情報の一例の構成図である。
付加情報903は、例えば、JSON(JavaScript(登録商標) Oblect Notation)形式の情報である。付加情報903は、同一のプロセス110の各スレッド111の呼出し順序を記述する順序記述領域951と、トラフィック情報のサンプルを記述するサンプル記述領域952とを含む。順序記述領域951は、サンプル記述領域952において、すべてのスレッド111についてのサンプルが呼出し順序に従って記述される場合には不要である。
サンプル記述領域952は、一以上のスレッド毎記述領域953を有する。なお、順序記述領域951に各スレッド111の呼出し順序が記述されている場合には、サンプル記述領域952は、1つのスレッド111についてのスレッド毎記述領域953のみを有していてもよい。
スレッド毎記述領域953は、スレッドID領域954と、受信リクエスト情報955と、1以上の送信リクエスト情報956とを含む。1つの受信リクエストに対して複数の送信リクエストを送信する場合には、送信リクエスト情報956は、送信される送信リクエストの数だけ含まれる。スレッドID領域954には、スレッド毎記述領域953に対応するスレッド111のスレッドIDが格納される。受信リクエスト情報955には、スレッド111の呼出しを行うこととなったトラフィック情報126に存在する送信リクエストの情報(送信元IP、送信元Port、宛先IP、及び宛先Port)が格納される。送信リクエスト情報956には、受信リクエストに基づいて送信される、トラフィック情報126に存在する送信リクエストの情報(送信元IP、送信元Port、宛先IP、及び宛先Port)が格納される。
この付加情報903によると、トラフィック情報126における受信リクエストと、その受信リクエストに対応する送信リクエストとの関係を適切に把握できる。
次に、付加情報903が図10に示す状態である場合におけるトラフィック情報126の一例について説明する。
図11は、第2実施形態に係るトラフィック情報の一例を示す図である。
図11に示すトラフィック情報126のエントリの構成は、図2に示すトラフィック情報126と同様であり、トラフィック情報126の各エントリの値は、図8に示すプロセス110及び図10に示す付加情報903に対応する値となっている。
トラフィック情報126において、1行目に示すように、受信リクエストがThread1に受信され、この受信リクエストにより2行目に示すように、Thread1000が呼び出されて送信リクエストが送信され、3行目に示すように、次の受信リクエストがThread1に受信され、この受信リクエストにより4行目に示すように、次の順番のスレッド111であるThread1001が呼び出されて送信リクエストが送信され、以降も受信リクエストが受信される毎に、次の順番のスレッド111が呼び出されて送信リクエストが送信されることとなる。なお、図11のトラフィック情報126においては、受信リクエストと対応する送信リクエストが連続した行に並んでいる例を示しているが、場合によっては、複数の受信リクエストが連続したり、受信リクエストの次に、前の受信リクエストに対応する送信リクエストが発生したりする可能性があるが、付加情報903に基づいて、トラフィック情報126における受信リクエストと送信リクエストとの対応関係を適切に把握することができる。具体的には、付加情報903に実際のサンプルが含まれており、トラフィック情報126における対応する特定の受信リクエストと特定の送信リクエストとを特定できる。そのため、次の受信リクエストと、その受信リクエストに対応する次の順番のスレッドの送信リクエストを適切に特定することができる。
第2実施形態に係る計算機100Aによるトレース情報制御処理は、図7に示すトレース情報制御処理において、計算機100のプログラム等の処理を計算機100Aのプログラム等の処理に置き換えたものである。
第2実施形態に係る計算機100Aによると、受信リクエストを受け取ったスレッド111と、送信リクエストを出力するスレッド111とが異なり、送信リクエストを送信するスレッド111が複数あるプロセス110に対しても、受信リクエストに対応する送信リクエストに対して適切にトレース情報を付加することができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、フィルタ情報132を、取得しない対象とするリクエストを指定する、いわゆるブラックリストとしていたが、本発明はこれに限られず、例えば、取得する対象とするリクエストを指定する、いわゆるホワイトリストとしてもよい。
また、上記実施形態において、プロセッサが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
100,100A…計算機、110…プロセス、111…スレッド、120…ID付与サーバ、121…トラフィック取得プログラム、122…ID操作プログラム、123,901…パターン分析プログラム、124,902…マッピングプログラム、125…通信プログラム、126…トラフィック情報、127…ID対応情報、128…対象情報、129…パターンロジック、130,904…判定ロジック、131,905…マッピングロジック、132…フィルタ情報、201…プロセッサ、202…通信I/F、203…主記憶装置、204…補助記憶装置、205…内部バス、210…ネットワーク、900…情報検出プログラム、903…付加情報

Claims (11)

  1. 第1装置から受信された受信リクエストを入力し、第2装置へ送信する送信リクエストを出力するプロセスを実行し、前記送信リクエストに対してトレース情報を付与して第2装置へ送信するトレース管理装置であって、
    プロセッサを有し、
    前記プロセッサは、
    前記プロセスにおける前記受信リクエストと前記受信リクエストに対応する前記送信リクエストとの生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記特定した受信リクエストに付与されているトレース情報の少なくとも一部の情報を、前記特定した送信リクエストに付与するトレース情報に含めて、前記第2装置へ送信し、
    記憶部をさらに有し、
    前記プロセッサは、
    前記プロセスにおける受信リクエストと送信リクエストとの履歴情報を前記記憶部に格納し、
    前記履歴情報に基づいて、前記受信リクエストと前記送信リクエストとの間に所定の生成関係があるか否かを判定し、
    前記所定の生成関係がある場合に、前記所定の生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記所定の生成関係は、前記プロセスの1つのスレッドにおいて、受信リクエストが入力された後に1以上の送信リクエストが生成される関係である
    トレース管理装置。
  2. 第1装置から受信された受信リクエストを入力し、第2装置へ送信する送信リクエストを出力するプロセスを実行し、前記送信リクエストに対してトレース情報を付与して第2装置へ送信するトレース管理装置であって、
    プロセッサを有し、
    前記プロセッサは、
    前記プロセスにおける前記受信リクエストと前記受信リクエストに対応する前記送信リクエストとの生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記特定した受信リクエストに付与されているトレース情報の少なくとも一部の情報を、前記特定した送信リクエストに付与するトレース情報に含めて、前記第2装置へ送信し、
    記憶部をさらに有し、
    前記プロセッサは、
    前記プロセスにおける受信リクエストと送信リクエストとの履歴情報を前記記憶部に格納し、
    前記履歴情報に基づいて、前記受信リクエストと前記送信リクエストとの間に所定の生成関係があるか否かを判定し、
    前記所定の生成関係がある場合に、前記所定の生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記所定の生成関係は、プロセスにおいて、各受信リクエストに対応する送信リクエストが複数のスレッドにより順番に処理される関係である
    トレース管理装置。
  3. 前記記憶部は、前記所定の生成関係を示す生成関係情報として、プロセスにおいて受信リクエストに対応する送信リクエストが複数のスレッドにより生成される場合の前記受信リクエストに基づく処理が引き渡されるスレッドの順番の情報と、前記スレッドで1つの受信リクエストに対して生成される送信リクエストの数の情報とを記憶し、
    前記プロセッサは、
    前記生成関係情報に基づく前記所定の生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定する
    請求項に記載のトレース管理装置。
  4. 前記プロセッサは、
    前記プロセスを実行することにより、前記プロセスにおいて受信リクエストに対応する送信リクエストが複数のスレッドで生成される場合における前記受信リクエストに基づく処理が引き渡されるスレッドの順番の情報と、前記スレッドで1つの受信リクエストに対して生成される送信リクエストの数の情報とを含む生成関係情報を生成して前記記憶部に格納する
    請求項に記載のトレース管理装置。
  5. 前記記憶部は、前記履歴情報の対象とする受信リクエスト及び送信リクエストを規定するフィルタ情報を記憶し、
    前記プロセッサは、前記フィルタ情報に基づいて、前記履歴情報に格納する受信リクエスト及び送信リクエストを選択する
    請求項1又は請求項2に記載のトレース管理装置。
  6. 前記プロセッサは、
    前記受信リクエストと前記送信リクエストとの間に所定の生成関係があるか否かの判定結果を出力する
    請求項1又は請求項2に記載のトレース管理装置。
  7. 前記プロセッサは、
    前記判定結果とともに、前記判定に関係する前記受信リクエストと前記送信リクエストとの履歴情報を出力する
    請求項に記載のトレース管理装置。
  8. 第1装置から受信された受信リクエストを入力し、第2装置へ送信する送信リクエストを出力するプロセスを実行し、前記送信リクエストに対してトレース情報を付与して前記第2装置へ送信するトレース管理装置によるトレース管理方法であって、
    前記トレース管理装置は、
    前記プロセスにおける前記受信リクエストと前記受信リクエストに対応する前記送信リクエストとの生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記特定した受信リクエストに付与されているトレース情報の少なくとも一部の情報を、前記特定した送信リクエストに付与するトレース情報に含めて、前記第2装置へ送信し、
    前記プロセスにおける受信リクエストと送信リクエストとの履歴情報を前記トレース管理装置の記憶部に格納し、
    前記履歴情報に基づいて、前記受信リクエストと前記送信リクエストとの間に所定の生成関係があるか否かを判定し、
    前記所定の生成関係がある場合に、前記所定の生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記所定の生成関係は、前記プロセスの1つのスレッドにおいて、受信リクエストが入力された後に1以上の送信リクエストが生成される関係である
    トレース管理方法。
  9. 第1装置から受信された受信リクエストを入力し、第2装置へ送信する送信リクエストを出力するプロセスを実行し、前記送信リクエストに対してトレース情報を付与して前記第2装置へ送信するトレース管理装置によるトレース管理方法であって、
    前記トレース管理装置は、
    前記プロセスにおける前記受信リクエストと前記受信リクエストに対応する前記送信リクエストとの生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記特定した受信リクエストに付与されているトレース情報の少なくとも一部の情報を、前記特定した送信リクエストに付与するトレース情報に含めて、前記第2装置へ送信し、
    前記プロセスにおける受信リクエストと送信リクエストとの履歴情報を前記トレース管理装置の記憶部に格納し、
    前記履歴情報に基づいて、前記受信リクエストと前記送信リクエストとの間に所定の生成関係があるか否かを判定し、
    前記所定の生成関係がある場合に、前記所定の生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定し、
    前記所定の生成関係は、プロセスにおいて、各受信リクエストに対応する送信リクエストが複数のスレッドにより順番に処理される関係である
    トレース管理方法。
  10. 第1装置から受信された受信リクエストを入力し、第2装置へ送信する送信リクエストを出力するプロセスを実行し、前記送信リクエストに対してトレース情報を付与して前記第2装置へ送信する計算機に実行させるトレース管理プログラムであって、
    前記計算機に、
    前記プロセスにおける前記受信リクエストと前記受信リクエストに対応する前記送信リクエストとの生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定させ、
    前記特定された受信リクエストに付与されているトレース情報の少なくとも一部の情報を、前記特定された送信リクエストに付与するトレース情報に含めて、前記第2装置へ送信させ、
    前記プロセスにおける受信リクエストと送信リクエストとの履歴情報を前記計算機の記憶部に格納させ、
    前記履歴情報に基づいて、前記受信リクエストと前記送信リクエストとの間に所定の生成関係があるか否かを判定させ、
    前記所定の生成関係がある場合に、前記所定の生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定させ、
    前記所定の生成関係は、前記プロセスの1つのスレッドにおいて、受信リクエストが入力された後に1以上の送信リクエストが生成される関係である
    トレース管理プログラム。
  11. 第1装置から受信された受信リクエストを入力し、第2装置へ送信する送信リクエストを出力するプロセスを実行し、前記送信リクエストに対してトレース情報を付与して前記第2装置へ送信する計算機に実行させるトレース管理プログラムであって、
    前記計算機に、
    前記プロセスにおける前記受信リクエストと前記受信リクエストに対応する前記送信リクエストとの生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定させ、
    前記特定された受信リクエストに付与されているトレース情報の少なくとも一部の情報を、前記特定された送信リクエストに付与するトレース情報に含めて、前記第2装置へ送信させ、
    前記プロセスにおける受信リクエストと送信リクエストとの履歴情報を前記計算機の記憶部に格納させ、
    前記履歴情報に基づいて、前記受信リクエストと前記送信リクエストとの間に所定の生成関係があるか否かを判定させ、
    前記所定の生成関係がある場合に、前記所定の生成関係に基づいて、対応する送信リクエストと受信リクエストとを特定させ、
    前記所定の生成関係は、プロセスにおいて、各受信リクエストに対応する送信リクエストが複数のスレッドにより順番に処理される関係である
    トレース管理プログラム。
JP2021213903A 2021-12-28 2021-12-28 トレース管理装置、トレース管理方法、及びトレース管理プログラム Active JP7675006B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021213903A JP7675006B2 (ja) 2021-12-28 2021-12-28 トレース管理装置、トレース管理方法、及びトレース管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021213903A JP7675006B2 (ja) 2021-12-28 2021-12-28 トレース管理装置、トレース管理方法、及びトレース管理プログラム

Publications (2)

Publication Number Publication Date
JP2023097666A JP2023097666A (ja) 2023-07-10
JP7675006B2 true JP7675006B2 (ja) 2025-05-12

Family

ID=87072205

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021213903A Active JP7675006B2 (ja) 2021-12-28 2021-12-28 トレース管理装置、トレース管理方法、及びトレース管理プログラム

Country Status (1)

Country Link
JP (1) JP7675006B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000137626A (ja) 1998-10-29 2000-05-16 Nec Corp メッセージトレースのパターンマッチシステム、パターンマッチ方法およびパターンマッチ用プログラムを記録した記録媒体
JP2009053740A (ja) 2007-08-23 2009-03-12 Internatl Business Mach Corp <Ibm> 操作ログを記録するためのシステム、方法およびコンピュータ・プログラム
JP2009100359A (ja) 2007-10-18 2009-05-07 Yamaha Corp 通信システム、中継装置及びプログラム
US20200201750A1 (en) 2017-01-18 2020-06-25 Pivotal Software, Inc. Trace management

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10222450A (ja) * 1997-02-05 1998-08-21 Matsushita Joho Syst Kk 検索情報記録装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000137626A (ja) 1998-10-29 2000-05-16 Nec Corp メッセージトレースのパターンマッチシステム、パターンマッチ方法およびパターンマッチ用プログラムを記録した記録媒体
JP2009053740A (ja) 2007-08-23 2009-03-12 Internatl Business Mach Corp <Ibm> 操作ログを記録するためのシステム、方法およびコンピュータ・プログラム
JP2009100359A (ja) 2007-10-18 2009-05-07 Yamaha Corp 通信システム、中継装置及びプログラム
US20200201750A1 (en) 2017-01-18 2020-06-25 Pivotal Software, Inc. Trace management

Also Published As

Publication number Publication date
JP2023097666A (ja) 2023-07-10

Similar Documents

Publication Publication Date Title
US10498736B2 (en) Third party program integrity and integration control in web based applications
US12177231B2 (en) Real-time scanning of IP addresses
CN109586969B (zh) 内容分发网络容灾方法、装置、计算机设备及存储介质
US10320833B2 (en) System and method for detecting creation of malicious new user accounts by an attacker
US10182126B2 (en) Multilevel redirection in a virtual desktop infrastructure environment
US20230231825A1 (en) Routing for large server deployments
US10320817B2 (en) Systems and methods for detecting an attack on an auto-generated website by a virtual machine
US10122722B2 (en) Resource classification using resource requests
CN113259479B (zh) 一种数据处理方法以及设备
US11063975B2 (en) Malicious content detection with retrospective reporting
CN103036896B (zh) 用于检测恶意链接的方法及系统
CN108600051A (zh) BGP Anycast集群服务质量探测方法和探测设备
CN113206850B (zh) 恶意样本的报文信息获取方法、装置、设备及存储介质
JP7675006B2 (ja) トレース管理装置、トレース管理方法、及びトレース管理プログラム
CN116319002B (zh) 一种单点登录方法、装置、网关设备及存储介质
US20240311439A1 (en) Tenant network for rewriting of code included in a web page
JP2025112964A (ja) 試験装置および試験方法
KR101896679B1 (ko) 악성코드 탐지장치 및 이의 악성코드 탐지방법
Sharif A Practical Framework for Finding Software Vulnerabilities in SDN Controllers
WO2023073952A1 (ja) セキュリティ分析装置、セキュリティ分析方法、及びコンピュータ読み取り可能な記録媒体
JP2017016173A (ja) ログ出力制御装置、ログ出力制御方法、およびプログラム
CN115774874A (zh) 反弹shell进程的检测方法、装置、计算机设备及存储介质
HK40050062B (en) A data processing method and device
CN115643253A (zh) 跨域文件请求方法及装置、业务服务系统
CN111225025A (zh) 服务请求的处理方法及装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20241129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20241203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250425

R150 Certificate of patent or registration of utility model

Ref document number: 7675006

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150