(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-23
(45)【発行日】2023-01-31
(54)【発明の名称】情報処理装置、ログ制御プログラム、およびログ制御方法
(51)【国際特許分類】
G06F 11/34 20060101AFI20230124BHJP
G06F 11/30 20060101ALI20230124BHJP
【FI】
G06F11/34 176
G06F11/30 165
G06F11/30 140A
(21)【出願番号】P 2019102944
(22)【出願日】2019-05-31
【審査請求日】2022-02-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(72)【発明者】
【氏名】板倉 宏太
(72)【発明者】
【氏名】岡林 美和
(72)【発明者】
【氏名】山岡 久俊
(72)【発明者】
【氏名】高橋 英一
(72)【発明者】
【氏名】松井 一樹
(72)【発明者】
【氏名】松本 達郎
【審査官】杉浦 孝光
(56)【参考文献】
【文献】特開2017-111689(JP,A)
【文献】特開2013-206117(JP,A)
【文献】特開2014-229183(JP,A)
【文献】特開2009-251747(JP,A)
【文献】米国特許出願公開第2017/0277615(US,A1)
【文献】米国特許出願公開第2011/0067008(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/28-11/34
(57)【特許請求の範囲】
【請求項1】
分散ストリームデータ処理基盤において実行される複数のタスクのそれぞれのタスクごとに、障害の発生のし易さと関連する指標に基づいてログスコアを取得する取得部と、
前記複数のタスクのうちのそれぞれのタスクについて、前記タスクのログスコアと、前記タスクの上流に位置する上流タスクおよび前記タスクの下流に位置する下流タスクの少なくとも一方のログスコアとに基づく出力頻度で前記タスクのログメッセージを出力する出力部と、
を含む、情報処理装置。
【請求項2】
前記複数のタスクにおいて、第1のタスクの下流には第1の下流タスクが配置されており、および第2のタスクの下流には、前記第1の下流タスクと第2の下流タスクが配置されており、
前記出力部は、前記第1の下流タスクのログスコアが前記第2の下流タスクよりも高い場合に、前記第1のタスクのログメッセージを、前記第2のタスクよりも高い出力頻度で出力する、ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記複数のタスクにおいて、第3のタスクの上流には第1の上流タスクが配置されており、および第4のタスクの上流には、前記第1の上流タスクと第2の上流タスクが配置されており、
前記出力部は、前記第1の上流タスクのログスコアが前記第2の上流タスクよりも高い場合に、前記第3のタスクの前記ログメッセージを、前記第4のタスクよりも高い出力頻度で出力する、ことを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記出力部は、前記分散ストリームデータ処理基盤において出力されるログメッセージの総数を所定の数に近づけるように設定されている補正値に基づいて、前記タスクのログメッセージの出力頻度を調節する、ことを特徴とする請求項1に記載の情報処理装置。
【請求項5】
所定期間に、前記複数のタスクのそれぞれにおいて出力された前記ログメッセージの出力数に基づいて、前記補正値を決定する決定部を更に備える、請求項4に記載の情報処理装置。
【請求項6】
分散ストリームデータ処理基盤において実行される複数のタスクのそれぞれのタスクごとに、障害の発生のし易さと関連する指標に基づいてログスコアを取得し、
前記複数のタスクのうちのそれぞれのタスクについて、前記タスクのログスコアと、前記タスクの上流に位置する上流タスクおよび前記タスクの下流に位置する下流タスクの少なくとも一方のログスコアとに基づく出力頻度で前記タスクのログメッセージを出力する、
ことを含む、情報処理装置が実行するログ制御方法。
【請求項7】
分散ストリームデータ処理基盤において実行される複数のタスクのそれぞれのタスクごとに、障害の発生のし易さと関連する指標に基づいてログスコアを取得し、
前記複数のタスクのうちのそれぞれのタスクについて、前記タスクのログスコアと、前記タスクの上流に位置する上流タスクおよび前記タスクの下流に位置する下流タスクの少なくとも一方のログスコアとに基づく出力頻度で前記タスクのログメッセージを出力する、
処理を情報処理装置に実行させるためのログ制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、ログ制御プログラム、およびログ制御方法に関する。
【背景技術】
【0002】
近年、IoT(Internet of Things)機器の増加などにより、日々大量のデータが継続的に発生しており、これらの継続的に発生するデータを入力として処理を実行するストリーミング処理技術が開発されている。こうしたストリーミング処理を実行する分散ストリームデータ処理基盤では、複数のタスクが連結され、大量のデータが、それらタスクに次々と投入されて処理されていく。開発者は、例えば、各タスクの開発時に、ログを出力するコードを記述しておくことで、各タスクごとおよび処理経路ごとにログを出力させることができる。
【0003】
これに関し、ログの出力に関連する技術が知られている(例えば、特許文献1および特許文献2)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2009-110156号公報
【文献】特開2013-206117号公報
【文献】特開2014-81811号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、開発者は、タスクのログをどの程度出力させるかを開発時に決定している。そのため、タスクの動作時の状態の予測が難しく、過剰にログを取得して分散ストリームデータ処理基盤の負荷を高めてしまったり、或いは十分なログを取得できず、後の検証が難しくなってしまったりすることがある。
【0006】
1つの側面では、本発明は、効率的にログを収集することを目的とする。
【課題を解決するための手段】
【0007】
本発明の一つの態様の情報処理装置は、分散ストリームデータ処理基盤において実行される複数のタスクのそれぞれのタスクごとに、障害の発生のし易さと関連する指標に基づいてログスコアを取得する取得部と、複数のタスクのうちのそれぞれのタスクについて、タスクのログスコアと、タスクの上流に位置する上流タスクおよびタスクの下流に位置する下流タスクの少なくとも一方のログスコアとに基づく出力頻度でタスクのログメッセージを出力する出力部と、を含む。
【発明の効果】
【0008】
効率的にログを収集することができる。
【図面の簡単な説明】
【0009】
【
図1】例示的な分散ストリームデータ処理基盤を示す図である。
【
図2】実施形態に係るログの出力頻度の決定を例示する図である。
【
図3】実施形態に係る分散ストリームデータ処理基盤を例示する図である。
【
図4】実施形態に係る情報処理装置のブロック構成を例示する図である。
【
図5】実施形態に係るログの出力頻度の決定について更に例示する図である。
【
図6】実施形態に係る分散ストリームデータ処理基盤の全体のログ量の調整を例示する図である。
【
図7】実施形態に係るタスクの実行処理の動作フローを例示する図である。
【
図8】実施形態に係るタスク間のメッセージを例示する図である。
【
図9】実施形態に係るスコア情報を例示する図である。
【
図10】実施形態に係るタスク実行情報を例示する図である。
【
図11】実施形態に係るログ計数情報を例示する図である。
【
図12】実施形態に係るログスコア補正メッセージを例示する図である。
【
図13】実施形態に係る集計依頼応答メッセージを例示する図である。
【
図14】実施形態に係るログスコアの計算処理を例示する図である。
【
図15】実施形態に係るログ出力判定処理を例示する図である。
【
図16】実施形態に係るログ量の最適化処理の動作フローを例示する図である。
【
図17】実施形態に係る情報処理装置および管理装置を実現するためのコンピュータのハードウェア構成を例示する図である。
【発明を実施するための形態】
【0010】
以下、図面を参照しながら、本発明のいくつかの実施形態について詳細に説明する。なお、複数の図面において対応する要素には同一の符号を付す。
【0011】
上述のように、分散ストリームデータ処理基盤では、複数のタスクが連結され、それらタスクに大量のデータが投入されて次々と処理されていく。
図1は、例示的な分散ストリームデータ処理基盤を示す図である。分散ストリームデータ処理基盤では、複数のタスク101が連結されており、センサなどで生成されたデータは、所定のルーティングに従ってタスク101に入力され処理されていく。
【0012】
ここで、タスク101の開発者は、例えば、タスク101で実行する処理のプログラムを記述する際に、ログを出力するコードを記述しておくことで、各タスクごとおよび処理経路ごとにログを出力させることができる。そして、タスク101の処理に異常が発生した際などに、出力させたログのデータを利用して原因を追究することが可能である。
【0013】
しかしながら、開発者は、例えば、タスク101にログをどの程度出力させるかを開発時に決定する。そのため、タスク101の動作時の状況の予測が難しく、過剰にログを取得して分散ストリームデータ処理基盤の負荷を高めてしまったり、或いは十分なログを取得できず、障害が発生した際などに原因の究明が難しくなってしまったりすることがある。そのため、ログの取得の効率化を図ることのできる技術の提供が求められている。
【0014】
以下で述べる実施形態では、タスク101ごとに、そのタスク101の状態に基づきログスコアが算出される。なお、ログスコアは、例えば、タスク101が障害と関連する可能性を評価した値であってよい。ログスコアは、一例では、タスク101における障害の発生と関連する指標に基づいて算出されてよい。
【0015】
そして、実施形態では、例えば、タスク101のログスコアと、そのタスク101の上流および下流の少なくとも一方のタスク101のログスコアとに基づいて、タスク101のログの出力頻度が決定される。
図2は、実施形態に係るログの出力頻度の決定を例示する図である。
図2に示すように、タスク101のログの出力頻度は、そのタスク101のログスコアと、そのタスク101の上流に位置する上流タスク101および下流に位置する下流タスク101の少なくとも一方のタスク101のログスコアとを考慮して求められてよい。上流および下流の少なくとも一方のタスク101のログスコアを考慮してログの出力頻度を決定することで、分散ストリームデータ処理基盤に含まれる複数のタスク101のログを効率的に収集することが可能である。なお、タスク101の上流タスク101とは、例えば、ルーティングにおいて、タスク101よりも先に配置されているタスク101であってよく、タスク101の処理で用いられるデータを入力してくるタスク101であってよい。また、タスク101の下流タスク101とは、例えば、タスク101の処理で得られたデータの出力先となるタスク101であってよく、下流タスク101は、タスク101の処理で得られたデータを用いて処理を実行してよい。以下、実施形態を更に詳細に説明する。
【0016】
図3は、実施形態に係る分散ストリームデータ処理基盤300を例示する図である。分散ストリームデータ処理基盤300は、例えば、少なくとも1つの情報処理装置301、および少なくとも1つのセンサ302を含んでよい。情報処理装置301と、センサ302とは、例えば、ネットワーク305を介して通信可能に接続されている。センサ302は、例えば、IoT機器などであってよく、宛先として指定されている所定の情報処理装置301に検出したセンシングデータを送信する。情報処理装置301には、分散ストリームデータ処理基盤300に含まれる複数のタスク101のうちの少なくとも1つのタスク101が配備されていてよい。情報処理装置301は、例えば、センサ302から受信したセンシングデータを、配備されているタスク101に入力し、所定のルーティングに従って処理してよい。
【0017】
図4は、実施形態に係る情報処理装置301のブロック構成を例示する図である。情報処理装置301は、例えば、制御部401、記憶部402、および通信部403を含む。制御部401は、例えば、情報処理装置301に配備されているタスク101を実行する。また、制御部401は、例えば取得部411、出力部412、および決定部413などとして動作してよい。記憶部402は、例えば、後述するスコア情報900、タスク実行情報1000、ログ計数情報1100、およびログスコア補正メッセージ1200などの情報を記憶してよい。また、例えば、情報処理装置301が、分散ストリームデータ処理基盤300の管理を実行する後述の管理装置として動作する場合には、記憶部402は、ログスコア補正メッセージ1200および集計依頼応答メッセージ1300などの情報を記憶してよい。通信部403は、例えば、制御部401の指示に従って、ネットワーク305を介してセンサ302および他の情報処理装置301と通信する。これらの各部の詳細及び記憶部402に格納されている情報の詳細については後述する。
【0018】
続いて、実施形態に係るログの出力頻度の決定について更に説明する。
図5は、実施形態に係るログの出力頻度の決定について更に例示する図である。実施形態では情報処理装置301の制御部401は、まず、自装置に配備されているタスク101のそれぞれについて、ログスコアを計算する。ログスコアは、例えば、タスク101における障害の発生と関連する指標に基づいて算出することができる。一例ではタスク101における障害の発生と関連する指標は、CPU(Central Processing Unit)にかかる負荷、およびメモリの使用量などであってよい。例えば、タスク101の実行にかかるCPUの処理負荷が高かったり、メモリの使用量が多かったりする場合には、そのタスク101は障害の発生の可能性が高いことが推定できる。そのため、制御部401は、CPUの処理負荷が高かったり、メモリの使用量が多かったりするタスク101には、高いログスコアを算出してよい。
【0019】
例えば、
図5では、タスクAからタスクGの複数のタスク101が示されており、分散ストリームデータ処理基盤300に含まれる情報処理装置301の制御部401は、これらのタスクAからタスクGのログスコアを算出してよい。なお、
図5では、上段に示すように、ログの出力頻度が高いほど濃い色でタスク101を表している。例えば、
図5は、タスクDに最も高いログスコアが算出された場合を示している(
図5の(1))。この場合、制御部401は、タスクDのログの出力頻度を他のタスク101よりも高い値に設定してよい。
【0020】
また、例えば、制御部401は、或るタスク101の下流のタスク101のログスコアが高い場合、そのタスク101のログスコアを高めてよい。例えば、
図5では、タスクBの下流のタスクDのログスコアが高いため、制御部401は、タスクBのログスコアを高めてよい(
図5の(2))。そして、制御部401は、下流のタスクDの影響で高められたログスコアに基づいてタスクBのログの出力頻度を決定してよい。これは、タスクDに障害が生じた場合、タスクDは、タスクBの下流のタスク101であり、タスクBが障害の原因である可能性があるためである。
【0021】
また、制御部401は、例えば、タスクCのログの出力頻度を決定する際に、下流のタスクD、タスクE、およびタスクFのログスコアを考慮する。この場合、タスクDのログスコアが高いため、タスクCのログスコアを高めてよいが、他の下流のタスクEおよびタスクFは、ログスコアが高くはないため、制御部401は、タスクCのログスコアをそれほど高めなくてもよい(
図5の(3))。そして、制御部401は、下流のタスクDの影響で若干高められたログスコアに基づいてタスクCのログの出力頻度を決定してよい。例えば、タスクDに障害が生じた場合、タスクDは、タスクCの下流のタスク101であるため、タスクCは障害の原因である可能性があり、ログスコアは高められてよい。しかしながら、タスクCの3つの下流のタスク101のうち、タスクD以外のタスクEおよびタスクFは、正常に動作しているため、タスクCが実際に障害の原因である可能性は低いと推定でき、そのため、ログスコアはそれほど高めないように設定されている。
【0022】
また、制御部401は、例えば、タスクGのログの出力頻度を決定する際に、上流のタスクDのログスコアを考慮する。この場合、タスクDのログスコアが高いため、タスクGのログスコアを高めてよい(
図5の(4))。そして、制御部401は、上流のタスクDの影響で若干高められたログスコアに基づいてタスクGのログの出力頻度を決定してよい。これは、タスクDに障害が生じた場合、タスクDの下流のタスクGのログを調べることで、障害の波及の影響を調査し易くなるためである。
【0023】
なお、
図5に示す例では、タスクBのログスコアを高めた結果、更に上流のタスクAのログスコアも高められている。
【0024】
以上で述べたように、実施形態では障害の発生する可能性が高いと推定されるタスク101があった場合に、その上流および下流のタスク101のログスコアも高められるように調整される。そして、高められたログスコアに基づいて、ログの出力頻度が決定される。そのため、例えば、障害の発生する可能性が高いと推定されるタスク101で実際に障害が起きたとする。この場合にも、その障害の起きたタスク101のログと、その上流および下流の少なくとも一方のタスク101のログの出力頻度が高められているため、障害の原因の追究や障害の波及する影響を効率的に調査することが可能になる。
【0025】
続いて、分散ストリームデータ処理基盤300で出力されるログの全体量の調整について述べる。分散ストリームデータ処理基盤300の全体で出力されるログの量が多いと、分散ストリームデータ処理基盤300にかかる負荷も高くなる。そのため、分散ストリームデータ処理基盤300において出力されるログの量は、目標となる所定のログ数におおよそ近づくように調節されることが望ましい。そのため、以下で述べる実施形態では分散ストリームデータ処理基盤300において所定期間に出力される全体のログ数が、所定のログ数に近づくように、各タスク101が出力するログ量を最適化する処理が実行される。なお、一実施形態において、ログ量の最適化の処理は、例えば、分散ストリームデータ処理基盤300の管理を実行する管理装置が実行してよい。管理装置は、一例では、複数の情報処理装置301を代表する情報処理装置301であってよい。
【0026】
図6は、実施形態に係る分散ストリームデータ処理基盤300の全体のログ量の調節を例示する図である。管理装置の制御部401は、例えば、所定期間において分散ストリームデータ処理基盤300に含まれるタスク101が出力したログの数を取得する(
図6の(1))。なお、
図6の例では、所定期間に出力されたログの総数は、15000000個であるものとする。
【0027】
そして、管理装置の制御部401は、それぞれのタスク101に対して決定されているログスコアごとにログ数を集計する(
図6の(2))。
図6に示す例では、ログスコアを所定の範囲に区切り、各範囲に該当するログスコアを有するタスク101のログの数を集計してグラフにしている。
【0028】
続いて、制御部401は、分散ストリームデータ処理基盤300の全体のログ数が目標となる所定の値に近づくように、各タスク101におけるログの出力頻度を補正する(
図6の(3))。
図6の例では、所定期間に出力されたログの総数が15000000個であり、目標となるログ数が10000000個であるため、10000000/15000000=2/3倍の出力頻度となるように、各タスク101のログの出力頻度を補正してよい。
【0029】
以上で述べたようにすることで、分散ストリームデータ処理基盤300で出力されるログの全体量を、分散ストリームデータ処理基盤300に対して適切な量に調節することができる。そのため、分散ストリームデータ処理基盤300にかかる処理負荷を抑えることができる。
【0030】
以下、実施形態に係るログの出力をともなうタスク101の実行処理について説明する。
図7は、実施形態に係るタスク101の実行処理の動作フローを例示する図である。例えば、情報処理装置301の制御部401は、情報処理装置301に配備されているタスク101の実行指示が入力されると、
図7の動作フローを開始してよい。
【0031】
ステップ701(以降、ステップを“S”と記載し、例えば、S701と表記する)において制御部401は、メッセージを受信するのを待機する。例えば、メッセージを受信すると、制御部401は、処理をS702に進めてよい。
【0032】
S702において制御部401は、受信したメッセージの種別を判定する。メッセージ種別が情報処理装置301に配備されているタスク101に宛てたメッセージ801である場合、フローはS703に進む。
【0033】
図8は、実施形態に係るタスク間のメッセージを例示する図である。
図8(a)は、上流のタスク101から下流のタスク101へと送信されるメッセージ801を例示する図である。メッセージ801は、例えば、上流タスクID(identifier)、下流タスクID、上流タスクのログスコア、およびタスク処理用メッセージを含む。
【0034】
上流タスクIDは、例えば、メッセージ801を送信した上流のタスク101を識別するための識別情報である。また、下流タスクIDは、例えば、メッセージ801の宛先である下流のタスク101を識別するための識別情報である。上流タスクのログスコアは、メッセージ801の送信時に上流タスクIDで識別される上流のタスク101に対して算出されているログスコアである。タスク処理用メッセージは、例えば、メッセージ801の宛先となる下流のタスク101の処理で利用される情報であってよい。タスク処理用メッセージは、例えば、上流のタスク101の実行結果として出力される情報であってよい。
【0035】
S703において制御部401は、メッセージ801を受信すると、その応答として、応答メッセージ802を、メッセージ801の送信元のタスク101に返信する。
【0036】
図8(b)は、実施形態に係る応答メッセージ802を例示する図である。応答メッセージ802は、例えば、上流タスクID、下流タスクID、および下流タスクのログスコアの情報を含む。上流タスクIDは、例えば、メッセージ801を送信してきた上流のタスク101であって、応答メッセージ802の宛先となるタスク101を識別するための識別情報である。また、下流タスクIDは、例えば、メッセージ801の宛先であり、応答メッセージ802の送信元となる下流のタスク101を識別するための識別情報である。下流タスクのログスコアは、応答メッセージ802の送信時に下流のタスク101に対して算出されているログスコアである。例えば、情報処理装置301の記憶部402には、スコア情報900が登録されていてよく、制御部401は、スコア情報900から下流タスクのログスコアを取得してよい。
【0037】
図9は、実施形態に係るスコア情報900を例示する図である。
図9の例では、スコア情報900には、タスクIDと、ログスコアとが対応付けられたエントリが登録されている。スコア情報900のタスクIDには、例えば、情報処理装置301に割り当てられているタスク101を識別するためのタスクIDが登録されていてよい。また、スコア情報900のログスコアには、エントリのタスクIDで識別されるタスク101に対して求められたログスコアが登録されていてよい。なお、スコア情報900は、例えば、後述する
図14の動作フローにおいて生成されて、情報処理装置301の記憶部402に記憶されてよい。そして、制御部401は、S703において、スコア情報900を参照して、メッセージ801の下流タスクIDと一致するタスクIDのログスコアを、下流タスクのログスコアとして取得して応答メッセージ802を生成し、送信してよい。応答メッセージ802を送信することで、上流のタスク101に、下流のタスク101のログスコアを通知することができる。
【0038】
続いて、S704において制御部401は、メッセージ801の送信先として指定されたタスク101を実行する。例えば、制御部401は、メッセージ801のタスク処理用メッセージに含まれる情報を用いて、メッセージ801の下流タスクIDに送信先として指定されたタスク101の処理を実行してよい。なお、制御部401は、例えば、タスク101の実行において出力依頼が出されたログメッセージを一時的に記憶部402に保存してよい。また、制御部401は、タスク101を実行すると、その実行に関する情報をタスク実行情報1000に記録してよい。
【0039】
図10は、実施形態に係るタスク実行情報1000を例示する図である。タスク実行情報1000には、例えば、タスクID、タイムスタンプ、処理時間、およびCPU使用率を対応づけたエントリが登録されている。一例では、制御部401は、実行したタスク101のタスクIDおよび実行日時を表すタイムスタンプとともに、タスク101の処理にかかった処理時間と、タスク101に実行の際のCPUの使用率の情報を対応づけてタスク実行情報1000に登録してよい。
【0040】
S705において制御部401は、例えば、実行したタスク101の下流のタスク101に対してメッセージ801を生成して、送信する。なお、制御部401は、例えば、実行したタスク101の識別情報をメッセージ801の上流タスクIDに設定してよい。また、制御部401は、実行したタスク101のタスクIDと対応するスコア情報900のログスコアをメッセージ801の上流タスクのログスコアに設定し、およびタスク101の実行結果をメッセージ801のタスク処理用メッセージに設定してよい。制御部401は、下流のタスク101の識別情報をメッセージ801の下流タスクIDに設定してよい。そして、制御部401は、生成したメッセージ801を下流のタスク101に宛てて送信してよい。
【0041】
S706において制御部401は、下流のタスク101から応答メッセージ802を受信する。なお、応答メッセージ802の上流タスクIDには、例えば、S705でメッセージ801を送信したタスク101のタスクIDが登録されている。また、応答メッセージ802の下流タスクIDおよび下流タスクのログスコアには、S705のメッセージ801の送信先であり、および、それに対する応答メッセージ802の送信元であるタスク101のタスクIDとログスコアがそれぞれ登録されている。
【0042】
そして、S707において制御部401は、S704で実行したタスク101に対するログスコアを計算する。なお、ログスコアの計算の詳細については、
図14を参照して後述する。
【0043】
S708において制御部401は、S707でタスク101に対して算出したログスコアに基づいて、ログメッセージを出力するか否かを判定する。例えば、タスク101は、実行の際にログの出力を依頼する出力依頼を出力する。そして、S708では制御部401は、出力依頼のあったログメッセージを記憶部402のログデータに出力するか否かを判定してよい。なお、ログメッセージを出力するか否かの判定処理の詳細については、例えば、
図15を参照して後述する。
【0044】
S708の処理で出力すると判定された場合、S709において制御部401は、記憶部402に一時保存したログメッセージを記憶部402のログデータに出力して記録する。また、この場合、制御部401は、以下に述べるログ計数情報1100において、実行したタスク101と対応する出力数に1を可算して値を更新し、フローはS701に戻る。
【0045】
図11は、実施形態に係るログ計数情報1100を例示する図である。ログ計数情報1100には、例えば、情報処理装置301に割り当てられているタスク101のタスクIDと対応づけて、ログメッセージの出力数が登録されている。
図11に登録されているログメッセージの出力数は、例えば、所定期間の間に、S709において実際に出力されたログメッセージの数であってよい。一例では、ログの出力数をカウントする所定期間は、以下に述べるS710の処理の最新の実行でログスコア補正メッセージ1200が記憶部402に記憶されてから現在までの期間であってよい。
【0046】
また、S702においてメッセージ種別がログスコア補正メッセージ1200である場合、フローはS710に進む。
【0047】
図12は、実施形態に係るログスコア補正メッセージ1200を例示する図である。ログスコア補正メッセージ1200には、例えば、上述の
図6で述べたように、分散ストリームデータ処理基盤300に含まれる複数のタスク101のそれぞれのタスクIDと対応づけて、ログの出力頻度を調節するための補正値が登録されている。
【0048】
S710において制御部401は、受信したログスコア補正メッセージ1200を記憶部402に保存し、フローはS701に戻る。なお、記憶部402に既にログスコア補正メッセージ1200が記憶されている場合、制御部401は、受信した新たなログスコア補正メッセージ1200で、記憶部402に記憶されているログスコア補正メッセージ1200を更新してよい。
【0049】
また、S702においてメッセージ種別が集計依頼である場合、フローはS711に進む。なお、集計依頼は、上述の
図6で述べたように、例えば、分散ストリームデータ処理基盤300を管理する管理装置が、所定期間に分散ストリームデータ処理基盤300で出力されるログの総数を集計するために送信するメッセージである。集計依頼は、例えば、メッセ―ジの種別が集計依頼であることを示す情報を含んでよく、制御部401は、この情報を参照してメッセージが集計依頼であることを特定してよい。
【0050】
S711において制御部401は、集計依頼を受信すると、集計依頼応答メッセージ1300を生成して集計依頼を送信してきた情報処理装置301に応答し、フローはS701に戻る。
【0051】
図13は、実施形態に係る集計依頼応答メッセージ1300を例示する図である。集計依頼応答メッセージ1300は、例えば、タスクID、ログスコア、および出力数が対応付けられたエントリを含む。情報処理装置301の制御部401は、例えば、管理装置から集計依頼を受信すると、自装置に配備されているそれぞれのタスク101のタスクIDと、ログスコアと、ログメッセージの出力数とを含む集計依頼応答メッセージ1300を生成する。なお、集計依頼応答メッセージ1300に登録されるログスコアは、例えば、スコア情報900から取得することができる。また、集計依頼応答メッセージ1300に登録される出力数は、例えば、ログ計数情報1100から取得することができる。そして、情報処理装置301の制御部401は、例えば、S711において生成した集計依頼応答メッセージ1300を管理装置として動作する情報処理装置301に送信する。
【0052】
以上の
図7の動作フローによれば、例えば、タスク101の実行の際にログスコアを計算し、ログスコアに基づいてログメッセージを出力することができる。また、
図7の動作フローによれば、例えば、分散ストリームデータ処理基盤300の全体でのログ量を調節するための補正値を取得したり、管理装置からの集計依頼に応じてタスク101に対するログスコアとログの出力数を管理装置に通知したりすることができる。
【0053】
続いて、ログスコアの算出について更に詳細に説明する。
図14は、実施形態に係るログスコアの計算処理を例示する図である。制御部401は、例えば、
図7のS707の処理に進むと、
図14の動作フローを開始してよい。
【0054】
S1401において制御部401は、情報処理装置301に配備されている少なくとも1つのタスク101のそれぞれについて、ログスコアを計算する。例えば、制御部401は、タスク実行情報1000に登録されている過去のタスク101の実行に関する情報に基づいて、タスク101のログスコアを計算してよい。以下では、タスク101の実行に関する情報として、タスク101の処理時間を用いてログスコアを計算する例を述べる。
【0055】
例えば、タスク101の処理時間が、普段の処理時間よりも著しく長い場合、そのタスク101には障害が起こる可能性が高いと推定することができる。そのため、タスク101の普段の処理時間からの違いに基づいて、障害が発生する可能性を評価したログスコアを求めることができる。例えば、直近過去10回のタスク101の処理時間の平均をTaveとする。また、今回のタスク101の処理時間をTcurrとする。この場合に、タスク101に対するログスコアStaskは、例えば、以下の式1で計算することができる。なお、式1においてabsは絶対値を表す。
Stask=abs(Tcurr-Tave)/Tave ・・・式1
【0056】
式1によれば、過去の処理時間からの違いによりログスコアを評価することができる。また、別の実施形態では、タスク101のエラーの発生頻度、タスク101が配備されてからの経過時間、タスク101がログの出力依頼のメッセージを出力する頻度などを用いてログスコアが評価されてもよい。
【0057】
S1402において制御部401は、上流のタスク101から受信したメッセージ801に基づいて、上流のタスク101のログスコアを決定する。例えば、上流のタスク101が1つである場合には、制御部401は、その上流のタスク101から受信した最新のメッセージ801の上流タスクのログスコアをそのまま用いてよい。また、タスク101にデータを送信してくる上流のタスク101が複数ある場合、制御部401は、上流のタスク101のそれぞれから受信した最新のメッセージ801の上流タスクのログスコアを代表する値を上流のタスク101のログスコアとして決定してよい。例えば、制御部401は、以下の式2に示すように、複数の上流のタスク101のログスコアの平均を、上流のタスク101のログスコア:Supperとして用いてよい。なお、式2において、aveは平均を表し、また、Su1,Su2,Su3,・・・は、複数の上流のタスク101のそれぞれのログスコアを表している。
Supper=ave(Su1,Su2,Su3,・・・) ・・・式2
【0058】
S1403において制御部401は、下流のタスク101から受信した応答メッセージ802に基づいて、下流のタスク101のログスコアを決定する。例えば、下流のタスク101が1つである場合には、制御部401は、その下流のタスク101から受信した最新の応答メッセージ802の下流タスクのログスコアをそのまま用いてよい。タスク101にデータを送信してくる下流のタスク101が複数ある場合、制御部401は、下流のタスク101のそれぞれから受信した最新の応答メッセージ802の下流タスクのログスコアを代表する値を下流のタスク101のログスコアとして決定してよい。例えば、制御部401は、以下の式3に示すように、複数の下流のタスク101のログスコアの平均を、下流のタスク101のログスコア:Sdownとして用いてよい。なお、式3において、aveは平均を表し、また、Sd1,Sd2,Sd3,・・・は、複数の下流のタスク101のそれぞれのログスコアを表している。
Sdown=ave(Sd1,Sd2,Sd3,・・・) ・・・式3
【0059】
S1404において制御部401は、隣接するタスク101のログスコアを用いてログスコアを計算する。例えば、制御部401は、S1402で求めたタスク101の上流のタスク101のログスコアと、S1403で求めたタスク101の下流のタスク101のログスコアとを用いて、タスク101のログスコアを計算してよい。一例では、制御部401は、式4に示すように、S1401のタスク101のログスコアと、S1402の上流のタスク101のログスコアと、S1403の下流のタスク101のログスコアとを所定の比率で寄与させてログスコア:Scurrentを計算する。
Scurrent=0.5×Stask+0.1×Supper+0.4×Sdown ・・・式4
【0060】
例えば、以上の式4により、隣接するタスク101のログスコアを、タスク101のログスコアに寄与させることができる。それにより、例えば、或るタスク101に他のタスク101よりも高いログスコアが設定されている場合に、その値を隣接するタスク101のログスコアにも伝搬させることができる。なお、タスク101で障害が発生した場合、その原因は、そのタスク101の下流よりも上流のタスク101に存在する可能性が高い。そのため、式4では、下流のタスク101のログスコアSdownの係数を、上流のタスクのログスコアSupperの係数よりも高く設定し、上流のタスク101よりも下流のタスク101のログスコアの影響をより受け易くしている。また、式4では、上流のタスク101と下流のタスク101との両方のログスコアを、タスク101のログスコアの計算に用いる例を示しているが、実施形態はこれに限定されるものではない。別の実施形態では、上流のタスク101と下流のタスク101との一方のみをタスク101のログスコアの計算に用いてもよい。
【0061】
続いて、S1405において制御部401は、ログスコアの変化を抑えるように調整する。例えば、ログスコアの値が急激に下がり、ログをとる頻度を急激に下げてしまった場合に、障害の原因を追究するための十分なログを取り損ねてしまうことがある。そのため、S1405では、制御部401は、ログスコアの変化を緩やかにする調整を行っている。例えば、以下の式5に示すように、前回の
図14の動作フローの実行においてS1405で計算されたログスコア:S
base-1に、今回S1404で計算されたS
currentを所定の比率で寄与させることで、ログスコアの変化を抑える調整が可能である。
S
base=0.5×S
current+0.5×S
base-1 ・・・式5
【0062】
式5では、前回の
図14の動作フローの実行においてS1405で計算されたログスコア:S
base-1と、今回S1404で計算されたS
currentとを50%の割合で寄与させてログスコアS
baseを求めている。なお、制御部401は、S1405でタスク101に対して求めたログスコアS
baseを、タスク101のタスクIDと対応づけてスコア情報900に登録してよい。スコア情報900に、S1405でログスコアを求めたタスク101のタスクIDを含むエントリが既に登録されている場合には、S1405で求めた最新のログスコアでスコア情報900のエントリのログスコアを更新してよい。
【0063】
S1406において制御部401は、全体のログ数を最適化するように補正を行う。例えば、
図16を参照して後述するように、分散ストリームデータ処理基盤300の管理を実行する管理装置は、全体のログ数を最適化するようにタスク101に対する補正値を求めて、その補正値をタスク101を実行する情報処理装置301に通知する。S1406の処理では制御部401は、タスク101に対する補正値が分散ストリームデータ処理基盤300の管理を実行する管理装置から通知されている場合、通知された補正値でS1405のS
baseを補正して、最終的なログスコアSを求めてよい。なお、分散ストリームデータ処理基盤300の稼働初期など、まだ、タスク101に対する補正値が管理装置から通知されていない場合、S1406の処理は省略されてよい。式6は、S1406の処理で実行するタスク101のログスコアの補正を例示する式である。
S=min(1,max(0,S
base×W)) ・・・式6
【0064】
なお、式6においてWは、タスク101に対する補正値である。また、式6では、min,maxの関数を用いてログスコアSの値が0から1に収まるようにしている。S1406の処理が完了すると、
図14の動作フローは終了し、フローはS708に進む。以上の
図14の動作フローにより、制御部401は、タスク101のログスコアを取得することができる。
【0065】
続いて、
図7のS708で実行されるログ出力判定処理について説明する。
図15は、実施形態に係るログ出力判定処理を例示する図である。制御部401は、例えば、S708の処理に進むと、
図15の動作フローを開始してよい。
【0066】
S1501において制御部401は、ログスコアに基づいて、ログの出力間隔を計算する。ログの出力間隔は、例えば、以下の式7により計算することができる。なお、式7においてroundは、小数点以下を四捨五入する関数であり、それによりNintervalの値を整数化している。
Ninterval=round(1/S) ・・・式7
【0067】
そして、S1502で制御部401は、前回のログメッセージの出力以降に出力依頼が出されたログメッセージの数と、S1501で求めたログの出力間隔とを比較して、ログメッセージを出力するか否かを判定する。例えば、制御部401は、前回のログメッセージの出力以降に出力されたログの出力依頼のメッセージの数N
beforeが、N
intervalよりも大きい場合(N
before>N
interval)に、ログメッセージを出力すると判定してよい。S1502の処理が完了すると、
図15の動作フローは終了し、フローはS709に進む。以上の
図15の動作フローにより、制御部401は、
図7の動作フローにおいて実行したタスク101で出力されたログの出力依頼に対して、ログメッセージを出力するか否かを判定することができる。それによって、ログスコアに基づいてタスク101のログメッセージの出力頻度が決定される。
【0068】
続いて、全体のログ量の最適化について説明する。
図16は、分散ストリームデータ処理基盤300の管理を実行する管理装置の制御部401が実行するログ量の最適化処理の動作フローを例示する図である。なお、分散ストリームデータ処理基盤300の管理を実行する管理装置は、一例では、分散ストリームデータ処理基盤300に含まれる複数の情報処理装置301を代表する情報処理装置301であってよい。管理装置の制御部401は、分散ストリームデータ処理基盤300が起動すると
図16の動作フローを開始してよい。
【0069】
S1601において管理装置の制御部401は、所定時間待機する。一例では、分散ストリームデータ処理基盤300の管理者は、分散ストリームデータ処理基盤300内でのログの出力の傾向を見ることが可能となる待ち時間を見積もって、所定時間として予め設定してよい。
【0070】
S1602において管理装置の制御部401は、分散ストリームデータ処理基盤300に含まれる情報処理装置301にログスコアの集約依頼を送信する。例えば、管理装置の制御部401は、分散ストリームデータ処理基盤300においてタスク101の実行を担う複数の情報処理装置301のそれぞれに集約依頼を送信してよい。
【0071】
S1603において管理装置の制御部401は、各情報処理装置301からの応答を待機する。なお、各情報処理装置301からの応答は、例えば、上述の集計依頼応答メッセージ1300であってよい。
【0072】
S1604において管理装置の制御部401は、各情報処理装置301からの集計依頼応答メッセージ1300の受信が完了すると、受信した集計依頼応答メッセージ1300を用いて、補正値を計算する。例えば、各タスク101のログメッセージの出力数をNt1,Nt2,Nt3,・・・とすると、以下の式8で補正値Wが求められてよい。なお、Zは、目標となるログメッセージ数であり、分散ストリームデータ処理基盤300の管理者が予め設定することができる。
W=Z/(Nt1+Nt2+Nt3+・・・) ・・・式8
【0073】
S1605において管理装置の制御部401は、求めた補正値を含むログスコア補正メッセージ1200を生成して、各情報処理装置301に送信し、本動作フローは終了する。
【0074】
図16の動作フローによれば、管理装置の制御部401は、分散ストリームデータ処理基盤300の全体のログ量を最適化する補正値を、各情報処理装置301に通知することができる。
【0075】
なお、
図16の動作フローでは、分散ストリームデータ処理基盤300に含まれる全てのタスク101に対して一律の補正値Wを決定し、補正を行う例を述べているが、実施形態はこれに限定されるものではない。例えば、別の実施形態では、タスク101に応じて異なる値でログの出力頻度を補正するための補正値が定められてもよい。
【0076】
例えば、集計依頼応答メッセージ1300で通知されたログスコアが高いタスク101は、頻繁にログを出力していることが推定されるため、出力するログの量を他のタスクよりも大きく減らしても、障害の解析に十分なログが取得できる可能性が高い。そのため、例えば、式8で求められた補正値Wが、0.8であった場合に、ログスコアの高いタスク101にはより低い補正値(例えば、0.7)などを設定してもよい。一方で、集計依頼応答メッセージ1300で通知されたログスコアが低いタスク101は、そもそも出力しているログの数が少ないため、それ以上少なくすると障害の発生時などに利用できるログが不十分になる可能性がある。そのため、例えば、式8で求められた補正値Wが、0.8であった場合に、ログスコアの低いタスク101にはより高い補正値(例えば、0.9)などを設定してもよい。このように、制御部401は、タスク101ごとに、ログスコアに基づいて補正値を調整してもよい。
【0077】
以上で述べたように、上述の実施形態によれば、障害が発生する可能性の高いタスク101がある場合に、そのタスク101の周辺のタスク101のログの出力頻度も高められるため、トレースログなどを効果的に収集することが可能である。その結果、複数のタスク101が影響するような障害を効率的に発見することが可能である。
【0078】
以上において、実施形態を例示したが、実施形態はこれに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、又は、一部の処理が省略されてもよい。例えば、
図14のS1402とS1403の処理は順序を入れ替えて実行してもよい。
【0079】
また、上述の実施形態のログスコアの計算において、分散ストリームデータ処理基盤300にタスク101が配備されてからの経過時間が考慮されてもよい。例えば、タスク101が配備されて間もない状況では、タスク101の開発者の予期していないバグなどが含まれている可能性が高い。そのため、制御部401は、このように配備されて間もないタスク101のログスコアを、より高い値に補正する処理を行ってもよい。
【0080】
また、上述の実施形態では、ログスコアの値が数値として大きい値であるほど、ログの出力頻度が高くなる例を述べている。しかしながら、実施形態はこれに限定されるものではなく、例えば、ログスコアの値が小さいほど、ログの出力頻度が高くなるように、ログスコアが評価されてもよい。この場合、ログスコアの値が小さいことが、ログスコアが高いことを示してよい。
【0081】
また、上述の実施形態では、複数の上流タスク101のログスコアを代表する値および複数の下流タスク101のログスコアを代表する値として、平均値を用いる例を示しているが、実施形態はこれに限定されるものではない。例えば、別の実施形態では、中央値などその他の統計値が代表値として用いられてもよい。
【0082】
また、上述の実施形態において、
図8に示すタスク間のメッセージは、例えば、宛先のタスク101が他の情報処理装置301に配置されている場合には、宛先のタスク101が配置されている情報処理装置301のアドレスなどの情報を更に含んでもよい。
【0083】
また、上述の実施形態では、ログスコアを補正値で補正する例が示されているが、実施形態は、これに限定されるものではなく、補正値を、その他の値の補正に用いてタスク101のログの出力頻度が調節されてもよい。例えば、別の実施形態では、上述のS1406の処理の代わりに、S1501において、下記の式9でログの出力間隔Nintervalを補正値Wの逆数で補正する処理が実行されてもよい。この場合、制御部401は、得られたNcをNintervalの代わりに用いて、S1502の処理を実行してよい。
Nc=Ninterval×1/W ・・・式9
【0084】
なお、上述の実施形態において、S1401の処理では、情報処理装置301の制御部401は、例えば、取得部411として動作する。また、S709およびS1402からS1406の処理では、情報処理装置301の制御部401は、例えば、出力部412として動作する。
図16の動作フローの処理では、情報処理装置301の制御部401は、例えば、決定部413として動作する。
【0085】
図17は、実施形態に係る情報処理装置301および管理装置を実現するためのコンピュータ1700のハードウェア構成を例示する図である。
図17の情報処理装置301および管理装置を実現するためのハードウェア構成は、例えば、プロセッサ1701、メモリ1702、記憶装置1703、読取装置1704、通信インタフェース1706、及び入出力インタフェース1707を備える。なお、プロセッサ1701、メモリ1702、記憶装置1703、読取装置1704、通信インタフェース1706、入出力インタフェース1707は、例えば、バス1708を介して互いに接続されている。
【0086】
プロセッサ1701は、例えば、シングルプロセッサであっても、マルチプロセッサやマルチコアであってもよい。プロセッサ1701は、メモリ1702を利用して例えば上述の動作フローの手順を記述したプログラムを実行することにより、上述した制御部401の一部または全部の機能を提供する。例えば、情報処理装置301および管理装置のプロセッサ1701は、記憶装置1703に格納されているプログラムを読み出して実行することで、取得部411、出力部412、および決定部413として動作する。
【0087】
メモリ1702は、例えば半導体メモリであり、RAM領域及びROM領域を含んでいてよい。記憶装置1703は、例えばハードディスク、フラッシュメモリ等の半導体メモリ、又は外部記憶装置である。なお、RAMは、Random Access Memoryの略称である。また、ROMは、Read Only Memoryの略称である。
【0088】
読取装置1704は、プロセッサ1701の指示に従って着脱可能記憶媒体1705にアクセスする。着脱可能記憶媒体1705は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD-ROM、DVD等)などにより実現される。なお、USBは、Universal Serial Busの略称である。CDは、Compact Discの略称である。DVDは、Digital Versatile Diskの略称である。
【0089】
なお、情報処理装置301および管理装置の記憶部402は、例えばメモリ1702、記憶装置1703、及び着脱可能記憶媒体1705を含んでよい。例えば、情報処理装置301の記憶装置1703には、スコア情報900、タスク実行情報1000、ログ計数情報1100、およびログスコア補正メッセージ1200が格納されてよい。また、例えば、管理装置の記憶装置1703には、ログスコア補正メッセージ1200および集計依頼応答メッセージ1300が格納されてよい。
【0090】
通信インタフェース1706は、プロセッサ1701の指示に従ってネットワークを介してデータを送受信する。通信インタフェース1706は、上述の通信部403の一例である。入出力インタフェース1707は、例えば、入力装置及び出力装置との間のインタフェースであってよい。入力装置は、例えばユーザからの指示を受け付けるキーボードやマウスなどのデバイスである。出力装置は、例えばディスプレーなどの表示装置、及びプリンタなどの印刷装置である。
【0091】
実施形態に係る各プログラムは、例えば、下記の形態で情報処理装置301および管理装置に提供される。
(1)記憶装置1703に予めインストールされている。
(2)着脱可能記憶媒体1705により提供される。
(3)プログラムサーバなどのサーバから提供される。
【0092】
なお、
図17を参照して述べた情報処理装置301および管理装置を実現するためのコンピュータ1700のハードウェア構成は例示であり、実施形態はこれに限定されるものではない。例えば、上述の制御部401の一部または全部の機能がFPGA及びSoCなどによるハードウェアとして実装されてもよい。なお、FPGAは、Field Programmable Gate Arrayの略称である。SoCは、System-on-a-chipの略称である。
【0093】
以上において、いくつかの実施形態が説明される。しかしながら、実施形態は上記の実施形態に限定されるものではなく、上述の実施形態の各種変形形態及び代替形態を包含するものとして理解されるべきである。例えば、各種実施形態は、その趣旨及び範囲を逸脱しない範囲で構成要素を変形して具体化できることが理解されよう。また、前述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施され得ることが理解されよう。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施され得ることが当業者には理解されよう。
【符号の説明】
【0094】
101 :タスク
300 :分散ストリームデータ処理基盤
301 :情報処理装置
302 :センサ
305 :ネットワーク
401 :制御部
402 :記憶部
403 :通信部
411 :取得部
412 :出力部
413 :決定部
1700 :コンピュータ
1701 :プロセッサ
1702 :メモリ
1703 :記憶装置
1704 :読取装置
1705 :着脱可能記憶媒体
1706 :通信インタフェース
1707 :入出力インタフェース
1708 :バス