以下に図面を参照して、第一の実施形態について説明する。図1は、情報処理システムのシステム構成の一例を示す図である。
本実施形態の情報処理システム100は、サーバ装置200と、情報処理装置300−1、・・・、300−Nとを含む。
本実施形態の情報処理装置300−1、・・・、300−Nは、それぞれが、複数の仮想マシンや複数のコンテナが動作する物理マシンの一例である。以下の説明では、情報処理装置300−1、・・・、300−Nのそれぞれを区別しない場合には、情報処理装置300と呼ぶ。また、以下の説明では、情報処理装置300を物理マシン300と呼ぶ場合がある。
本実施形態の情報処理装置300では、ホストとなるOS(Operating System)310が実行され、OS310上でハイパーバイザ320が稼働する。ハイパーバイザ320は、ハイパーバイザ320上で実行される複数の仮想マシン330−1、・・・、330−Nを管理する。以下の説明では、複数の仮想マシン330−1、・・・、330−Nのそれぞれを区別しない場合には、仮想マシン330と呼ぶ。
仮想マシン330では、ゲストとなるOS331が実行される。また、仮想マシン330では、OS331上で、コンテナ管理部334が複数のアプリケーションをそれぞれ独立したプロセス空間や名前空間を有する異なる環境で動作させる。複数のアプリケーション毎の異なる環境が、コンテナ332−1、・・・、332−Nである。
複数のコンテナ332−1、・・・、332−Nのそれぞれは、仮想マシン330−1、・・・、330−NそれぞれのOS331の間を移動(マイグレーション)する。
また、複数のコンテナ332−1、・・・、332−Nは、それぞれと対応して設けられた複数のプロキシ333−1、・・・、333−Nを介して他のコンテナと通信する。以下の説明では、複数のコンテナ332−1、・・・、332−Nのそれぞれを区別しない場合にはコンテナ332と呼び、複数のプロキシ333−1、・・・、333−Nのそれぞれを区別しない場合にはプロキシ333と呼ぶ。
情報処理装置300は、情報処理装置300のOS310、仮想マシン330のOS331、各仮想マシン330上で動作するコンテナ332のそれぞれがログデータを出力する。サーバ装置200は、これらのログデータを収集する。
また、本実施形態のサーバ装置200は、情報処理装置300から、コンテナ332、仮想マシン330、物理マシン(情報処理装置)300の対応関係(対応付け)と、それぞれが対応付けられていた時刻とを示す対応付け情報を取得する。
本実施形態では、この対応付け情報を取得することで、コンテナに発生した障害について調査する場合等において、障害が発生したコンテナ332と関連するOSのログデータを特定できる。つまり、本実施形態では、コンテナ332に障害が発生した際に、参照すべきログデータを特定できる。
本実施形態のサーバ装置200は、処理結果データベース210、マイグレーションログデータベース220、正常状態データベース230、性能データベース240、ログデータベース250、異常時性能データベース260、異常時ログデータベース270を有する。また、本実施形態のサーバ装置200は、ログ参照処理部280を有する。
処理結果データベース210は、プロキシ333を介して取得されたコンテナ332のログデータを解析した結果のデータが格納される。言い換えれば、処理結果データベース210は、コンテナ332による処理の実行ログデータを解析した結果の処理結果データが格納される。
マイグレーションログデータベース220は、コンテナ332、仮想マシン330、物理マシン(情報処理装置)300の対応関係と、それぞれが対応付けられていた時刻とを示す対応付け情報が格納される。言い換えれば、マイグレーションログデータベース220には、コンテナ332が動作していた仮想マシン330と、コンテナ332が動作していた時刻とを示す情報と、仮想マシン330が動作している情報処理装置300と、仮想マシン330が動作していた時刻とを示す情報とが格納される。
正常状態データベース230は、コンテナ332による処理が正常に行われたか否かを判定する際に参照される正常状態データが格納される。
性能データベース240は、情報処理装置300の性能を示す性能データと、仮想マシン330の性能を示す性能データと、が格納される。ログデータベース250は、OS310、OS331、コンテナ332のそれぞれのログデータが格納される。
異常時性能データベース260は、コンテナのログデータを解析した結果の処理結果データが、正常状態データが示す状態ではない場合における、情報処理装置300と仮想マシン330の性能データが格納される。
異常時ログデータベース270は、コンテナのログデータを解析した結果の処理結果データが、正常状態データが示す状態ではない場合における、OS310、OS331、コンテナ332のそれぞれのログデータが格納される。
ログ参照処理部280は、ログデータの収集、ログデータの解析、情報処理装置300、仮想マシン330、コンテナ332を対応付け情報の管理、コンテナ332から取得したログデータが正常であるか否かの判定等の処理を行う。
尚、本実施形態では、処理結果データベース210、マイグレーションログデータベース220、正常状態データベース230、性能データベース240、ログデータベース250、異常時性能データベース260、異常時ログデータベース270がサーバ装置200に設けられるものとしたが、これに限定されない。
例えば、異常時性能データベース260と異常時ログデータベース270は、サーバ装置200以外の装置に設けられても良い。より具体的には、異常時性能データベース260と異常時ログデータベース270は、例えば、障害が発生した場合の調査を行う場合に参照される調査用サーバ装置等に設けられていても良い。本実施形態では、異常時性能データベース260と異常時ログデータベース270に格納されるデータは、性能データベース240とログデータベース250に格納されるデータと比較して十分に長い期間保持される。
また、図1に示す全てのデータベースが、サーバ装置200以外の装置に設けられていても良い。
次に、図2を参照して、本実施形態のサーバ装置200のハードウェア構成について説明する。図2は、サーバ装置のハードウェア構成の一例を示す図である。
本実施形態のサーバ装置200は、それぞれバスBで相互に接続されている入力装置21、出力装置22、ドライブ装置23、補助記憶装置24、メモリ装置25、演算処理装置26、インターフェイス装置27を有する情報処理装置である。
入力装置21は、例えばキーボードやポインティングデバイス等であり、各種の情報の入力を行う。出力装置22は、例えばディスプレイ等のであり、各種の情報の出力を行う。インターフェイス装置27は、ネットワークに接続する為に用いられる。
ログ参照処理部280を実現させるログ参照プログラムは、サーバ装置200を制御する各種プログラムの少なくとも一部である。ログ参照プログラムは、例えば記録媒体28の配布やネットワークからのダウンロード等によって提供される。ログ参照プログラムを記録した記録媒体28は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
また、ログ参照プログラムは、ログ参照プログラムを記録した記録媒体28がドライブ装置23にセットされると、記録媒体28からドライブ装置23を介して補助記憶装置24にインストールされる。ネットワークからダウンロードされたログ参照プログラムは、インターフェイス装置27を介して補助記憶装置24にインストールされる。
補助記憶装置24は、インストールされたログ参照プログラムを格納すると共に、サーバ装置200が取得した各種の必要なファイル、データ等を格納する。メモリ装置25は、サーバ装置200の起動時に補助記憶装置24からログ参照プログラムを読み出して格納する。そして、演算処理装置26はメモリ装置25に格納されたログ参照プログラムに従って、後述するような各種処理を実現している。
本実施形態のメモリ装置25は、例えば、揮発性メモリであり、サーバ装置200のインメモリデータベースとなる。
尚、情報処理装置300のハードウェア構成は、演算処理装置とメモリ装置とを有する情報処理装置であり、サーバ装置200と同様であるため、説明を省略する。
次に、図3を参照して、本実施形態の情報処理システム100の有する各装置の機能について説明する。図3は、情報処理システムの有する各装置の機能を説明する図である。
はじめに、本実施形態の情報処理装置300の機能について説明する。本実施形態の情報処理装置300は、仮想マシンデータ収集部341、性能データ収集部342、ログデータ収集部343を有する。
仮想マシンデータ収集部341は、ハイパーバイザ320から、情報処理装置(物理マシン)300上に存在する仮想マシン330の一覧と、一覧を取得した時の時刻と対応付けた仮想マシン位置データをサーバ装置200へ送信する。
仮想マシン位置データは、仮想マシン330と情報処理装置(物理マシン)300との対応付け(対応関係)と、対応付けられていた時刻とを示す情報であり、マイグレーションログデータベース220に格納される。つまり、仮想マシン位置データは、対応付け情報の一部である。
性能データ収集部342は、OS310から、各仮想マシン330の性能データを収集し、サーバ装置200へ送信する。性能データとは、例えば、CPU(Central Processing Unit)の使用率、メモリの使用率、ネットワーク使用量等を含む。また、性能データ収集部342は、情報処理装置300の性能データを収集し、サーバ装置200へ送信する。
ログデータ収集部343は、OS310のログデータを収集し、サーバ装置200へ送信する。
本実施形態の仮想マシン330は、コンテナデータ収集部351、性能データ収集部352、ログデータ収集部353を有する。
コンテナデータ収集部351は、コンテナ管理部334から、仮想マシン330上に存在するコンテナ332の一覧と、一覧を取得した時の時刻とを対応付けたコンテナ位置データをサーバ装置200へ送信する。
コンテナ位置データは、コンテナ332と仮想マシン330との対応付け(対応関係)と、対応付けられていた時刻とを示す情報であり、マイグレーションログデータベース220に格納される。つまり、コンテナ位置データは、対応付け情報の一部である。
性能データ収集部352は、OS331から、各コンテナ332の性能データを収集し、サーバ装置200へ送信する。性能データは、性能データベース240に格納される。
ログデータ収集部353は、OS331のログデータベースと、各プロキシ333を介して出力されるコンテナ332のログデータとを収集し、サーバ装置200へ送信する。ログデータは、ログデータベース250に格納される。また、ログデータ収集部353が収集したコンテナ332のログデータは、ログ参照処理部280によって処理結果データとされて、処理結果データベース210に格納される。
次に、サーバ装置200の機能について説明する。本実施形態のサーバ装置200のログ参照処理部280は、コンテナデータ取得部281、仮想マシンデータ取得部282、性能データ取得部283、ログデータ取得部284、ログ解析部285、正常状態データ生成部286、ログ特定部287、選択部288、出力部290を有する。
コンテナデータ取得部281は、情報処理装置300のコンテナデータ収集部351が収集したコンテナ位置データを取得し、マイグレーションログデータベース220に格納する。
仮想マシンデータ取得部282は、情報処理装置300の仮想マシンデータ収集部341が収集した仮想マシン位置データを取得し、マイグレーションログデータベース220に格納する。
性能データ取得部283は、性能データ収集部342が収集した性能データと、性能データ収集部352が収集した性能データとを取得し、性能データベース240に格納する。
ログデータ取得部284は、ログデータ収集部343が収集したOS310のログデータと、ログデータ収集部353が収集したOS331のログデータと、各コンテナ332のログデータとを取得し、ログデータベース250へ格納する。
ログ解析部285は、ログデータ取得部284が取得したコンテナ332のログデータを解析し、解析した結果の処理結果データを処理結果データベース210へ格納する。また、ログ解析部285は、処理結果データと正常状態データベース230とを比較して、処理が正常に実行されたか否かを判定する。ログ解析部285の処理の詳細は後述する。
正常状態データ生成部286は、処理結果データベース210に格納された処理結果データに基づき、正常状態データを生成し、正常状態データベース230に格納する。正常状態データとは、コンテナ332の処理が正常に行われたか否かを判定する際に参照されるデータである。正常状態データ生成部286の処理の詳細は後述する。
ログ特定部287は、マイグレーションログデータベース220を参照し、処理結果データが示す処理を実行したコンテナ332の位置を特定し、位置を特定されたコンテナ332と関連するOS331、OS310のログデータと性能データとを抽出する。
具体的には、ログ特定部287は、ログ解析部285により、コンテナ332の処理が正常に実行されていないと判定された場合に、この処理を実行したコンテナ332と付けられた仮想マシン330と物理マシン300のログデータを特定し、抽出する。そして、ログ特定部287は、抽出した性能データとログデータに、正常に実行されなかった処理を特定する情報を付与し、異常時性能データベース260、異常時ログデータベース270のそれぞれに格納する。
選択部288は、コンテナ332の実行ログの一部の選択を受け付ける。具体的には、選択部288は、コンテナ332に対して処理の実行を要求するリクエストのリクエストIDの選択を受け付ける。選択部288によるリクエストIDの選択を受け付けると、ログ特定部287は、選択されたリクエストIDと対応するOSのログデータを特定し、抽出しても良い。
出力部290は、ログ特定部287に特定されたログデータを出力する。具体的には、出力部290は、特定されたログデータをサーバ装置200が有する出力装置や、サーバ装置200と通信が可能な表示装置等に表示させても良い。また、本実施形態の出力部290は、異常時性能データベース260、異常時ログデータベース270に格納された性能データやログデータの一覧をサーバ装置200が有する出力装置や、サーバ装置200と通信が可能な表示装置等に表示させても良い。
次に、図4乃至図8を参照して、本実施形態の処理結果データベース210、マイグレーションログデータベース220、正常状態データベース230、性能データベース240、ログデータベース250について説明する。
図4は、処理結果データベースについて説明する図である。図4(A)は、ログデータ取得部284が取得したコンテナ332のログデータの一例を示す。図4(A)に示すログデータ151は、タイムスタンプ152、リクエストID153、リクエスト先154、リクエスト元155、処理時間156、レスポンスコード157を含む。
タイムスタンプ152は、処理の終了時刻を示し、リクエストIDは、コンテナ332に要求されたリクエストを一意に特定する情報である。リクエスト先154は、処理が実行されるコンテナ332の名称と、呼び出されたAPI(Application Programming Interface)158を含む。リクエスト元155は、リクエストを送信した元のコンテナ332の名称であり、処理時間156は、要求された処理が完了するまでにかかった時間である。レスポンスコード157は、サーバ装置200からのレスポンスの意味を表現する3桁の数字からなるコードである。
本実施形態のログ解析部285は、コンテナ332のログデータを取得すると、このログデータを解析し、上述した項目毎に処理結果データベース210に格納する。
図4(B)は、処理結果データベース210の一例を示す図である。処理結果データベース210は、情報の項目として、タイムスタンプ、リクエストID、リクエスト元、リクエスト先、API、処理時間、レスポンスコードを有する。各項目の値は、上述した通りである。
本実施形態では、ログ解析部285は、コンテナ332のログデータを解析して、各項目と、項目の値とを対応付けた結果を処理結果データとして処理結果データベース210に格納する。
図4(B)では、例えば、コンテナa1からコンテナa2に対してリクエストID「550e8400」で特定されるリクエストが送信され、このリクエストによってAPI「/aaaa/bbbb」が呼び出されて実行され、処理の実行時間が82[msec]であり、処理の終了時刻が2018年11月11日の13時45分12秒であり、レスポンスコード「200」を取得したことがわかる。
図5は、マイグレーションログデータベースの一例を示す図である。本実施形態のマイグレーションログデータベース220は、コンテナ332と仮想マシン330とを対応付けたコンテナ位置データが格納されるコンテナ位置テーブル220−1と、仮想マシン330と情報処理装置(物理マシン)300とを対応付けた仮想マシン位置データが格納される仮想マシン位置テーブル220−2とを含む。
コンテナ位置テーブル220−1は、情報の項目として、更新時刻と、コンテナと、仮想マシンとを含み、それぞれが対応付けられている。図5では、コンテナ位置テーブル220−1では、コンテナa1とコンテナb1とは、仮想マシンVm1上で動作していることがわかる。
仮想マシン位置テーブル220−2、情報の項目として、更新時刻と、仮想マシンと、物理マシンとを含み、それぞれが対応付けられている。図5では、仮想マシン位置テーブル220−2では、仮想マシンVm1は、物理マシンps1で動作しており、仮想マシンvm4は、物理マシンps2で動作していることがわかる。
図6は、正常状態データベースの一例を示す図である。本実施形態の正常状態データベース230に格納される正常状態データは、処理結果データベース210に格納された処理結果データに基づき、正常状態データ生成部286によって生成される。
また、正常状態データベース230に格納されている正常状態データは、処理結果データが示す情報処理システム100の状態が正常であるか否かの判定を行う際に参照される。
本実施形態の正常状態データベース230は、情報の項目として、リクエスト元、リクエスト先、API、処理時間の上限、レスポンスコードを有する。
項目「処理時間の上限」の値は、API処理が正常に行われたか否かを判定するための処理時間の閾値である。
例えば、図6の例では、リクエスト元のコンテナ332が「a1」であり、リクエスト先のコンテナ332が「a2」であり、呼び出されるAPIが「/aaaa/bbbb」であり、レスポンスコードが「200」となる処理では、処理時間が100[msec]未満の場合に、処理結果データが示す状態が正常と判定される。
図7は、性能データベースの一例を示す図である。本実施形態の性能データベース240は、物理マシン300の性能データと、仮想マシン330の性能データと、の両方が格納されても良い。
本実施形態の性能データベース240は、情報の項目として、処理時刻、メトリック、バリュー、メタ情報を含む。以下の説明では、性能データベース240において、各項目の値を含む情報を性能データと呼ぶ。
項目「処理時刻」の値は、性能データ収集部342、352が性能データを取得した時刻を示す。項目「メトリック」の値は、性能の種類を示し、項目「バリュー」の値は、性能の値を示す。具体的には、例えば、項目「メトリック」の値が、cpu.usageであり、項目「バリュー」の値が64.42である場合、性能の種類はCPU使用率であり、その値は64.42%であることがわかる。
項目「メタ情報」の値は、性能データの取得元を示す。具体的には、項目「メタ情報」の値は、性能データを取得したマシンを特定する情報である。例えば、項目「メタ情報」の値が、「ser=vm1」である場合には、この性能データは、仮想マシンvm1から取得したものであることがわかる。
次に、図8を参照して、ログデータベース250について説明する。図8は、ログデータベースの一例を示す図である。
本実施形態のログデータベース250は、情報の項目として、処理時刻、処理内容、メタ情報等を有する。ログデータベース250には、ログデータ収集部343、ログデータ収集部353が取得したログデータが格納される。
項目「処理時刻」の値は、ログデータを取得した時刻を示す。項目「処理内容」の値は、コンテナ管理部334やハイパーバイザ320による処理の内容や、コンテナ332上で動作する各アプリケーションによる処理の内容、OS310の動作の内容等を示す。項目「ログデータ」の値は、ログデータの取得元を示す。
次に、本実施形態の情報処理システム100の動作について説明する。はじめに、図9乃至図13を参照して、情報処理装置300の動作を説明する。
図9は、情報処理装置のコンテナデータ収集部の処理を説明するフローチャートである。
本実施形態の情報処理装置300において、コンテナデータ収集部351は、起動時に、コンテナ管理部334から、仮想マシン330上で動作するコンテナ332のコンテナ位置データを取得し(ステップS901)、サーバ装置200へ送信する(ステップS902)。
サーバ装置200では、コンテナデータ取得部281がコンテナ位置データを取得し、マイグレーションログデータベース220のコンテナ位置テーブル220−1へ格納する。
つまり、本実施形態のコンテナデータ取得部281と仮想マシンデータ取得部282は、コンテナのマイグレーションログを採取するデータ取得部の一例である。
続いて、コンテナデータ収集部351は、仮想マシン330上で動作するコンテナ332の増減を検知したか否かを判定する(ステップS903)。具体的には、コンテナデータ収集部351は、コンテナ管理部334から、コンテナ332の増減を示す通知を受けたか否かを判定する。
ステップS903において、増減を検知しない場合、コンテナデータ収集部351は、ステップS903を繰り返す。
ステップS903において、増減を検知した場合、コンテナデータ収集部351は、再度仮想マシン330上で動作するコンテナ332のコンテナ位置データを取得し(ステップS904)、サーバ装置200へ送信する(ステップS905)。
コンテナ収集部351は、図9に示す処理を、プロセスの終了を指示するコマンドを受け付けるまで繰り返す。より具体的には、コンテナデータ収集部351は、図9のステップS903からステップS905までの処理を、プロセスが終了するまで繰り返す。
図10は、情報処理装置の仮想マシンデータ収集部の処理を説明するフローチャートである。
本実施形態の情報処理装置300において、仮想マシンデータ収集部341は、起動時に、ハイパーバイザ320から、情報処理装置(物理マシン)300上で動作する仮想マシン330の仮想マシン位置データを取得し(ステップS1001)、サーバ装置200へ送信する(ステップS1002)。
サーバ装置200は、仮想マシン位置データを取得すると、仮想マシンデータ取得部282により、マイグレーションログデータベース220の仮想マシン位置テーブル220−2へ格納する。
続いて、仮想マシンデータ収集部341は、情報処理装置300上で動作する仮想マシン330の増減を検知したか否かを判定する(ステップS1003)。具体的には、仮想マシンデータ収集部341は、ハイパーバイザ320から、仮想マシン330の増減を示す通知を受けたか否かを判定する。
ステップS1003において、増減を検知しない場合、仮想マシンデータ収集部341は、ステップS1003を繰り返す。
ステップS1003において、増減を検知した場合、仮想マシンデータ収集部341は、再度情報処理装置300上で動作する仮想マシン330の仮想マシン位置データを取得し(ステップS1004)、サーバ装置200へ送信する(ステップS1005)。
仮想マシンデータ収集部341は、図10に示す処理を、プロセスの終了を指示するコマンドを受け付けるまで繰り返す。より具体的には、仮想マシンデータ収集部341は、図10のステップS1003からステップS1005までの処理を、プロセスが終了するまで繰り返す。
図11は、コンテナの減少が検知された場合のコンテナ位置テーブルの一例を示す図である。
図11のコンテナ位置テーブル220−1Aは、コンテナデータ収集部351が、仮想マシンvm2上にコンテナb1がなくなったことを検知した状態を示している。言い換えれば、コンテナ位置テーブル220−1Aは、コンテナデータ収集部351がコンテナ332の減少を検知した場合を示している。
図11に示すコンテナ位置テーブル220−1Aは、図5のコンテナ位置テーブル220−1と比較して、仮想マシンVm2上で動作していたコンテナb1が消去されている。
図12は、仮想マシンの増加が検知された場合の仮想マシン位置テーブルの一例を示す図である。
図12の仮想マシン位置テーブル220−2Aは、仮想マシンデータ収集部341が、物理マシンps2上に仮想マシンvm1が加わったことを検知した状態を示している。言い換えれば、仮想マシン位置テーブル220−2Aは、仮想マシンデータ収集部341が仮想マシンの増加を検知した場合を示している。
図12に示す仮想マシン位置テーブル220−2Aは、図5の仮想マシン位置テーブル220−2と比較して、物理マシンps2上で動作する仮想マシンVm1が追加されている。
このように、本実施形態のサーバ装置200は、コンテナと、コンテナが動作する仮想マシンとを時系列に対応付けた情報と、仮想マシンと、仮想マシンが動作する物理マシンとを時系列に対応付けた情報とをマイグレーションログデータベース220に保持する。つまり、本実施形態のマイグレーションログデータベース220には、コンテナの移動の履歴を示すマイグレーションログが格納されていると言える。
図13は、性能データ収集部の処理を説明するフローチャートである。本実施形態の情報処理装置300において、性能データ収集部342は、定期的に情報処理装置300、OS310の性能データを取得し、性能データ収集部352は、仮想マシン330とコンテナ332の性能データを取得する(ステップS1301)。
続いて、性能データ収集部342と性能データ収集部352は、それぞれが取得した性能データをサーバ装置200へ送信する(ステップS1302)。
性能データ収集部342と性能データ収集部352は、図13に示す処理を、それぞれのプロセスの終了を指示するコマンドを受け付けるまで繰り返す。
尚、情報処理装置300では、ログデータ収集部343、ログデータ収集部353も、性能データ収集部342、性能データ収集部352と同じように、ログデータを定期的に収集し、サーバ装置200へ送信している。
次に、図14を参照して、本実施形態のサーバ装置200の動作について説明する。図14は、サーバ装置のログ参照処理部の処理を説明するフローチャートである。
本実施形態のサーバ装置200のログ参照処理部280は、コンテナデータ取得部281により、情報処理装置300のコンテナデータ収集部351から、コンテナ332上で行われた処理のログデータを収集する(ステップS1401)。
続いて、ログ参照処理部280は、ログ解析部285により、コンテナ332から収集したログデータを解析し、処理の内容、処理時間、処理結果を示す処理結果データとし、処理結果データベース210に格納し、コンテナ332のログデータと、コンテナ332以外のログデータとをログデータベース250に格納する(ステップS1402)。
具体的には、ログ参照処理部280は、ログデータ取得部284により、ログデータ収集部343からOS310のログデータを取得し、ログデータ収集部353からOS331のログデータと、仮想マシン330のログデータとを取得し、ログデータベース250へ格納する。
続いて、ログ参照処理部280は、正常状態データ生成部286により、正常状態データベース230において正常状態データが生成済みであるか否かを判定する(ステップS1403)。
ステップS1403において、正常状態データが生成済みである場合、ログ参照処理部280は、後述するステップS1406へ進む。
ステップS1403において、正常状態データが生成済みでない場合、ログ参照処理部280は、処理結果データベース210に格納された処理結果データのレコード数が所定数以上であるか否かを判定する(ステップS1404)。ステップS1404において、レコード数が所定数未満である場合、ログ参照処理部280は、ステップS1401へ戻る。
ステップS1404において、レコード数が所定数以上である場合、正常状態データ生成部286は、正常状態データを生成し、正常状態データベース230に格納して(ステップS1405)、ステップS1401へ戻る。
具体的には、本実施形態の正常状態データ生成部286は、処理結果データベース210に格納さるた処理結果データに基づき、特定の条件を決定し、この条件を示すデータを正常状態データとして、正常状態データベース230に格納する。
特定の条件とは、例えば、処理結果データに含まれる処理時間が処理時間の上限未満であることや、レスポンスコードが、出現頻度が所定値以上のレスポンスコードであること、等である。これらの特定の条件は、例えば、情報処理システム100の管理者等によって、外部から設定が可能な条件である。
ステップS1403において、正常状態データが生成済みである場合、ログ参照処理部280は、正常状態データベース230を更新してから一定時間が経過しているか否かを判定する(ステップS1406)。ステップS1406において、一定時間が経過していない場合、ログ参照処理部280は、ステップS1404へ進む。
ステップS1406において、一定時間が経過していない場合、ログ参照処理部280は、ログ解析部285により、処理結果データを、正常状態データベース230に格納された正常状態データと比較する(ステップS1407)。
続いて、ログ解析部285は、処理結果データが示す処理が正常に処理されたか否かを判定する(ステップS1408)。ステップS1408において、正常に処理された場合、ログ参照処理部280は、ステップS1401に戻る。
ステップS1408において、正常に処理されていない場合、つまり、異常な状態と判定された場合、ログ参照処理部280は、選択部288により、この処理結果データに含まれるリクエストIDを選択し、ログ特定部287により、処理結果データベース210において、選択されたリクエストIDと同一のリクエストIDを含む処理結果データを抽出する(ステップS1409)。
続いて、ログ特定部287は、ログデータベース250、性能データベース240から抽出された処理結果データに含まれるコンテナ332のログデータと性能データとを特定し、抽出する(ステップS1410)。処理結果データに含まれるコンテナ332とは、処理結果データのリクエスト先に対応するコンテナ332と、リクエスト元に対応するコンテナ332である。
続いて、ログ特定部287は、ステップS1409で抽出された処理結果データのうち、最初に取得された処理結果データのタイムスタンプと、最後に取得された処理結果データのタイムスタンプとを抽出する(ステップS1411)。
続いて、ログ特定部287は、マイグレーションログデータベース220を参照し、抽出されたタイムスタンプから算出される処理時間における、コンテナ332と仮想マシン330と情報処理装置(物理マシン)300との対応付けを示す一覧を作成する(ステップS1412)。
続いて、ログ特定部287は、一覧に含まれる仮想マシン330と情報処理装置300について、タイムスタンプから算出された処理時間における性能データとログデータを取得する(ステップS1413)。ここで取得されるログデータには、仮想マシン330のOS331のログデータと、情報処理装置(物理マシン)300のOS310のログデータとが含まれる。
つまり、本実施形態のログ特定部287は、コンテナにおける処理の実行ログデータの一部であるリクエストIDを選択し、マイグレーションログデータベース220を参照して、選択したリクエストIDが示す処理を実行したコンテナの位置を特定し、コンテナの位置に基づき、コンテナと関係するOSのログデータを抽出する。
続いて、ログ特定部287は、ステップS1413で取得した性能データとログデータのメタ情報に、リクエストIDを付与し、異常時性能データベース260、異常時ログデータベース270のそれぞれに格納し(ステップS1414)、処理を終了する。尚、このとき、ログ特定部287は、ステップS1410で取得したコンテナ332のログデータも、異常時ログデータベース270に格納する。
以下に、図15乃至図17を参照して、図14の処理について具体的に説明する。図15は、処理結果データと正常状態データの比較を説明する図である。具体的には、図15は、図14のステップS1408の処理を説明する図である。
図15(A)は正常状態データベース230を示し、図15(B)は、処理結果データベース210を示す。
図15の例では、処理結果データベース210に格納された処理結果データ210−1は、リクエストIDが「550e8400」であり、リクエスト元のコンテナ332が「a1」であり、リクエスト先のコンテナ332が「a2」であり、呼び出されるAPIが「/aaaa/bbbb」であり、レスポンスコードが「200」であり、処理時間が82[msec]である。
これに対し、正常状態データベース230の正常状態データ230−1は、リクエスト元のコンテナ332が「a1」であり、リクエスト先のコンテナ332が「a2」であり、呼び出されるAPIが「/aaaa/bbbb」であり、レスポンスコードが「200」である処理の処理時間の上限は、100[msec]である。
したがって、ログ解析部285は、処理結果データ210−1は、リクエストID「550e8400」が示す処理が正常に処理されたものと判定し、図14のステップS1401へ進む。
また、処理結果データベース210に格納された処理結果データ210−2では、リクエストIDが「550e8400」であり、リクエスト元のコンテナ332が「a4」であり、リクエスト先のコンテナ332が「a3」であり、呼び出されるAPIが「/aaaa/bbbb」であり、レスポンスコードが「200」であり、処理時間が103[msec]である。
これに対し、正常状態データベース230の正常状態データ230−2は、リクエスト元のコンテナ332が「a4」であり、リクエスト先のコンテナ332が「a3」であり、呼び出されるAPIが「/aaaa/bbbb」であり、レスポンスコードが「200」である処理の処理時間の上限は、100[msec]である。
したがって、ログ解析部285は、処理結果データ210−2は、処理時間が上限を超えており、正常に処理されていないと判定し、図14のステップS1409へ進む。
図16は、中間データの一例を示す図である。具体的には、図16は、図14のステップS1409からステップS1412までの処理を説明する図である。
図16(A)は、正常に処理が実行されていないと判定された処理結果データとリクエストIDが一致する処理結果データを抽出した結果の一例を示している。
図15において、処理結果データ210−2は、正常に処理されていないと判定されている。したがって、ログ特定部287は、処理結果データ210−2に含まれるリクエストID「550e8400」を含む処理結果データを抽出し、中間データ171を生成する。
中間データ171は、タイムス端部と、コンテナと、処理時間とを含む。ここでは、ログ特定部287は、図15に示す処理結果データベース210から、リクエストID「550e8400」を含む処理結果データ210−1、210−2、210−3が抽出される。
そして、ログ特定部287は、リクエストIDによって特定される処理を実行したコンテナを示す「リクエスト先」と対応するコンテナと、処理の完了時刻を示すタイムスタンプと、処理時間とを対応付けた中間データ171とする。
この中間データ171から、リクエストID「550e8400」で特定される処理は、コンテナa2、a4、a3によって実行されたことがわかる。
また、中間データ171において、最初に取得された処理結果データのタイムスタンプは、処理結果データ210−1のタイムスタンプであり、最後に取得された処理結果データのタイムスタンプは処理結果データ210−2のタイムスタンプである。
したがって、リクエストID「550e8400」で特定される処理の開始時刻は、処理結果データ210−1のタイムスタンプが示す時刻より、処理結果データ210−1の処理時間である82[msec]前の時刻である。また、リクエストID「550e8400」で特定される処理の終了時刻は、処理結果データ210−2のタイムスタンプが示す時刻である。
ログ特定部287は、リクエストID「550e8400」で特定される処理の開始時刻と終了時刻から、リクエストID「550e8400」で特定される処理の処理にかかった処理時間を算出する。
そして、ログ特定部287は、マイグレーションログデータベース220を参照し、算出した処理時間が示す時間帯の、コンテナ332と仮想マシン330と情報処理装置300との対応付けの一覧を示す中間データ172を生成する。
図16(B)に示す中間データ172は、リクエストID「550e8400」で特定される処理の処理時間において、コンテナa2とコンテナa4は仮想マシンvm1上で動作し、コンテナa3は仮想マシンvm4上で動作していることがわかる。また、仮想マシンvm1は、物理マシンps1上で動作し、仮想マシンvm4は、物理マシンps2上で動作していることがわかる。
本実施形態のログ特定部287は、この中間データ172に含まれる仮想マシンvm1、vm4と、物理マシンps1、ps2について、リクエストID「550e8400」で特定される処理の処理時間中の性能データとログデータを、性能データベース240とログデータベース250から抽出する。
そして、ログ特定部287は、抽出した性能データとログデータのメタ情報に、リクエストID「550e8400」を付与する。そして、ログ特定部287は、リクエストIDがメタ情報に付与された性能データを、異常時性能データベース260へ格納し、リクエストIDがメタ情報に付与されたログデータを異常時ログデータベース270へ格納する。
図17は、異常時性能データベースの一例を示す図である。図17に示す異常時性能データベース260では、項目「メタ情報」の値に、リクエストID「550e8400」が付与されている。
本実施形態では、このように、コンテナと仮想マシンとの対応付けと、仮想マシンと物理マシンとの対応付けとが変化する度に、これらの対応付けを示すデータを生成し、データを生成した時刻と対応付けてマイグレーションログデータベース220に格納する。
また、本実施形態では、リクエストIDによって一意に特定される処理が正常に実行されない場合に、このリクエストIDで特定される処理を実行したコンテナと、処理時間中にコンテナが動作していた仮想マシンと、仮想マシンが動作していた物理マシンとを特定する。
そして、本実施形態では、特定した仮想マシンと物理マシンの処理時間中の性能データとログデータを抽出し、メタ情報にリクエストIDを付与して、異常時性能データベース260と異常時ログデータベース270へ格納する。
異常時性能データベース260、異常時ログデータベース270は、性能データベース240、ログデータベース250とは異なる記憶領域に設けられている。また、性能データベース240、ログデータベース250と比較して、データを保持する期間が長くなるように設定されている。
本実施形態では、このように、正常に実行されなかった処理を特定する情報と、この処理の実行中に、この処理を実行していたコンテナと対応する仮想マシン及び物理マシンの性能データとログデータとを対応付けて蓄積している。
したがって、本実施形態によれば、リクエストIDを選択することで、このリクエストIDで特定される処理を実行したコンテナの位置と、コンテナと関連するOS310、OS331のログデータとを特定することができる。
したがって、本実施形態によれば、例えば、コンテナに障害が発生した場合等に、このコンテナと関連する参照すべきログデータを特定することができる。
図18は、ログデータの表示例を示す図である。図18では、異常時性能データベース260、異常時ログデータベース270に格納された情報の出力例(表示例)を示している。
図18に示す画面181は、例えば、サーバ装置200のディスプレイ(出力装置)に表示されても良いし、情報処理システム100の管理者の端末であって、サーバ装置200と通信が可能な端末に表示されても良い。
画面181では、表示欄183と表示欄184とを有する。表示欄183は、コンテナ332、仮想マシン330、物理マシン300の対応付けを示す情報を表示させる。表示欄184は、表示欄183に表示されたコンテナ332、仮想マシン330、物理マシン300に対する選択に応じて、選択されたもののログデータと性能データとが表示される。
また、本実施形態では、例えば、画面181に、リクエストを選択するための選択欄を表示させても良い。そして、ログ参照処理部280は、選択においてリクエストIDが選択されると、選択部288によりこの選択を受け付けて、ログ特定部287により、選択されたリクエストIDと対応するOSのログデータを特定し、出力部290によって表示欄184に表示させても良い。
また、本実施形態では、マイグレーションログデータベース220を参照し、コンテナによる処理の実行ログデータの一部から、コンテナと関係するOSのログデータを抽出するものとしたが、これに限定されない。
本実施形態のログ特定部287は、例えば、ログデータベース250や異常時ログデータベース270に格納されたOSのログデータや、性能データベース240、異常時性能データベース260に格納された性能データから、コンテナの実行ログデータを抽出することもできる。
以下に、その手順について説明する。
本実施形態のログ特定部287は、例えば、OS310やOS331に不具合が発生した場合等において、異常時ログデータベース270に格納されたOSのログデータの選択を受け付ける。尚、OSのログデータの選択は、例えば、OS310やOS331の正常時の状態を示す正常状態データと比較した結果であっても良いし、情報処理システム100の管理者等によって選択されても良い。
次に、ログ特定部287は、選択されたログデータが情報処理装置300のOS310である場合には、ログデータの処理時刻と、メタ情報に含まれる仮想マシン330とを特定する。次に、ログ特定部287は、マイグレーションログデータベース220を参照し、特定された処理時刻において、特定された仮想マシン330上で動作しているコンテナ332を特定する。そして、ログ特定部287は、ログデータベース250から、特定されたコンテナ332が、特定された処理時刻において実行していた処理の実行ログデータを抽出する。
また、ログ特定部287は、選択されたログデータが仮想マシン330のOS331である場合には、ログデータの処理時刻と、メタ情報に含まれるコンテナ332とを特定する。そして、ログ特定部287は、ログデータベース250から、特定されたコンテナ332が、特定された処理時刻において実行していた処理の実行ログデータを抽出する。
このように、本実施形態では、仮想マシン間のコンテナの移動の履歴と、物理マシン間の仮想マシンの移動の履歴とを示すマイグレーションログを参照することで、コンテナのログデータから、コンテナと関係するOSのログデータを特定して抽出することができる。また、本実施形態では、OSのログデータから、ログデータが示す時間帯に動作していたコンテナのログデータを特定して抽出することができる。
開示の技術では、以下に記載する付記のような形態が考えられる。
(付記1)
コンテナのマイグレーションログを採取するデータ取得部と、
前記コンテナの実行ログの一部が選択されると、前記マイグレーションログを参照して、前記コンテナと関係するオペレーションシステムのログデータと、前記コンテナの位置と、を特定するログ特定部と、を有する情報処理装置。
(付記2)
前記マイグレーションログは、
前記コンテナと、前記コンテナが動作していた仮想マシンとの対応付けと、前記コンテナと前記仮想マシンとが対応付けられていた時刻と、を含むコンテナ位置データと、
前記仮想マシンと、前記仮想マシンが動作していた物理マシンとの対応付けと、前記仮想マシンと前記物理マシンとが対応付けられていた時刻と、を含む仮想マシン位置データと、を含む、付記1記載の情報処理装置。
(付記3)
前記コンテナ位置データは、前記コンテナが動作する仮想マシンが変更される度に取得され、
前記仮想マシン位置データは、前記仮想マシンが動作する物理マシンが変更される度に取得される、付記2記載の情報処理装置。
(付記4)
前記ログ特定部は、
特定された前記ログデータに、前記コンテナの実行ログの一部であるリクエストIDを付与して、記憶部に格納する、付記1乃至3の何れか一項に記載の情報処理装置。
(付記5)
前記ログ特定部は、
前記オペレーションシステムのログデータが選択されると、前記マイグレーションログを参照して、前記オペレーションシステムのログデータに含まれるメタ情報に基づき、選択された前記オペレーションシステムのログデータが取得されたときに動作していたコンテナの実行ログデータを特定して抽出する、付記1乃至4の何れか一項に記載の情報処理装置。
(付記6)
前記オペレーションシステムのログデータは、
前記コンテナと対応する仮想マシン上で実行されるオペレーションシステムのログデータと、前記仮想マシンが動作する物理マシン上で実行されるオペレーションシステムのログデータと、を含む、付記1乃至5の何れか一項に記載の情報処理装置。
(付記7)
前記コンテナの実行ログデータに基づき、前記コンテナによる処理が正常に実行されたか否かの判定において参照される正常状態データを生成する正常状態データ生成部と、
前記実行ログデータと前記正常状態データとを比較して、前記コンテナによる処理が正常に実行されたか否かを判定するログ解析部と、を有し、
前記ログ特定部は、
前記コンテナによる処理が正常に実行されなかった場合に、前記コンテナと関係するオペレーションシステムのログデータと、前記コンテナの位置と、を特定する、付記1乃至6の何れか一項に記載の情報処理装置。
(付記8)
前記ログ特定部によって特定された前記ログデータと、前記コンテナの位置と、を対応付けて表示させる出力部を有する、付記1乃至7の何れか一項に記載の情報処理装置。
(付記9)
コンテナのマイグレーションログを採取し、
前記コンテナの実行ログの一部が選択されると、前記マイグレーションログを参照して、前記コンテナと関係するオペレーションシステムのログデータと、前記コンテナの位置と、を特定する、処理をコンピュータに実行させるログ参照プログラム。