(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023129154
(43)【公開日】2023-09-14
(54)【発明の名称】遠隔運用システム、タイムスタンプ修正方法、およびタイムスタンプ修正プログラム
(51)【国際特許分類】
H04L 43/02 20220101AFI20230907BHJP
H04L 43/106 20220101ALI20230907BHJP
【FI】
H04L43/02
H04L43/106
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022033972
(22)【出願日】2022-03-04
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】000233295
【氏名又は名称】株式会社日立情報通信エンジニアリング
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】村中 延之
(72)【発明者】
【氏名】渡邊 大輔
(72)【発明者】
【氏名】岡田 孝宣
(57)【要約】
【課題】複数の時間系のタイムスタンプが付与された時系列DBのデータの時間系を、要件に応じて修正する。
【解決手段】コンピュータにより、1または複数のインフラ機器を運用するインフラ拠点からネットワークを介して得られたデータを管理する遠隔運用システムであって、インフラ機器から取得したデータに、インフラ拠点またはインフラ機器のタイムスタンプが付与された運用情報を蓄積して保持する時系列DBと、インフラ拠点またはインフラ機器から取得したタイムスタンプと、遠隔運用システムが有する運用拠点の時刻同期サーバのタイムスタンプとの差分を算出する時刻差分検出部と、アプリケーションから受け取った、当該アプリケーションで用いるインフラ機器のデータが従う時間系およびデータの取得範囲の指定を含むデータ取得要求に従って、時系列DBから取得した取得範囲のデータのタイムスタンプと差分とが所定の条件を満たす場合、取得範囲のデータのタイムスタンプを、差分を用いて修正するタイムスタンプ修正部と、を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コンピュータにより、1または複数のインフラ機器を運用するインフラ拠点からネットワークを介して得られたデータを管理する遠隔運用システムであって、
前記インフラ機器から取得したデータに、前記インフラ拠点または前記インフラ機器のタイムスタンプが付与された運用情報を蓄積して保持する時系列DBと、
前記インフラ拠点または前記インフラ機器から取得したタイムスタンプと、前記遠隔運用システムが有する運用拠点の時刻同期サーバのタイムスタンプとの差分を算出する時刻差分検出部と、
アプリケーションから受け取った、当該アプリケーションで用いる前記インフラ機器のデータが従う時間系およびデータの取得範囲の指定を含むデータ取得要求に従って、前記時系列DBから取得した前記取得範囲のデータのタイムスタンプと前記差分とが所定の条件を満たす場合、前記取得範囲のデータのタイムスタンプを、前記差分を用いて修正するタイムスタンプ修正部と、
を有することを特徴とする遠隔運用システム。
【請求項2】
請求項1に記載の遠隔運用システムであって、
前記インフラ機器は、タイムスタンプが付された前記データを出力し、
前記タイムスタンプ修正部は、前記インフラ機器から前記タイムスタンプが付された前記データを取得し、取得した前記データに含まれるタイムスタンプを、前記差分を用いて修正する、
ことを特徴とする遠隔運用システム。
【請求項3】
請求項1に記載の遠隔運用システムであって、
前記タイムスタンプ修正部は、前記アプリケーションで用いる前記インフラ機器のタイムスタンプを修正する基準となるタイムスタンプを出力するインフラ機器を含む前記データ取得要求を受け、前記所定の条件を満たす場合、前記時系列DBから、前記基準となるタイムスタンプを出力するインフラ機器のタイムスタンプと前記時刻同期サーバのタイムスタンプとを含むデータを取得し、両者のタイムスタンプに一定時間以上の隔たりがない場合、前記アプリケーションで用いる前記インフラ機器のタイムスタンプを、前記基準となるタイムスタンプに修正する、
ことを特徴とする遠隔運用システム。
【請求項4】
請求項3に記載の遠隔運用システムであって、
前記タイムスタンプ修正部は、前記両者のタイムスタンプに一定時間以上の隔たりがある場合、前記アプリケーションで用いる前記インフラ機器のタイムスタンプを、前記基準となるタイムスタンプと前記運用拠点の時刻同期サーバのタイムスタンプとの差分を用いて修正する、
ことを特徴とする遠隔運用システム。
【請求項5】
請求項3に記載の遠隔運用システムであって、
前記インフラ拠点は、前記アプリケーションで用いる前記インフラ機器のタイムスタンプと前記時刻同期サーバのタイムスタンプとを対応付けたデータと、前記基準となるタイムスタンプを出力するインフラ機器のタイムスタンプと前記時刻同期サーバのタイムスタンプとを対応付けたデータとを、前記時系列DBに書き込む運用情報取得部、
を有することを特徴とする遠隔運用システム。
【請求項6】
コンピュータにより、1または複数のインフラ機器を運用するインフラ拠点からネットワークを介して得られたデータを管理する遠隔運用システムで行われるタイムスタンプ修正方法であって、
時刻差分検出部が、前記インフラ拠点または前記インフラ機器から取得したタイムスタンプと、前記遠隔運用システムが有する運用拠点の時刻同期サーバのタイムスタンプとの差分を算出し、
タイムスタンプ修正部が、アプリケーションから受け取った、当該アプリケーションで用いる前記インフラ機器のデータが従う時間系およびデータの取得範囲の指定を含むデータ取得要求に従って、前記インフラ機器から取得したデータに、前記インフラ拠点または前記インフラ機器のタイムスタンプが付与された運用情報を蓄積して保持する時系列DBから取得した前記取得範囲のデータのタイムスタンプと前記差分とが所定の条件を満たす場合、前記取得範囲のデータのタイムスタンプを、前記差分を用いて修正する、
ことを特徴とするタイムスタンプ修正方法。
【請求項7】
請求項6に記載のタイムスタンプ修正方法であって、
前記インフラ機器が、タイムスタンプが付された前記データを出力し、
前記タイムスタンプ修正部が、前記インフラ機器から前記タイムスタンプが付された前記データを取得し、取得した前記データに含まれるタイムスタンプを、前記差分を用いて修正する、
ことを特徴とするタイムスタンプ修正方法。
【請求項8】
請求項6に記載のタイムスタンプ修正方法であって、
前記タイムスタンプ修正部が、前記アプリケーションで用いる前記インフラ機器のタイムスタンプを修正する基準となるタイムスタンプを出力するインフラ機器を含む前記データ取得要求を受け、前記所定の条件を満たす場合、前記時系列DBから、前記基準となるタイムスタンプを出力するインフラ機器のタイムスタンプと前記時刻同期サーバのタイムスタンプとを含むデータを取得し、両者のタイムスタンプに一定時間以上の隔たりがない場合、前記アプリケーションで用いる前記インフラ機器のタイムスタンプを、前記基準となるタイムスタンプに修正する、
ことを特徴とするタイムスタンプ修正方法。
【請求項9】
請求項8に記載のタイムスタンプ修正方法であって、
前記タイムスタンプ修正部が、前記両者のタイムスタンプに一定時間以上の隔たりがある場合、前記アプリケーションで用いる前記インフラ機器のタイムスタンプを、前記基準となるタイムスタンプと前記運用拠点の時刻同期サーバのタイムスタンプとの差分を用いて修正する、
ことを特徴とするタイムスタンプ修正方法。
【請求項10】
請求項8に記載のタイムスタンプ修正方法であって、
前記インフラ拠点の運用情報取得部が、前記アプリケーションで用いる前記インフラ機器のタイムスタンプと前記時刻同期サーバのタイムスタンプとを対応付けたデータと、前記基準となるタイムスタンプを出力するインフラ機器のタイムスタンプと前記時刻同期サーバのタイムスタンプとを対応付けたデータとを、前記時系列DBに書き込む、
ことを特徴とするタイムスタンプ修正方法。
【請求項11】
コンピュータに、
1または複数のインフラ機器を運用するインフラ拠点または前記インフラ機器から取得したタイムスタンプと、1または複数のインフラ機器を運用するインフラ拠点からネットワークを介して得られたデータを管理する遠隔運用システムが有する運用拠点の時刻同期サーバのタイムスタンプとの差分を算出する処理と、
アプリケーションから受け取った、当該アプリケーションで用いる前記インフラ機器のデータが従う時間系およびデータの取得範囲の指定を含むデータ取得要求に従って、前記インフラ機器から取得したデータに、前記インフラ拠点または前記インフラ機器のタイムスタンプが付与された運用情報を蓄積して保持する時系列DBから取得した前記取得範囲のデータのタイムスタンプと前記差分とが所定の条件を満たす場合、前記取得範囲のデータのタイムスタンプを、前記差分を用いて修正する処理と、
を実行させることを特徴とするタイムスタンプ修正プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、遠隔運用システム、タイムスタンプ修正方法、およびタイムスタンプ修正プログラムに関する。
【背景技術】
【0002】
ネットワークの仮想化やSDN(Software Defined Networking)の実用化が広く浸透しており、それらを活用することによって業務を支えるITインフラは、職場での人員変更や機器導入などに対して広域かつ詳細な項目の変更を柔軟かつ迅速に行えるようになっている。一方で、ITインフラの管理項目は肥大化・複雑化しており、導入や初期設定のみでは無く、継続運用や稼働運用にも多大な管理工数がかかるようになっている。近年では、こうしたITインフラの管理のような主要業務以外のアウトソースするニーズが高まっており、顧客にITインフラ環境を提供するのみでは無く継続運用や稼働運用も一体的に担うマネージドサービスが注目されている。
【0003】
このような背景を受けて、マネージドサービスを提供するための基盤の開発も各社で行われている。マネージドサービスを提供するマネージドサービスプロバイダーの要件として、各顧客のITインフラを一元的に管理するため、顧客のITインフラの拠点ごとに異なる機器から収集される様々なフォーマットのデータを一元的に管理して運用に活用する必要がある。そのため、タイムスタンプを主キーとすることで時間に対する状況変化が確認しやすく、またタイムスタンプ以外のデータの型をあまり問わずにデータを保存可能な、時系列DBの活用が注目されている。
【0004】
各所から取得してきたデータを整形して時系列DBに保存するためのベストプラクティスとしては、時系列DBであるElasticsearch、データ収集ツールであるLogstashあるいはBeats、時系列DBのデータを視覚化するKibanaといったOSS(Open Source Software)を組み合わせたELKスタックが広く活用されており、データ収集ツールと時系列DBを分散配置することで複数の拠点からデータを効率的に収集する。また、時系列DBに保存するデータの主キーであるタイムスタンプは、データ収集ツールがデータを整形する際に付与することとなる。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
時系列DBを使用するにあたり、データに付与したタイムスタンプの信頼性が重要となる。先行技術は制御装置に組み込まれた時系列DBのデータのタイムスタンプの信頼度を上げるため、NTP(Network Time Protocol)の時刻修正のログを活用してタイムスタンプを修正する方法を示している。
【0007】
しかし、本件のようにマネージドサービスにおいて、複数顧客のITインフラ拠点より多様なデータを収集し時系列DBで一元管理を行う場合、マネージドサービスを行う運用拠点と、顧客のITインフラ拠点の時間系が必ずしも合っているとは限らず、またマネージドサービスを担った場合でも顧客のITインフラ拠点の全機器の時間系を、運用拠点に合わせるのは大規模な変更であり実現できないことが多い。また、時間の同期がとれていないITインフラ機器が運用対象となることもある。タイムスタンプはデータ収集ツールが付与され、データ収集ツールは顧客のITインフラ拠点で稼働することを想定すると、時系列DBのタイムスタンプは、複数の顧客のITインフラ拠点の時間系が混在することとなる。ITインフラの運用においては、タイムスタンプを正しい時刻に合わせるのみでは無く、アラート時刻の突合せ対象を行う場合などは突合せ先の時間系に合わせて修正するなど運用に応じた修正が求められる。
【0008】
そこで本発明の一側面では、複数の時間系のタイムスタンプが付与された時系列DBのデータの時間系を、要件に応じて修正することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の一態様にかかる遠隔運用システムは、コンピュータにより、1または複数のインフラ機器を運用するインフラ拠点からネットワークを介して得られたデータを管理する遠隔運用システムであって、前記インフラ機器から取得したデータに、前記インフラ拠点または前記インフラ機器のタイムスタンプが付与された運用情報を蓄積して保持する時系列DBと、前記インフラ拠点または前記インフラ機器から取得したタイムスタンプと、前記遠隔運用システムが有する運用拠点の時刻同期サーバのタイムスタンプとの差分を算出する時刻差分検出部と、アプリケーションから受け取った、当該アプリケーションで用いる前記インフラ機器のデータが従う時間系およびデータの取得範囲の指定を含むデータ取得要求に従って、前記時系列DBから取得した前記取得範囲のデータのタイムスタンプと前記差分とが所定の条件を満たす場合、前記取得範囲のデータのタイムスタンプを、前記差分を用いて修正するタイムスタンプ修正部と、を有することを特徴とする遠隔運用システムとして構成される。
【発明の効果】
【0010】
本発明の一態様によれば、複数の時間系のタイムスタンプが付与された時系列DBのデータの時間系を、要件に応じて修正することができる。
【図面の簡単な説明】
【0011】
【
図4】時系列DBデータ取得時のタイムスタンプ修正のシーケンス図
【
図5】時系列DBデータ取得時のタイムスタンプ修正のフローチャート
【
図6】個別取得データのタイムスタンプ修正のシーケンス図
【
図7】個別取得データのタイムスタンプ修正のフローチャート
【
図8】時系列DBへタイムスタンプ修正情報しデータ格納するシーケンス図
【
図9】時系列DBにタイムスタンプ修正情報がある場合の、時系列DBデータ取得時のタイムスタンプ修正のフローチャート
【
図10】時系列DBのサブデータセットを作成するシステム構成図
【
図11A】時系列DBのサブデータセットを作成するシーケンス図
【
図11B】時系列DBのサブデータセットを作成するシーケンス図
【発明を実施するための形態】
【0012】
以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
【0013】
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
【0014】
以下の説明では、「データベース」、「テーブル」、「リスト」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いた場合、これらについてはお互いに置換が可能である。
【0015】
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
【0016】
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit)、GPU(Graphics Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGA(Field-Programmable Gate Array)やASIC(Application Specific Integrated Circuit))を含んでいてもよい。
【0017】
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
【0018】
また、以下の各実施例で説明する運用アプライアンス、時刻調整アプライアンス、運用アプリ群、NTPサーバ等は、例えば、
図14(コンピュータ概略図)に示すような、CPU1601と、メモリ1602と、HDD(Hard Disk Drive)等の外部記憶装置1603と、CD(Compact Disk)やUSBメモリ等の可搬性を有する記憶媒体1608に対して情報を読み書きする読書装置1607と、スキャナ、キーボード、マウスといった入力装置1606と、ディスプレイ等の出力装置1605と、通信ネットワークに接続するためのNIC(Network Interface Card)等の通信装置1604と、これらを連結するシステムバス等の内部通信線(システムバスという)1609と、を備えた一般的なコンピュータ1600により実現、あるいは格納できる。
【0019】
以下の各実施例に示すシステムや装置に記憶され、あるいは処理に用いられる様々なデータ(例えば、運用アプライアンス110の時系列DB111、時刻調整アプライアンス120の時刻差分記録部122等)は、CPU1601がメモリ1602または外部記憶装置1603から読み出して利用することにより実現可能である。また、各システムや装置が有する各機能部(例えば、時刻調整アプライアンス120の拠点・装置時刻差分検出部121、タイムスタンプ修正部123、運用エージェント140の運用情報取得部141、時刻差分検出部142等)は、CPU1601が外部記憶装置1603に記憶されている所定のプログラムをメモリ1602にロードして実行することにより実現可能である。
【0020】
上述した所定のプログラムは、読書装置1607を介して記憶媒体1608から、あるいは、通信装置1604を介してネットワークから、外部記憶装置1603に記憶(ダウンロード)され、それから、メモリ1602上にロードされて、CPU1601により実行されるようにしてもよい。また、読書装置1607を介して、記憶媒体1608から、あるいは通信装置1604を介してネットワークから、メモリ1602上に直接ロードされ、CPU1601により実行されるようにしてもよい。
【0021】
以下では、本システムを構成するアプライアンスやエージェント等が、ある1つのコンピュータにより構成される場合を例示するが、これらの機能の全部または一部が、クラウドのような1または複数のコンピュータに分散して設けられ、ネットワークを介して互いに通信することにより同様の機能を実現してもよい。
【実施例0022】
本実施例では、運用拠点にて遠隔のインフラ拠点の各インフラ機器からの情報を収集して時系列DBに保存するとともに、運用拠点とインフラ拠点の各インフラ機器との時刻差分を取得して記録し、時系列DBからデータを取得する際にデータ利用要件に応じてタイムスタンプを修正する。
【0023】
【0024】
実施例1は、1つの運用拠点101、1つまたはそれ以上のインフラ拠点102、それらの間を繋ぐ管理ネットワーク103を有する。管理ネットワーク103としてはVPN(Virtual Private Network)や専用線のような安全に拠点間を接続するネットワークを用いてよい。
【0025】
運用拠点101には、運用アプライアンス110、時刻調整アプライアンス120、運用アプリ群130、NTPサーバ124が動作している。アプライアンスはHW(Hardware)装置あるいはサーバ装置上でHW装置と同様な機能を仮想的に動作させるものとなる。このように、運用アプライアンス110、時刻調整アプライアンス120を含む遠隔運用システムが、管理ネットワーク103を介してインフラ拠点102に接続されている。
【0026】
運用アプライアンス110は、時系列DB111、メッセージハブ112、運用ダッシュボード113を有する。
【0027】
時刻調整アプライアンス120は、拠点・装置時刻差分検出部121、時刻差分記録部122、タイムスタンプ修正部123を有する。
【0028】
運用アプリ群130は、1つまたはそれ以上の運用アプリを含む。本実施例では、一例として、NW(Network)利用料計測アプリ131、アラート情報収集アプリ132、トラブルシュートアプリ133を示す。
【0029】
インフラ拠点102には、ITインフラ150、運用エージェント140、NTPサーバ143が動作している。ITインフラ150としては、複数のインフラ機器150が動作している。
【0030】
運用エージェント140は、運用情報取得部141、時刻差分検出部142を有する。
【0031】
まず、本例での運用情報の取得に関して述べる。インフラ拠点102にて、運用エージェント140の運用情報取得部141は、ITインフラ150のインフラ機器150-1、150-2、・・・より運用情報を取得し、データを整形した後、管理ネットワーク103を介してメッセージハブ112に整形後のデータを送信する。運用情報取得部141は、Logstashのようなデータ収集ツールを使用し、インフラ機器150からSNMP(Simple Network Management Protocol)、syslog、telnet、等のプロトコルで運用に必要なイベントやアラート情報を取得する。そして、運用情報取得部141は、インフラ拠点102のNTPサーバ143に従ってタイムスタンプを付与し、取得した情報のフォーマットを時系列DB111に挿入できるJSON(JavaScript Object Notification)のような型に整形し、REST、AMQP、Kafka等のメッセージハブが対応するプロトコルで送信する。メッセージハブ112はそのデータを受け取り時系列DB111に保存する。運用ダッシュボード113は、時系列DB111の内容を元に運用情報を表示する。このように、運用情報には、上記イベントやアラート情報と、これらに対応付けて付与されたタイムスタンプとが含まれる。また、時系列DB111には、複数の時間系(例えば、インフラ拠点102-1の時間系およびインフラ拠点102-2の時間系)のタイムスタンプが付与されている。
【0032】
次に、本例での時刻差分情報の取得に関して述べる。インフラ拠点102にて、運用エージェント140の時刻差分検出部142は、ITインフラ150のインフラ機器150-1、150-2、・・・から機器設定時刻、NTPサーバ143から拠点の時刻を収集し、管理ネットワーク103を介して、上記機器設定時刻と上記拠点の時刻とを含む時刻情報を、拠点・装置時刻差分検出部121に送信する。拠点・装置時刻差分検出部121は、前記時刻情報を受信し、NTPサーバ124から運用拠点の時刻情報を取得する。拠点・装置時刻差分検出部121は、両者の時刻差分を算出し、時刻差分情報として時刻差分記録部122に保存する。
【0033】
最後に、本例での運用アプリ群130からの時系列DB111の情報参照に関して述べる。運用アプリ群130として、本例ではNW利用量計測アプリ131、アラート情報収集アプリ132、トラブルシュートアプリ133を例として挙げている。これらは、いずれも稼働情報をレポートしたり障害発生時に原因を究明したりするために、時系列DB111に格納された運用情報を取得する。タイムスタンプ修正部123は、前記情報参照のリクエストを運用アプリ群130より受け付け、時刻差分記録部122の情報を参照し、アプリケーションの要件に応じてタイムスタンプを修正し、修正後のタイムスタンプを付与したデータを送信する等して、上記リクエストに対して応答する。
【0034】
図2は、時刻差分情報の取得および記録の一例を示すシーケンス図である。
【0035】
まず、インフラ拠点102の時刻差分検出部142は、時刻差分検出シーケンスの開始のトリガをかける。トリガとしては、NTP時刻修正等と同様に、一定時間毎の他、アプリ要件のレポートの起点時刻となった場合や、運用イベントの多数発生が予測されるメンテナンスの直前など、様々な例が考えられる(201)。
【0036】
次に、時刻差分検出部142は、ITインフラ150の各インフラ機器150-1、150-2、・・・より機器設定時刻を取得する(202)。
【0037】
次に、時刻差分検出部142は、NTPサーバ143からインフラ拠点102の時刻を取得する(203)。
【0038】
次に、時刻差分検出部142は、運用拠点101の拠点・装置時刻差分検出部121に、ステップ202で取得した機器設定時刻と、ステップ203で取得したインフラ拠点102の時刻を、インフラ拠点102の時刻情報として送信する(204)。
【0039】
次に、拠点・装置時刻差分検出部121は、NTPサーバ124より運用拠点101の時刻を、運用拠点の時刻情報として取得する(205)。
【0040】
最後に、拠点・装置時刻差分検出部121は、ステップ202、ステップ203、ステップ205で取得した時刻情報から、運用拠点101とインフラ拠点102と各インフラ機器150の時刻差分306を算出し、時刻差分情報として時刻差分記録部122に保存する(206)。
【0041】
【0042】
時刻差分記録部122に記録されるデータはテーブル形式で管理され、運用拠点時刻301、インフラ拠点302、機器ID303、機器設定時刻304、インフラ拠点時刻305、時刻差分306の列を保持する。
【0043】
本例では、拠点・装置時刻差分検出部121が、時刻差分306として、運用拠点時刻301とインフラ拠点時刻305の差分を算出して記録するが、NTPが無いなどインフラ拠点時刻305が取得できない場合は機器設定時刻304を代わりに使用して、時刻差分306を算出する。
【0044】
各行311-314・・・は、各インフラ拠点102の各インフラ機器150からの時刻差分の取得情報を示す。行311、312は、インフラ機器150がNTPサーバ143と同期されており、おおよその時刻同期が取れている例を示している。例えば、行311では、運用拠点時刻301である「2021/08/31 09:00:00.111」と、インフラ拠点時刻305である「2021/08/31 09:00:01.500」との間の時刻差分306は「+0.1389」であり、両者の時刻は略同期がとられていることを示している。
【0045】
また、行313、314は、インフラ拠点102にNTPサーバ143が無く、インフラ機器150の機器設定時刻304が分単位でずれている例を示している。例えば、行313では、運用拠点時刻301である「2021/08/31 09:30:00.122」と、機器設定時刻304である「2021/08/31 09:40:00.222」との間の時刻差分306は「+10:00.100」であり、両者の時刻は同期がとられていないことを示している。
【0046】
なお、同インフラ機器150との時刻差分情報であっても、算出タイミングによって時刻差分は変わると想定されるため、古い情報もすぐには消去せず継続して保持する。
【0047】
図4は、時系列DBデータ取得時にタイムスタンプ修正を行う一例を示すシーケンス図である。
【0048】
まず、運用アプリ群130は、タイムスタンプ修正部123に対してデータ取得クエリを発行する(401)。
【0049】
次に、タイムスタンプ修正部123は、時系列DB111より運用情報を含むデータを取得し(402)、時刻差分記録部122より時刻差分306を含む時刻差分情報を取得し(403)、データのタイムスタンプを修正し(404)、修正後のタイムスタンプを付与したデータを返答する(405)。
【0050】
図5は、
図4の例で示したタイムスタンプ修正部123(ステップ404)のフローチャートの一例である。
【0051】
最初に、タイムスタンプ修正部123は、運用アプリ群130より、時系列DB111のデータ取得クエリを受信する。本例ではRESTでの取得クエリを示しており、当該クエリが、URLのパスでインフラ拠点、”query”キーで装置名や時間の指定、”term”キーでデータが従う時間系(本例では運用拠点101を表す”monitoring_base”)、要求精度(本例では”0.1sec”)、修正方法(本例ではタイムスタンプを置換する”replace”)を条件としていることを示している(501)。なお、ステップ501において、”gt”は「Greater than」を表し、”lt”は「Less than」を表す。また、「10d」、「9d」は、それぞれ、「10days」、「9days」をあらわし、この例では、10日前から現在までの1日間のデータを取得するクエリであることを示している。
【0052】
続いて、タイムスタンプ修正部123は、ステップ501で受信したクエリの”query”キーの内容に従い、時系列DB111よりデータを取得する(502)。例えば、タイムスタンプ修正部123は、時系列DB111に格納されている運用情報に含まれるタイムスタンプを示す{“timestamp”:“2021/09/10 10:10:10.001”}や当該時点のイベントやアラート情報を示す“info”:{......}}を取得する。このようなデータが、10日前から現在までの1日間にわたり取得される。この例におけるデータには、例えば、当該データの従う時間系として、インフラ拠点102-1のインフラ機器150-1を表す”infrabase_1_equipment_1”が含まれているものとする。
【0053】
続いて、タイムスタンプ修正部123は、ステップ501で受信したクエリが、データを一定期間まとめて返答するクエリでないか、あるいはまとめる期間がクエリが要求する精度よりも短いか否かを判定する(503)。これは、時系列DB111は必ずしも1件1件個別データを返答する用途では無いためである。例えば、可視化目的等の場合は、1時間ごとに取得された複数のイベントやアラート情報を含むデータについて、データ数や平均値や中間値といった概要を算出した上でその結果をクエリに対する回答とする場合がある。このような場合には、データをまとめて返答する場合、かつまとめ期間が要求精度より長い場合は、タイムスタンプ修正を行う必要が無いと判断できる。
【0054】
つまり、ステップ503では、ステップ501で受信したクエリが、運用アプライアンス110が時系列DB111のデータを一定期間まとめて返答することを要求する内容である場合(条件Aを満たす場合)、あるいは運用アプライアンス110が時系列DB111のデータをまとめている場合において、その期間が上記クエリで要求された精度よりも短くない場合(条件Bを満たす場合)、タイムスタンプ修正部123は、タイムスタンプ修正を行う必要がないと判断し、ステップ506に進む(503;YES)。
【0055】
一方、ステップ501で受信したクエリが、上記条件Aを満たさない場合、あるいは上記条件Bを満たさない場合、タイムスタンプ修正部123は、タイムスタンプ修正を行う必要があると判断し、ステップ504に進む(503;NO)。上記条件Aや条件Bについては、ステップ501やステップ502と同様、クエリ内で指定されている。
【0056】
続いて、タイムスタンプ修正部123は、ステップ502で取得したデータのうち、クエリで指定された条件を満たすタイムスタンプの時間付近の時刻差分306を含む時刻差分情報を、時刻差分記録部122から取得する(504)。本例ではステップ501で受信されたクエリに従い、運用拠点101とインフラ拠点102との時刻差分306を取得する。ここでは、時刻差分情報「{“2021/09/10AM”:{“equipment_1”:”+1.1000s”}}」が取得されたことを示している。該当時間付近に複数の時刻差分が記録されている場合は、平均値や中間値を算出し、最も確からしい時刻差分を算出する。また、本例ではJSONの形式で時刻差分を取得しているが、応答のデータ型はそれに限るものでは無い。
【0057】
続いて、タイムスタンプ修正部123は、ステップ502で取得したデータに含まれるタイムスタンプの時間系(本例では、インフラ拠点102-1のインフラ機器150-1)が、ステップ501のクエリで提示された従う時間系(本例では運用拠点101)と異なっており、時刻差分が要求精度よりも大きいか否かを判定することにより、ステップ502で取得したデータに含まれるタイムスタンプの修正有無を確認する(505)。
【0058】
例えば、タイムスタンプ修正部123は、運用エージェント140が、管理ネットワーク103を介して運用拠点101のNTPサーバ124に従っていた場合などは、最初から運用拠点101の時間系のタイムスタンプが付与されている可能性がある。例えば、タイムスタンプ修正部123は、ステップ502で取得したデータに記録されている、従う時間系に関する情報「infrabase_1」(インフラ拠点102の識別情報)などといった情報を読み取る。タイムスタンプ修正部123は、読み取った上記従う時間系に関する情報と、ステップ501で受信したクエリで指定された従う時間系に関する情報(例えば、運用拠点101を表す”monitoring_base”)とが異なるか否かを判定し、両者が異なると判定した場合、さらに、上記ステップ502で取得したデータのタイムスタンプと、運用拠点101のNTPサーバ124の時刻との差分、すなわち運用拠点101とインフラ拠点102との時刻差分306が、ステップ501で受信したクエリで指定された要求精度より大きいことを確認する。なお、上記の例では、両者は一致しないため、ステップ507に進むこととなる。
【0059】
つまり、ステップ505では、タイムスタンプ修正部123は、上記従う時間系に関する情報と、ステップ501で受信したクエリで指定された従う時間系に関する情報とが異なるという条件を満たす場合(条件Cを満たす場合)、および当該条件Cを満たす場合において、さらに運用拠点101とインフラ拠点102との時刻差分306が、ステップ501で受信したクエリで指定された要求精度より大きいという条件を満たす場合(条件Dを満たす場合)、ステップ507に進む(505;YES)。一方、ステップ505において、上記条件Cおよび上記条件Dのいずれも満たさない場合、タイムスタンプ修正部123は、タイムスタンプ修正を行う必要がないと判断し、ステップ506に進む(505;NO)。
【0060】
続いて、タイムスタンプ修正部123は、ステップ505において、タイムスタンプの修正が必要と判断した場合、ステップ501で受信したクエリで指定された修正方法に従ってタイムスタンプを修正し、修正後のタイムスタンプを付与したデータを、運用アプリ群130に返答する(507)。
【0061】
本例では、ステップ501で受信したクエリで指定された修正方法が”replace”であるため、タイムスタンプ修正部123は、例えば、ステップ502で取得したデータのタイムスタンプを示す{“timestamp”:“2021/09/10 10:10:10.001”}に、ステップ504で取得した運用拠点101とインフラ拠点102との時刻差分306を示す{“2021/09/10AM”:{ “equipment_1”:”+1.1000s”}}」を加えた修正後のタイムスタンプ{“timestamp” : “2021/09/10 10:10:11.101” }を算出する。そして、タイムスタンプ修正部123は、上記算出して得られた修正後のタイムスタンプを有したデータを、運用アプリ群130に送信する。
【0062】
なお、本例では、タイムスタンプを置き換えているが、他に修正前と修正後のタイムスタンプを、別キー名を使用して併記したり、オフセットを、別キーを用いて追加するなどの修正方法も想定される。
【0063】
タイムスタンプ修正部123は、タイムスタンプを修正する必要が無いと判定した場合は、ステップ502で取得したデータをそのまま運用アプリ群130に返答する(506)。
本実施例では、時系列DB111のデータのみでは無く、運用アプリ群130が個別に各インフラ拠点102のインフラ機器150より取得したログ等の情報のタイムスタンプを、別の時間系に修正する。
まず、運用アプリ群130は、個別にインフラ機器150よりタイムスタンプが付されたログ等の情報を取得する(601)。本例では、運用アプリ群130は、例えば、上記ログ等の情報として、インフラ機器150から「2021/09/11 20:20:10.002 “info...”」を取得する。
運用アプリ群130が直接的にインフラ機器150からログ等の情報を取得する理由は以下の通りである。すなわち、時系列DB111に保存される情報は、運用エージェント140の運用情報取得部141が取得することとなる。運用情報取得部141は、インフラ機器150の負荷や時系列DB111の容量を考慮して全ての情報を送るわけでは無く、基本的に運用において優先度が高い情報に限定して送信する。しかしながら、障害対応時や保守対応の時にはそれ以外の詳細情報も必要となるため、運用情報取得部141は、場合に応じて個別に情報を取得する。
次に、運用アプリ群130は、タイムスタンプの修正要求をタイムスタンプ修正部123に送る(602)。ステップ601で取得した情報のタイムスタンプは、インフラ機器150の機器設定時刻で付与されている。しかし、例えば、他のインフラ機器150-nから取得したログ情報と突合せを行ったり、運用拠点101で付近にイベントとの順序関係を検証する場合に、時間系の修正が必要となる。このため、運用アプリ群130は、上記修正要求をタイムスタンプ修正部123に送信している。
次に、タイムスタンプ修正部123は、時刻差分記録部122より時刻差分情報を取得し(603)、タイムスタンプの修正を行い(604)、修正後のタイムスタンプを付与したデータを送信する等して、修正後のタイムスタンプを返答する(605)。
最初に、タイムスタンプ修正部123は、運用アプリ群130より、タイムスタンプ修正要求を受信する(701)。本例ではRESTでの修正要求を示しており、URLのパスでタイムスタンプ修正要求、”term”キーで元々の時間系(ステップ601で取得した情報の時間系。本例では”equipment_1_1”)、修正後に従う時間系(本例では運用拠点101を表す”monitoring_base”)、要求精度(本例では”0.1sec”)を示している。また”timestamp”キーで修正するタイムスタンプを指定している。本例では、タイムスタンプ修正部123は、例えば、ステップ601で取得した上記ログ等の情報に含まれるタイムスタンプを示す「2021/09/11 20:20:10.002」を含む、上記タイムスタンプ修正要求を受信する。
次に、ステップ504と同様に、タイムスタンプ修正部123は、時刻差分記録部122より、ステップ701で修正要求を受けたタイムスタンプの時間付近の時刻差分306を含む時刻差分情報を取得する(702)。本例ではステップ701で受信された上記タイムスタンプ修正要求に従い、上記ログ等の情報に含まれるタイムスタンプで示される時刻を含む所定範囲内(例えば、5分間)の時刻に対応する時刻差分306を、時刻差分記録部122から取得する。この例では、タイムスタンプ修正部123が、時刻差分306として、「{“2021/09/11PM”:{“equipment_1”:”+2.1000s”}}」を取得したことを示している。
次に、タイムスタンプ修正部123は、ステップ701で受信した修正要求の要求精度よりも、ステップ702で取得した時刻差分の方が大きいか否かを判定することにより、タイムスタンプの修正要否を判断する(703)。すなわち、タイムスタンプ修正部123は、ステップ701で受信した修正要求の要求精度よりも、ステップ702で取得した時刻差分の方が大きいと判定した場合、要求精度を満たしていないため修正が必要であると判断し、ステップ704に進む(703;YES)。一方、タイムスタンプ修正部123は、ステップ701で受信した修正要求の要求精度よりも、ステップ702で取得した時刻差分の方が大きくないと判定した場合、要求精度を満たしているため修正は不要であると判断し、ステップ705に進む(703;NO)。
次に、タイムスタンプ修正部123は、タイムスタンプの修正が必要であると判定した場合は、ステップ701で受信した修正要求を満たすようにタイムスタンプを修正し、修正後のタイムスタンプを付与したデータを、運用アプリ群130に返答する(704)。
本例では、タイムスタンプ修正部123は、例えば、ステップ701で受信した修正要求に含まれるタイムスタンプ「“2021/09/11 20:20:10.002“」に対して、ステップ702で取得した時刻差分「{“2021/09/11PM”:{ “equipment_1”:”+2.1000s”}}」を加算し、修正後のタイムスタンプ「“2021/09/11 20:20:12.102“」を算出する。そして、タイムスタンプ修正部123は、上記算出して得られた修正後のタイムスタンプを有したデータを、運用アプリ群130に送信する。なお、本例では、修正後のタイムスタンプのみを返しているが、修正前後のタイムスタンプを併記したり、行数等の情報を付与することで、扱いを容易化する処理も想定される。