(57)【要約】      （修正有）【課題】複数のサービス全体の関係を把握することが可能な情報処理システムを提供する。【解決手段】情報処理システムは、ホストコンピュータ３、サーバコンピュータ１及びコンピュータ２を含み、通信網Ｎを介して相互に接続されている。ホストコンピュータでは、コンテナ基盤上で各サービスを実行するコンテナＣ１〜Ｃ６が動作している。サーバコンピュータは、複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得し、送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出し、各サービスの送信元候補に基づき、サービス間の関係を示す関係図を生成する。サーバコンピュータは、生成した関係図を表示するためのデータをコンピュータへ出力する。コンピュータは、各サービス間の関係を示す関係図を表示部に表示する。【選択図】図１
2018081440.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得し、
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出し、
各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する
処理を実行させるプログラム。
【請求項２】
前記送信時刻を有する送信先のアドレスに対応付けて、抽出した送信元候補のアドレス、及び、サービスを特定するアドレスを記憶する
処理を実行させる請求項１に記載のプログラム。
【請求項３】
前記送信時刻を有する送信先のアドレスの数を計数し、
前記送信先のアドレスに対応して抽出された送信元のアドレスの数を計数し、
前記送信先のアドレスの数と前記送信元のアドレスの数とに基づき、送信元候補を特定する
請求項１または２に記載のプログラム。
【請求項４】
前記送信元のアドレスの数を前記送信先のアドレスの数で除した除算値のうち、最も大きい除算値を有する送信元候補となる送信元のアドレスを特定し、
最も大きい除算値から所定値範囲内の除算値を有する送信元候補となる送信元のアドレスを特定する
請求項３に記載のプログラム。
【請求項５】
複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得する取得部と、
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出する抽出部と、
各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する出力部と
を備える情報処理装置。
【請求項６】
コンピュータに、
複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得し、
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出し、
各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する
処理を実行させる情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
従来、大規模分散処理システムにおけるボトルネックを容易に特定する可視化装置が知られている（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１７１５４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術ではプロセス毎の処理を可視化しているにすぎず、複数のサービス全体の関係を把握することができないという問題がある。
【０００５】
一つの側面では、複数のサービス全体の関係を把握することが可能なプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、コンピュータに、複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得し、前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出し、各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する処理を実行させる。
【発明の効果】
【０００７】
一つの側面では、複数のサービス全体の関係を把握することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】情報処理システムの概要を示す説明図である。
【図２】コンピュータのハードウェア構成を示すブロック図である。
【図３】サーバコンピュータのハードウェア構成を示すブロック図である。
【図４】同期通信の例を示す説明図である。
【図５】非同期通信の例を示す説明図である。
【図６】非同期通信の例を示す説明図である。
【図７】非同期通信の例を示す説明図である。
【図８】サービス実行ホスト情報ＤＢのレコードレイアウトを示す説明図である。
【図９】推定するタスクのフローを示す説明図である。
【図１０】推定するタスクのフローを示す説明図である。
【図１１】通信データＤＢのレコードレイアウトを示す説明図である。
【図１２】通信情報の取得処理の詳細を示す説明図である。
【図１３】通信情報の取得処理の詳細を示す説明図である。
【図１４】親候補ＤＢのレコードレイアウトを示す説明図である。
【図１５】他のサービスの親候補ＤＢのレコードレイアウトを示す説明図である。
【図１６】他のサービスの親候補ＤＢのレコードレイアウトを示す説明図である。
【図１７】他のサービスの親候補ＤＢのレコードレイアウトを示す説明図である。
【図１８】他のサービスの親候補ＤＢのレコードレイアウトを示す説明図である。
【図１９】集計ＤＢのレコードレイアウトを示す説明図である。
【図２０】集計ＤＢのレコードレイアウトを示す説明図である。
【図２１】親候補が存在しない場合の処理を示す説明図である。
【図２２】親子関係の推定処理手順を示す説明図である。
【図２３】親子関係の推定処理手順を示す説明図である。
【図２４】サービス間の関係を示す関係図である。
【図２５】サービス間の関係を示す関係図である。
【図２６】親候補の抽出処理手順を示すフローチャートである。
【図２７】親候補の抽出処理手順を示すフローチャートである。
【図２８】集計処理の手順を示すフローチャートである。
【図２９】親子関係の推定処理手順を示すフローチャートである。
【図３０】関係図の生成処理手順を示すフローチャートである。
【図３１】関係図の生成処理手順を示すフローチャートである。
【図３２】実施の形態２に係るサーバコンピュータのハードウェア群を示すブロック図である。
【図３３】子候補ＤＢのレコードレイアウトを示す説明図である。
【図３４】他のサービスに係る子候補ＤＢのレコードレイアウトを示す説明図である。
【図３５】推定ＤＢのレコードレイアウトを示す説明図である。
【図３６】他のサービスに係る推定ＤＢのレコードレイアウトを示す説明図である。
【図３７】第２集計ＤＢのレコードレイアウトを示す説明図である。
【図３８】他のサービスに係る第２集計ＤＢのレコードレイアウトを示す説明図である。
【図３９】割合ＤＢのレコードレイアウトを示す説明図である。
【図４０】他のサービスの割合ＤＢのレコードレイアウトを示す説明図である。
【図４１】関係図を示す説明図である。
【図４２】他のサービスに係る関係図を示す説明図である。
【図４３】親子関係の推定処理手順を示すフローチャートである。
【図４４】集計処理の手順を示すフローチャートである。
【図４５】割合算出処理の手順を示すフローチャートである。
【図４６】割合算出処理の手順を示すフローチャートである。
【図４７】割合の記載処理手順を示すフローチャートである。
【図４８】割合の記載処理手順を示すフローチャートである。
【図４９】連結されたフローの一例を示す説明図である。
【図５０】所定時間の決定処理の手順を示すフローチャートである。
【図５１】所定時間の決定処理の手順を示すフローチャートである。
【図５２】所定時間の変更前の状態を示す説明図である。
【図５３】所定時間の変更後の状態を示す説明図である。
【図５４】所定時間の変更前の状態を示す説明図である。
【図５５】所定時間の変更後の状態を示す説明図である。
【図５６】上述した形態のサーバコンピュータの動作を示す機能ブロック図である。
【図５７】実施の形態４に係るサーバコンピュータのハードウェア群を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下実施の形態を、図面を参照して説明する。図１は情報処理システムの概要を示す説明図である。情報処理システムは情報処理装置１、ホストコンピュータ３、及び、コンピュータ２等を含む。情報処理装置１は、サーバコンピュータまたはパーソナルコンピュータ等である。以下では情報処理装置１をサーバコンピュータ１と読み替えて説明する。コンピュータ２はパーソナルコンピュータ、タブレット、スマートフォン、携帯電話等である。
【００１０】
ホストコンピュータ３では、コンテナ基盤上で各サービスを実行するコンテナＣ１〜Ｃ６が動作している。各コンテナＣ１〜Ｃ６はそれぞれ一つのサービスインスタンスを実行している。例えば、コンテナＣ１は、サービスａのインスタンスａ１を実行している。なお、本実施形態ではコンテナ基盤上のコンテナＣ１〜Ｃ６を用いる例を説明するが、仮想マシンにより各サービスを実行する形態であってもよい。またホストコンピュータ３は１台図示しているが、複数台設けてもよい。
【００１１】
ホストコンピュータ３、サーバコンピュータ１及びコンピュータ２はインターネット、ＬＡＮ（Local Area Network）、公衆回線網等の通信網Ｎを介して相互に接続されている。サーバコンピュータ１はサービス毎の通信情報を取得し、サービス間の関係を示す関係図を生成する。サーバコンピュータ１は生成した関係図を表示するためのデータをコンピュータ２へ出力する。コンピュータ２には図１に示すように、各サービス間の関係を示す関係図を表示部に表示する。以下、詳細を説明する。
【００１２】
図２はコンピュータ２のハードウェア構成を示すブロック図である。コンピュータ２は制御部としてのＣＰＵ（Central Processing Unit）２１、ＲＡＭ（Random Access Memory）２２、入力部２３、表示部２４、記憶部２５、時計部２８、及び、通信部２６等を含む。ＣＰＵ２１は、バス２７を介してハードウェア各部と接続されている。ＣＰＵ２１は記憶部２５に記憶された制御プログラム２５Ｐに従いハードウェア各部を制御する。なお、ＣＰＵ２１は複数のプロセッサコアを搭載したマルチコアプロセッサであっても良い。ＲＡＭ２２は例えばＳＲＡＭ（Static RAM）、ＤＲＡＭ(Dynamic RAM)、フラッシュメモリ等である。ＲＡＭ２２は、記憶部としても機能し、ＣＰＵ２１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１３】
入力部２３はマウス、キーボード、タッチパネル、ボタン等の入力デバイスであり、受け付けた操作情報をＣＰＵ２１へ出力する。表示部２４は液晶ディスプレイまたは有機ＥＬ（electroluminescence）ディスプレイ等であり、ＣＰＵ２１の指示に従い各種情報を表示する。通信部２６は通信モジュールであり、サーバコンピュータ１等と間で情報の送受信を行う。時計部２８は日時情報をＣＰＵ２１へ出力する。記憶部２５は大容量メモリであり、制御プログラム２５Ｐ等を記憶している。
【００１４】
図３はサーバコンピュータ１のハードウェア構成を示すブロック図である。サーバコンピュータ１は制御部としてのＣＰＵ１１、ＲＡＭ１２、入力部１３、表示部１４、記憶部１５、時計部１８、及び、通信部１６等を含む。ＣＰＵ１１は、バス１７を介してハードウェア各部と接続されている。ＣＰＵ１１は記憶部１５に記憶された制御プログラム１５Ｐに従いハードウェア各部を制御する。なお、ＣＰＵ１１は複数のプロセッサコアを搭載したマルチコアプロセッサであっても良い。ＲＡＭ１２は例えばＳＲＡＭ、ＤＲＡＭ、フラッシュメモリ等である。ＲＡＭ１２は、記憶部としても機能し、ＣＰＵ１１による各種プログラムの実行時に発生する種々のデータを一時的に記憶する。
【００１５】
入力部１３はマウス、キーボード、タッチパネル、ボタン等の入力デバイスであり、受け付けた操作情報をＣＰＵ１１へ出力する。表示部１４は液晶ディスプレイまたは有機ＥＬディスプレイ等であり、ＣＰＵ１１の指示に従い各種情報を表示する。通信部１６は通信モジュールであり、コンピュータ２等と間で情報の送受信を行う。時計部１８は日時情報をＣＰＵ１１へ出力する。記憶部１５は大容量メモリであり、制御プログラム１５Ｐを記憶している。記憶部１５は、さらにサービス実行ホスト情報ＤＢ１５１、通信データＤＢ１５２、親候補ＤＢ１５３、集計ＤＢ１５４、及び、親子関係ＤＢ１５５等を記憶している。なお、実施形態では親候補ＤＢ１５３等を記憶部１５に記憶する例を示すがこれに限るものではない。図示しないＲＡＭ１２に記憶するほか、他のデータベースサーバに記憶しても良い。
【００１６】
図４は同期通信の例を示す説明図である。図４では、サービスｅ、サービスｆ及びサービスｇ間の同期通信を示している。サービスｆを中心とした場合、サービスｅの送信元とサービスｇの送信先とが存在する。また通信には、原則として要求（リクエスト）通信と、要求通信に対応する応答（レスポンス）通信が存在する。図４の例ではＡＡ’が要求通信であり、ＤＤ’が応答通信となる。なお、サービスによっては要求通信のみが存在し、応答通信が存在しない通信もある。サービスは、要求を受け取ってから応答を返すまでの一連の処理を毎回実施する。実施形態では一連の処理を一単位と考え、以下ではスパンという。図４の例では、ＡＡ’ＤＤ’で囲む台形が１スパンとなる。なお、応答がない場合は要求の受信までを１スパンとする。
【００１７】
サービスｆを基準に送信元側のサービスはｅであり、送信先側のサービスはｇとなる。以下では、送信元側を親側といい、送信先側を子側という。マイクロサービスの親子関係は、スパン同士の親子関係を意味する。例えば、ＢＢ’ＣＣ’で囲む台形の親はＡＡ’ＤＤ’となり、両者には親子関係が成立する。なお、マイクロサービスにおいては、通信内容に基づき、処理順序を把握する場合、１処理しか把握することができない。具体的には、通信内容から、サービスＡとサービスＢとが通信していること、及び、サービスＢとサービスＣとが通信していることは個別に把握することができる。しかしながら、サービスＢとサービスＣとの通信は、サービスＡとサービスＢとの通信に起因して発生したものであるか否かは把握できない。本実施形態では、これらの関係を以下に述べる処理により把握し、関係図に示すものである。クライアントの要求に対し固有のトレースＩＤを振っておくことも考えられる。この場合、トレースＩＤを次の通信に順次引き継いでいくことで、関係を把握することができる。しかしながら、既存のコードを変更してこのようなトレースＩＤを組み込むことは仕様上困難なことが多い。
【００１８】
図４において、サービスｆからサービスｇの通信２は、サービスｅからサービスｆの通信１によって呼び出されており、これらのスパン（ＡＡ’ＤＤ’とＢＢ’ＣＣ’）の間には親子関係がある。通信４は通信３の受信を待ってから発生している。このように子スパンの応答を待ってから親スパンが応答を返しているため、サービスｆからサービスｇの通信は同期通信である。サービスｆはサービスｇの処理結果を元に何らかの処理結果を返すようなサービスの場合、図４のような通信形態となる。例えば，ある商品の在庫数を問合せてから、当該商品のページを表示するような場合である。
【００１９】
図５は非同期通信の例を示す説明図である。図５に示す例は、応答が返ってこないパターンである。サービスｆからサービスｇの通信２は、サービスｅからサービスｆの通信１によって呼び出されている。この場合、スパンＡＡ’ＤＤ’とスパンＢＢ’との間には親子関係がある。通信３は通信２の送信後に発生しており、発生タイミングは通信２の結果に依存しない。このような場合、サービスｆからサービスｇの通信は非同期通信と呼ばれる。サービスｆは何らかの情報をサービスｇに投げるだけのサービスの場合等が該当する。例えば、処理結果のログ情報をログ蓄積サービスに送信する場合等である。
【００２０】
図６は非同期通信の例を示す説明図である。図６に示す例も応答が返ってこないパターンである。サービスｆからサービスｇの通信３は、サービスｅからサービスｆの通信１によって呼び出されている。この場合、スパンＡＡ’ＤＤ’とスパンＢＢ’との間には親子関係がある。図６に示す例は図５に示す例と同様に、子スパンが後から呼び出されるパターンである。ログ情報の送信等はリアルタイムに行う必要がないため、例えば通信キューなどに一度蓄積された後、情報がまとめて送信される。なお、さらにサービスｇからサービスｆに応答が返ってくる派生パターンも考えられるが、図６に示すパターンと同様であるため、詳細な説明は省略する。
【００２１】
図７は非同期通信の例を示す説明図である。図７に示す例は、応答が返ってくるパターンである。サービスｆからサービスｇの通信２は、サービスｅからサービスｆの通信１によって呼び出されている。この場合、スパンＡＡ’ＤＤ’とスパンＢＢ’ＣＣ’との間には親子関係がある。図７に示す通信は、図５に示す通信のうち、後から処理完了のメッセージ等が返ってくるパターンである。例えば、サイズの大きなファイルの書き込み処理等、サービスｇが時間の要するサービスであり、処理が完了した旨の通知を後に行う場合が想定される。この通信３の宛先はサービスｆまたは他のサービスとなる。
【００２２】
図８はサービス実行ホスト情報ＤＢ１５１のレコードレイアウトを示す説明図である。サービス実行ホスト情報ＤＢ１５１はサービス名フィールド、ＩＰ（Internet Protocol）アドレスフィールド、及び、ポート番号フィールド等を含む。サービス名フィールドには、各種サービスを特定するためのサービス名が記憶されている。ＩＰアドレスフィールドには、サービス名に対応付けて各サービスのＩＰアドレスが記憶されている。ポート番号フィールドには、サービス名及びＩＰアドレスに対応付けてポート番号が記憶されている。
【００２３】
図９は推定するタスクのフローを示す説明図である。図９に示す楕円はタスクを構成する各サービスを示し、サービス間を結ぶ太線は要求メッセージであり、細線は応答メッセージである。楕円内にはサービス名、ＩＰアドレス及びポート番号を記載している。図９に示すフロー（以下、フロー１という）において、サービスａはプロキシｐによって二重化されており、ラウンドロビンでサービスａ＿１またはサービスａ＿２のいずれかと通信を行う。サービスａからサービスｂへの通信は同期通信であり、常にサービスｂの応答を待ってからサービスａは結果を返すものとする。サービスｂは３秒に１回、ログをサービスｃに非同期で送信するものとする。
【００２４】
図１０は推定するタスクのフローを示す説明図である。図１０に示す楕円は各サービスを示し、サービス間を結ぶ太線は要求メッセージであり、細線は応答メッセージである。楕円内にはサービス名、ＩＰアドレス及びポート番号を記載している。点線は２つのサービスに対し同時に同時呼出による同期通信を行っていることを示す。図１０に示すフロー(以下、フロー２という)において、サービスｄはプロキシｑによって二重化されており、ラウンドロビンでサービスｄ＿１またはサービスｄ＿２のいずれかと通信を行う。サービスｄからサービスｅへの通信は同期通信であり、常にサービスｅの応答を待ってからサービスｄは結果を返すものとする。サービスｅはサービスｂ、及び、サービスｆに同時に同期通信を行うか、または、同期通信を行わず、サービスｄに応答を返す場合もあるものとする。サービスｂは３秒に１回、ログをサービスｃに非同期で送信する。以下ではフロー１及びフロー２を用いた推定処理を説明する。
【００２５】
図１１は通信データＤＢ１５２のレコードレイアウトを示す説明図である。通信データＤＢ１５２は、サービス毎に、親側スパンの通信情報及び子側スパンの通信情報を記憶している。図１１の例ではプロキシｐの親側スパン及び子側スパンの通信情報が記憶されている。実施形態では通信情報を親側の受信時刻、送信時刻、利用ポート、通信元ＩＰ及び通信元ポート、並びに、子側の送信時刻、受信時刻、利用ポート、通信先ＩＰ、通信先ポートを含む。なお通信情報には、ヘッダ及び通信データの内容等の他の情報をも含まれるが、説明を容易にするために、記載を省略する。
【００２６】
通信データＤＢ１５２は、親側スパンにて親側スパンＩＤフィールド、受信時刻フィールド、送信時刻フィールド、利用ポートフィールド、通信元ＩＰフィールド及び送信元ポートフィールド等を含む。親側スパンＩＤフィールドには、親側のスパンを特定するための親側スパンＩＤが記憶されている。受信時刻フィールドには、親側スパンＩＤに対応付けて、親側のサービスから要求信号を受信した時刻が記憶されている。送信時刻フィールドには、親側スパンＩＤに対応付けて、親側のサービスへ応答信号を送信した時刻が記憶されている。
【００２７】
利用ポートフィールドには、親側スパンＩＤに対応付けて、当該サービスが親側スパンにて利用する利用ポートが記憶されている。通信元ＩＰフィールドには、親側スパンＩＤに対応付けて、親側のサービスのＩＰアドレスが記憶されている。なお、図１１では、親側のサービスのＩＰアドレスをCLIENTと表記している。通信元ポートフィールドには、親側スパンＩＤに対応付けて、親側のサービスのポート番号が記憶されている。
【００２８】
通信データＤＢ１５２は、子側スパンにて子側スパンＩＤフィールド、送信時刻フィールド、受信時刻フィールド、利用ポートフィールド、通信先ＩＰフィールド及び送信先ポートフィールド等を含む。子側スパンＩＤフィールドには、子側のスパンを特定するための子側スパンＩＤが記憶されている。送信時刻フィールドには、子側スパンＩＤに対応付けて、子側のサービスへ要求信号を送信した時刻が記憶されている。受信時刻フィールドには、子側スパンＩＤに対応付けて、子側のサービスから応答信号を受信した時刻が記憶されている。
【００２９】
利用ポートフィールドには、子側スパンＩＤに対応付けて、当該サービスが子側スパンにて利用する利用ポートが記憶されている。通信先ＩＤフィールドには、子側スパンＩＤに対応付けて、子側のサービスのＩＰアドレスが記憶されている。通信先ポートフィールドには、子側スパンＩＤに対応付けて、子側のサービスのポート番号が記憶されている。
【００３０】
ＣＰＵ１１は、ステップ１として、各サービスについてtcpdump等により、通信情報を一定時間取得し、取得した通信情報を通信データＤＢ１５２に記憶する。ＣＰＵ１１は、送信元から要求信号を受信するたびに親側スパンＩＤを生成し、受信した通信情報を通信データＤＢ１５２に記憶する。図１１の親側スパンに示すように、親側スパンＩＤに対応付けて受信時刻、送信時刻、利用ポート、通信元のＩＰアドレス、通信元のポート番号が記憶されている。なお。時刻はＵＮＩＸ（登録商標）時刻（ミリ秒）であるが、下５桁を示している。
【００３１】
図１１の例ではマイクロサービスアーキテクチャのシステム利用者であるクライアントからのアクセスは、グローバルＩＰアドレスまたは受け口となる特定のＩＰアドレスとなる。ＣＰＵ１１は、グローバルＩＰアドレス、または、特定のＩＰアドレスであると判断した場合、クライアントからの通信であると判断する。図１１では通信元ＩＰフィールドにCLIENTと記載している。
【００３２】
ＣＰＵ１１は、ステップ１として、子側スパンについても同様に、各サービスについてtcpdump等により、通信情報を一定時間取得する。ＣＰＵ１１は、送信先へ要求信号を送信するたびに子側スパンＩＤを生成し、受信した通信情報を通信データＤＢ１５２に記憶する。図１１の子側スパンに示すように、子側スパンＩＤに対応付けて送信時刻、受信時刻、利用ポート、通信先のＩＰアドレス、通信先のポート番号が記憶されている。
【００３３】
図１２及び図１３は通信情報の取得処理の詳細を示す説明図である。図１２は、サービスｚが複数のサービスと通信している状況を示している。送信ポートはエフェメラルポートが利用され、多くのLinux（登録商標）カーネルではポート番号32768から61000の間のポートが利用される。ある要求に対する応答が存在する場合、要求が送信されるポートは毎回異なるが、要求が送信されるポートと、その要求の応答を受信するポートは必ず同一である。
【００３４】
受信した要求に対する応答は明確であるため、ＩＰアドレス及びポート番号の一致性から、図１２の親側スパン及び子側スパンのレコードは、図１３のようにまとめることができる。本実施形態では、関連する全サービス（全ホスト）から取得した通信データを元に、全てのフローを推定する関係図を生成する。
【００３５】
図１４は親候補ＤＢ１５３のレコードレイアウトを示す説明図である。親候補ＤＢ１５３は、各サービスのＩＰアドレス毎に、子側スパンフィールド、親候補フィールド、子側通信先フィールド及び親候補通信元ＩＰフィールド等を含む。なお、図１４では、説明を容易にするために、通信データＤＢ１５２の記憶内容も併せて記載している。ＣＰＵ１１は、ステップ２として、通信データＤＢ１５２の記憶内容に基づき、子側スパンの親候補を抽出する。具体的には、ＣＰＵ１１は、子側スパンの送信時刻Tc_sから見て、親側スパンの受信時刻Tp_rが小さく、かつ、これらの時間差が所定時間X（本実施形態では1000ミリ秒とする）以内（0＜Tc_s-Tp_r≦X）となるものを、子側スパンの親候補として抽出する。例えば、子側スパンSc_p_1の送信時刻11320については、受信時刻11315を有する親候補Sp_p_1が抽出される。
【００３６】
また、子側スパンSc_p_2の送信時刻11650については、受信時刻11645を有する親候補Sp_P_2、及び、受信時刻11315を有する親候補Sp_p_1が抽出される。ＣＰＵ１１は、子側スパン及び抽出した親候補を、サービスを特定するＩＰアドレス（10.254.212.13）に対応付けて記憶する。また、ＣＰＵ１１は、サービスを特定するＩＰアドレス及び子側スパンＩＤに対応付けて、子側の通信先のＩＰアドレス及びポート番号と、親候補の通信元のＩＰアドレスを記憶する。図１４の例では、子側スパンＩＤSc_p_1に関し、プロキシｐのアドレスと子側スパンSc_P_1に対応付けて、子側のアドレス及び通信ポート（172.16.32.3:9030）と、親候補の通信元ＩＰアドレス（CLIENTと表記している）が記憶される。なお、図１４は、図９に示したタスクのフローを元に作成している。
【００３７】
図１５は他のサービスの親候補ＤＢ１５３のレコードレイアウトを示す説明図である。ＣＰＵ１１は、サービスa_1（172.16.32.3）の子側スパンの送信時刻から遡って所定時間Ｘ以内の親候補を同様に抽出する。ＣＰＵ１１は、抽出した親候補及び対応する子側通信先のＩＰアドレス及び親候補の通信元のＩＰアドレスを、サービスのＩＰアドレス及び子側スパンＩＤに対応付けて、親候補ＤＢ１５３に記憶する。なお、図１５は、図９に示したタスクのフローを元に作成している
【００３８】
図１６は他のサービスの親候補ＤＢ１５３のレコードレイアウトを示す説明図である。ＣＰＵ１１は、サービスa_2（172.16.16.2）の子側スパンの送信時刻から遡って所定時間Ｘ以内の親候補を同様に抽出する。ＣＰＵ１１は、抽出した親候補及び対応する子側通信先のＩＰアドレス及び親候補の通信元のＩＰアドレスを、サービスのＩＰアドレス及び子側スパンＩＤに対応付けて、親候補ＤＢ１５３に記憶する。なお、図１６は、図９に示したタスクのフローを元に作成している
【００３９】
図１７は他のサービスの親候補ＤＢ１５３のレコードレイアウトを示す説明図である。ＣＰＵ１１は、サービスｅ（172.16.16.4）の子側スパンの送信時刻から遡って所定時間Ｘ以内の親候補を同様に抽出する。ＣＰＵ１１は、抽出した親候補及び対応する子側通信先のＩＰアドレス及び親候補の通信元のＩＰアドレスを、サービスのＩＰアドレス及び子側スパンＩＤに対応付けて、親候補ＤＢ１５３に記憶する。なお、図１７は、図１０に示したタスクのフローを元に作成している。
【００４０】
図１８は他のサービスの親候補ＤＢ１５３のレコードレイアウトを示す説明図である。ＣＰＵ１１は、サービスｂ（172.16.32.2）の子側スパンの送信時刻から遡って所定時間Ｘ以内の親候補を同様に抽出する。ＣＰＵ１１は、抽出した親候補及び対応する子側通信先のＩＰアドレス及び親候補の通信元のＩＰアドレスを、サービスのＩＰアドレス及び子側スパンＩＤに対応付けて、親候補ＤＢ１５３に記憶する。子側スパンSc_b_2については、所定時間遡った時間内の受信時刻を有する親候補が存在しないため、親候補フィールド及び親候補通信元ＩＰフィールドは空欄となっている。なお、図１８は、図１０に示したタスクのフローを元に作成している。
【００４１】
図１９は集計ＤＢ１５４のレコードレイアウトを示す説明図である。集計ＤＢ１５４は、サービス毎に、子側通信先フィールド、子側回数フィールド、親候補通信元ＩＰフィールド及び親回数フィールド等を含む。なお、図１９では説明を容易にするために、親候補ＤＢ１５３も図示している。子側通信先フィールドには、親候補ＤＢ１５３に記憶した子側通信先が記憶されている。子側回数フィールドには、子側通信先のＩＰアドレスの出現回数を子側通信先のＩＰアドレスに対応付けて記憶している。
【００４２】
親候補通信元ＩＰフィールドには、子側通信先のＩＰアドレスに対応して親候補通信元のＩＰアドレスが記憶されている。また、親回数フィールドには、子側通信先のＩＰアドレス及び親候補通信元のＩＰアドレスに対応付けて、親候補ＤＢ１５３に記憶されたこれらの組み合わせ数が記憶されている。例えば、子側通信先のＩＰアドレス172.16.32.3:9030は３回出現しており、そのうち、親候補通信元のＩＰアドレスがCLIENTであった回数は３回である。
【００４３】
ＣＰＵ１１は、ステップ３として、親候補ＤＢ１５３を参照し、上述した送信時刻を有する子側通信先のＩＰアドレスの数を計数し、計数した値を、子側通信先のＩＰアドレスに対応付けて、集計ＤＢ１５４に記憶する。ＣＰＵ１１は、親候補ＤＢ１５３を参照し、子通信先のＩＰアドレスに対応して抽出された親候補通信元のＩＰアドレスの数を計数する。ＣＰＵ１１は、計数した値を、子側通信先のＩＰアドレス及び親候補通信元のＩＰアドレスに対応付けて記憶する。図１９は、サービスｐ、サービスa_1及びサービスa_2に対応する集計ＤＢ１５４を示している。
【００４４】
図２０は集計ＤＢ１５４のレコードレイアウトを示す説明図である。図２０は、サービスｅ及びサービスｂに対応する集計ＤＢ１５４を示している。サービスｅにおいては、子側通信先のＩＰアドレス172.16.32.2:9001と親候補通信元のＩＰアドレス172.16.32.4の組み合わせの出現回数は２回であるため、親回数フィールドには２と記憶されている。一方、子側通信先のＩＰアドレス172.16.32.5:9132と親候補通信元のＩＰアドレス172.16.16.3の組み合わせの出現回数は１回であるため、親回数フィールドには１と記憶されている。
【００４５】
サービスｂに関しては、子側通信先のＩＰアドレス172.16.32.5:9132と親候補通信元のＩＰアドレス172.16.32.3の組み合わせの出現回数は１回であるため、親回数フィールドには１と記憶されている。また子側通信先のＩＰアドレス172.16.32.2:9001と親候補通信元のＩＰアドレスが存在しない場合の組み合わせ出現回数は１回であるため、親回数フィールドには１と記憶されている。
【００４６】
図２１は、親候補が存在しない場合の処理を示す説明図である。ＣＰＵ１１は、ステップ４として、親候補の存在しないサービス（以下、場合より親なし通信という）を抽出し、記憶部１５に記憶する。図２１に示すサービスｂは、子側通信先172.16.32.5:9132の送信時刻から遡って所定時間内の受信時刻を有する親候補通信元が存在しない。ＣＰＵ１１は、親候補ＤＢ１５３または集計ＤＢ１５４を参照し、子側通信先のＩＰアドレスに対して、親候補通信元のＩＰアドレスが存在しない場合、当該サービスの親候補（送信元アドレス）が存在しないことを示す親なし通信情報を記憶部１５に記憶する。
【００４７】
すなわち、子側スパンは、親側スパンを契機として発生するものと想定している。そのため、図２１に示す例のように、子側の通信に対して親候補が存在しない場合があれば、
当該子側スパンは親側スパンを契機に発生していないとみなし、親候補から除外する。具体的には、サービスｂ172.16.32.2への通信は親候補が存在しない場合があるため、サービスｂ172.16.32.2には親が存在しないと推定し、親候補の推定を行わないものとする。
【００４８】
図２２は親子関係の推定処理手順を示す説明図である。ＣＰＵ１１は、ステップ５として、集計ＤＢ１５４に記憶した子側回数及び親回数に基づき、親子関係を推定する。ＣＰＵ１１は、集計ＤＢ１５４に記憶された親回数を子側回数で除算し、割合（除算値）を求める。ＣＰＵ１１は、割合が最高の値を有する子側通信先及び親候補通信元のＩＰアドレスの組み合わせを抽出する。また、ＣＰＵ１１は、最高の値を有する割合に対し、所定範囲内の割合を有する子側通信先及び親候補通信元のＩＰアドレスの組み合わせを抽出する。所定範囲は、例えば、２０％とすればよい。具体的には最高の割合と、対象となる割合との差分が２０％以内である場合、同じく親候補として抽出する。なお、２０％は一例でありこれに限るものではない。例えば最高の割合に対し係数（例えば０．９）を乗じた割合を所定範囲の下限として用いてもよい。
【００４９】
図２２の例では、割合は共に1.00である。そのため、ＣＰＵ１１は、２つの親候補として「172.16.32.3:9030とCLIENT」、及び、「172.16.16.2:9030とCLIENT」を抽出する。ＣＰＵ１１は、サービスを特定するＩＰアドレスに対応付けて抽出した親子のＩＰアドレスを、親子関係ＤＢ１５５に記憶する。親子関係ＤＢ１５５は、親側通信元ＩＰフィールド、対象サービスフィールド及び子側通信先フィールド等を含む。親側通信元ＩＰフィールドには、候補として抽出された親候補通信元のＩＰアドレスが記憶される。子側通信先フィールドには、親側のＩＰアドレスに対応付けて、親子関係のある子側通信先のＩＰアドレスが記憶されている。対象サービスフィールドには、当該親子関係のあるサービスのＩＰアドレス及びポート番号が記憶されている。
【００５０】
図２３は親子関係の推定処理手順を示す説明図である。実施形態では説明を容易にするために、通信ログが少ない状態を示したが、これに限るものではない。推定精度を向上させるために、通信ログがある程度増加した段階でステップ３の集計処理及びステップ５の親子関係の推定処理を実行してもよい。図２３右上側は集計回数を、左上側よりも多くした例を示している。ＣＰＵ１１は、親回数を子側回数で除算し、親子の組み合わせ毎に、割合を算出する。ＣＰＵ１１は、算出した割合が最高の組み合わせを抽出する。ＣＰＵ１１は、最高の割合を有する親子の組み合わせを親子関係ＤＢ１５５に、対象サービスのＩＰアドレス及びポート番号と共に記憶する。図２３の例では、割合が0.53の、「172.16.32.2:9001と172.16.16.3」の組み合わせが親子関係を有するとして記憶されている。
【００５１】
ＣＰＵ１１は、最高の割合から所定範囲内の割合を有する割合を抽出する。図２３の例では、割合0.47,0.50が抽出される。ＣＰＵ１１は、割合0.47を有する「172.16.32.2:9001と172.16.32.4」を親子関係があるとして、親子関係ＤＢ１５５に記憶する。またＣＰＵ１１は、ＣＰＵ１１は、割合0.50を有する「172.16.16.5:9121と172.16.32.4」、及び、「172.16.16.5:9121と172.16.16.3」をそれぞれ親子関係があるとして、親子関係ＤＢ１５５に記憶する。
【００５２】
ＣＰＵ１１は、ステップ１０として、フロー部品の結合処理を行う。具体的には、ＣＰＵ１１は、親子関係ＤＢ１５５を参照し、親側のＩＰアドレス、サービスのＩＰアドレス、及び子側のＩＰアドレスを表示すると共に、時系列での処理順序が視認できるようサービス間の関係を示す関係図を作成する。
【００５３】
図２４はサービス間の関係を示す関係図である。ＣＰＵ１１は、親子関係ＤＢ１５５及びサービス実行ホスト情報ＤＢ１５１を参照し、対象サービスフィールドに記載された対象サービスのＩＰアドレス、ポート番号、及び、対応するサービス名を読み出す。ＣＰＵ１１は、対象サービスのＩＰアドレス、ポート番号及びサービス名が一体として認識されるよう、関係図を生成する。本実施形態では、サービスを特定することができるよう、楕円内に対象サービスのＩＰアドレス、ポート番号及びサービス名を、ＨＴＭＬ(HyperText Markup Language)形式により表示する例を示すが、これに限るものではない。その他、四角で表示する、または、各サービスを色分けする等して、識別することができるようにしてもよい。また関係図を表示するためのデータはＨＴＭＬ形式に限るものではない。関係図を表示することができるデータであれば、ＰＤＦ(Portable Document Format)、ＪＰＥＧ(Joint Photographic Experts Group)、ビットマップ等の形式であってもよい。
【００５４】
ＣＰＵ１１は、親子関係ＤＢ１５５を参照し、同様に親側及び子側のサービス名等を記載した楕円を生成する。ＣＰＵ１１は、処理の時系列順に親側から、対象とするサービスを結ぶ矢印を親子の楕円間に記載する。図２４に示すように２つの子が存在する場合は、２つの子の楕円を並置し、親から２つの子の楕円を結ぶ矢印を２つ記載する。図２４の例ではCLIENTとプロキシｐとの親子関係、プロキシｐと、サービスa_1及びサービスq_2との親子関係を示す関係図が表示されている。これにより、サービス間の処理順序を視認することができる。なお、実施形態では時系列順に左側から右側へ各サービスの親子関係を示す関係図を示したが、これに限るものではない。時系列順に上側から下側へ各サービスの親子関係を示す関係図を生成してもよい。
【００５５】
図２５は、サービス間の関係を示す関係図である。ＣＰＵ１１は、他のサービスについても同様の処理を行い、関係図を生成する。すでに対象とするサービス及び親側の関係図が生成されている場合、子側の関係図を追記する。図２５の例では、サービスa_1及びサービスa_2以前の関係図はすでに生成されているため、サービスa_1及びサービスa_2の子側の関係図を生成する。ＣＰＵ１１は、関係図を連結し、全体のフローを示す関係図を生成する。ＣＰＵ１１は、関係図を連結する際、時系列順に親、対象サービス、子の関係図の組み合わせを読み出し、一の組み合わせの子に、次の組み合わせの子を順次連結する。ＣＰＵ１１は、生成した関係図を表示部１４に表示する。またサーバコンピュータ１のＣＰＵ１１は、通信部１６を介して、コンピュータ２へ関係図を表示するためのデータを送信する。コンピュータ２のＣＰＵ２１は通信部２６を介して、関係図を表示するためのデータを受信する。コンピュータ２のＣＰＵ２１は、表示部２４に受信したデータに基づく関係図を表示する。
【００５６】
以上のハードウェア群においてソフトウェア処理を、フローチャートを用いて説明する。図２６及び図２７は親候補の抽出処理手順を示すフローチャートである。サーバコンピュータ１のＣＰＵ１１は、ステップ１及び２として以下の処理を実行する。ＣＰＵ１１は、通信部１６を介して、各サービスについて、親側スパンの受信時刻、送信時刻、利用ポート、通信元のＩＰアドレス及び通信元ポートを取得する(ステップＳ２６１)。ＣＰＵ１１は、通信部１６を介して、各サービスについて、子側スパンの送信時刻、受信時刻、利用ポート、通信先ＩＰアドレス及び通信元ポートを取得する(ステップＳ２６２)。
【００５７】
ＣＰＵ１１は、親側にて新たな通信情報を受信するたびに、親側スパンＩＤを生成する。ＣＰＵ１１は、親側スパンＩＤ、親側スパンの受信時刻、送信時刻、利用ポート、通信元のＩＰアドレス及び通信元ポートを、サービスに対応付けて、通信データＤＢ１５２に記憶する(ステップＳ２６３)。ＣＰＵ１１は、子側にて新たな通信情報を送信するたびに、子側スパンＩＤを生成する。ＣＰＵ１１は、子側スパンＩＤ、子側スパンの送信時刻、受信時刻、利用ポート、通信元のＩＰアドレス及び通信元ポートを、サービスに対応付けて、通信データＤＢ１５２に記憶する(ステップＳ２６４)。
【００５８】
ＣＰＵ１１は、記憶部１５に記憶した収集時間を読み出す。ＣＰＵ１１は、通信情報の取得開始から収集時間を経過したか否かを判断する(ステップＳ２６５)。ＣＰＵ１１は、経過していないと判断した場合(ステップＳ２６５でＮＯ)、処理をステップＳ２６１へ戻す。これにより、収集時間が経過するまで一定量の親候補の情報を収集することができる。ＣＰＵ１１は、収集時間を経過したと判断した場合(ステップＳ２６５でＹＥＳ)、処理をステップＳ２６６へ移行させる。
【００５９】
ＣＰＵ１１は、所定時間を記憶部１５から読み出す(ステップＳ２６６)。なお、収集時間及び所定時間は入力部１３等を通じて適宜の値を設定することが可能である。ＣＰＵ１１は、通信データＤＢ１５２を参照し、子側スパンの送信時刻を抽出する(ステップＳ２６７)。ＣＰＵ１１は、送信時刻から遡って所定時間内の受信時刻を有する親側スパンＩＤを抽出する(ステップＳ２６８)。ＣＰＵ１１は、子側スパンＩＤに対応付けて、抽出した親側スパンＩＤ、子側通信先のＩＰアドレス、親候補通信元のＩＰアドレスを、親候補ＤＢ１５３に記憶する(ステップＳ２６９)。ＣＰＵ１１は、全ての送信時刻について処理を終了したか否かを判断する(ステップＳ２７１)。
【００６０】
ＣＰＵ１１は、全ての送信時刻について処理を終了していないと判断した場合(ステップＳ２７１でＮＯ)、処理をステップＳ２７２へ移行させる。ＣＰＵ１１は、通信データＤＢ１５２を参照し、次の子側スパンの送信時刻を抽出する(ステップＳ２７２)。ＣＰＵ１１は、その後処理をステップＳ２６８に戻す。これにより各送信時刻の親候補が抽出される。
【００６１】
ＣＰＵ１１は、全ての送信時刻について処理を終了したと判断した場合(ステップＳ２７１でＹＥＳ)、処理をステップＳ２７３へ移行させる。ＣＰＵ１１は、全てのサービスについて上述した処理を終了したか否かを判断する(ステップＳ２７３)。ＣＰＵ１１は、全てのサービスについて処理を終了していないと判断した場合(ステップＳ２７３でＮＯ)、処理をステップＳ２７４へ移行させる。
【００６２】
ＣＰＵ１１は、次のサービスの通信データＤＢ１５２の記憶内容を読み出す(ステップＳ２７４)。ＣＰＵ１１は、その後処理をステップＳ２６７へ移行させる。これにより、各サービスの親候補が収集される。ＣＰＵ１１は、全てのサービスについて処理を終了したと判断した場合(ステップＳ２７３でＹＥＳ)、一連の処理を終了する。
【００６３】
図２８は集計処理の手順を示すフローチャートである。ＣＰＵ１１は、ステップ３及びステップＳ４の処理として、以下の処理を実行する。ＣＰＵ１１は、親候補ＤＢ１５３の記憶内容を読み出す(ステップＳ２８１)。ＣＰＵ１１は、子側通信先のＩＰアドレスの出現回数を、ＩＰアドレス毎に計数し、子側通信先のＩＰアドレスの子側回数を決定する(ステップＳ２８２)。ＣＰＵ１１は、親候補ＤＢ１５３を参照し、子側通信先のＩＰアドレスに対応して抽出された親候補通信元のＩＰアドレス数を計数し、親回数を決定する(ステップＳ２８３)。ＣＰＵ１１は、サービスのＩＰアドレスに対応付けて、子側通信先のＩＰアドレス、子側回数、親候補通信元のＩＰアドレス及び親回数を、集計ＤＢ１５４に記憶する(ステップＳ２８４)。
【００６４】
ＣＰＵ１１は、全てのサービスについて処理を終了したか否かを判断する(ステップＳ２８５)。ＣＰＵ１１は、処理を終了していないと判断した場合(ステップＳ２８５でＮＯ)、処理をステップＳ２８６へ移行させる。ＣＰＵ１１は、親候補ＤＢ１５３からまだ処理を終えていない次のサービスの記憶内容を読み出す(ステップＳ２８６)。ＣＰＵ１１は、その後処理をステップＳ２８２へ移行させる。
【００６５】
ＣＰＵ１１は、全てのサービスについて処理を終了したと判断した場合(ステップＳ２８５でＹＥＳ)、処理をステップＳ２８７へ移行させる。ＣＰＵ１１は、親候補ＤＢ１５３または集計ＤＢ１５４を参照し、子側通信先のＩＰアドレスに対応する親候補通信元のＩＰアドレスが記憶されていないレコードが存在するサービスを抽出する(ステップＳ２８７)。ＣＰＵ１１は、抽出したサービスに親なし通信フラグを設定する(ステップＳ２８８)。
【００６６】
図２９は親子関係の推定処理手順を示すフローチャートである。サーバコンピュータ１のＣＰＵ１１は、ステップ５の処理として、以下の処理を実行する。ＣＰＵ１１は、集計ＤＢ１５４から、ステップＳ２８８の処理に基づく親なし通信フラグが設定されていない記憶内容を読み出す(ステップＳ２９１)。ＣＰＵ１１は、親回数を子回数で除して割合を算出する(ステップＳ２９２)。ＣＰＵ１１は、子側通信先のＩＰアドレス及び親候補通信元のＩＰアドレス（以下、組み合わせという）に対応付けて割合を記憶する(ステップＳ２９３)。
【００６７】
ＣＰＵ１１は、サービス内で全てのレコードについて処理を終了したか否かを判断する(ステップＳ２９４)。ＣＰＵ１１は、処理を終了していないと判断した場合(ステップＳ２９４でＮＯ)、ステップＳ２９５へ処理を移行させる。ＣＰＵ１１は、未処理の次のレコードを読み出す(ステップＳ２９５)。その後、ＣＰＵ１１は、処理をステップＳ２９２へ移行させる。これにより、サービス内での各レコードの割合が算出される。
【００６８】
ＣＰＵ１１は、サービス内で全てのレコードについて処理を終了したと判断した場合(ステップＳ２９４でＹＥＳ)、処理をステップＳ２９６へ移行させる。ＣＰＵ１１は、最大の割合を有する組み合わせを抽出する(ステップＳ２９６)。ＣＰＵ１１は、記憶部１５から所定範囲を読み出す(ステップＳ２９７)。ＣＰＵ１１は、最大の割合から所定範囲内の割合を有する組み合わせを抽出する(ステップＳ２９８)。ＣＰＵ１１は、サービスのＩＰアドレスに対応付けて、組み合わせに係る親子のＩＰアドレスを親子関係ＤＢ１５５に記憶する(ステップＳ２９９)。反対に所定範囲外の組み合わせについては親子関係がないものとされる。
【００６９】
ＣＰＵ１１は、全てのサービスについて処理を終了したか否かを判断する(ステップＳ２９１０)。ＣＰＵ１１は、全てのサービスについて処理を終了していないと判断した場合(ステップＳ２９１０でＮＯ)、処理をステップＳ２９１１へ移行させる。ＣＰＵ１１は、未処理の次のサービスの記憶内容を読み出す(ステップＳ２９１１)。ＣＰＵ１１は、その後処理をステップＳ２９２へ移行させる。これにより、各サービスの親子関係が推定される。ＣＰＵ１１は、全てのサービスについて処理を終了したと判断した場合(ステップＳ２９１０でＹＥＳ)、一連の処理を終了する。
【００７０】
図３０及び図３１は関係図の生成処理手順を示すフローチャートである。ＣＰＵ１１は、親子関係ＤＢ１５５の記憶内容を読み出す(ステップＳ３０１)。ＣＰＵ１１は、サービス実行ホスト情報ＤＢ１５１を参照し、サービスのＩＰアドレスに対応するサービス名を読み出す(ステップＳ３０２)。ＣＰＵ１１は、ＨＴＭＬファイルにサービス名、サービスのＩＰアドレス及びポート番号を記載する(ステップＳ３０３)。ＣＰＵ１１は、記載した対象サービス、ＩＰアドレス及びポート番号を楕円で囲みサービスアイコンを生成する(ステップＳ３０４)。なお、アイコンに加えて、親子関係ＤＢ１５５の記憶内容を記載してもよい。
【００７１】
ＣＰＵ１１は、親子関係ＤＢ１５５を参照し、サービスに対応する親候補通信元のＩＰアドレスを読み出す(ステップＳ３０５)。ＣＰＵ１１は、サービス実行ホスト情報ＤＢ１５１を参照し、ＩＰアドレスに対応する親候補通信元のサービス名及びポート番号を読み出す(ステップＳ３０６)。ＣＰＵ１１は、親のサービス名、ＩＰアドレス及びポート番号を記載する(ステップＳ３０７)。ＣＰＵ１１は、親のサービス名、ＩＰアドレス及びポート番号を楕円で囲み、親アイコンを生成する(ステップＳ３０８)。
【００７２】
ＣＰＵ１１は、親アイコンからサービスアイコンへ向かう矢印を生成する(ステップＳ３０９)。ＣＰＵ１１は、全ての親側通信元のＩＰアドレスについて処理を終了したか否かを判断する(ステップＳ３１１)。ＣＰＵ１１は、処理を終了していないと判断した場合(ステップＳ３１１でＮＯ)、処理をステップＳ３１２へ移行させる。ＣＰＵ１１は、未処理の次の親のＩＰアドレスを読み出す(ステップＳ３１２)。ＣＰＵ１１は、その後処理をステップＳ３０６へ移行させる。これにより、親が複数の場合、複数の親アイコン及び矢印が生成される。
【００７３】
ＣＰＵ１１は、処理を終了したと判断した場合(ステップＳ３１１でＹＥＳ)、処理をステップＳ３１３へ移行させる。ＣＰＵ１１は、親子関係ＤＢ１５５を参照し、子側通信先のＩＰアドレスを読み出す(ステップＳ３１３)。ＣＰＵ１１は、サービス実行ホスト情報ＤＢ１５１を参照し、ＩＰアドレスに対応する子側通信先のサービス名及びポート番号を読み出す(ステップＳ３１４)。ＣＰＵ１１は、子のサービス名、ＩＰアドレス及びポート番号を記載する(ステップＳ３１５)。ＣＰＵ１１は、子のサービス名、ＩＰアドレス及びポート番号を楕円で囲み、子アイコンを生成する(ステップＳ３１６)。ＣＰＵ１１は、サービスアイコンから子アイコンへ向かう矢印を生成する(ステップＳ３１７)。
【００７４】
ＣＰＵ１１は、全ての子通信元のＩＰアドレスについて処理を終了したか否かを判断する(ステップＳ３１８)。ＣＰＵ１１は、処理を終了していないと判断した場合(ステップＳ３１８でＮＯ)、処理をステップＳ３１９へ移行させる。ＣＰＵ１１は、未処理の次の子のＩＰアドレスを読み出す(ステップＳ３１９)。ＣＰＵ１１は、その後処理をステップＳ３１４へ移行させる。これにより、子が複数の場合、複数の子アイコン及び矢印が生成される。
【００７５】
ＣＰＵ１１は、処理を終了したと判断した場合(ステップＳ３１８でＹＥＳ)、処理をステップＳ３１１０へ移行させる。ＣＰＵ１１は、親アイコン、サービスアイコン、子アイコン及び矢印を含む関係図を記憶部１５に記憶する(ステップＳ３１１０)。ＣＰＵ１１は、全てのサービスについて処理を終了したか否かを判断する(ステップＳ３１１１)。ＣＰＵ１１は、処理を終了していないと判断した場合(ステップＳ３１１１でＮＯ)、処理をステップＳ３１１２へ移行させる。
【００７６】
ＣＰＵ１１は、親子関係ＤＢ１５５を参照し、未処理の次のＩＰアドレスを読み出す(ステップＳ３１１２)。ＣＰＵ１１は、その後処理をステップＳ３０２へ移行させる。これにより、各サービスの親子関係を示す関係図が生成される。ＣＰＵ１１は、処理を終了したと判断した場合(ステップＳ３１１１でＹＥＳ)、処理をステップＳ３１１３へ移行させる。ＣＰＵ１１は、アイコンの内容が重複する関係図を相互に連結する(ステップＳ３１１３)。具体的には時系列で先の関係図の子アイコンと、時系列で後の関係図の親アイコンが一致する場合、これらのアイコンのいずれかを消去し、関係図同士を連結する。
【００７７】
ＣＰＵ１１は、連結後の関係図を記憶部１５に記憶する(ステップＳ３１１４)。ＣＰＵ１１は、記憶した関係図を、コンピュータ２へ出力する(ステップＳ３１１５)。コンピュータ２のＣＰＵ２１は、表示部２４に関係図を表示する。なお、実施形態では要求側の通信を示す矢印を記載しているが、逆の処理を行うことにより応答側の通信を示す矢印をも関係図に記載してもよい。これにより、複数のサービス全体の関係を視認することが可能となる。また所定時間を設定することで、適切に親子関係を推定することが可能となる。また通信ログを適宜蓄積することにより、精度よく親子関係を推定することが可能となる。さらに、親子関係のない通信を関係図から排除することが可能となる。
【００７８】
実施の形態２
実施の形態２は親子間での通信の割合を関係図に追加する形態に関する。図３２は実施の形態２に係るサーバコンピュータ１のハードウェア群を示すブロック図である。記憶部１５には、さらに、子候補ＤＢ１５６、推定ＤＢ１５７、第２集計ＤＢ１５８、割合ＤＢ１５９等が設けられている。図３３は子候補ＤＢ１５６のレコードレイアウトを示す説明図である。なお、説明を容易にするために、通信データＤＢ１５２の内容も併せて記載している。
【００７９】
ＣＰＵ１１は、ステップ６として以下の処理を行う。ＣＰＵ１１は、ステップ２の親側と子側とを逆にし、親側スパンの受信時刻Tp_rから見て、子側スパンの送信時刻Tc_sが大きい、かつ、差が所定時間Ｘ（本例では1000ミリ秒）以内（0＜ Tp_r -Tc_s ≦X）となるものを抽出する。例えば、親側スパンSp_p_1の場合、受信時刻Tp_r11315よりも時間が後であり、かつ、1000ミリ秒以内のSc_p_1〜Sc_p_3(11320, 11650, 11880)が抽出される。
【００８０】
子候補ＤＢ１５６は、親側スパンフィールド、子候補フィールド、親側通信元ＩＰフィールド及び子候補通信先フィールド等を含む。ＣＰＵ１１は、各親側スパンについて同様の処理を行い、抽出した子スパンＩＤを、親スパンＩＤに対応付けて子候補ＤＢ１５６の子候補フィールドに記憶する。ＣＰＵ１１は、子候補ＤＢ１５６の親側通信元ＩＰフィールドに、親スパンＩＤに対応する親側通信元のＩＰアドレスを、親スパンＩＤに対応付けて記憶する。ＣＰＵ１１は、子候補ＤＢ１５６の子候補通信先フィールドに、親スパンＩＤに対応付けて、抽出した通信先のＩＰアドレス及びポート番号を記憶する。
【００８１】
図３４は他のサービスに係る子候補ＤＢ１５６のレコードレイアウトを示す説明図である。図３４の例は、サービスｅの子候補ＤＢ１５６を示している。ＣＰＵ１１は、同様に他のサービスについても、通信データＤＢ１５２を参照し、親側の送信時刻から後に所定時間内の送信時刻を有する子候補を抽出する。
【００８２】
図３５は推定ＤＢ１５７のレコードレイアウトを示す説明図である。なお説明を容易にするために、子候補ＤＢ１５６の内容も記載している。推定ＤＢ１５７は、親側通信元ＩＰフィールド、対象サービスフィールド及び子側通信先フィールド等を含む。ＣＰＵ１１は、親子関係の推定結果として、対象サービスのＩＰアドレス及びポート番号に対応付けて、親側通信元のＩＰアドレスと、子候補通信先のＩＰアドレスとの全ての組み合わせを推定ＤＢ１５７に記憶する。
【００８３】
図３６は他のサービスに係る推定ＤＢ１５７のレコードレイアウトを示す説明図である。ＣＰＵ１１は、他のサービスについても、同様に対象サービスのＩＰアドレス及びポート番号に対応付けて、親側通信元のＩＰアドレスと子側通信先のＩＰアドレスとを対応付けて記憶する。図３６の例は、サービスｅの親子関係の推定結果を示している。
【００８４】
図３７は第２集計ＤＢ１５７のレコードレイアウトを示す説明図である。第２集計ＤＢ１５８は、親側通信元ＩＰフィールド、親側回数フィールド、子候補回数フィールド、子候補通信先ＩＰフィールド、子回数フィールド及び同時呼出回数フィールド等を含む。ＣＰＵ１１は、親側通信元ＩＰフィールドに推定ＤＢ１５７で記憶した親側通信元のＩＰアドレスを記憶し、子候補通信先ＩＰフィールドに対応する子候補通信先のＩＰアドレス及びポート番号を記憶する。ＣＰＵ１１は、後述する処理により、ステップ７の処理として、親側回数、子候補回数、子回数及び同時呼出回数を算出し、親側通信元のＩＰアドレス及び子候補通信先のＩＰアドレスとポート番号に対応付けて記憶する。
【００８５】
図３８は他のサービスに係る第２集計ＤＢ１５８のレコードレイアウトを示す説明図である。ＣＰＵ１１は、子候補ＤＢ１５６の親側通信元ＩＰフィールドを参照し、親側通信元の各ＩＰアドレスの数を計数する。図３７の例ではCLIENTは６回抽出している。ＣＰＵ１１は、子候補ＤＢ１５６のレコードに対応させて各CLIENTの親側回数６、６を、第２集計ＤＢ１５８に記憶する。図３８の例では、ＣＰＵ１１は、子候補ＤＢ１５６を参照し、親側通信元のＩＰアドレス172.16.32.4の抽出回数を３、172.16.16.3の抽出回数を２と判断する。ＣＰＵ１１は、子候補ＤＢ１５６のレコードに対応させて、第２集計ＤＢ１５８に、親側回数３、３、２、２を記憶する。
【００８６】
ＣＰＵ１１は、続いて子候補回数を算出する。ＣＰＵ１１は、子候補ＤＢ１５６を参照し、対応する親候補のＩＰアドレス毎に、少なくとも一つの子候補のＩＰアドレスを対応付けて抽出した数を計数して、子候補回数を求める。すなわち、ＣＰＵ１１は、子候補ＤＢ１５６を参照し、親側スパンに対して子候補が空でない回数を計数する。図３７の例ではCLIENTに対して、６レコードが抽出されているため、第２集計ＤＢ１５８には６、６と記憶している。図３８の例では親側のアドレスが172.16.32.4の場合が２回、172.16.16.3の場合が１回であるので、第２集計ＤＢ１５８には各ＩＰアドレスに対応付けて、子候補回数が２、２、１、１と記憶されている。
【００８７】
ＣＰＵ１１は、続いて子回数を算出する。ＣＰＵ１１は、子候補ＤＢ１５６を参照し、親側のＩＰアドレス毎に、子側のアドレス及びポート番号を対応付けて抽出した数を計数して、子回数を求める。図３７の例では、親側のＩＰアドレスCLIENTと、子側のＩＰアドレス及びポート番号172.16.32.3:9030とが対応付けられて抽出された数は５となる。また、親側のＩＰアドレスCLIENTと、子側のＩＰアドレス及びポート番号172.16.16.2:9030とが対応付けられて抽出された数は４となる。
【００８８】
図３８の例では、親側のＩＰアドレス172.16.32.4と、子側のＩＰアドレス及びポート番号172.16.32.2:9001とが対応付けられて抽出された数は２となる。親側のＩＰアドレス172.16.32.4と、子側のＩＰアドレス及びポート番号172.16.16.5:9121とが対応付けられて抽出された数は２となる。親側のＩＰアドレス172.16.16.3と、子側のＩＰアドレス及びポート番号172.16.32.2:9001とが対応付けられて抽出された数は１となる。また、親側のＩＰアドレス172.16.16.3と、子側のＩＰアドレス及びポート番号172.16.16.5:9121とが対応付けられて抽出された数は１となる。
【００８９】
ＣＰＵ１１は、次いで同時呼出回数を算出する。ＣＰＵ１１は、子候補ＤＢ１５６を参照し、親側のＩＰアドレスに対応して抽出した全ての子側のＩＰアドレスを読み出す。次いで、ＣＰＵ１１は、抽出の際に、親側のＩＰアドレスに対応して全ての子側のＩＰアドレスを抽出した同時呼出回数を算出する。図３７の例では、CLIENTに対応して子側のＩＰアドレス172.16.32.3:9030と172.16.16.2:9030とが同時に抽出された回数は３であるので同時呼出回数は３となる。ＣＰＵ１１は、第２集計ＤＢ１５８に、親側のＩＰアドレス及び子側のＩＰアドレスに対応付けて、同時呼出回数３、３を記憶する。
【００９０】
図３８の例では、親側のＩＰアドレス172.16.32.4に対応付けて、子側のＩＰアドレス172.16.32.2:9001と172.16.16.5.9121とが同時に呼び出されている回数は２となる。また親側のＩＰアドレス172.16.16.3に対応付けて、子側のＩＰアドレス172.16.32.2:9001と172.16.16.5:9121とが同時に呼び出されている回数は１となる。ＣＰＵ１１は、第２集計ＤＢ１５８に、親側のＩＰアドレス172.16.32.4及び子側のＩＰアドレス172.16.32.2:9001の組み合わせについての同時呼出回数２を記憶する。
【００９１】
図３９は割合ＤＢ１５９のレコードレイアウトを示す説明図である。図４０は他のサービスの割合ＤＢ１５９のレコードレイアウトを示す説明図である。ＣＰＵ１１は、ステップ８として親回数比、子候補回数比、呼出回数比、及び、同時呼出比を算出する。なお、図３９には、説明を容易にするために第２集計ＤＢ１５８の内容も記載している。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、親側通信元のＩＰアドレスが複数種類存在する場合、それぞれの出現回数比を算出する。具体的には、ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、各親側のＩＰアドレスの親側回数の合計親側回数を求める。次いでＣＰＵ１１は、親側のＩＰアドレスの親側回数を合計親側回数で除して、親回数比を算出する。
【００９２】
ＣＰＵ１１は、算出した親回数比を、親側のＩＰアドレス、対象サービスのＩＰアドレス、及び子側のＩＰアドレス・ポート番号に対応付けて記憶する。図３９の例では親側のＩＰアドレスは一種類しか存在しないため、親回数比の算出は行われない。図４０の例では親側のＩＰアドレスは、172.16.32.4と172.16.16.3の２種類が存在する。合計親側回数は３＋３＋２＋２で１０となる。次いで、親側のＩＰアドレス172.16.32.4の親側回数６（３＋３）を合計親側回数１０で除して親回数比0.6を算出する。同様に親側のＩＰアドレス172.16.16.3の親側回数４（２＋２）を合計親側回数１０で除して親回数比0.4を算出する。これにより、親側は６：４の割合で通信されていることが理解できる。
【００９３】
次にＣＰＵ１１は、子候補回数比を算出する。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、子候補回数及び親回数を読み出す。ＣＰＵ１１は、読み出した子候補回数を親側回数で除して子候補回数比を算出する。ＣＰＵ１１は、算出した子候補回数比を親側通信元のＩＰアドレス及び子側通信先のＩＰアドレスに対応付けて、割合ＤＢ１５９に記憶する。図４０の例では、親側通信元のＩＰアドレス172.16.32.4と子候補通信先のＩＰアドレス172.16.32.2:9001の組み合わせにおける親側回数は３、子候補回数は２である。従って、子候補回数比は0.67（２／３）となる。なお、分数をそのまま記憶してもよく、また除算を行う際には適宜の桁数で四捨五入してもよい。
【００９４】
ＣＰＵ１１は、次に呼出回数比を算出する。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、親側通信元のＩＰアドレスアドレス毎に、子回数のうち最大の子回数を有する最大子回数を抽出する。ＣＰＵ１１は、子回数を、同一サービスであり、かつ、同一親側通信元のＩＰアドレスを有する最大子回数で除して、呼出回数比を算出する。図３９の例では、最大子回数は５である。子候補通信先のＩＰアドレス172.16.32.3:9030の子回数５を最大子回数５で除して、呼出回数比1.00を算出する。また、子候補通信先のＩＰアドレス172.16.16.2:9030の子回数４を最大子回数５で除して、呼出回数比0.80を算出する。
【００９５】
ＣＰＵ１１は、算出した呼出回数比を、サービスのＩＰアドレス、親側通信元のＩＰアドレス及び子側通信先のＩＰアドレスに対応付けて記憶する。図４０の例では、親側通信元ＩＰ172.16.32.4の最大子回数は２となる。子候補通信先のＩＰアドレス172.16.32.2:9001の子回数は２であり、最大子回数２で除して呼出回数比1.00を算出する。
【００９６】
最後にＣＰＵ１１は、同時呼出比を算出する。ＣＰＵ１１は、同時呼出回数を子候補回数で除して、同時呼出比を算出する。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、同時呼出回数及び子候補回数を読み出す。ＣＰＵ１１は、同時呼出回数を子候補回数で除して同時呼出比を算出し、算出した同時呼出比を割合ＤＢ１５９に、サービスのＩＰアドレス、親側通信元のＩＰアドレス、及び、子側通信先のＩＰアドレスに対応付けて記憶する。図３９の例では、同時呼出回数３を子候補回数６で除して同時呼出比0.50を算出する。図４０の例では、親側通信元のＩＰアドレスが172.16.32.4の場合、同時呼出回数は２、子候補回数は２であるから、同時呼出比は1.00となる。
【００９７】
図４１は関係図を示す説明図である。図４２は他のサービスに係る関係図を示す説明図である。ＣＰＵ１１は、ステップ９の処理として、親子間の矢印に割合を記載する処理を行う。ＣＰＵ１１は、割合ＤＢ１５９を参照し、親回数比を読み出す。ＣＰＵ１１は、親側通信元のＩＰアドレスに対応付けて親回数比を読み出す。ＣＰＵ１１は、実施の形態１で生成した、対象サービスの楕円と、親側通信元のＩＰアドレスに対応する楕円を結ぶ矢印の近傍に、親回数比を記載する。なお、親回数比が記憶されていない場合、親回数比を1.0とする。図４１の例ではCLIENTとプロキシｐとを結ぶ矢印は1.0となっている。
【００９８】
図４２の例では、親側通信元のＩＰアドレス172.16.32.4の親回数比は0.60、親側通信元のＩＰアドレス172.16.16.3の親回数比は0.40である。この場合、ＣＰＵ１１は、親側通信元のＩＰアドレス172.16.32.4と対象サービスとを結ぶ矢印に割合0.6を記載し、親側通信元のＩＰアドレス172.16.16.3と対象サービスとを結ぶ矢印に割合0.4を記載する。
【００９９】
ＣＰＵ１１は、続いて対象サービスの楕円と子側の楕円とを結ぶ矢印の割合を記載する。ＣＰＵ１１は、子候補回数比及び呼出回数比に基づき子側の割合を算出する。具体的には、ＣＰＵ１１は、子候補回数比の数値を、呼出回数比で振り分けることにより、割合を算出する。図４１の例では、子候補回数比1.0を、1.00:0.80で振り分ける。この場合、割合は、0.55と0.45になる。ＣＰＵ１１は、プロキシｐと、サービスa_1とを結ぶ矢印に0.55を記載する。また、ＣＰＵ１１は、プロキシｐとサービスa_2とを結ぶ矢印に0.45を記載する。
【０１００】
続いて図４２を用いた例を説明する。ＣＰＵ１１は、同時呼出比が所定値以上か否か判断する。本実施形態では所定値を0.8であるものとして説明するが一例でありこれに限るものではない。図４２の例では所定値を超えているため、ＣＰＵ１１は、対象サービスに対する子スパンが同時に呼び出されていると判断する。この場合、ＣＰＵ１１は、子側の複数のサービスが同時に呼び出されていることを示す同時呼出情報を表示する。本実施形態では、通常の呼び出しを示す実線の矢印に変えて、点線の矢印を同時呼出情報であるものとして説明する。なお、関係図の子スパン側に「同時呼出」とのテキストを記載するようにしてもよい。
【０１０１】
図４２の例では、サービスｅとサービスｂ及びサービスｆとは点線で結ばれている。また、ＣＰＵ１１は、割合についても、どの親側サービスからの通信かを判別できるよう、表示するようにしてもよい。本実施形態では、親側のサービス172.16.16.3に関する割合については、サービス172.16.32.4に関する割合よりも太いフォントで割合を表示するようにしている。なお、色を変える、または点滅させる等により区別して表示してもよい。
【０１０２】
ＣＰＵ１１は、親側通信元のＩＰアドレス172.16.32.4に関し、サービスｂ及びサービスｆの割合を算出する。ＣＰＵ１１は、子回数比0.67に呼出回数1.00:1.00を振り分ける。さらに、親側と対象サービスとの間の割合0.6により正規化し、0.6×0.67×1/2により、0.201を算出する。ＣＰＵ１１は、サービスｅとサービスｂとを結ぶ点線に0.201を記載する。ＣＰＵ１１は、同一の割合で割り振られたサービスｅとサービスｆとを結ぶ点線にも0.201を記載する。なお、本実施形態では、親側と対象サービスとの間の割合で正規化する例を示したが、正規化しなくてもよい。
【０１０３】
ＣＰＵ１１は、親側通信元のＩＰアドレス172.16.16.3に関し、サービスｂ及びサービスｆの割合を算出する。ＣＰＵ１１は、子回数比の数値0.50を呼出回数1.00:1.00で振り分ける。さらに、親側と対象サービスとの間の割合0.4により正規化し、0.4×0.50×1/2により、0.1を算出する。ＣＰＵ１１は、サービスｅとサービスｂとを結ぶ点線に太字で0.1を記載する。ＣＰＵ１１は、同一の割合で割り振られたサービスｅとサービスｆとを結ぶ点線にも太字で0.1を記載する。ＣＰＵ１１は、実施の形態１で求めた関係図に割合を記載することにより、関係図を完成させる。
【０１０４】
図４３は親子関係の推定処理手順を示すフローチャートである。ＣＰＵ１１は、通信データＤＢ１５２を参照し、親側スパンの受信時刻及び子側スパンの送信時刻を読み出す(ステップＳ４３１)。ＣＰＵ１１は、親側スパンの受信時刻から後に所定時間内の送信時刻を有する子側スパンを抽出する(ステップＳ４３２)。ＣＰＵ１１は、通信データＤＢ１５２を参照し、親側スパンＩＤ、子側スパンＩＤ、親側通信元のＩＰアドレス及び、抽出した子候補通信先のＩＰアドレスを、子候補ＤＢ１５６に記憶する(ステップＳ４３３)。
【０１０５】
ＣＰＵ１１は、ステップＳ４３２において、子側スパンを抽出しなかった場合、親側スパンＩＤ及び親側通信元のＩＰアドレスを子候補ＤＢ１５６に記憶する(ステップＳ４３４)。ＣＰＵ１１は、以上の処理を各サービスについて同様に行う。ＣＰＵ１１は、子候補ＤＢ１５６を参照し、親側通信元のＩＰアドレスと子候補通信先のＩＰアドレスとの組み合わせをすべて抽出する(ステップＳ４３５)。ＣＰＵ１１は、抽出した組み合わせを対象サービスに対応づけて、推定ＤＢ１５７に記憶する(ステップＳ４３６)。
【０１０６】
図４４は集計処理の手順を示すフローチャートである。サーバコンピュータ１のＣＰＵ１１は、子候補ＤＢ１５６の親側通信元ＩＰフィールドを参照し、各親側通信元のＩＰアドレスの数を計数する(ステップＳ４４１)。ＣＰＵ１１は、計数した値を、親側回数として親側通信元のＩＰアドレスに対応付けて、第２集計ＤＢ１５８に記憶する(ステップＳ４４２)。ＣＰＵ１１は、子候補ＤＢ１５６を参照し、対応する親候補のＩＰアドレス毎に、少なくとも一つの子候補のＩＰアドレスを対応付けて抽出した数を計数し、子候補回数を計数する(ステップＳ４４３)。
【０１０７】
ＣＰＵ１１は、計数した子候補回数を、親側通信元のＩＰアドレス及び子候補通信先のＩＰアドレスに対応づけて第２集計ＤＢ１５８に記憶する(ステップＳ４４４)。ＣＰＵ１１は、子候補ＤＢ１５６を参照し、親側通信元のＩＰアドレスと子候補通信先のＩＰアドレス・ポート番号との組み合わせの数を計数し、子回数を求める(ステップＳ４４５)。ＣＰＵ１１は、求めた子回数を、親側通信元のＩＰアドレス、及び、子候補通信先のＩＰアドレス・ポート番号に対応付けて、第２集計ＤＢ１５８に記憶する(ステップＳ４４６)。
【０１０８】
ＣＰＵ１１は、子候補ＤＢ１５６を参照し、親側のＩＰアドレスに対応して抽出した全ての子側のＩＰアドレスを読み出す(ステップＳ４４７)。ＣＰＵ１１は、親側のＩＰアドレスに対応して、ステップＳ４４７で読み出した全ての子側のＩＰアドレスを同時に抽出した同時呼出回数を算出する(ステップＳ４４８)。ＣＰＵ１１は、算出した同時呼出回数を親側通信元のＩＰアドレスに対応付けて第２集計ＤＢ１５８に記憶する(ステップＳ４４９)。以上の処理を各サービスの子候補ＤＢ１５６に対して行うことにより、各サービスの第２集計ＤＢ１５８が生成されることになる。
【０１０９】
図４５及び図４６は割合算出処理の手順を示すフローチャートである。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、親側通信元ＩＰアドレスの種類が複数か否かを判断する(ステップＳ４５１)。ＣＰＵ１１は、複数でないと判断した場合(ステップＳ４５１でＮＯ)、処理をステップＳ４５２に移行させる。ＣＰＵ１１は、割合ＤＢ１５９の親回数比レコードに、親側通信元のＩＰアドレスが一種類であることを示す単一親フラグを設定する(ステップＳ４５２)。ＣＰＵ１１は、その後処理をステップＳ４５６へ移行させる。
【０１１０】
一方、ＣＰＵ１１は、種類が複数であると判断した場合(ステップＳ４５１でＹＥＳ)、処理をステップＳ４５３へ移行させる。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、各親側のＩＰアドレスの親側回数の合計親側回数を計数する(ステップＳ４５３)。ＣＰＵ１１は、親側のＩＰアドレスの親側回数を合計親側回数で除して、親回数比を算出する(ステップＳ４５４)。ＣＰＵ１１は、算出した親回数比を親側通信元のＩＰアドレス及び子側通信先のＩＰアドレス・ポート番号に対応付けて、割合ＤＢ１５９に記憶する(ステップＳ４５５)。
【０１１１】
ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、子候補回数及び親回数を読み出す(ステップＳ４５６)。ＣＰＵ１１は、読み出した子候補回数を親側回数で除して、子候補回数比を算出する(ステップＳ４５７)。ＣＰＵ１１は、算出した子候補回数比を親側通信元のＩＰアドレス及び子側通信先のＩＰアドレスに対応付けて、割合ＤＢ１５９に記憶する(ステップＳ４５８)。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、親側通信元のＩＰアドレス毎に、子回数のうち最大の子回数を有する最大子回数を抽出する(ステップＳ４５９)。
【０１１２】
ＣＰＵ１１は、子回数を、同一サービスであり、かつ、同一親側通信元のＩＰアドレスを有する最大子回数で除して、呼出回数比を算出する(ステップＳ４６１０)。ＣＰＵ１１は、算出した呼出回数比を、サービスのＩＰアドレス、親側通信元のＩＰアドレス及び子側通信先のＩＰアドレスに対応付けて、割合ＤＢ１５９に記憶する(ステップＳ４６２０)。ＣＰＵ１１は、第２集計ＤＢ１５８を参照し、同時呼出回数及び子候補回数を読み出す(ステップＳ４６３０)。ＣＰＵ１１は、同時呼出回数を子候補回数で除して同時呼出比を算出する(ステップＳ４６４０)。ＣＰＵ１１は、算出した同時呼出比を割合ＤＢ１５９に、サービスのＩＰアドレス、親側通信元のＩＰアドレス、及び、子側通信先のＩＰアドレスに対応付けて記憶する(ステップＳ４６５０)。
【０１１３】
図４７及び図４８は割合の記載処理手順を示すフローチャートである。ＣＰＵ１１は、ステップS３１１１でＹＥＳの場合、または、ステップＳ３１１３の処理後、関係図に割合を記載する処理を実行する。なお、本実施形態ではステップＳ３１１１でＹＥＳの後、即ち、連結前の親、対象サービス及び子の３つについて割合を記載する例を挙げて説明する。ＣＰＵ１１は、割合ＤＢ１５９から親回数比を読み出す(ステップＳ４６１)。ＣＰＵ１１は、親回数比に単一親フラグが設定されているか否かを判断する(ステップＳ４６２)。ＣＰＵ１１は、単一親フラグが設定されていると判断した場合(ステップＳ４６２でＹＥＳ)、処理をステップＳ４６３へ移行させる。ＣＰＵ１１は、一つの親サービスと対象サービスとを結ぶ線の近傍に割合1.0を記載する(ステップＳ４６３)。その後ＣＰＵ１１は、処理をステップＳ４６６へ移行させる。
【０１１４】
ＣＰＵ１１は、単一親フラグが設定されていないと判断した場合(ステップＳ４６２でＮＯ)、処理をステップＳ４６４へ移行させる。ＣＰＵ１１は、読み出した親回数比毎に、親回数比に応じた割合を親サービスと対象サービスとを結ぶ線の近傍に記載する(ステップＳ４６４)。ＣＰＵ１１は、割合ＤＢ１５９を参照し、親サービス別に矢印及び割合の色を変更する(ステップＳ４６５)。
【０１１５】
ＣＰＵ１１は、実施の形態１で生成した関係図を参照し、子サービスは一つか否かを判断する(ステップＳ４６６)。ＣＰＵ１１は、子サービスは一つと判断した場合(ステップＳ４６６でＹＥＳ)、処理をステップＳ４６７へ移行させる。ＣＰＵ１１は、割合1.0を、ステップＳ４６３またはＳ４６４で決定した親サービスと対象サービスとの間の割合に応じて正規化し、正規化後の割合を記載する(ステップＳ４６７)。ＣＰＵ１１は、その後処理をステップＳ４７３へ移行させる。
【０１１６】
ＣＰＵ１１は、子サービスは一つではないと判断した場合(ステップＳ４６６でＮＯ)、処理をステップＳ４６８へ移行させる。ＣＰＵ１１は、割合ＤＢ１５９から子候補回数比及び呼出回数比を読み出す(ステップＳ４６８)。ＣＰＵ１１は、子候補回数比を、全ての呼出回数比を参照して割り振りを行い、各子サービスの割合を算出する(ステップＳ４６９)。ＣＰＵ１１は、ステップＳ４６３またはステップＳ４６４で記載した対応する親サービスの割合に基づき、ステップＳ４６９で算出した割合を正規化する(ステップＳ４７１)。ＣＰＵ１１は、正規化した割合を対象サービスと各子サービスとを結ぶ矢印の近傍に記載する(ステップＳ４７２)。
【０１１７】
ＣＰＵ１１は、割合ＤＢ１５９を参照し、親サービスに応じて矢印及び割合の色を変更する(ステップＳ４７２０)。図４２の例では、親側通信元のＩＰアドレスが、172.16.32.4を由来とする通信は黒色の矢印及び割合とする。また親側通信元のＩＰアドレスが172.16.3を由来とする通信は黒色とは異なる赤色の矢印及び割合とすればよい。ＣＰＵ１１は、記憶部１５から所定値を読み出す(ステップＳ４７３)。ＣＰＵ１１は、割合ＤＢ１５９を参照し、同時呼出比が所定値以上か否かを判断する(ステップＳ４７４)。
【０１１８】
ＣＰＵ１１は、同時呼出比が所定値以上と判断した場合(ステップＳ４７４でＹＥＳ)、処理をステップＳ４７５へ移行させる。ＣＰＵ１１は、同時呼出であることを明示すべく、対象サービスと子サービスとを結ぶ線を点線に変更する(ステップＳ４７５)。ＣＰＵ１１は、所定値以上でないと判断した場合(ステップＳ４７４でＮＯ)、ステップＳ４７５の処理をスキップし、一連の処理を終える。ＣＰＵ１１は、以上の処理を全てのサービスについて同様に行う。これにより、全ての親、対象サービス及び子の組み合わせについて、割合が記載された関係図が生成される。ＣＰＵ１１は、各関係図を連結する際、第１番目の親と次の対象サービスとを結ぶ割合を１として、時系列で後のサービス間の割合を正規化する。
【０１１９】
図４９は連結されたフローの一例を示す説明図である。図４９の例では、プロキシｑと、サービスｅとをそれぞれ対象サービスとした場合、プロキシｑの子サービスd_1、d_2と、サービスｅの親サービスd_1、d_2とが共通する。ＣＰＵ１１は、サービスd1、d2を元に、プロキシｑ及びサービスｅにて生成した関係図を連結する。また、ＣＰＵ１１は、Clientとプロキシｑとの間の割合を1.0とした上で、時系列で後のサービス間の割合を正規化する。なお、必ずしも正規化しなくてもよい。これにより、通信の割合をも容易に視認することが可能となる。また、同時呼出の有無も視認することが可能となる。
【０１２０】
本実施の形態２は以上の如きであり、その他は実施の形態１と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１２１】
実施の形態３
実施の形態３は所定時間Ｘを変更する形態に関する。図５０及び図５１は所定時間Ｘの決定処理の手順を示すフローチャートである。ＣＰＵ１１は、図２６で述べたように、ステップ１として、通信情報の取得処理を行う(ステップＳ４９１)。ＣＰＵ１１は、変数i及びjに初期値1を入力する(ステップＳ４９２)。ＣＰＵ１１は、ステップ２として、図２６及び図２７で述べた親候補の抽出処理を行う(ステップＳ４９３)。ＣＰＵ１１は、図２８に示した処理により、ステップ３として、集計ＤＢ１５４の作成処理を行う(ステップＳ４９４)。
【０１２２】
ＣＰＵ１１は、ステップ４のステップＳ２８８の処理により、親なし通信フラグ数（以下、Nnopという）を計数する(ステップＳ４９５)。ＣＰＵ１１は、Nnop（非存在数）が０でなく、かつ、(i=1またはNnop_1-1＞Nnop_1)であるか否かを判断する(ステップＳ４９６)。ＣＰＵ１１は、Nnopが０でなく、かつ、(i=1またはNnop_1-1＞Nnop_1)であると判断した場合(ステップＳ４９６でＹＥＳ)、処理をステップＳ４９７へ移行させる。ＣＰＵ１１は、所定時間Ｘの値を一定値（例えば１０）増加させる(ステップＳ４９７)。ＣＰＵ１１は、変数iをインクリメントする(ステップＳ４９８)。ＣＰＵ１１は、その後処理をステップＳ４９３へ戻す。以上の処理を繰り返すことにより、Nnopの値が減少する。
【０１２３】
ＣＰＵ１１は、Nnopが０でなく、かつ、(i=1またはNnop_1-1＞Nnop_1)でないと判断した場合(ステップＳ４９６でＮＯ)、処理をステップＳ４９９へ移行させる。ＣＰＵ１１は、i=1かつNnop_1=0であるか否かを判断する(ステップＳ４９９)。ＣＰＵ１１は、i=1かつNnop_1=0であると判断した場合(ステップＳ４９９でＹＥＳ)、最初から親候補が０であり、所定時間Ｘが大きすぎる可能性があるため、処理をステップＳ５０４へ移行させる。
【０１２４】
ＣＰＵ１１は、i=1かつNnop_1=0でないと判断した場合(ステップＳ４９９でＮＯ)、処理をステップＳ５０１へ移行させる。ＣＰＵ１１は、Nnop_iが１であるか否かを判断する(ステップＳ５０１)。ＣＰＵ１１は、Nnop_iが０であると判断した場合(ステップＳ５０１でＹＥＳ)、処理をステップＳ５０２へ移行させる。ＣＰＵ１１は、i番目のＸを所定時間として決定し、記憶部１５に記憶する(ステップＳ５０２)。ＣＰＵ１１は、Nnop_iが０でないと判断した場合(ステップＳ５０１でＮＯ)、処理をステップＳ５０３へ移行させる。ＣＰＵ１１は、i-1番目のＸを所定時間として決定し、記憶部１５に記憶する(ステップＳ５０３)。ＣＰＵ１１は、ステップＳ５０２及びＳ５０３の後、ステップ５として図２９に示した親子関係の推定処理を行う。
【０１２５】
図５２は所定時間Ｘの変更前の状態を示す説明図、図５３は所定時間Ｘの変更後の状態を示す説明図である。図５２は、所定時間Ｘを１０としたものである。子側スパンの送信時刻から遡って所定時間（１０）の受信時刻を有する親候補が存在しないNnopが２つ存在する。この場合、Ｘが小さいためＸを増加させ、Nnopを増加させる。図５３の例はＸ＝２０に増加させたものである。この場合、Nnopは０となる。
【０１２６】
ＣＰＵ１１は、ステップＳ４９９でＹＥＳの場合、Nnopは最初から０であり、所定時間Ｘが大きすぎる可能性があるため、Ｘを減少させる。ＣＰＵ１１は、Ｘを所定値ΔＸ減少させる(ステップＳ５０４)。所定値は例えば１００とすればよい。ＣＰＵ１１は、変数jをインクリメントする(ステップＳ５０５)。ＣＰＵ１１は、Ｘが０より大きいか否かを判断する(ステップＳ５０６)。ＣＰＵ１１は、Ｘが０より大きいと判断しない場合(ステップＳ５０６でＮＯ)、処理をステップＳ５０１１へ移行させる。
【０１２７】
ＣＰＵ１１は、Ｘが０より大きいと判断した場合(ステップＳ５０６でＹＥＳ)、処理をステップＳ５０７へ移行させる。ＣＰＵ１１は、ステップ２としてステップＳ４９３と同じく親候補の抽出処理を行う(ステップＳ５０７)。ＣＰＵ１１は、ステップ３としてステップＳ４９４と同じく集計ＤＢ１５４の作成処理を行う(ステップＳ５０８)。ＣＰＵ１１は、親なし通信フラグ数Nnopを計数する(ステップＳ５０９)。
【０１２８】
ＣＰＵ１１は、Nnop_jが０か否かを判断する(ステップＳ５０１０)。ＣＰＵ１１は、０であると判断した場合(ステップＳ５０１０でＹＥＳ)、処理をステップＳ５０４へ戻す。ＣＰＵ１１は、０と判断した場合(ステップＳ５０１０でＮＯ)、及びステップＳ５０６でＮＯの場合、j-1番目のＸを所定時間として決定し、記憶部１５に記憶する(ステップＳ５０１１)。
【０１２９】
図５４は所定時間Ｘの変更前の状態を示す説明図、図５５は所定時間Ｘの変更後の状態を示す説明図である。図５４は、所定時間Ｘを２００としたものである。この場合、最初からNnopが０であるため、所定時間Ｘを減少させていく。図５５は、所定時間Ｘを１００に減少させたものである。この場合もNnopは０であるが、これ以上所定時間Ｘを減少させた場合、所定時間Ｘが０となってしまうため、Ｘ＝１００を所定時間として決定する。これにより、最適な所定時間を決定することが可能となる。また適切な所定時間を用いることにより推定精度を向上させることが可能となる。
【０１３０】
本実施の形態３は以上の如きであり、その他は実施の形態１及び２と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
【０１３１】
実施の形態４
図５６は上述した形態のサーバコンピュータ１の動作を示す機能ブロック図である。ＣＰＵ１１が制御プログラム１５Ｐを実行することにより、サーバコンピュータ１は以下のように動作する。取得部５６１は、複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得する。抽出部５６２は、前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出する。出力部５６３は、各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する。
【０１３２】
図５７は実施の形態４に係るサーバコンピュータ１のハードウェア群を示すブロック図である。サーバコンピュータ１を動作させるためのプログラムは、ディスクドライブ、メモリーカードスロット等の読み取り部１０ＡにＣＤ−ＲＯＭ、ＤＶＤディスク、メモリーカード、またはＵＳＢメモリ等の可搬型記録媒体１Ａを読み取らせて記憶部１５に記憶しても良い。また当該プログラムを記憶したフラッシュメモリ等の半導体メモリ１Ｂをサーバコンピュータ１内に実装しても良い。さらに、当該プログラムは、インターネット等の通信網Ｎを介して接続される他のサーバコンピュータ（図示せず）からダウンロードすることも可能である。以下に、その内容を説明する。
【０１３３】
図５７に示すサーバコンピュータ１は、上述した各種ソフトウェア処理を実行するプログラムを、可搬型記録媒体１Ａまたは半導体メモリ１Ｂから読み取り、或いは、通信網Ｎを介して他のサーバコンピュータ（図示せず）からダウンロードする。当該プログラムは、制御プログラム１５Ｐとしてインストールされ、ＲＡＭ１２にロードして実行される。これにより、上述したサーバコンピュータ１として機能する。
【０１３４】
本実施の形態４は以上の如きであり、その他は実施の形態１から３と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。なお、以上述べた各実施形態は適宜組み合わせることが可能である。
【０１３５】
以上の実施の形態１から４を含む実施形態に関し、さらに以下の付記を開示する。
【０１３６】
（付記１）
コンピュータに、
複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得し、
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出し、
各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する
処理を実行させるプログラム。
（付記２）
前記送信時刻を有する送信先のアドレスに対応付けて、抽出した送信元候補のアドレス、及び、サービスを特定するアドレスを記憶する
処理を実行させる付記１に記載のプログラム。
（付記３）
前記送信時刻を有する送信先のアドレスの数を計数し、
前記送信先のアドレスに対応して抽出された送信元のアドレスの数を計数し、
前記送信先のアドレスの数と前記送信元のアドレスの数とに基づき、送信元候補を特定する
付記１または２に記載のプログラム。
（付記４）
前記送信元のアドレスの数を前記送信先のアドレスの数で除した除算値のうち、最も大きい除算値を有する送信元候補となる送信元のアドレスを特定し、
最も大きい除算値から所定値範囲内の除算値を有する送信元候補となる送信元のアドレスを特定する
付記３に記載のプログラム。
（付記５）
サービスについて送信時刻から所定時間以内の受信時刻を有する送信元候補が存在しない場合、前記サービスの送信元アドレスが存在しないことを示す情報を記憶する
付記１から４のいずれか一つに記載のプログラム。
（付記６）
送信元のアドレス、サービスを特定するアドレス及び送信先のアドレスを、処理順序を視認することが可能な形態で出力する
付記１から５のいずれか一つに記載のプログラム。
（付記７）
送信元側の受信時刻より後の所定時間以内の送信時刻を有する送信先のアドレスを、前記受信時刻を有する送信元のアドレスに対応付けて抽出し、
抽出した送信先のアドレスの数及び送信元のアドレスの数に応じて、送信元側の前記送信元のアドレスに対応する割合、及び、送信先側の前記送信先のアドレスに対応する割合を前記関係図に追加する
付記１から６のいずれか一つに記載のプログラム。
（付記８）
取得した通信情報に基づき、送信元のアドレスを抽出し、
抽出した送信元のアドレスの数を計数して親側回数を求め、
送信元側の受信時刻より後の所定時間以内の送信時刻を有する送信先のアドレスを、前記受信時刻を有する送信元のアドレスに対応付けて抽出した場合、前記送信元のアドレス毎に、少なくとも一つの前記送信先のアドレスを対応付けて抽出した数を計数して、子候補回数を求める
付記７に記載のプログラム。
（付記９）
前記送信元のアドレス毎に、前記送信先のアドレスを対応付けて抽出した数を計数して、子回数を求める
付記７または８に記載のプログラム。
（付記１０）
抽出した全ての送信先のアドレスを読み出し、
抽出の際に前記全ての送信先のアドレスを抽出した同時呼出回数を計数する
付記７から９のいずれか一つに記載のプログラム。
（付記１１）
各送信元のアドレスの親側回数の合計親側回数に対する送信元のアドレスの親側回数の割合から、前記送信元のアドレスの親回数比を算出し、
算出した親回数比に基づく割合を、送信元側の前記送信元のアドレスに対応付けて前記関係図に追加する
付記８から１０のいずれか一つに記載のプログラム。
（付記１２）
前記子候補回数を前記親側回数で除して子候補回数比を算出し、
算出した子候補回数比に基づく割合を、送信先側の前記送信先のアドレスに対応付けて前記関係図に追加する
付記８から１１のいずれか一つに記載のプログラム。
（付記１３）
前記同時呼出回数を前記子候補回数で除して、同時呼出比を算出し、
同時呼出比が所定値以上である場合、送信先側の複数の送信先のアドレスが同時に呼び出されていることを示す同時呼出情報を前記関係図に追加する
付記１０から１２のいずれか一つに記載のプログラム。
（付記１４）
子回数を、求めた子回数のうち最大値を有する子回数で除すことにより、呼出回数比を算出し、
前記子候補回数比及び前記呼出回数比に基づき算出される割合を、送信先側の前記送信先のアドレスに対応付けて前記関係図に追加する
付記８から１３のいずれか一つに記載のプログラム。
（付記１５）
前記所定時間を変更する
付記１から１４のいずれか一つに記載のプログラム。
（付記１６）
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補が存在しない非存在数を計数し、
非存在数が０となるまで前記所定時間を変更する
付記１５に記載のプログラム。
（付記１７）
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補が存在しない非存在数の初期値が０である場合に、非存在数が０となるまで前記所定時間を変更する
付記１６に記載のプログラム。
（付記１８）
複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得する取得部と、
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出する抽出部と、
各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する出力部と
を備える情報処理装置。
（付記１９）
コンピュータに、
複数のサービスに係る送信元側の受信時刻及び送信先側の送信時刻を含む通信情報を取得し、
前記送信時刻から遡って所定時間以内の受信時刻を有する送信元候補をサービス毎に抽出し、
各サービスの送信元候補に基づき、サービス間の関係を示す関係図を表示するためのデータを出力する
処理を実行させる情報処理方法。
【符号の説明】
【０１３７】
１      サーバコンピュータ
１Ａ    可搬型記録媒体
１Ｂ    半導体メモリ
２      コンピュータ
３      ホストコンピュータ
１０Ａ  読み取り部
１１    ＣＰＵ
１２    ＲＡＭ
１３    入力部
１４    表示部
１５    記憶部
１５Ｐ  制御プログラム
１６    通信部
１８    時計部
２１    ＣＰＵ
２２    ＲＡＭ
２３    入力部
２４    表示部
２５    記憶部
２５Ｐ  制御プログラム
２６    通信部
２８    時計部
１５１  サービス実行ホスト情報ＤＢ
１５２  通信データＤＢ
１５３  親候補ＤＢ
１５４  集計ＤＢ
１５５  親子関係ＤＢ
１５６  子候補ＤＢ
１５７  推定ＤＢ
１５８  第２集計ＤＢ
１５９  割合ＤＢ
Ｎ      通信網
【図１】
2018081440.tif 000003
【図２】
2018081440.tif 000004
【図３】
2018081440.tif 000005
【図４】
2018081440.tif 000006
【図５】
2018081440.tif 000007
【図６】
2018081440.tif 000008
【図７】
2018081440.tif 000009
【図８】
2018081440.tif 000010
【図９】
2018081440.tif 000011
【図１０】
2018081440.tif 000012
【図１１】
2018081440.tif 000013
【図１２】
2018081440.tif 000014
【図１３】
2018081440.tif 000015
【図１４】
2018081440.tif 000016
【図１５】
2018081440.tif 000017
【図１６】
2018081440.tif 000018
【図１７】
2018081440.tif 000019
【図１８】
2018081440.tif 000020
【図１９】
2018081440.tif 000021
【図２０】
2018081440.tif 000022
【図２１】
2018081440.tif 000023
【図２２】
2018081440.tif 000024
【図２３】
2018081440.tif 000025
【図２４】
2018081440.tif 000026
【図２５】
2018081440.tif 000027
【図２６】
2018081440.tif 000028
【図２７】
2018081440.tif 000029
【図２８】
2018081440.tif 000030
【図２９】
2018081440.tif 000031
【図３０】
2018081440.tif 000032
【図３１】
2018081440.tif 000033
【図３２】
2018081440.tif 000034
【図３３】
2018081440.tif 000035
【図３４】
2018081440.tif 000036
【図３５】
2018081440.tif 000037
【図３６】
2018081440.tif 000038
【図３７】
2018081440.tif 000039
【図３８】
2018081440.tif 000040
【図３９】
2018081440.tif 000041
【図４０】
2018081440.tif 000042
【図４１】
2018081440.tif 000043
【図４２】
2018081440.tif 000044
【図４３】
2018081440.tif 000045
【図４４】
2018081440.tif 000046
【図４５】
2018081440.tif 000047
【図４６】
2018081440.tif 000048
【図４７】
2018081440.tif 000049
【図４８】
2018081440.tif 000050
【図４９】
2018081440.tif 000051
【図５０】
2018081440.tif 000052
【図５１】
2018081440.tif 000053
【図５２】
2018081440.tif 000054
【図５３】
2018081440.tif 000055
【図５４】
2018081440.tif 000056
【図５５】
2018081440.tif 000057
【図５６】
2018081440.tif 000058
【図５７】
2018081440.tif 000059