(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024168360
(43)【公開日】2024-12-05
(54)【発明の名称】ログ管理装置、ログ管理方法、およびログ管理プログラム
(51)【国際特許分類】
G06F 11/30 20060101AFI20241128BHJP
【FI】
G06F11/30 175
G06F11/30 140A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023084935
(22)【出願日】2023-05-23
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】中川 修一
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042MA05
5B042MA08
5B042MA09
5B042MA16
5B042MC15
5B042MC40
(57)【要約】
【課題】マイクロサービスについての観測情報の格納先となるデータベースへの格納量を調整可能にすること。
【解決手段】ログ管理装置101は、複数のマイクロサービスの各マイクロサービスから収集された観測情報(例えば、観測情報集合120)のうち、同一のリクエストIDを含む観測情報群(例えば、観測情報群121~123)を取得する。観測情報は、各マイクロサービスにおいて実行された処理に関する情報である。リクエストIDは、リクエストに応じて実行される一連の処理を識別する識別子である。ログ管理装置101は、取得した観測情報群から、エラー情報および警告情報を検索する。エラー情報は、エラーの発生を示す情報である。警告情報は、エラーの要因となり得る事象の発生を示す情報である。ログ管理装置101は、検索した検索結果に応じて、観測情報群のうちの一部または全部の情報をデータベース110に格納する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のマイクロサービスの各マイクロサービスから収集された、前記各マイクロサービスにおいて実行された処理に関する観測情報のうち、リクエストに応じて実行される一連の処理を識別する同一のリクエストIDを含む観測情報群を取得し、
取得した前記観測情報群から、エラーの発生を示すエラー情報、および、エラーの要因となり得る事象の発生を示す警告情報を検索し、
検索した検索結果に応じて、前記観測情報群のうちの一部または全部の情報を格納先となるデータベースに格納する、
制御部を有することを特徴とするログ管理装置。
【請求項2】
前記観測情報群は、異なるデータ種の観測情報を含み、
前記制御部は、
前記観測情報群それぞれのデータ種を参照して、前記観測情報群から、あらかじめ決められた一部の情報を抽出することにより、抽出した前記一部の情報を含む、フォーマット化されたログ情報を作成し、
前記観測情報群から前記エラー情報および前記警告情報が検索されなかった場合、前記観測情報群について、作成した前記フォーマット化されたログ情報のみを前記データベースに格納する、
ことを特徴とする請求項1に記載のログ管理装置。
【請求項3】
前記制御部は、
前記観測情報群から、前記エラー情報が検索されず、かつ、前記警告情報が検索された場合には、前記観測情報群から前記警告情報を含む観測情報と同一のデータ種の観測情報を特定し、
前記観測情報群について、前記フォーマット化されたログ情報とともに、特定した前記観測情報を前記データベースに格納する、
ことを特徴とする請求項2に記載のログ管理装置。
【請求項4】
前記制御部は、
前記観測情報群から前記エラー情報が検索された場合、前記フォーマット化されたログ情報とともに、前記観測情報群を前記データベースに格納する、
ことを特徴とする請求項2に記載のログ管理装置。
【請求項5】
前記観測情報群は、イベント、メトリクス、ログおよびトレースの少なくともいずれかのデータ種の観測情報を含み、
前記一部の情報は、前記観測情報群のうちのイベントの観測情報から抽出される、前記リクエストに応じた動作の起点となる処理の情報および前記リクエストIDを含む、
ことを特徴とする請求項2~4のいずれか一つに記載のログ管理装置。
【請求項6】
前記一部の情報は、前記観測情報群のうちのログおよびトレースの観測情報から抽出される、前記リクエストに応じて動作したマイクロサービスの遷移を表す情報を含む、
ことを特徴とする請求項5に記載のログ管理装置。
【請求項7】
複数のマイクロサービスの各マイクロサービスから収集された、前記各マイクロサービスにおいて実行された処理に関する観測情報のうち、リクエストに応じて実行される一連の処理を識別する同一のリクエストIDを含む観測情報群を取得し、
取得した前記観測情報群から、エラーの発生を示すエラー情報、および、エラーの要因となり得る事象の発生を示す警告情報を検索し、
検索した検索結果に応じて、前記観測情報群のうちの一部または全部の情報を格納先となるデータベースに格納する、
処理をコンピュータが実行することを特徴とするログ管理方法。
【請求項8】
複数のマイクロサービスの各マイクロサービスから収集された、前記各マイクロサービスにおいて実行された処理に関する観測情報のうち、リクエストに応じて実行される一連の処理を識別する同一のリクエストIDを含む観測情報群を取得し、
取得した前記観測情報群から、エラーの発生を示すエラー情報、および、エラーの要因となり得る事象の発生を示す警告情報を検索し、
検索した検索結果に応じて、前記観測情報群のうちの一部または全部の情報を格納先となるデータベースに格納する、
処理をコンピュータに実行させることを特徴とするログ管理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ログ管理装置、ログ管理方法、およびログ管理プログラムに関する。
【背景技術】
【0002】
マイクロサービスは、独立して開発されて稼働するソフトウェアコンポーネントを複数組み合わせることで、一つのサービスを構成するソフトウェアの構造となっている。マイクロサービスのアプリケーションプログラムの稼働状態を監視するために、マイクロサービスの観測情報が収集される場合がある。マイクロサービスの観測情報は、例えば、システムの運用を停止することなく収集され、システムの性能評価に用いられる。
【0003】
先行技術としては、エージェント装置が、処理部から逐次監視値を取得し、監視値からノイズを除去して生成した除去済み監視値を、マネージャ装置に送信し、マネージャ装置が、エージェント装置から取得した除去済み監視値を参照して、エージェント装置から監視値を取得する監視間隔を決定する監視システムがある。また、マイクロサービスの実行に関する通知を管理するための技術がある。また、テレメトリ技術を利用してデータを定期的に配信する複数の業務装置を管理するための技術がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第2021/095114号
【特許文献2】米国特許出願公開第2022/0245017号明細書
【特許文献3】特開2020-28005号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、システムの性能評価などのために収集される、マイクロサービスについての観測情報の格納先となるデータベースへの格納量を調整することができないという問題がある。
【0006】
一つの側面では、本発明は、マイクロサービスについての観測情報の格納先となるデータベースへの格納量を調整可能にすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様では、複数のマイクロサービスの各マイクロサービスから収集された、前記各マイクロサービスにおいて実行された処理に関する観測情報のうち、リクエストに応じて実行される一連の処理を識別する同一のリクエストIDを含む観測情報群を取得し、取得した前記観測情報群から、エラーの発生を示すエラー情報、および、エラーの要因となり得る事象の発生を示す警告情報を検索し、検索した検索結果に応じて、前記観測情報群のうちの一部または全部の情報を格納先となるデータベースに格納する、ログ管理装置が提供される。
【発明の効果】
【0008】
本発明の一側面によれば、マイクロサービスについての観測情報の格納先となるデータベースへの格納量を調整可能にすることができるという効果を奏する。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態にかかるログ管理方法の一実施例を示す説明図である。
【
図2】
図2は、情報処理システム200のシステム構成例を示す説明図である。
【
図3】
図3は、ログ管理サーバ201のハードウェア構成例を示すブロック図である。
【
図4】
図4は、ログ管理サーバ201の機能的構成例を示すブロック図である。
【
図5】
図5は、情報処理システム200の動作例を示す説明図である。
【
図6】
図6は、アプリケーションの第1の動作例を示す説明図である。
【
図7A】
図7Aは、テレメトリーデータの第1のサンプル例を示す説明図(その1)である。
【
図7B】
図7Bは、テレメトリーデータの第1のサンプル例を示す説明図(その2)である。
【
図7C】
図7Cは、テレメトリーデータの第1のサンプル例を示す説明図(その3)である。
【
図7D】
図7Dは、テレメトリーデータの第1のサンプル例を示す説明図(その4)である。
【
図7E】
図7Eは、テレメトリーデータの第1のサンプル例を示す説明図(その5)である。
【
図7F】
図7Fは、テレメトリーデータの第1のサンプル例を示す説明図(その6)である。
【
図8A】
図8Aは、フォーマット化ログの第1の作成例を示す説明図(その1)である。
【
図8B】
図8Bは、フォーマット化ログの第1の作成例を示す説明図(その2)である。
【
図9】
図9は、構造化ログの第1の格納例を示す説明図である。
【
図10A】
図10Aは、フォーマット化ログの第2の作成例を示す説明図(その1)である。
【
図10B】
図10Bは、フォーマット化ログの第2の作成例を示す説明図(その2)である。
【
図11】
図11は、構造化ログの第2の格納例を示す説明図である。
【
図12】
図12は、アプリケーションの第2の動作例を示す説明図である。
【
図13A】
図13Aは、テレメトリーデータの第2のサンプル例を示す説明図(その1)である。
【
図13B】
図13Bは、テレメトリーデータの第2のサンプル例を示す説明図(その2)である。
【
図13C】
図13Cは、テレメトリーデータの第2のサンプル例を示す説明図(その3)である。
【
図14A】
図14Aは、フォーマット化ログの第2の作成例を示す説明図(その1)である。
【
図14B】
図14Bは、フォーマット化ログの第2の作成例を示す説明図(その2)である。
【
図15】
図15は、構造化ログの第3の格納例を示す説明図である。
【
図16】
図16は、アプリケーションの第3の動作例を示す説明図である。
【
図17A】
図17Aは、テレメトリーデータの第2のサンプル例を示す説明図(その1)である。
【
図17B】
図17Bは、テレメトリーデータの第2のサンプル例を示す説明図(その2)である。
【
図17C】
図17Cは、テレメトリーデータの第2のサンプル例を示す説明図(その3)である。
【
図18A】
図18Aは、フォーマット化ログの第2の作成例を示す説明図(その1)である。
【
図18B】
図18Bは、フォーマット化ログの第2の作成例を示す説明図(その2)である。
【
図19】
図19は、構造化ログの第4の格納例を示す説明図である。
【
図20】
図20は、ログ管理サーバ201のログ管理処理手順の一例を示すフローチャート(その1)である。
【
図21】
図21は、ログ管理サーバ201のログ管理処理手順の一例を示すフローチャート(その2)である。
【
図22】
図22は、フォーマット化処理の具体的処理手順の一例を示すフローチャート(その1)である。
【
図23】
図23は、フォーマット化処理の具体的処理手順の一例を示すフローチャート(その2)である。
【発明を実施するための形態】
【0010】
以下に図面を参照して、本発明にかかるログ管理装置、ログ管理方法、およびログ管理プログラムの実施の形態を詳細に説明する。
【0011】
(実施の形態)
図1は、実施の形態にかかるログ管理方法の一実施例を示す説明図である。
図1において、ログ管理装置101は、複数のマイクロサービスの各マイクロサービスから収集される観測情報の格納先となるデータベース110への格納量を調整するコンピュータである。マイクロサービスは、1つのサービスを機能ごとに分割したアーキテクチャ、または、1つのサービスを分割した機能それぞれを実現するソフトウェアである。
【0012】
システムをマイクロサービス化することで、機能追加や障害修正を行う場合に個々のマイクロサービスを入れ替えることで対処できるため、システム全体を停止することなく、修正スピードの向上や可用性の向上が見込まれる。各マイクロサービスは、例えば、それぞれ異なるサーバによって実行される。サーバは、例えば、物理サーバや仮想マシンである。また、マイクロサービスは、コンテナによって実行されてもよい。
【0013】
複数のマイクロサービスは、例えば、呼び出し関係のあるマイクロサービスを含む。呼出関係にある複数のマイクロサービスは、システムを実現するためのマイクロサービスの集合であり、複数のマイクロサービスに含まれるマイクロサービスが他のマイクロサービスを呼び出しながら機能を実現する。
【0014】
観測情報は、マイクロサービスにおいて実行された処理に関する情報であり、マイクロサービスの動きを観測するためのものである。観測情報は、ログ情報とも呼ばれる。観測情報には、複数のデータ種の観測情報がある。データ種としては、例えば、イベント、メトリクス、ログ、トレースなどがある。
【0015】
イベントは、ある時刻に発生した個々のリクエストやアクションの記録である。メトリクスは、マイクロサービスの実行に関して、計測、集計等された数値的な情報である。ログは、アプリケーションやプラットフォーム内で個々の動作が実行されたときにシステムが生成する情報(テキストデータ)である。
【0016】
また、トレースは、複数のサービスに跨がってリクエストが処理される際に、どの順番でサービスが呼び出されたのかの遷移を表す情報である。エラーや警告などのメッセージが、メトリクスの数値的な情報とともに出力されたり、ログとして出力されたりする場合がある。
【0017】
複数のマイクロサービスから構成されるシステム(サービス)は、マイクロサービスごとの分散サービスシステムとなる。このため、各マイクロサービスを適切に管理し、効率よく動作するように監視することは重要である。また、マイクロサービスの状態を監視するためのロジックを各マイクロサービスに組み込むには、分散されたマイクロサービスごとにメトリックやライブラリを用意することになり非効率である。
【0018】
このため、各マイクロサービス(アプリケーションプログラム)の稼働状態を監視するための観測情報を収集して、システムの性能評価などを行う場合がある。一方、クラウドに展開しているマイクロサービスアーキテクチャは、複数のマイクロサービスを利用して拡大可能な構成になっている。
【0019】
マイクロサービスアーキテクチャが拡大すると、それに伴ってマイクロサービスから収集される観測情報のデータ量が増え、データの保管に必要なメモリ領域の増大を招く。また、クラウドにおいてデータの保管に必要なメモリ領域を確保するには、収集するデータ量とそれらの転送量に応じた課金となることが多い。
【0020】
従来、複数のマイクロサービスから構成されるシステムにおいて、分散されたマイクロサービスの管理が破綻しないように、網の目状(メッシュ)につながっているサービス間通信を適切に管理するための「サービスメッシュ」という仕組みがある。サービスメッシュでは、各マイクロサービスに不随する軽量なプロキシを設けて、サービスディスカバリ、トラフィックコントロール、可観測性、障害分離、セキュリティなどの管理機能を実現する。
【0021】
サービスディスカバリは、呼び出すマイクロサービスのネットワーク上の位置を特定する仕組みである。トラフィックコントロールは、マイクロサービスへのアクセスの割り振りを設定に基づいて変更したり、マイクロサービスからの戻り値を変更したりして、サービス間の通信を制御する仕組みである。
【0022】
可観測性は、マイクロサービスから出力されるデータから内部状態を確認して、マイクロサービスの正常性を判断する仕組みである。障害分離は、個々のマイクロサービスで障害が発生した際に、その影響範囲をできるだけ最小限に抑えるための仕組みである。セキュリティは、マイクロサービスが他のマイクロサービスを呼び出す際の認証/認可やセキュアな通信を効率よく管理するための仕組みである。
【0023】
ここで、サービスメッシュは、例えば、コントロールプレーンとデータプレーンの2つのコンポーネントを含む。コントロールプレーンは、サービスメッシュの管理を担当し、サービスディスカバリなどの管理に必要な情報を保管したり、構成変更などの管理の命令を発行したりする。データプレーンは、コントロールプレーンからの指示を受けてサービスの通信をコントロールしたり、管理に必要な情報をコントロールプレーンに送信したりする。
【0024】
各マイクロサービスの観測情報は、例えば、コントロールプレーンにおいて、サービスメッシュにおける可観測性の仕組みにより、データプレーンから収集することができる。コントロールプレーンは、例えば、各データプレーンから収集した観測情報をデータベースに格納して、システムの性能評価(システムやアプリケーションの改善や障害個所の特定など)を実施する。
【0025】
しかしながら、従来技術では、マイクロサービスについて収集される観測情報のデータベースへの格納量を調整することができない。例えば、収集される観測情報のデータ量は、種々の条件下において、高密度(データ種:多、集計間隔:短)となれば膨大なデータ量となり、データベースやストレージを圧迫することになる。
【0026】
一方、データベースやストレージの圧迫を避けるような低密度(データ種:少、集計間隔:長)とすれば、障害が発生したときや、システムやアプリケーションの改善を実施する際に、データが不足するという事態になる。従来技術では、観測情報のデータベースへの格納量を、どのような基準で調整すればよいのか判断することができない。
【0027】
そこで、本実施の形態では、マイクロサービスについての観測情報の格納先となるデータベース(例えば、データベース110)への格納量を調整可能にするログ管理方法について説明する。ここで、ログ管理装置101の処理例(下記(1)~(3)の処理に対応)について説明する。
【0028】
(1)ログ管理装置101は、複数のマイクロサービスの各マイクロサービスから収集された観測情報のうち、同一のリクエストIDを含む観測情報群を取得する。観測情報は、各マイクロサービスにおいて実行された処理に関する情報である。リクエストIDは、リクエストに応じて実行される一連の処理を識別する識別子である。
【0029】
観測情報には、マイクロサービスに跨がるリクエストのつながりを特定するためにリクエストIDが含まれる。このリクエストIDを一連の処理全体で使い続けることで、収集される膨大な数の観測情報の中から、一連の処理に関する観測情報を抽出することが可能となる。
【0030】
図1の例では、観測情報集合120を、複数のマイクロサービスの各マイクロサービスから収集された観測情報の集合とする。この場合、ログ管理装置101は、観測情報集合120から、同一のリクエストIDを含む観測情報群を取得する。ここでは、同一のリクエストID(
図1中、「ID」)を含む観測情報群121~123が取得された場合を想定する。
【0031】
(2)ログ管理装置101は、取得した観測情報群から、エラー情報および警告情報を検索する。ここで、エラー情報は、エラーの発生を示す情報である。警告情報は、エラーの要因となり得る事象の発生を示す情報である。エラーの要因となり得る事象は、例えば、「処理時間が長い」、「応答が遅い」、「ある情報がない」などである。
【0032】
エラー情報や警告情報は、観測情報に含まれる場合がある。観測情報におけるエラー情報は、例えば、「ERROR」、「エラー」などの文字列によって特定される。また、観測情報における警告情報は、例えば、「WARN」、「警告」などの文字列によって特定される。
【0033】
(3)ログ管理装置101は、検索した検索結果に応じて、観測情報群のうちの一部または全部の情報をデータベース110に格納する。データベース110は、観測情報の格納先となるデータベースである。データベース110は、ログ管理装置101が有していてもよく、また、ログ管理装置101からアクセス可能な他のコンピュータが有していてもよい。
【0034】
ここで、観測情報群からエラー情報および警告情報が検索されなかった場合、システムが正常に稼働して一連の処理が完了したケースであり、観測情報群の全てを格納する必要性は低いといえる。このため、ログ管理装置101は、例えば、観測情報群のうちのあらかじめ決められた一部の情報のみを格納するようにして、データベース110への格納量を減らす。
【0035】
一部の情報は、例えば、リクエストに応じた動作の起点となる処理の情報(イベント)やリクエストIDを含む。また、一部の情報は、リクエストに応じて動作したマイクロサービスの遷移を表す情報を含むものであってもよい。また、一部の情報は、リクエストに応じた動作が終了したときのメトリクスの情報やステータスコードを含むものであってもよい。
【0036】
また、観測情報群から、エラー情報が検索されず、かつ、警告情報が検索された場合、一連の処理の中でエラーは発生していないものの、エラーの要因となり得る事象が発生したケースである。この場合、その事象についての分析を行って、さらなる調査が必要なのかどうかを判断すべきであるといえる。
【0037】
このため、ログ管理装置101は、例えば、観測情報群のうち、警告情報を含む観測情報と同一のデータ種の観測情報のみをデータベース110に格納してもよい。警告情報を含む観測情報と同一のデータ種の観測情報は、エラーの要因となり得る事象の分析に有用な情報といえる。
【0038】
また、ログ管理装置101は、観測情報群のうち、警告情報を含む観測情報のみをデータベース110に格納してもよい。これにより、ログ管理装置101は、観測情報群の全てを格納する場合に比べて、データベース110への格納量を減らす。ただし、ログ管理装置101は、警告情報が検索された場合に、観測情報群の全てをデータベース110に格納してもよい。
【0039】
また、観測情報群からエラー情報が検索された場合、一連の処理の中で何らかのエラーが発生したケースであり、障害箇所の特定や原因を究明して対応すべき状況であるといえる。このため、ログ管理装置101は、例えば、観測情報群の全てをデータベース110に格納する。
【0040】
図1の例では、まず、観測情報群121~123からエラー情報および警告情報が検索されなかったとする。この場合、ログ管理装置101は、例えば、観測情報群121~123から、あらかじめ決められた一部の情報130を抽出する。そして、ログ管理装置101は、観測情報群121~123について、抽出した一部の情報130のみをデータベース110に格納してもよい。
【0041】
また、観測情報群121~123から、エラー情報が検索されず、かつ、警告情報が検索されたとする。この場合、ログ管理装置101は、例えば、観測情報群121~123から、警告情報を含む観測情報を抽出する。ここでは、警告情報を含む観測情報121,122が抽出されたとする。この場合、ログ管理装置101は、観測情報群121~123について、抽出した観測情報121,122をデータベース110に格納してもよい。この際、ログ管理装置101は、抽出した観測情報121,122を、一部の情報130とともにデータベース110に格納してもよい。
【0042】
また、観測情報群121~123から、エラー情報が検索されたとする。この場合、ログ管理装置101は、例えば、観測情報群121~123をデータベース110に格納してもよい。この際、ログ管理装置101は、観測情報群121~123を、一部の情報130とともにデータベース110に格納してもよい。
【0043】
このように、ログ管理装置101によれば、マイクロサービスについての観測情報の格納先となるデータベース110への格納量を調整することができる。例えば、ログ管理装置101は、同一のリクエストIDに紐付いた観測情報群単位で、エラー情報や警告情報が含まれるかどうかによって、観測情報群のうちの一部の情報のみを格納するのか、全部の情報を格納するのかを調整することができる。このため、ログ管理装置101は、システムの性能評価などに有用な情報を残しつつ、データベース110における観測情報の保管に使用する記憶容量を削減することができる。
【0044】
(情報処理システム200のシステム構成例)
つぎに、
図1に示したログ管理装置101を含む情報処理システム200のシステム構成例について説明する。ここでは、
図1に示したログ管理装置101を、情報処理システム200内のログ管理サーバ201に適用した場合を例に挙げて説明する。情報処理システム200は、例えば、マイクロサービスアーキテクチャを利用してウェブサービスを提供するコンピュータシステムに適用される。
【0045】
図2は、情報処理システム200のシステム構成例を示す説明図である。
図2において、情報処理システム200は、ログ管理サーバ201と、処理装置M1~Mm(m:2以上の自然数)とを含む。情報処理システム200において、ログ管理サーバ201および処理装置M1~Mmは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
【0046】
ここで、ログ管理サーバ201は、データベース220へのテレメトリーデータの格納量を調整するコンピュータである。データベース220は、テレメトリーデータの格納先となるデータベースである。テレメトリーデータは、複数のマイクロサービスの各マイクロサービスから出力される観測情報に対応する。
【0047】
データベース220は、データベースLv1、データベースLv2およびデータベースLv3を含む。データベースLv1、データベースLv2およびデータベースLv3は、データベース220内の区分けされた異なる記憶領域(第1の記憶領域、第2の記憶領域、第3の記憶領域)に相当する。
図1に示したデータベース110は、例えば、データベース220に対応する。
【0048】
ここでは、ログ管理サーバ201がデータベース220を有する場合について説明する。ただし、データベース220は、ログ管理サーバ201からアクセス可能な他のコンピュータ(例えば、データベースサーバ)が有していてもよい。
【0049】
また、ログ管理サーバ201は、コントロールプレーンCを有する。コントロールプレーンCは、サービスメッシュを構成するコンポーネントの一つであり、サービスメッシュの管理を担当する。コントロールプレーンCは、サービスメッシュで接続されているマイクロサービスの管理に必要な情報を保管したり、構成変更などの管理の命令を発行したりする。例えば、コントロールプレーンCは、データプレーンに管理の指示を送信することにより、サービスにかかる通信を制御して、マイクロサービスの管理を行う。
【0050】
処理装置M1~Mmは、複数のマイクロサービスの各マイクロサービスを実行可能なコンピュータである。マイクロサービスは、独立で稼働するソフトウェアコンポーネントである。複数のソフトウェアコンポーネントが相互に接続されて組み合わさることで、一つのサービス(アプリケーション、システム)が構成される。
【0051】
具体的には、例えば、各処理装置M1~Mmは、自装置上でコンテナを起動し、コンテナ上でマイクロサービスを実行してもよい。処理装置M1~Mmは、例えば、物理サーバであってもよく、また、物理サーバ上で動作する仮想マシンであってもよい。
【0052】
また、処理装置M1~Mmは、データプレーンを実行可能である。データプレーンは、サービスメッシュを構成するコンポーネントの一つであり、コントロールプレーンCからの指示を受けてマイクロサービスの通信をコントロールしたり、管理に必要な情報をコントロールプレーンに送信したりする。
【0053】
以下の説明では、処理装置M1~Mmのうちの任意の処理装置を「処理装置Mi」と表記する場合がある(i=1,2,…,m)。また、処理装置Mi上で実行されるマイクロサービスを「サービス#i」と表記する場合がある。また、処理装置Mi上で動作するデータプレーンを「データプレーン#i」と表記する場合がある。例えば、処理装置M1上で実行されるマイクロサービスは「サービス#1」であり、処理装置M1上で動作するデータプレーンは「データプレーン#1」である。また、処理装置Mm上で実行されるマイクロサービスは「サービス#m」であり、処理装置Mm上で動作するデータプレーンは「データプレーン#m」である。
【0054】
情報処理システム200において、データプレーン#iは、サービス#iに関するテレメトリーデータを取得する。この際、データプレーン#iは、リクエストに応じて実行される一連の処理を識別するリクエストIDをテレメトリーデータに付与する。そして、データプレーン#iは、取得したテレメトリーデータ(リクエストIDを含む)をコントロールプレーンCに送信する。
【0055】
データプレーン#iによるテレメトリーデータの送信は、例えば、あらかじめ決められた時間間隔で定期的に実行される。例えば、データプレーン#iは、サービス#iの実行に応じてテレメトリーデータを取得する。そして、データプレーン#iは、一定時間が経過するたびに、その期間に取得されたテレメトリーデータをまとめてコントロールプレーンCに送信する。ただし、データプレーン#iは、サービス#iに関するテレメトリーデータを取得すると、その都度、取得したテレメトリーデータをコントロールプレーンCに送信してもよい。
【0056】
図示は省略するが、情報処理システム200には、情報処理システム200のユーザが使用するユーザ端末が含まれる。ユーザ端末は、例えば、PC(Personal Computer)やタブレットPCなどである。また、情報処理システム200には、サービス3iからアクセスされるデータベース、カメラ、ロボット、センサなどが含まれていてもよい。例えば、サービス3iは、データベースにアクセスしてデータの読み書きをしたり、センサにアクセスしてセンサデータを取得したりする。
【0057】
(ログ管理サーバ201のハードウェア構成例)
つぎに、ログ管理サーバ201のハードウェア構成例について説明する。
【0058】
図3は、ログ管理サーバ201のハードウェア構成例を示すブロック図である。
図3において、ログ管理サーバ201は、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
【0059】
ここで、CPU301は、ログ管理サーバ201の全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
【0060】
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304は、例えば、磁気ディスク、光ディスクなどである。
図2に示したデータベース220は、例えば、メモリ302、ディスク304などの記憶装置により実現される。
【0061】
通信I/F305は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータ(例えば、
図2に示した処理装置M1~Mm)に接続される。そして、通信I/F305は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305は、例えば、モデムやLANアダプタなどである。
【0062】
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307は、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどである。
【0063】
なお、ログ管理サーバ201は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有してもよい。また、ログ管理サーバ201は、上述した構成部のうち、例えば、可搬型記録媒体I/F306、可搬型記録媒体307を有さなくてもよい。また、
図2に示した処理装置M1~Mmについても、ログ管理サーバ201と同様のハードウェア構成により実現することができる。
【0064】
(ログ管理サーバ201の機能的構成例)
つぎに、ログ管理サーバ201の機能的構成例について説明する。
【0065】
図4は、ログ管理サーバ201の機能的構成例を示すブロック図である。
図4において、ログ管理サーバ201は、収集部401と、ログ構造化部402と、判定部403と、調整部404と、を含む。収集部401~調整部404は制御部400となる機能であり、具体的には、例えば、
図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。より詳細に説明すると、例えば、各機能部(収集部401~調整部404)は、
図2に示したコントロールプレーンCにより実現される。
【0066】
収集部401は、各サービス#iからテレメトリーデータを収集する。ここで、テレメトリーデータは、サービス#iにおいて実行された処理に関する情報であり、サービス#iの動きを観測するためのものである。テレメトリーデータは、例えば、システムやアプリケーションについての正常性の確認や性能の分析、改善などに用いられる。
【0067】
テレメトリーデータには、複数のデータ種のテレメトリーデータがある。データ種は、例えば、サービス#iの動きをどのような観点から観測するかによって定められる。データ種としては、例えば、イベント、メトリクス、ログおよびトレースがある。
【0068】
イベントは、ある時刻に発生した個々のリクエストやアクションの記録である。イベントは、例えば、時刻情報とともに、サービス#iが処理を実行した、サービス#iが指示を受けたなどの情報を示す。イベントは、問題が発生した際のトリガーとなった動作や事項は何かといった分析などに利用される。
【0069】
メトリクスは、処理装置Miにおけるサービス#iの実行に関して、計測、集計等された数値的な情報である。メトリクスは、例えば、CPU、メモリ、ディスクなどの使用率であったり、単位秒間あたりのリクエスト数であったりと、一定の時間内の合計や平均などを計測したものである。メトリクスは、単位時間あたりのサービス#iの振る舞いや、周期的なサービス#iの振る舞いの分析などに利用される。
【0070】
ログは、アプリケーションやプラットフォーム内で個々の動作が実行されたときにシステムが生成する情報である。ログは、特定の時間に起こった動作の詳細な記録に相当する。エラーや警告などのテキストメッセージがログとして出力される場合がある。ログは、障害発生時などに、プログラムのどの行でエラーが発生したか、その時のエラーの種類は何かといった詳細な状況の分析などに利用される。
【0071】
トレースは、複数のサービスに跨がってリクエストが処理される際に、どの順番でサービスが呼び出されたのかの遷移を表す情報である。トレースは、サービスが呼び出された順番や、各サービスの処理がどのような状況であったかなどを理解するための仕組みである。トレースは、例えば、複雑に連携するサービスの中で、問題となっている個所を特定するのに利用される。
【0072】
具体的には、例えば、収集部401は、各処理装置Miのデータプレーン#iから送信されるテレメトリーデータを受信することにより、各サービス#iに関するテレメトリーデータを収集する。収集されたテレメトリーデータは、例えば、メモリ302上に設けられるバッファプールに一時的に格納される。
【0073】
ログ構造化部402は、収集されたテレメトリーデータ(ログ情報)の構造化を行う。構造化とは、同一のリクエストIDのテレメトリーデータをまとめて、構造化ログを作成することである。まず、ログ構造化部402は、収集されたテレメトリーデータのうち、同一のリクエストIDを含むテレメトリーデータ群を取得する。そして、ログ構造化部402は、取得したテレメトリーデータ群について、構造化ログを作成する。
【0074】
具体的には、例えば、ログ構造化部402は、取得したテレメトリーデータ群それぞれのデータ種を参照して、テレメトリーデータ群から、あらかじめ決められた一部の情報を抽出することにより、抽出した一部の情報を含む、フォーマット化されたログ情報を作成する。
【0075】
あらかじめ決められた一部の情報は、例えば、イベントのテレメトリーデータから抽出される、リクエストに応じた動作の起点となる処理の情報、および、リクエストIDを含む。動作の起点となる処理の情報は、例えば、タイムスタンプ、メッセージ、メソッドなどである。リクエストIDは、テレメトリーデータ群それぞれに共通して含まれるリクエストIDである。
【0076】
また、一部の情報は、例えば、ログおよびトレースのテレメトリーデータから抽出される、リクエストに応じて動作したマイクロサービスの遷移を表す情報(どの順番でどのサービスが呼び出されたのか)を含むものであってもよい。また、一部の情報は、例えば、メトリクスのテレメトリーデータから抽出される、リクエストに応じた動作が終了(完了)したときのメトリクスデータ(数値情報)を含むものであってもよい。
【0077】
また、一部の情報は、例えば、メトリクスのテレメトリーデータから抽出される、リクエストに応じた動作が終了(完了)したときのステータスコードを含むものであってもよい。ステータスコードは、例えば、HTTP(Hypertext Transfer Protocol)のステータスコードである。
【0078】
また、一部の情報は、例えば、ログのテレメトリーデータから抽出される、リクエストに応じて実行された処理(リクエストIDにより識別される一連の処理のいずれかの処理)の中でインプット(入力)された情報を含むものであってもよい。また、一部の情報は、例えば、ログのテレメトリーデータから抽出される、最後に遷移したマイクロサービスの動作の情報を含むものであってもよい。
【0079】
また、ログ構造化部402は、取得したテレメトリーデータ群から、エラー情報および警告情報を検索する。ここで、エラー情報は、エラーの発生を示す情報である。警告情報は、エラーの要因となり得る事象の発生を示す情報である。エラーの要因となり得る事象は、例えば、「処理時間が長い」、「応答が遅い」などである。
【0080】
エラー情報や警告情報は、例えば、データ種がメトリクスやログのテレメトリーデータに含まれる。テレメトリーデータにおけるエラー情報は、例えば、「ERROR」などの文字列によって特定される。テレメトリーデータにおける警告情報は、例えば、「WARN」などの文字列によって特定される。
【0081】
エラー情報は、例えば、エラーが発生したメソッド、関数、ファイル名などを含む。また、エラー情報は、例えば、エラーが発生したときのタイムスタンプ、メッセージ、スタックトレース情報などを含むものであってもよい。また、エラー情報は、例えば、エラーが発生したマイクロサービスを示す情報を含むものであってもよい。
【0082】
警告情報は、例えば、エラーの要因となり得る事象が発生したメソッド、関数、ファイル名などを含む。また、警告情報は、例えば、エラーの要因となり得る事象が発生したときのタイムスタンプ、メッセージ(被疑メッセージ)などを含むものであってもよい。また、警告情報は、例えば、エラーの要因となり得る事象が発生したマイクロサービスを示す情報を含むものであってもよい。
【0083】
また、ログ構造化部402は、抽出した一部の情報を含む、フォーマット化されたログ情報を作成する。フォーマット化されたログ情報は、リクエストIDが同一のテレメトリーデータ間で一意の情報である。以下の説明では、フォーマット化されたログ情報を「フォーマット化ログ」と表記する場合がある。
【0084】
また、ログ構造化部402は、テレメトリーデータ群からエラー情報が検索された場合、検索されたエラー情報をフォーマット化ログに追加してもよい。また、ログ構造化部402は、テレメトリーデータ群から警告情報が検索された場合、検索された警告情報をフォーマット化ログに追加してもよい。
【0085】
そして、ログ構造化部402は、テレメトリーデータ群とフォーマット化ログとをセットにして、構造化ログとする。
【0086】
判定部403は、構造化ログに含まれるフォーマット化ログを参照して、あらかじめ定義された査定方法に従って、構造化ログのレベルを判定する。そして、判定部403は、判定したレベルを構造化ログに設定する。ここで、構造化ログのレベルは、構造化ログに含まれるテレメトリーデータ群のデータベース220への格納量を調整する際に用いられる。
【0087】
具体的には、例えば、判定部403は、フォーマット化ログにエラー情報および警告情報が含まれるか否かを判断する。ここで、フォーマット化ログにエラー情報および警告情報のいずれも含まれない場合、判定部403は、構造化ログのレベルを「Lv1」と判定する。
【0088】
また、フォーマット化ログに、エラー情報が含まれず、かつ、警告情報が含まれる場合、判定部403は、構造化ログのレベルを「Lv2」と判定する。また、フォーマット化ログに、エラー情報が含まれる場合、判定部403は、構造化ログのレベルを「Lv3」と判定する。
【0089】
より詳細に説明すると、例えば、判定部403は、トレース間に影響がある事象が発生しているか否かによって、構造化ログのレベルをLv2,Lv3に振り分けてもよい。トレース間に影響がある事象とは、1つのマイクロサービスだけに影響がある事象ではなく、連結された他のマイクロサービスにも影響を与えることにより、リクエストに対する一連の処理が未完了となってしまうような事象である。
【0090】
トレース間に影響がある事象の発生は、例えば、エラー情報や警告情報によって判断される。どのようなエラー情報や警告情報がある場合に、トレース間に影響がある事象が発生したと判断するかは、任意に設定可能である。
【0091】
例えば、判定部403は、フォーマット化ログにエラー情報が1つでも含まれる場合に、トレース間に影響がある事象が発生していると判断してもよい。また、判定部403は、フォーマット化ログに特定のエラー情報が含まれる場合に、トレース間に影響がある事象が発生していると判断してもよい。また、判定部403は、フォーマット化ログに特定の警告情報が含まれる場合に、トレース間に影響がある事象が発生していると判断してもよい。
【0092】
また、判定部403は、フォーマット化ログにエラー情報や警告情報が含まれる場合であっても、リクエストに対する動作(リクエストに対する一連の処理にかかる動作)が正常に完了したときは、トレース間に影響がある事象が発生していないと判断してもよい。リクエストに対する動作が正常に完了したか否かは、例えば、HTTPのステータスコードによって判断することができる。
【0093】
例えば、判定部403は、フォーマット化ログを参照して、トレース間に影響がある事象が発生していないと判断した場合、構造化ログのレベルを「Lv2」と判定する。一方、判定部403は、トレース間に影響がある事象が発生していると判断した場合には、構造化ログのレベルを「Lv3」と判定する。そして、判定部403は、判定したレベルを、構造化ログに含まれるフォーマット化ログに追加する。
【0094】
調整部404は、テレメトリーデータ群の格納先となるデータベース220への格納量を調整する。具体的には、例えば、調整部404は、構造化ログのレベルに応じて、テレメトリーデータ群のうちの一部または全部の情報をデータベース220に格納する。
【0095】
より詳細に説明すると、例えば、調整部404は、構造化ログのレベルに応じて、構造化ログに含まれるテレメトリーデータ群を加工する。構造化ログのレベル(例えば、Lv1,Lv2,Lv3)は、例えば、構造化ログに含まれるフォーマット化ログから特定される。
【0096】
例えば、調整部404は、フォーマット化ログ内のレベルが「Lv1」の場合、構造化ログからテレメトリーデータ群を削除する。そして、調整部404は、テレメトリーデータ群が削除された構造化ログを、データベース220内のデータベースLv1に格納する。「Lv1」は、例えば、テレメトリーデータ群からエラー情報および警告情報が検索されなかった場合に対応する。この場合、テレメトリーデータ群について、フォーマット化ログのみがデータベースLv1に格納される。
【0097】
また、調整部404は、フォーマット化ログ内のレベルが「Lv2」の場合、構造化ログに含まれるテレメトリーデータ群から、特定のデータ種のテレメトリーデータを抽出してもよい。特定のデータ種は、例えば、フォーマット化ログ内の警告情報を含むテレメトリーデータと同一のデータ種である。
【0098】
警告情報を含むテレメトリーデータのデータ種が「メトリクス」であったとする。この場合、調整部404は、テレメトリーデータ群から、データ種が「メトリクス」のテレメトリーデータを特定する。また、特定のデータ種は、例えば、フォーマット化ログ内のエラー情報を含むテレメトリーデータと同一のデータ種であってもよい。
【0099】
つぎに、調整部404は、構造化ログに含まれるテレメトリーデータ群のうち、特定したテレメトリーデータ以外のテレメトリーデータを削除する。そして、調整部404は、特定したテレメトリーデータ以外のテレメトリーデータが削除された構造化ログを、データベース220内のデータベースLv2に格納する。
【0100】
「Lv2」は、例えば、テレメトリーデータ群から、エラー情報が検索されず、かつ、警告情報が検索された場合に対応する。この場合、テレメトリーデータ群について、フォーマット化ログとともに、特定されたテレメトリーデータがデータベースLv2に格納される。フォーマット化ログには、例えば、警告情報が含まれる。
【0101】
また、調整部404は、フォーマット化ログ内のレベルが「Lv3」の場合、データベース220内のデータベースLv3に構造化ログを格納する。「Lv3」は、例えば、テレメトリーデータ群からエラー情報が検索された場合に対応する。この場合、テレメトリーデータ群について、フォーマット化ログとともに、テレメトリーデータ群の全てがデータベースLv3に格納される。
【0102】
フォーマット化ログには、例えば、エラー情報が含まれる。ただし、フォーマット化ログ内のレベルが「Lv3」の場合、調整部404は、フォーマット化ログにエラー情報を含めなくてもよい。フォーマット化ログ内のレベルが「Lv3」の場合、テレメトリーデータ群の全てが格納されるため、テレメトリーデータ群からエラー情報を確認することができる。
【0103】
なお、メモリ302上のバッファプールに一時的に格納されテレメトリーデータは、例えば、そのテレメトリーデータについての構造化ログがデータベース220に格納されると削除される。また、上述した説明では、フォーマット化ログに、エラー情報が含まれず、かつ、警告情報が含まれる場合、構造化ログのレベルを「Lv2」と判定し、フォーマット化ログに、エラー情報が含まれる場合、構造化ログのレベルを「Lv3」と判定する場合を例に挙げて説明したが、これに限らない。例えば、判定部403は、フォーマット化ログに、エラー情報および警告情報の少なくともいずれかが含まれる場合、構造化ログのレベルを「Lv3」と判定してもよい。
【0104】
(情報処理システム200の動作例)
つぎに、情報処理システム200の動作例について説明する。
【0105】
図5は、情報処理システム200の動作例を示す説明図である。
図5において、ログ管理サーバ201上で動作するコントロールプレーンCと、処理装置M1~M3上で動作するサービス#1~#3およびデータプレーン#1~#3とが示されている。サービス#1~#3は、呼び出し関係にあるマイクロサービスである。
【0106】
まず、コントロールプレーンCは、テレメトリーデータ収集処理S51を実行する。テレメトリーデータ収集処理S51は、各サービス#1~#3に関するテレメトリーデータを収集する処理である。テレメトリーデータは、例えば、各データプレーン#1~#3により採取された一定時間分のテレメトリーデータである。
【0107】
ここでは、データ種が「メトリクス」のテレメトリーデータを「メトリクスデータ」と表記し、データ種が「メトリクス以外のイベント、ログ、トレース」のテレメトリーデータを単に「ログ」と表記する場合がある。
【0108】
例えば、コントロールプレーンCは、データプレーン#1からテレメトリーデータ501を収集する。テレメトリーデータ501は、サービス#1に関するメトリクスデータ511とログ512とを含む。また、コントロールプレーンCは、データプレーン#2からテレメトリーデータ502を収集する。テレメトリーデータ502は、メトリクスデータ521とログ522とを含む。
【0109】
また、コントロールプレーンCは、データプレーン#3からテレメトリーデータ503を収集する。テレメトリーデータ503は、メトリクスデータ531とログ532とを含む。ここで、テレメトリーデータ群501~503は、同一のリクエストIDを含むテレメトリーデータ群とする。
【0110】
つぎに、コントロールプレーンCは、ログ構造化/判定処理S52を実行する。ログ構造化/判定処理S52は、テレメトリーデータ群501~503から構造化ログを作成し、あらかじめ定義された査定方法に従って、作成した構造化ログのレベルを判定する処理である。
【0111】
そして、コントロールプレーンCは、加工/格納処理S53を実行する。加工/格納処理S53は、構造化ログのレベルに応じて、構造化ログに含まれるテレメトリーデータ群を加工することにより、データベース220への格納量を調整する処理である。
【0112】
例えば、構造化ログのレベルが「Lv1」の場合、コントロールプレーンCは、構造化ログからテレメトリーデータ群を削除して、データベース220内のデータベースLv1に格納する。この場合、データベースLv1には、構造化ログ内のフォーマット化ログ(例えば、フォーマット化ログ541のみが格納される。
【0113】
また、構造化ログのレベルが「Lv2」の場合、コントロールプレーンCは、構造化ログ内のテレメトリーデータ群のうちの特定のデータ種のテレメトリーデータ以外を削除して、データベース220内のデータベースLv2に格納する。ここでは、特定のデータ種を「メトリクス」とする。この場合、データベースLv2には、構造化ログ内のフォーマット化ログおよびメトリクスデータ(例えば、フォーマット化ログ551およびメトリクスデータ552)が格納される。
【0114】
また、構造化ログのレベルが「Lv3」の場合、コントロールプレーンCは、データベース220内のデータベースLv3に構造化ログをそのまま格納する。この場合、データベースLv3には、構造化ログ内のフォーマット化ログおよびテレメトリーデータ群(例えば、フォーマット化ログ561およびテレメトリーデータ群562)が格納される。
【0115】
(構造化ログのレベル判定例およびDB格納例)
つぎに、構造化ログのレベル判定例およびDB格納例について説明する。ただし、以下の説明において、サービスの構成例およびデータサンプルは、実施例の動作の説明のために簡略化したものである。
【0116】
・ケース1:構造化ログのレベル判定例およびDB格納例
まず、ケース1の構造化ログのレベル判定例およびDB格納例について説明する。
【0117】
図6は、アプリケーションの第1の動作例を示す説明図である。
図6において、あるアプリケーション(サービス)を実現するためのマイクロサービスとして、ユーザからのリクエストに対して処理するサービス#1と、サービス#1からリクエストされた動作を実行するサービス2、3とが示されている。サービス#2,#3には、情報が格納されているデータベースDB_2,DB_3が接続されている。
【0118】
アプリケーションの動作は、ユーザからのリクエスト(在庫確認)に対して、リクエストされたキーワードに対応する在庫データベースの在庫情報を確認してユーザに情報を返す処理を例とする。ケース1では、ユーザから“P1 SET”と“P2 SET”の在庫確認を受け付けた場合を想定する。
【0119】
ケース1では、サービス#1により、“P1 SET”および“P2 SET”の在庫情報の確認するために、サービス#2を呼び出している。各サービス#1~#3についてログ出力される情報(テレメトリーデータ)は、テレメトリーデータ600として一箇所(コントロールプレーンC)に収集される。
【0120】
つぎに、
図7A~
図7Fを用いて、テレメトリーデータ600について説明する。
【0121】
図7A~
図7Fは、テレメトリーデータの第1のサンプル例を示す説明図である。
図7A~
図7Fにおいて、テレメトリーデータ600は、テレメトリーデータの集合である。各テレメトリーデータは、例えば、各サービス#iから散発的に発行され、テレメトリーデータ600として一箇所(
図2に示したコントロールプレーンC)に集約される。
【0122】
各テレメトリーデータは、Timestamp、type、level、Interface Service、Message、method、Request IDの各項目の情報を含むテキストデータである。Timestampは、各サービス#iにおいて、各テレメトリーデータが記録(発行)されたり、各テレメトリーデータに対応する処理が実行された日時を示す。
【0123】
Typeは、各テレメトリーデータのデータ種(EVENT,METRIC,LOG,TRACE)を示す。EVENTは、イベントに対応する。METRICは、メトリクスに対応する。LOGは、ログに対応する。TRACEは、トレースに対応する。levelは、各テレメトリーデータのレベル(ログレベル)を示す。各テレメトリーデータのレベルとしては、例えば、INFO,WARN,ERRORがある。
【0124】
INFOは、情報提供を示す。WARNは、潜在的な問題などの警告を示す。ERRORは、重大な障害などのエラーを示す。Interface Serviceは、各テレメトリーデータの発行元のサービスを示す。Messageは、サービス#iで発行されたメッセージを示す。methodは、サービス#iで実行されたメソッドを示す。Request IDは、各テレメトリーデータに含まれるリクエストIDである。
【0125】
テレメトリーデータ600は、”P1 SET”および”P2 SET”の在庫確認のリクエストに関するテレメトリーデータ(ログ情報)を、リクエストIDごとに時系列に並べたものである。リクエストID「19690317-s5888y-123456」のテレメトリーデータ群710は、”P1 SET”の在庫確認についてのテレメトリーデータである。また、リクエストID「19690317-s5888y-123466」のテレメトリーデータ群720は、”P2 SET”の在庫確認についてのテレメトリーデータである。
【0126】
コントロールプレーンCは、テレメトリーデータ600から同一のリクエストIDを含むテレメトリーデータ群を取得する。つぎに、コントロールプレーンCは、取得したテレメトリーデータ群から、フォーマット化ログを作成する。
【0127】
ここで、リクエストID「19690317-s5888y-123456」を含むテレメトリーデータ群710に着目して、フォーマット化ログの作成例について説明する。
【0128】
図8Aおよび
図8Bは、フォーマット化ログの第1の作成例を示す説明図である。
図8Aにおいて、コントロールプレーンCは、テレメトリーデータ群710から、”P1 SET”の在庫確認というユーザリクエストに対する一意のログフォーマットの形にするためのコンテキスト800を作成する。コンテキスト800は、フォーマット化ログの内容に対応する。
【0129】
まず、コントロールプレーンCは、テレメトリーデータ群710のType「EVENT」のテレメトリーデータから、リクエストに応じた動作の起点となる処理の情報を抽出する。ここでは、(1A)type「EVENT」のmethodより、“db query”の「get contents method(在庫確認)」のタイムスタンプとリクエストID「19690317-s5888y-123456」が抽出される。
【0130】
つぎに、コントロールプレーンCは、テレメトリーデータ群710のType「LOG,TRACE」のテレメトリーデータから、リクエストに応じて動作したサービス#iスの遷移を表す情報を抽出する。ここでは、(1B),(1C),(1D)動作したマイクロサービスの遷移を表す情報「SERVICE1,SERVICE2,SERVICE1」が抽出される。SERVICE1は、サービス#1に対応する。SERVICE2は、サービス#2に対応する。
【0131】
つぎに、コントロールプレーンCは、テレメトリーデータ群710のType「LOG」のテレメトリーデータから、インプットされた情報を抽出する。ここでは、(1E)「P1 SET」が抽出される。つぎに、コントロールプレーンCは、テレメトリーデータ群710のType「LOG」のテレメトリーデータから、最後に遷移したサービス#iの動作の情報を抽出する。ここでは、(1F)「01805」の動作の情報が抽出される。
【0132】
つぎに、コントロールプレーンCは、テレメトリーデータ群710のType「METRIC」のテレメトリーデータから、リクエストに応じた動作が終了(完了)したときの情報を抽出する。ここでは、(1G)動作の完了フラグのタイムスタンプ、メトリックデータ(total duration)およびステータスコードの情報が抽出される。
【0133】
また、コントロールプレーンCは、テレメトリーデータ群710のType「LOG」のテレメトリーデータから、その他の情報として、リクエストユーザのIDを抽出する。ここでは、(1H)「request user_id 752.254.211.38」が抽出される。
【0134】
また、コントロールプレーンCは、テレメトリーデータ群710から、エラー情報および警告情報を検索する。エラー情報は、例えば、level「ERROR」から特定される。警告情報は、例えば、level「WARN」から特定される。ここでは、テレメトリーデータ群710からエラー情報および警告情報は検索されない。
【0135】
図8Bにおいて、コントロールプレーンCは、コンテキスト800から、フォーマット化ログ801を作成する。コントロールプレーンCは、テレメトリーデータ群710とフォーマット化ログ801とをセットにして、構造化ログ(ここでは、「構造化ログLG1」という)とする。
【0136】
つぎに、コントロールプレーンCは、フォーマット化ログ801を参照して、あらかじめ定義された査定方法に従って、構造化ログLG1のレベルを判定する。ここでは、フォーマット化ログ801にエラー情報および警告情報のいずれも含まれない場合に、レベル「Lv1」とする。また、フォーマット化ログ801に警告情報のみ含まれる場合、トレース間に影響がある事象は発生していないとして、レベル「Lv2」とする。また、フォーマット化ログ801にエラー情報が含まれる場合、トレース間に影響がある事象が発生しているとして、レベル「Lv3」とする。
【0137】
フォーマット化ログ801には、エラー情報および警告情報のいずれも含まれない。このため、コントロールプレーンCは、構造化ログLG1のレベルを「Lv1」と判定する。そして、コントロールプレーンCは、判定したレベル「Lv1」をフォーマット化ログ801に設定する(
図8B中、符号802部分)。
【0138】
つぎに、
図9を用いて、構造化ログLG1の格納例について説明する。
【0139】
図9は、構造化ログの第1の格納例を示す説明図である。
図9において、コントロールプレーンCは、構造化ログLG1内のテレメトリーデータ群710のデータベース220への格納量を調整する。具体的には、例えば、コントロールプレーンCは、フォーマット化ログ801内のレベルに応じて、構造化ログLG1に含まれるテレメトリーデータ群710を加工する。
【0140】
ここでは、フォーマット化ログ801内のレベルが「Lv1」のため、コントロールプレーンCは、構造化ログLG1からテレメトリーデータ群710を削除する。そして、コントロールプレーンCは、テレメトリーデータ群710が削除された構造化ログLG1を、データベース220内のデータベースLv1に格納する。
【0141】
つぎに、リクエストID「19690317-s5888y-123466」を含むテレメトリーデータ群720に着目して、フォーマット化ログの作成例について説明する。
【0142】
図10Aおよび
図10Bは、フォーマット化ログの第2の作成例を示す説明図である。
図10Aにおいて、コントロールプレーンCは、テレメトリーデータ群720から、”P2 SET”の在庫確認というユーザリクエストに対する一意のログフォーマットの形にするためのコンテキスト1000を作成する。コンテキスト1000は、フォーマット化ログの内容に対応する。
【0143】
まず、コントロールプレーンCは、テレメトリーデータ群720のType「EVENT」のテレメトリーデータから、リクエストに応じた動作の起点となる処理の情報を抽出する。ここでは、(2A)type「EVENT」のmethodより、“db query”の「get contents method(在庫確認)」のタイムスタンプとリクエストID「19690317-s5888y-123466」が抽出される。
【0144】
つぎに、コントロールプレーンCは、テレメトリーデータ群720のType「LOG,TRACE」のテレメトリーデータから、リクエストに応じて動作したサービス#iスの遷移を表す情報を抽出する。ここでは、(2B),(2C),(2D)テレメトリーデータ群720のtype「LOG」とtype「TRACE」のテレメトリーデータから、動作したサービスの遷移を表す情報「SERVICE1,SERVICE2,SERVICE1」が抽出される。
【0145】
つぎに、コントロールプレーンCは、テレメトリーデータ群720のType「LOG」のテレメトリーデータから、インプットされた情報を抽出する。ここでは、(2E)「P2 SET」が抽出される。つぎに、コントロールプレーンCは、テレメトリーデータ群720のType「LOG」のテレメトリーデータから、最後に遷移したサービス#iの動作の情報を抽出する。ここでは、(2F)「01809」の動作の情報が抽出される。
【0146】
つぎに、コントロールプレーンCは、テレメトリーデータ群720のType「METRIC」のテレメトリーデータから、リクエストに応じた動作が終了したときの情報を抽出する。ここでは、(2G)動作の完了フラグのタイムスタンプ、メトリックデータ(total duration)およびステータスコードの情報が抽出される。
【0147】
また、コントロールプレーンCは、テレメトリーデータ群720のType「LOG」のテレメトリーデータから、その他の情報として、リクエストユーザのIDを抽出する。ここでは、(2H)「request user_id 752.254.211.38」が抽出される。
【0148】
また、コントロールプレーンCは、テレメトリーデータ群720から、エラー情報および警告情報を検索する。ここでは、テレメトリーデータ群720からエラー情報および警告情報は検索されない。
【0149】
図10Bにおいて、コントロールプレーンCは、コンテキスト1000から、フォーマット化ログ1001を作成する。コントロールプレーンCは、テレメトリーデータ群720とフォーマット化ログ1001とをセットにして、構造化ログ(ここでは、「構造化ログLG2」という)とする。
【0150】
つぎに、コントロールプレーンCは、フォーマット化ログ1001を参照して、あらかじめ定義された査定方法に従って、構造化ログのレベルを判定する。ここでは、フォーマット化ログ1001には、エラー情報および警告情報のいずれも含まれない。このため、コントロールプレーンCは、構造化ログのレベルを「Lv1」と判定する。そして、コントロールプレーンCは、判定したレベル「Lv1」をフォーマット化ログ1001に設定する(
図10B中、符号1002部分)。
【0151】
つぎに、
図11を用いて、構造化ログLG2の格納例について説明する。
【0152】
図11は、構造化ログの第2の格納例を示す説明図である。
図11において、コントロールプレーンCは、構造化ログLG2内のテレメトリーデータ群720のデータベース220への格納量を調整する。具体的には、例えば、コントロールプレーンCは、フォーマット化ログ1001内のレベルに応じて、構造化ログLG2に含まれるテレメトリーデータ群720を加工する。
【0153】
ここでは、フォーマット化ログ1001内のレベルが「Lv1」のため、コントロールプレーンCは、構造化ログLG2からテレメトリーデータ群720を削除する。そして、コントロールプレーンCは、テレメトリーデータ群720が削除された構造化ログLG2を、データベース220内のデータベースLv1に格納する。
【0154】
このように、ケース1では、ユーザリクエストによるアプリケーションの稼働が正常に開始され、一連の処理が完了したケースであり、ケース1,2,3(ケース2,3は後述する)の中で、データベース220に送出されるデータ量は最小となる。
【0155】
・ケース2:構造化ログのレベル判定例およびDB格納例
つぎに、ケース2の構造化ログのレベル判定例およびDB格納例について説明する。
【0156】
図12は、アプリケーションの第2の動作例を示す説明図である。
図12において、ケース1と同様に、ユーザからのリクエストに対して処理するサービス#1と、サービス#1からリクエストされた動作を実行するサービス2、3とが示されている。サービス#2,#3には、情報が格納されているデータベースDB_2,DB_3が接続されている。
【0157】
ケース2では、ユーザから“P3 SET”の在庫確認を受け付けた場合を想定する。ケース2では、サービス#1により、“P3 SET”の在庫情報の確認するために、サービス#2を呼び出している。各サービス#1~#3についてログ出力される情報(テレメトリーデータ)は、テレメトリーデータ1200として一箇所(コントロールプレーンC)に収集される。
【0158】
つぎに、
図13A~
図13Cを用いて、テレメトリーデータ1200について説明する。
【0159】
図13A~
図13Cは、テレメトリーデータの第2のサンプル例を示す説明図である。
図13A~
図13Cにおいて、テレメトリーデータ群1300は、
図12に示したテレメトリーデータ1200に含まれるテレメトリーデータ群の一例である。
【0160】
テレメトリーデータ群1300は、”P3 SET”の在庫確認のリクエストに関する同一のリクエストID(19690317-s5888y-123476)のテレメトリーデータ(ログ情報)を、時系列に並べたものである。コントロールプレーンCは、テレメトリーデータ群1300からフォーマット化ログを作成する。
【0161】
図14Aおよび
図14Bは、フォーマット化ログの第2の作成例を示す説明図である。
図14Aにおいて、コントロールプレーンCは、テレメトリーデータ群1300から、”P3 SET”の在庫確認というユーザリクエストに対する一意のログフォーマットの形にするためのコンテキスト1400を作成する。コンテキスト1400は、フォーマット化ログの内容に対応する。
【0162】
まず、コントロールプレーンCは、テレメトリーデータ群1300のType「EVENT」のテレメトリーデータから、リクエストに応じた動作の起点となる処理の情報を抽出する。ここでは、(3A)type「EVENT」のmethodより、“db query”の「get contents method(在庫確認)」のタイムスタンプとリクエストID「19690317-s5888y-123476」が抽出される。
【0163】
つぎに、コントロールプレーンCは、テレメトリーデータ群1300のType「LOG,TRACE」のテレメトリーデータから、リクエストに応じて動作したサービス#iスの遷移を表す情報を抽出する。ここでは、(3B),(3C),(3D)テレメトリーデータ群1300のtype「LOG」とtype「TRACE」のテレメトリーデータから、動作したサービスの遷移を表す情報「SERVICE1,SERVICE2,SERVICE1」が抽出される。
【0164】
つぎに、コントロールプレーンCは、テレメトリーデータ群1300のType「LOG」のテレメトリーデータから、インプットされた情報を抽出する。ここでは、(3E)「P3 SET」が抽出される。つぎに、コントロールプレーンCは、テレメトリーデータ群1300のType「LOG」のテレメトリーデータから、最後に遷移したサービス#iの動作の情報を抽出する。ここでは、(3F)「01813」の動作の情報が抽出される。
【0165】
つぎに、コントロールプレーンCは、テレメトリーデータ群1300のType「METRIC」のテレメトリーデータから、リクエストに応じた動作が終了したときの情報を抽出する。ここでは、(3G)動作の完了フラグのタイムスタンプおよびメトリックデータ(total duration)が抽出される。
【0166】
また、コントロールプレーンCは、テレメトリーデータ群1300から、エラー情報および警告情報を検索する。ここでは、(3G)テレメトリーデータ群1300から警告情報(level「WARN」)が検索され、警告情報を含むテレメトリーデータのステータスコード(status_code:delay)が抽出される。
【0167】
また、コントロールプレーンCは、テレメトリーデータ群1300のType「LOG」のテレメトリーデータから、その他の情報として、リクエストユーザのIDを抽出する。ここでは、(3H)「request user_id 752.254.211.38」が抽出される。
【0168】
図14Bにおいて、コントロールプレーンCは、コンテキスト1400から、フォーマット化ログ1401を作成する。コントロールプレーンCは、テレメトリーデータ群1300とフォーマット化ログ1401とをセットにして、構造化ログ(ここでは、「構造化ログLG3」という)とする。
【0169】
つぎに、コントロールプレーンCは、フォーマット化ログ1401を参照して、あらかじめ定義された査定方法に従って、構造化ログLG3のレベルを判定する。ここでは、フォーマット化ログ1401に警告情報が含まれる。また、警告情報があるものの、”P3 SET”の在庫確認のユーザリクエストに対する処理は完了しており、連結されたサービスに影響ある事象ではないといえる。ユーザリクエストに対する処理の完了は、例えば、ステータスコード「ok」から特定される。
【0170】
このため、コントロールプレーンCは、構造化ログLG3のレベルを「Lv2」と判定する。そして、コントロールプレーンCは、判定したレベル「Lv2」をフォーマット化ログ1401に設定する(
図14B中、符号1402部分)。
【0171】
つぎに、
図15を用いて、構造化ログLG3の格納例について説明する。
【0172】
図15は、構造化ログの第3の格納例を示す説明図である。
図15において、コントロールプレーンCは、構造化ログLG3内のテレメトリーデータ群1300のデータベース220への格納量を調整する。具体的には、例えば、コントロールプレーンCは、フォーマット化ログ1401内のレベルに応じて、構造化ログLG3に含まれるテレメトリーデータ群1300を加工する。
【0173】
ここでは、フォーマット化ログ1401内のレベルが「Lv2」のため、コントロールプレーンCは、構造化ログLG3内のテレメトリーデータ群1300のうち、メトリクスデータ以外を削除する。メトリクスデータは、警告情報を含むテレメトリーデータと同一データ種のテレメトリーデータであり、被疑箇所を確認するための情報となる。この結果、構造化ログLG3内のテレメトリーデータ群1300のうちメトリクスデータ1501~1504のみが残る。
【0174】
そして、コントロールプレーンCは、構造化ログLG3(メトリクスデータ1501~1504+フォーマット化ログ1401)を、データベース220内のデータベースLv2に格納する。
【0175】
ケース2では、ユーザリクエストによるアプリケーションの稼働が正常に開始され、一連の処理が終了したものの、何らかの要因で処理遅延が発生したケースである。ケース2では、データベース220に送出されるデータは、遅延箇所の分析に有用となるメトリクスデータ1501~1504とフォーマット化ログ1401とのセットとなる。ケース2では、後述するケース3に比べて、データベース220に送出されるデータ量は小さくなる。
【0176】
・ケース3:構造化ログのレベル判定例およびDB格納例
つぎに、ケース3の構造化ログのレベル判定例およびDB格納例について説明する。
【0177】
図16は、アプリケーションの第3の動作例を示す説明図である。
図16において、ケース1と同様に、ユーザからのリクエストに対して処理するサービス#1と、サービス#1からリクエストされた動作を実行するサービス#2、#3とが示されている。サービス#2,#3には、情報が格納されているデータベースDB_2,DB_3が接続されている。
【0178】
ケース3では、ユーザから“P8 SET”の在庫確認を受け付けた場合を想定する。ケース2では、サービス#1により、“P8 SET”の在庫情報の確認するために、サービス#3を呼び出している。各サービス#1~#3についてログ出力される情報(テレメトリーデータ)は、テレメトリーデータ1600として一箇所(コントロールプレーンC)に収集される。
【0179】
つぎに、
図17A~
図17Cを用いて、テレメトリーデータ1600について説明する。
【0180】
図17A~
図17Cは、テレメトリーデータの第2のサンプル例を示す説明図である。
図17A~
図17Cにおいて、テレメトリーデータ群1700は、
図16に示したテレメトリーデータ1600に含まれるテレメトリーデータ群の一例である。
【0181】
テレメトリーデータ群1700は、”P8 SET”の在庫確認のリクエストに関する同一のリクエストID(19690317-s5888y-123486)のテレメトリーデータ(ログ情報)を、時系列に並べたものである。コントロールプレーンCは、テレメトリーデータ群1700からフォーマット化ログを作成する。
【0182】
図18Aおよび
図18Bは、フォーマット化ログの第2の作成例を示す説明図である。
図18Aにおいて、コントロールプレーンCは、テレメトリーデータ群1700から、”P8 SET”の在庫確認というユーザリクエストに対する一意のログフォーマットの形にするためのコンテキスト1800を作成する。コンテキスト1800は、フォーマット化ログの内容に対応する。
【0183】
まず、コントロールプレーンCは、テレメトリーデータ群1700のType「EVENT」のテレメトリーデータから、リクエストに応じた動作の起点となる処理の情報を抽出する。ここでは、(4A)type「EVENT」のmethodより、“db query”の「get contents method(在庫確認)」のタイムスタンプとリクエストID「19690317-s5888y-123486」が抽出される。
【0184】
つぎに、コントロールプレーンCは、テレメトリーデータ群1700のType「LOG,TRACE」のテレメトリーデータから、リクエストに応じて動作したサービス#iスの遷移を表す情報を抽出する。ここでは、(4B),(4C),(4D)テレメトリーデータ群1700のtype「LOG」とtype「TRACE」のテレメトリーデータから、動作したサービスの遷移を表す情報「SERVICE1,SERVICE3,SERVICE1」が抽出される。
【0185】
つぎに、コントロールプレーンCは、テレメトリーデータ群1700のType「LOG」のテレメトリーデータから、インプットされた情報を抽出する。ここでは、(4E)「P3 SET」が抽出される。つぎに、コントロールプレーンCは、テレメトリーデータ群1700のType「LOG」のテレメトリーデータから、最後に遷移したサービス#iの動作の情報を抽出する。ここでは、(4F)「01823」の動作の情報が抽出される。
【0186】
つぎに、コントロールプレーンCは、テレメトリーデータ群1700のType「METRIC」のテレメトリーデータから、リクエストに応じた動作が終了したときの情報を抽出する。ここでは、(4H)動作の完了フラグのタイムスタンプおよびメトリックデータ(total duration)が抽出される。
【0187】
また、コントロールプレーンCは、テレメトリーデータ群1700のType「LOG」のテレメトリーデータから、その他の情報として、リクエストユーザのIDを抽出する。ここでは、(4I)「request user_id 752.254.211.38」が抽出される。
【0188】
また、コントロールプレーンCは、テレメトリーデータ群1700から、エラー情報および警告情報を検索する。ここでは、(4G)テレメトリーデータ群1700からエラー情報(level「ERROR」)が検索され、エラー情報を含む全テレメトリーデータの情報(ここでは、methodの内容)が抽出される。また、(4H)テレメトリーデータ群1700から警告情報(level「WARN」)が検索され、警告情報を含むテレメトリーデータのステータスコード(status_code:timeover)が抽出される。
【0189】
図18Bにおいて、コントロールプレーンCは、コンテキスト1800から、フォーマット化ログ1801を作成する。コントロールプレーンCは、テレメトリーデータ群1700とフォーマット化ログ1801とをセットにして、構造化ログ(ここでは、「構造化ログLG4」という)とする。
【0190】
つぎに、コントロールプレーンCは、フォーマット化ログ1801を参照して、あらかじめ定義された査定方法に従って、構造化ログLG4のレベルを判定する。ここでは、フォーマット化ログ1801にエラー情報が含まれる。また、”P8 SET”の在庫確認のユーザリクエストに対する処理は未完了であり、連結されたサービスに影響ある事象であるといえる。ユーザリクエストに対する処理の未完了は、例えば、ステータスコード「timeover」から特定される。
【0191】
このため、コントロールプレーンCは、構造化ログLG4のレベルを「Lv3」と判定する。そして、コントロールプレーンCは、判定したレベル「Lv3」をフォーマット化ログ1801に設定する(
図18B中、符号1802部分)。
【0192】
つぎに、
図19を用いて、構造化ログLG4の格納例について説明する。
【0193】
図19は、構造化ログの第4の格納例を示す説明図である。
図19において、コントロールプレーンCは、構造化ログLG4内のテレメトリーデータ群1700のデータベース220への格納量を調整する。具体的には、例えば、コントロールプレーンCは、フォーマット化ログ1801内のレベルに応じて、構造化ログLG4に含まれるテレメトリーデータ群1700を加工する。
【0194】
ここでは、フォーマット化ログ1801内のレベルが「Lv3」のため、コントロールプレーンCは、構造化ログLG3内のテレメトリーデータ群1700を全て残す。そして、コントロールプレーンCは、構造化ログLG4(テレメトリーデータ群1700+フォーマット化ログ1801)を、データベース220内のデータベースLv3に格納する。
【0195】
ケース3では、ユーザリクエストによるアプリケーションの稼働が障害により未完了として処理が終わったケースである。ケース3では、何らかの要因で処理未完了が発生したため、データベース220に送出されるデータは、障害個所の特定や分析に有用なテレメトリーデータ群1700の全てとフォーマット化ログ1801とのセットとなる。
【0196】
(ログ管理サーバ201のログ管理処理手順)
つぎに、
図20および
図21を用いて、ログ管理サーバ201のログ管理処理手順について説明する。
【0197】
図20および
図21は、ログ管理サーバ201のログ管理処理手順の一例を示すフローチャートである。
図20のフローチャートにおいて、まず、ログ管理サーバ201は、各サービス#iからテレメトリーデータを収集する(ステップS2001)。収集されたテレメトリーデータは、例えば、メモリ302上に設けられるバッファプールに一時的に格納される。
【0198】
つぎに、ログ管理サーバ201は、収集されたテレメトリーデータのうち、同一のリクエストIDを含むテレメトリーデータ群を取得する(ステップS2002)。そして、ログ管理サーバ201は、取得したテレメトリーデータ群に対するフォーマット化処理を実行する(ステップS2003)。
【0199】
フォーマット化処理は、テレメトリーデータ群について、フォーマット化されたログ情報(フォーマット化ログ)を作成する処理である。フォーマット化処理の具体的な処理手順については、
図22および
図23を用いて後述する。
【0200】
つぎに、ログ管理サーバ201は、フォーマット化ログとテレメトリーデータ群とをセットにした構造化ログを作成する(ステップS2004)。そして、ログ管理サーバ201は、構造化ログ内のフォーマット化ログを参照して、エラー情報および警告情報がないかを判断する(ステップS2005)。
【0201】
ここで、エラー情報および警告情報のいずれもない場合(ステップS2005:Yes)、ログ管理サーバ201は、構造化ログのレベルを「Lv1」と判定して(ステップS2006)、ステップS2010に移行する。
【0202】
一方、エラー情報および警告情報の少なくともいずれかがある場合(ステップS2005:No)、ログ管理サーバ201は、トレース間に影響がある事象が発生しているか否かを判断する(ステップS2007)。例えば、ログ管理サーバ201は、エラー情報がある場合、トレース間に影響がある事象が発生していると判断する。また、ログ管理サーバ201は、警告情報があるものの、エラー情報がない場合には、トレース間に影響がある事象が発生していないと判断する。
【0203】
ここで、トレース間に影響がある事象が発生していない場合(ステップS2007:No)、ログ管理サーバ201は、構造化ログのレベルを「Lv2」と判定して(ステップS2008)、ステップS2010に移行する。
【0204】
一方、トレース間に影響がある事象が発生している場合(ステップS2007:Yes)、ログ管理サーバ201は、構造化ログのレベルを「Lv3」と判定する(ステップS2009)。そして、ログ管理サーバ201は、判定したレベルを示すレベル情報を、構造化ログ内のフォーマット化ログに追加して(ステップS2010)、
図21に示すステップS2101に移行する。
【0205】
図21のフローチャートにおいて、まず、ログ管理サーバ201は、構造化ログ内のフォーマット化ログを参照して、構造化ログのレベルが「Lv1」か否かを判断する(ステップS2101)。
【0206】
ここで、「Lv1」の場合(ステップS2101:Yes)、ログ管理サーバ201は、構造化ログからテレメトリーデータ群を削除して、構造化ログLv1セットとする(ステップS2102)。そして、ログ管理サーバ201は、構造化ログLv1セットをデータベース220内のデータベースLv1に格納して(ステップS2103)、本フローチャートによる一連の処理を終了する。
【0207】
また、ステップS2101において、「Lv1」ではない場合(ステップS2101:No)、ログ管理サーバ201は、構造化ログ内のフォーマット化ログを参照して、構造化ログのレベルが「Lv2」か否かを判断する(ステップS2104)。
【0208】
ここで、「Lv2」の場合(ステップS2104:Yes)、ログ管理サーバ201は、構造化ログ内のテレメトリーデータ群のうちメトリクスデータ以外のテレメトリーデータを削除して、構造化ログLv2セットとする(ステップS2105)。そして、ログ管理サーバ201は、構造化ログLv2セットをデータベース220内のデータベースLv2に格納して(ステップS2106)、本フローチャートによる一連の処理を終了する。
【0209】
また、ステップS2104において、「Lv2」ではない場合(ステップS2104:No)、ログ管理サーバ201は、構造化ログ全体を構造化ログLv3セットとする(ステップS2107)。そして、ログ管理サーバ201は、構造化ログLv3セットをデータベース220内のデータベースLv3に格納して(ステップS2108)、本フローチャートによる一連の処理を終了する。
【0210】
これにより、ログ管理サーバ201は、各サービス#iから収集されるテレメトリーデータのデータベース220への格納量を調整することができる。なお、ステップS2003以降処理は、例えば、ステップS2002において取得された同一のリクエストIDを含むテレメトリーデータ群ごとに実行される。
【0211】
つぎに、
図22および
図23を用いて、ステップS2003のフォーマット化処理の具体的な処理手順について説明する。
【0212】
図22および
図23は、フォーマット化処理の具体的処理手順の一例を示すフローチャートである。
図22のフローチャートにおいて、まず、ログ管理サーバ201は、テレメトリーデータ群のうちのイベントデータから動作の起点情報を抽出する(ステップS2201)。
【0213】
イベントデータは、type「EVENT」のテレメトリーデータである。動作の起点情報は、例えば、リクエストID、動作の起点となるイベントのタイムスタンプ、メッセージ、メソッドなどを含む。そして、ログ管理サーバ201は、動作の起点情報をコンテキストに追加する(ステップS2202)。
【0214】
つぎに、ログ管理サーバ201は、テレメトリーデータ群のうちのログ/トレースデータから動作遷移情報を抽出する(ステップS2203)。ログ/トレースデータは、type「LOG」のテレメトリーデータと、type「TRACE」のテレメトリーデータとである。動作遷移情報は、起点となるイベントに応じて動作したマイクロサービスの遷移を表す情報である。
【0215】
そして、ログ管理サーバ201は、動作遷移情報をコンテキストに追加する(ステップS2204)。つぎに、ログ管理サーバ201は、テレメトリーデータ群からエラー情報を検索する(ステップS2205)。例えば、ログ管理サーバ201は、level「ERROR」のログデータを検索する。
【0216】
そして、ログ管理サーバ201は、エラー情報が検索されたか否かを判断する(ステップS2206)。ここで、エラー情報が検索されなかった場合(ステップS2206:No)、ログ管理サーバ201は、ステップS2208に移行する。
【0217】
一方、エラー情報が検索された場合(ステップS2206:Yes)、ログ管理サーバ201は、検索されたエラー情報をコンテキストに追加する(ステップS2207)。つぎに、ログ管理サーバ201は、テレメトリーデータ群から警告情報を検索する(ステップS2208)。例えば、ログ管理サーバ201は、level「WARN」のメトリクスデータを検索する。メトリクスデータは、type「METRIC」のテレメトリーデータとである。
【0218】
そして、ログ管理サーバ201は、警告情報が検索されたか否かを判断する(ステップS2209)。ここで、警告情報が検索されなかった場合(ステップS2209:No)、ログ管理サーバ201は、
図23に示すステップS2301に移行する。一方、警告情報が検索された場合(ステップS2209:Yes)、ログ管理サーバ201は、検索された警告情報をコンテキストに追加して(ステップS2210)、
図23に示すステップS2301に移行する。
【0219】
図23のフローチャートにおいて、まず、ログ管理サーバ201は、テレメトリーデータ群から、リクエストIDに紐付いたインプット情報を抽出する(ステップS2301)。インプット情報は、例えば、「input」という文字列から特定される。そして、ログ管理サーバ201は、インプット情報をコンテキストに追加する(ステップS2302)。
【0220】
つぎに、ログ管理サーバ201は、テレメトリーデータ群から、リクエストIDに紐付いた最後の動作情報を抽出する(ステップS2303)。最後の動作情報は、最後に遷移したマイクロサービスの動作の情報である。そして、ログ管理サーバ201は、最後の動作情報をコンテキストに追加する(ステップS2304)。
【0221】
つぎに、ログ管理サーバ201は、テレメトリーデータ群から、一連の処理にかかる動作が終了したときのメトリクス情報を抽出する(ステップS2305)。メトリクス情報は、例えば、一連の処理にかかる動作が終了したときのタイムスタンプ、完了フラグ、メトリクス(数値データ)、ステータスコードなどを含む。そして、ログ管理サーバ201は、メトリクス情報をコンテキストに追加する(ステップS2306)。
【0222】
つぎに、ログ管理サーバ201は、テレメトリーデータ群から、その他の情報を抽出する(ステップS2307)。その他の情報は、例えば、サーバとクライアントのIP( Internet protocol)アドレスや、ユーザIDなどである。ログ管理サーバ201は、その他の情報をコンテキストに追加する(ステップS2308)。
【0223】
そして、ログ管理サーバ201は、コンテキストを参照して、テレメトリーデータ群についてのフォーマット化ログを生成して(ステップS2309)、フォーマット化処理を呼び出したステップに戻る。
【0224】
これにより、ログ管理サーバ201は、リクエストIDが同一のテレメトリーデータ間で一意の情報であるフォーマット化ログを生成することができる。
【0225】
以上説明したように、実施の形態にかかるログ管理サーバ201によれば、サービス#1~#mの各サービス#iから収集されたテレメトリーデータのうち、同一のリクエストIDを含むテレメトリーデータ群を取得することができる。テレメトリーデータは、各サービス#iにおいて実行された処理に関する観測情報である。また、ログ管理サーバ201によれば、取得したテレメトリーデータ群から、エラー情報および警告情報を検索することができる。エラー情報は、エラーの発生を示す。警告情報は、エラーの要因となり得る事象の発生を示す。そして、ログ管理サーバ201によれば、検索した検索結果に応じて、テレメトリーデータ群のうちの一部または全部の情報を格納先となるデータベース220に格納することができる。
【0226】
これにより、ログ管理サーバ201は、テレメトリーデータの格納先となるデータベース220への格納量を調整することができる。例えば、ログ管理サーバ201は、同一のリクエストIDに紐付いたテレメトリーデータ群単位で、エラー情報や警告情報が含まれるのかどうかによって、テレメトリーデータ群のうちの一部の情報のみを格納するのか、全部の情報を格納するのかを調整することができる。このため、ログ管理サーバ201は、アプリケーションの性能評価などに必要となる情報を残しつつ、データベース220におけるテレメトリーデータの保管に使用する記憶容量を削減することができる。
【0227】
また、ログ管理サーバ201によれば、異なるデータ種のテレメトリーデータを含むテレメトリーデータ群それぞれのデータ種を参照して、テレメトリーデータ群から、あらかじめ決められた一部の情報を抽出することにより、抽出した一部の情報を含むフォーマット化ログ(フォーマット化されたログ情報)を作成することができる。データ種は、例えば、イベント、メトリクス、ログおよびトレースである。そして、ログ管理サーバ201によれば、テレメトリーデータ群からエラー情報および警告情報が検索されなかった場合、テレメトリーデータ群について、作成したフォーマット化ログのみをデータベース220(例えば、データベースLv1)に格納することができる。
【0228】
これにより、ログ管理サーバ201は、システムが正常に稼働して一連の処理が完了したときのテレメトリーデータ群については、リクエストに対して実行された処理を特定するために、分析者にとって必要最低限の情報(あらかじめ決められた一部の情報)のみを格納対象とすることで、データベース220の格納量を抑えることができる。
【0229】
また、ログ管理サーバ201によれば、テレメトリーデータ群から、エラー情報が検索されず、かつ、警告情報が検索された場合には、テレメトリーデータ群から警告情報を含むテレメトリーデータと同一のデータ種のテレメトリーデータを特定することができる。そして、ログ管理サーバ201によれば、テレメトリーデータ群について、フォーマット化ログとともに、特定したテレメトリーデータをデータベース220(例えば、データベースLv2)に格納することができる。
【0230】
これにより、ログ管理サーバ201は、一連の処理の中でエラーは発生していないものの、エラーの要因となり得る事象が発生したときのテレメトリーデータ群については、その事象の分析に必要となる情報を格納対象とすることで、データベース220の格納量を抑えることができる。また、ログ管理サーバ201は、フォーマット化ログを合わせて格納することで、リクエストに対して実行された処理の特定を容易にすることができる。
【0231】
また、ログ管理サーバ201によれば、テレメトリーデータ群から、エラー情報が検索された場合、フォーマット化ログとともに、テレメトリーデータ群をデータベース220(例えば、データベースLv3)に格納することができる。
【0232】
これにより、ログ管理サーバ201は、何らかのエラーが発生してシステムが正常に稼働しなかったときのテレメトリーデータ群については、テレメトリーデータ群の全てを格納対象とすることができる。このため、ログ管理サーバ201は、重大な障害の発生時などは、障害箇所の特定や原因の究明に用いる情報が不足するといった事態を回避することができる。また、ログ管理サーバ201は、フォーマット化ログを合わせて格納することで、リクエストに対して実行された処理の特定を容易にすることができる。
【0233】
また、ログ管理サーバ201によれば、テレメトリーデータ群のうちのイベントのテレメトリーデータから、リクエストに応じた動作の起点となる処理の情報およびリクエストIDを抽出して、フォーマット化ログを作成することができる。
【0234】
これにより、ログ管理サーバ201は、リクエストIDやイベントの情報からリクエストに応じて実行された処理を特定可能にすることができる。
【0235】
また、ログ管理サーバ201によれば、テレメトリーデータ群のうちのログおよびトレースのテレメトリーデータから、リクエストに応じて動作したマイクロサービスの遷移を表す情報を抽出して、フォーマット化ログを作成することができる。
【0236】
これにより、ログ管理サーバ201は、リクエストに応じて動作したマイクロサービスを特定可能にすることができる。
【0237】
また、ログ管理サーバ201によれば、テレメトリーデータ群のうちのログのテレメトリーデータから、さらに、最後に遷移したマイクロサービスの動作の情報を抽出して、フォーマット化ログを作成することができる。
【0238】
これにより、ログ管理サーバ201は、リクエストに応じて実行された処理の特定にあたり、最後に遷移したマイクロサービスの動作の内容を確認可能にすることができる。
【0239】
また、ログ管理サーバ201によれば、テレメトリーデータ群のうちのメトリクスのテレメトリーデータから、さらに、リクエストに応じた動作が終了したときのメトリクスデータを抽出して、フォーマット化ログを作成することができる。
【0240】
これにより、ログ管理サーバ201は、リクエストに応じて実行された処理の特定にあたり、リクエストに対する動作が終了したときのメトリクスデータを確認可能にすることができる。
【0241】
また、ログ管理サーバ201によれば、テレメトリーデータ群のうちのメトリクスのテレメトリーデータから、さらに、リクエストに応じた動作が終了したときのステータスコードを抽出して、フォーマット化ログを作成することができる。
【0242】
これにより、ログ管理サーバ201は、リクエストに応じて実行された処理の特定にあたり、リクエストに対する動作が終了したときのステータスコードを確認可能にすることができる。
【0243】
また、ログ管理サーバ201によれば、テレメトリーデータ群から警告情報が検索された場合、フォーマット化ログに警告情報を追加することができる。
【0244】
これにより、ログ管理サーバ201は、フォーマット化ログとともに格納されたテレメトリーデータの内容を確認しなくても、フォーマット化ログから、どのような事象(エラーの要因となり得る事象)が発生したのかを容易に確認可能にすることができる。
【0245】
また、ログ管理サーバ201によれば、テレメトリーデータ群からエラー情報が検索された場合、フォーマット化ログにエラー情報を追加することができる。
【0246】
これにより、ログ管理サーバ201は、フォーマット化ログとともに格納されたテレメトリーデータの内容を確認しなくても、フォーマット化ログから、どのようなエラーが発生したのかを容易に確認可能にすることができる。
【0247】
これらのことから、ログ管理サーバ201によれば、複数のマイクロサービスにより構成されるアプリケーション(システム)の処理が、正常な処理なのか、障害や異常が発生した処理なのかを構造化したログから分析することができる。これにより、ログ管理サーバ201は、アプリケーションの処理の正常性を監視するために収集されるテレメトリーデータの中で、より有用なデータのみを格納することによって、テレメトリーデータの保管に使用する記憶容量を削減して、確保すべき記憶領域を削減することができる。
【0248】
また、ログ管理サーバ201は、クラウド上でデータベース220を構築する場合などに、格納データのデータ転送量やメモリ使用量を抑えることができるため、従来のように全データを格納する場合に比べて、課金量を低減して運用コストを削減することができる。また、ログ管理サーバ201は、データベース220における格納データの格納先となる記憶領域をレベル(Lv1,Lv2,Lv3)によって使い分けることができる。このため、ログ管理サーバ201は、格納データの削除や外部転送を実装するにあたり、容易にデータを呼び出して削除や転送を行うことを可能にする。
【0249】
なお、本実施の形態で説明したログ管理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ログ管理プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本ログ管理プログラムは、インターネット等のネットワークを介して配布してもよい。
【0250】
また、本実施の形態で説明したログ管理装置101(ログ管理サーバ201)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
【0251】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0252】
(付記1)複数のマイクロサービスの各マイクロサービスから収集された、前記各マイクロサービスにおいて実行された処理に関する観測情報のうち、リクエストに応じて実行される一連の処理を識別する同一のリクエストIDを含む観測情報群を取得し、
取得した前記観測情報群から、エラーの発生を示すエラー情報、および、エラーの要因となり得る事象の発生を示す警告情報を検索し、
検索した検索結果に応じて、前記観測情報群のうちの一部または全部の情報を格納先となるデータベースに格納する、
制御部を有することを特徴とするログ管理装置。
【0253】
(付記2)前記観測情報群は、異なるデータ種の観測情報を含み、
前記制御部は、
前記観測情報群それぞれのデータ種を参照して、前記観測情報群から、あらかじめ決められた一部の情報を抽出することにより、抽出した前記一部の情報を含む、フォーマット化されたログ情報を作成し、
前記観測情報群から前記エラー情報および前記警告情報が検索されなかった場合、前記観測情報群について、作成した前記フォーマット化されたログ情報のみを前記データベースに格納する、
ことを特徴とする付記1に記載のログ管理装置。
【0254】
(付記3)前記制御部は、
前記観測情報群から、前記エラー情報が検索されず、かつ、前記警告情報が検索された場合には、前記観測情報群から前記警告情報を含む観測情報と同一のデータ種の観測情報を特定し、
前記観測情報群について、前記フォーマット化されたログ情報とともに、特定した前記観測情報を前記データベースに格納する、
ことを特徴とする付記2に記載のログ管理装置。
【0255】
(付記4)前記制御部は、
前記観測情報群から前記エラー情報が検索された場合、前記フォーマット化されたログ情報とともに、前記観測情報群を前記データベースに格納する、
ことを特徴とする付記2または3に記載のログ管理装置。
【0256】
(付記5)前記観測情報群は、イベント、メトリクス、ログおよびトレースの少なくともいずれかのデータ種の観測情報を含み、
前記一部の情報は、前記観測情報群のうちのイベントの観測情報から抽出される、前記リクエストに応じた動作の起点となる処理の情報および前記リクエストIDを含む、
ことを特徴とする付記2~4のいずれか一つに記載のログ管理装置。
【0257】
(付記6)前記一部の情報は、前記観測情報群のうちのログおよびトレースの観測情報から抽出される、前記リクエストに応じて動作したマイクロサービスの遷移を表す情報を含む、
ことを特徴とする付記5に記載のログ管理装置。
【0258】
(付記7)前記一部の情報は、前記観測情報群のうちのログの観測情報から抽出される、最後に遷移したマイクロサービスの動作の情報を含む、ことを特徴とする付記6に記載のログ管理装置。
【0259】
(付記8)前記一部の情報は、前記観測情報群のうちのメトリクスの観測情報から抽出される、前記リクエストに応じた動作が終了したときのメトリクスデータを含む、ことを特徴とする付記6または7に記載のログ管理装置。
【0260】
(付記9)前記一部の情報は、前記観測情報群のうちのメトリクスの観測情報から抽出される、前記リクエストに応じた動作が終了したときのステータスコードを含む、ことを特徴とする付記6~8のいずれか一つに記載のログ管理装置。
【0261】
(付記10)前記制御部は、
前記観測情報群から前記警告情報が検索された場合、前記フォーマット化されたログ情報に前記警告情報を追加する、
ことを特徴とする付記3に記載のログ管理装置。
【0262】
(付記11)前記制御部は、
前記観測情報群から前記エラー情報が検索された場合、前記フォーマット化されたログ情報に前記エラー情報を追加する、
ことを特徴とする付記4に記載のログ管理装置。
【0263】
(付記12)前記制御部は、
前記観測情報群について、前記フォーマット化されたログ情報のみを前記データベース内の第1の記憶領域に格納する、ことを特徴とする付記2に記載のログ管理装置。
【0264】
(付記13)前記制御部は、
前記観測情報群について、前記フォーマット化されたログ情報とともに、特定した前記観測情報を前記データベース内の第2の記憶領域に格納する、ことを特徴とする付記3に記載のログ管理装置。
【0265】
(付記14)前記制御部は、
前記フォーマット化されたログ情報とともに、前記観測情報群を前記データベース内の第3の記憶領域に格納する、ことを特徴とする付記4に記載のログ管理装置。
【0266】
(付記15)複数のマイクロサービスの各マイクロサービスから収集された、前記各マイクロサービスにおいて実行された処理に関する複数のデータ種の観測情報のうち、リクエストに応じて実行される一連の処理を識別する同一のリクエストIDを含む観測情報群を取得し、
取得した前記観測情報群から、エラーの発生を示すエラー情報、および、エラーの要因となり得る事象の発生を示す警告情報を検索し、
検索した検索結果に応じて、前記観測情報群の格納先となるデータベースへの格納量を調整する、
処理をコンピュータが実行することを特徴とするログ管理方法。
【0267】
(付記16)複数のマイクロサービスの各マイクロサービスから収集された、前記各マイクロサービスにおいて実行された処理に関する複数のデータ種の観測情報のうち、リクエストに応じて実行される一連の処理を識別する同一のリクエストIDを含む観測情報群を取得し、
取得した前記観測情報群から、エラーの発生を示すエラー情報、および、エラーの要因となり得る事象の発生を示す警告情報を検索し、
検索した検索結果に応じて、前記観測情報群の格納先となるデータベースへの格納量を調整する、
処理をコンピュータに実行させることを特徴とするログ管理プログラム。
【符号の説明】
【0268】
101 ログ管理装置
110,220 データベース
120 観測情報集合
121~123 観測情報群
130 一部の情報
200 情報処理システム
201 ログ管理サーバ
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ディスクドライブ
304 ディスク
305 通信I/F
306 可搬型記録媒体I/F
307 可搬型記録媒体
400 制御部
401 収集部
402 ログ構造化部
403 判定部
404 調整部
501,502,503,600,1200,1600 テレメトリーデータ
562,710,720,1300,1700 テレメトリーデータ群
511,521,531,552,1501,1502,1503,1504 メトリクスデータ
512,522,532 ログ
541,551,561,801,1001,1401,1801 フォーマット化ログ
800,1000,1400,1800 コンテキスト