JP2021174348A - 障害復旧装置、障害復旧方法及びプログラム - Google Patents

障害復旧装置、障害復旧方法及びプログラム Download PDF

Info

Publication number
JP2021174348A
JP2021174348A JP2020079042A JP2020079042A JP2021174348A JP 2021174348 A JP2021174348 A JP 2021174348A JP 2020079042 A JP2020079042 A JP 2020079042A JP 2020079042 A JP2020079042 A JP 2020079042A JP 2021174348 A JP2021174348 A JP 2021174348A
Authority
JP
Japan
Prior art keywords
learning
command
neural network
data
failure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020079042A
Other languages
English (en)
Other versions
JP7472628B2 (ja
Inventor
光希 池内
Koki Ikeuchi
洋一 松尾
Yoichi Matsuo
敬志郎 渡辺
Keishiro Watanabe
嘉文 葛
jia wen Ge
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2020079042A priority Critical patent/JP7472628B2/ja
Publication of JP2021174348A publication Critical patent/JP2021174348A/ja
Application granted granted Critical
Publication of JP7472628B2 publication Critical patent/JP7472628B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】障害を復旧させるためのコマンドを自動的に推定可能とすること。【解決手段】障害復旧装置は、人工的な障害要因の挿入後において第1のシステムにおいて観測される第1のデータを取得する第1の取得部と、前記第1のデータをニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第1のシステムに対して実行する第1の実行部と、前記コマンドの実行後において前記第1のシステムにおいて観測される第2のデータを取得する第2の取得部と、前記コマンドの実行によって得られる報酬を取得する第3の取得部と、前記第1のデータ、前記コマンド、前記報酬、前記第2のデータに基づく深層強化学習によって前記ニューラルネットワークを学習する学習部と、を有する。【選択図】図2

Description

本発明は、障害復旧装置、障害復旧方法及びプログラムに関する。
大規模化・複雑化が進むICTシステムにおいて、発生する障害の種類、件数は増大している。障害対応には、ログ、メトリクス等の観測データの監視、分析が必要であるが、そのデータ量やデータ間の関係性も複雑であるため、障害の復旧業務は困難を極めている。そこで、近年、機械学習を用いた障害復旧業務の自動化、高精度化が取り組まれている。
障害時のログに基づいて復旧コマンド列を生成する技術として非特許文献1がある。これは、障害が発生した際に対象システムから得られたログと、その障害を復旧する際に実行した復旧コマンドの関係性をニューラルネットワークにより学習しておくことで、新たな障害が発生した際に、観測されたログに基づき尤もらしい復旧コマンドを生成する技術である。
また、障害要因を意図的に挿入して障害データを収集することで、要因特定のための分類器を学習するアプローチもある。非特許文献2では、カオスエンジニアリングのために開発された障害要因挿入ツールを用いて、様々な障害要因を検証環境に挿入し、その際の観測データを収集する。それらの観測データと、障害要因(障害種類とその発生箇所の組み合わせ)を紐づける分類器を学習することで、新たな障害が発生した際に、観測データに基づいて障害要因を特定することを可能としている。非特許文献1が実運用で得られるデータを想定しているのに対し、非特許文献2では意図的に障害要因を挿入するフレームワークを用いているため、実際にはまだ起こっていない障害や発生頻度の少ない障害にも対応できる可能性がある。
一方で、システムから得られる観測データに基づいて、どのようなコマンドを打てば復旧できるかを表す復旧方策を学習するアプローチも存在する。
非特許文献3では、障害発生時に或るコマンドを実行した際、どのようなログが出現しやすいかを表現した確率モデルを事前に作成している。この確率モデルを利用して、障害要因を特定するのに最も効率の良い復旧方策が強化学習などを用いて学習される。
非特許文献4では、障害要因を挿入した検証環境において、pingなどの障害切り分けコマンドを実行し、そのフィードバックとして得られるpingの成功/失敗などの二値結果に基づいて次に打つべきコマンドを算出する復旧方策関数を、強化学習により学習している。
池内光希,渡邉暁,松尾洋一,川田丈浩,「Seq2Seqによる障害復旧コマンド列の自動生成」, 信学会総合大会,B-7-25,2019. 池内光希,葛嘉文,松尾洋一,渡辺敬志郎,「障害データ生成に基づく要因特定手法の一検討」, 信学会総合大会,B-7-32,2020. H. Ikeuchi, A. Watanabe, T. Kawata, and R. Kawahara, "Root-Cause Diagnosis Using Logs Generated by User Actions," in Proc. of IEEE Global Communication Conference (Globecom), pp. 1-7, 2018. M. L. Littman, N. Ravi, E. Fenson, and R. Howard, "An Instance-based State Representation for Network Repair", in Proc. of the 19th National Conference on American Association for Artificial Intelligence (AAAI), pp. 287-292, 2004.
非特許文献1の方法では、十分な数の障害時のログや復旧コマンドが学習データとして蓄積されている必要があるが、現実的にはこれは必ずしも満たされない。
非特許文献2の障害データ生成アプローチは、非特許文献1の課題を一部解決するものではあるが、障害要因の特定に焦点を当てた手法であり、復旧コマンドは得ることができないため、復旧の自動化は達成できない。
非特許文献3の技術では、ログ出現を表す確率モデルの作成が必要だが、複雑なシステムにおいて、これは極めて困難である。
非特許文献4の技術では、学習データや事前の確率モデル作成が不要ではあるが、復旧方策の入力値として二値結果のものを仮定しているため、ログやメトリクスなどの高次元で、確率的に変動する、複雑な相関関係を持つ観測データをもとに復旧コマンドを決定する必要のある障害に対応するのは困難である。
本発明は、上記の点に鑑みてなされたものであって、障害を復旧させるためのコマンドを自動的に推定可能とすることを目的とする。
そこで上記課題を解決するため、障害復旧装置は、人工的な障害要因の挿入後において第1のシステムにおいて観測される第1のデータを取得する第1の取得部と、前記第1のデータをニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第1のシステムに対して実行する第1の実行部と、前記コマンドの実行後において前記第1のシステムにおいて観測される第2のデータを取得する第2の取得部と、前記コマンドの実行によって得られる報酬を取得する第3の取得部と、前記第1のデータ、前記コマンド、前記報酬、前記第2のデータに基づく深層強化学習によって前記ニューラルネットワークを学習する学習部と、を有する。
障害を復旧させるためのコマンドを自動的に推定可能とすることができる。
本発明の実施の形態における障害復旧装置10のハードウェア構成例を示す図である。 本発明の実施の形態における障害復旧装置10の機能構成例を示す図である。 学習フェーズの1エピソードにおいて障害復旧装置10が実行する処理手順の一例を説明するためのフローチャートである。 自動復旧フェーズにおいて障害復旧装置10が実行する処理手順の一例を説明するためのフローチャートである。 実験における学習結果を示す図である。
本実施の形態では、対象のICTシステム(以下、「対象システム」という。)に対して障害要因挿入ツールにより障害要因を挿入することで様々な障害を人工的に発生させ、その環境の中で深層強化学習を実行し、復旧方策を獲得する技術が開示される。すなわち、深層強化学習のエージェントが、対象システムから得られるログやメトリクスなどの観測データに基づいて、適当な復旧コマンドを選択して実行し、対象システムの状態変化に応じた報酬を受け取るという過程を繰り返す。この過程を繰り返すことで、エージェントは、報酬を最大化するような最適な復旧方策を獲得する。
本実施の形態では、人工的に生成される障害要因の挿入とエージェントによる復旧コマンドの実行によって、対象システムから実際の観測データが取得され、復旧方策が獲得されるため、それらが事前に学習データとして蓄積されている必要がなく、確率モデルの事前作成も必要ない。更に、深層強化学習では、ニューラルネットワークが高次元な入力値を解析することが可能なため、ログやメトリクスなどの高次元で、確率的に変動する、複雑な相関関係を持つ観測データを扱うことができる。したがって、学習データや事前の確率モデル作成が不要でありながら、ログやメトリクスなどの高次元で、確率的に変動する、複雑な相関関係を持つ観測データをもとに、障害を復旧させるための復旧コマンドを自動で推定するようなフレームワークを確立することができる。
まず、本実施の形態の基本となる強化学習、そのアルゴリズムの一種であるQ学習(「R. Sutton and A. Barto, (邦訳 三上貞芳, 皆川雅章),「強化学習」, 森北出版, pp. 159-161, 2000.」)、深層強化学習におけるアルゴリズムの一種であるdeep Q−network(「V. Mnih, K. Kavukcuoglu, D. Silver, A. A. Rusu, J. Veness, M. G. Bellemare, A. Graves, M. Riedmillier, A. K. Fidjeland, G. Ostrovski, S. Petersen, C. Beattie, A. Sadik, I. Antonoglou, H. King, D. Kumaran, D. Wierstra, S. Legg, and D. Hassabis, "Human-level control through deep reinforcement learning," Nature, vol. 518 no. 7540, pp. 529-533, 2015.」)について簡単に述べる。但し、本実施の形態は、これらのアルゴリズムに限定されるものではなく、他のアルゴリズムが用いられてもよい。
強化学習とは、与えられた環境内で、獲得報酬和が最大となるように、最適な行動をとるための方策をエージェントが獲得するための手法である。強化学習は、行動の主体であるエージェントと、エージェントが行動を実行する環境からなる。強化学習の概要は以下の通りである。
エージェントは、環境の「状態s」を観測し、現状の「方策π」に従って、或る「行動a」を実行する。但し、方策とは、π(s)=aのように、状態に応じて行動を返す関数である。行動aを実行すると、環境の状態は状態s'に遷移し、その遷移に応じてエージェントは報酬rを獲得する。以上のような、エージェントと環境との相互作用が繰り返される過程において、エージェントは、一連の行動の中で獲得できる報酬和を最大化できるように方策を改善していく。
Q学習は、強化学習を実現するためのアルゴリズムの一種である。Q学習において、エージェントは、Q関数Qπ(s,a)を学習する。Qπ(s,a)は、状態sにおいて行動aを実行し、その後は方策πに従った場合に、将来にわたって獲得する報酬和の期待値である。エージェントは、環境との相互作用を繰り返し、方策πおよびQ関数Qπ(s,a)を更新していく。
状態空間や行動空間が広い場合や連続な場合、Q関数をパラメトライズされた関数で近似する手法がよく用いられる。特に、近似関数としてニューラルネットワークを用いる手法を深層強化学習といい、deep Q−network(DQN)というアルゴリズムが最も基本的な形態として知られている。DQNでは、以下の損失関数L(θ)を最小化するようにニューラルネットワークの重みパラメタθを更新する。
Figure 2021174348
ここで、γは割引率と呼ばれるパラメタであり、Qθ(s',a')はQ関数である。
パラメタ更新を行う際は、experience replayと呼ばれる手法、すなわち経験(s,a,r,s')をメモリに蓄えておき、蓄えた経験をランダムにミニバッチとして取り出してθの更新を行う手法がとられる。学習中の方策は、Q関数Qθ(s',a')に基づきε貪欲法などで定められ、学習後の方策は、
Figure 2021174348
で与えられる。
本実施の形態は、検証環境の対象システム又は運用前の本番環境の対象システム(以下、これらを「学習用システム」という。)において深層強化学習を実行して復旧方策(復旧コマンドを推定するニューラルネットワーク)を学習する学習フェーズと、学習済みの復旧方策(ニューラルネットワーク)を用いて自動復旧を行う自動復旧フェーズからなる。
学習フェーズについて説明する。まず、学習用システムにおいて、障害要因挿入ツールを用いて、人工的又は人為的(以下、「人工的」で統一する)に障害を発生させる。障害要因挿入ツールとしては、考えうる障害を再現するために技術者が作成したスクリプトが用いられてもよいし、既存の負荷試験ツール、障害要因挿入ツール等が用いられてもよい。
続いて、人工的な障害が発生した状態の学習用システムにおいて観測される各種の観測データ、すなわち、学習用システムを構成している各機器から得られるログデータや、CPU使用率、メモリ使用量などのメトリクス、機器間を流れるトラヒックなどが取得される。観測データは、何らかの方法で数値ベクトルに変換する必要があり、このようにして得られた数値ベクトルを、以下「特徴ベクトル」と呼ぶ。特徴ベクトルは、例えば、得られた数値データやログのカウント数などを単純に並べ、適当な正規化等の前処理を行うことで生成されてもよい。
本実施の形態では、このようにして得られた特徴ベクトルを、強化学習における「状態s」とみなす。状態sは、連続値高次元で、要素間に複雑な相関があり、確率的な揺らぎも含むため、本実施の形態では、DQNなどの深層強化学習手法が好適である。
エージェントは、特徴ベクトルをDQNのニューラルネットワーク(復旧コマンドを推定するニューラルネットワーク)に入力し、現状の方策に基づいて行動aを決定する。エージェントは、この行動aを学習用システムに対して実行し、新たな観測データに基づく特徴ベクトルs'を得る。エージェントは、また、別途配置されたシステム状態確認ツールにより、学習用システムの状態が行動aによってどのように変化したかを確認する。例えば、学習用システムを構成する各機器へのpingの成否をもとにしたチェックや、システムの異常度を算出する異常検出システムが用いられてもよい。
エージェントは、このシステム状態変化結果に応じた報酬rを獲得する。例えば、学習用システムが正常状態か異常状態かの二値しか確認することができない場合には、正常状態に戻ったときに正の報酬が与えられ、それ以外のときは負又は0の報酬が与えられる。一方で、連続的な異常度を算出できる異常検知ツールが用いられる場合には、異常度の下がり具合(行動によってどの程度正常状態に近づいたか)が報酬として定義されてもよい。対象システムがいくつかのコンポーネントから構成されており、各コンポーネントの正常状態を確認できる場合には、正常状態に戻ったコンポーネントの数が報酬として与えられてもよい。また、獲得したい復旧方策の性質によっても報酬の設計の仕方は変わる。できるだけ短時間で復旧を実現するような復旧方策を獲得したければ、各コマンドの実行時間を加味した報酬を与えるべきであり、できるだけ安全な復旧コマンドのみで復旧を実現するような復旧方策を獲得したければ、各コマンドのシステム影響度(システムのCPUに与える負荷度合いなど)を加味した報酬を与えればよい。
一方、経験(s,a,r,s')を獲得したエージェントは、これをメモリに蓄えつつ、過去の経験もミニバッチとして利用してニューラルネットワークの重みパラメタ更新を行う。
以上の過程が、学習用システムが正常状態に戻るまで繰り返される。学習用システムへの1つの障害要因挿入から、正常状態への復旧までのサイクルをエピソードと呼ぶ。なお、1つのエピソードにおいて、一定回数上記のサイクルを繰り返してもシステムが復旧されない場合には、学習用システムのバックアップなどを用いて検証状態を正常状態に戻し、エピソードを強制終了してもよい。本実施の形態では、挿入する障害要因(発生する障害の種類、障害要因の挿入箇所の組み合わせ)を変えてエピソードを何度も繰り返していく。事前定義された学習収束条件(例えば、過去数回のエピソードでの平均獲得報酬和(エピソードごとの報酬和の各数回の平均値)がある閾値を超えること)を満たすことをもって、学習フェーズを終了する。学習済みのニューラルネットワーク(以下、「学習済みニューラルネットワーク」という。)からは、
Figure 2021174348
に基づいて復旧方策を獲得することができる。
続いて、自動復旧フェーズについて説明する。自動復旧フェーズでは、運用中(実環境)の対象システム(以下、「実システム」という。)が利用される。障害が発生し観測データが得られたとき、これを特徴ベクトルに変換し、特徴ベクトルを状態sとして学習済みニューラルネットワークに入力する。学習済みニューラルネットワークによって、学習された復旧方策に基づいて実行すべき行動aが推定されるので、推定された行動aを対象システムに実行し、新たな観測データを得る。
以上のサイクルが、実システムが正常状態に戻るまで(システム状態確認ツールや異常検知ツールがシステムの復旧を確認するまで)繰り返される。
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における障害復旧装置10のハードウェア構成例を示す図である。図1の障害復旧装置10は、それぞれバスBで相互に接続されているドライブ装置100、補助記憶装置102、メモリ装置103、プロセッサ104、及びインタフェース装置105等を有する。
障害復旧装置10での処理を実現するプログラムは、CD−ROM等の記録媒体101によって提供される。プログラムを記憶した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。プロセッサ104は、CPU又はGPU(Graphics Processing Unit)等であり、メモリ装置103に格納されたプログラムに従って障害復旧装置10に係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
図2は、本発明の実施の形態における障害復旧装置10の機能構成例を示す図である。図2には、対象システム、障害要因挿入装置20、システム状態確認装置30及び障害復旧装置10が示されている。
対象システムは、学習フェーズにおける学習用システムであり、自動復旧フェーズにおける実システムである。
障害要因挿入装置20は、上記した障害要因挿入ツールを有するコンピュータであり、学習フェーズにおいて、対象システムに対して人工的に生成される障害要因を挿入する。
システム状態確認装置30は、対象システムの状態を確認し、当該状態の変化に基づく報酬rを障害復旧装置10のエージェントに与える(入力する)コンピュータである。
なお、対象システム、障害要因挿入装置20及びシステム状態確認装置30は、強化学習における環境を構成する。
一方、障害復旧装置10は、前処理部11、復旧方策学習部12及び行動実行部13等を有する。これら各部は、障害復旧装置10にインストールされた1以上のプログラムが、プロセッサ104に実行させる処理により実現される。障害復旧装置10は、また、経験履歴記憶部14を利用する。経験履歴記憶部14は、例えば、メモリ装置103等を用いて実現可能である。
前処理部11は、対象システムにおいて観測(取得)されるログやメトリクスなどの観測データを特徴ベクトルへ変換する。
復旧方策学習部12は、経験履歴記憶部14に記憶される経験(s,a,r,s')の履歴に基づいて、ニューラルネットワークのパラメタ更新を行うと共に、当該ニューラルネットワークを用いて、対象システムに対して実行する行動の決定を行う。ここで、行動とは、復旧コマンドの入力である。
行動実行部13は、復旧方策学習部12が決定した行動(復旧コマンド)を対象システムに対して実行する。
なお、障害要因挿入装置20及びシステム状態確認装置30は、障害復旧装置10に含まれてもよい。
学習フェーズでは、エピソードと呼ばれる過程が何度も繰り返される。例えば、障害要因(障害の種類と障害箇所との組み合わせ)が5であり、100回のエピソードを実行する場合、5つの障害要因の中からランダムに1つの障害要因が選択されてエピソードを実行するということが100回繰り返される。1エピソードは次のような処理手順からなる。図3は、学習フェーズの1エピソードにおいて障害復旧装置10が実行する処理手順の一例を説明するためのフローチャートである。以下、当該1エピソードに対して選択された障害要因を「対象要因」という。
障害要因挿入装置20が対象要因を学習用システムに対して挿入することで学習用システムにおいて人工的な障害が発生すると(S101でYes)、前処理部11は、当該障害が発生している状態の学習用システムから観測データを取得する(S102)。続いて、前処理部11は、観測データを特徴ベクトルへ変換し、当該特徴ベクトルを復旧方策学習部12へ入力する(S103)。
続いて、復旧方策学習部12は、特徴ベクトルをニューラルネットワークに入力することで、学習用システムに入力すべき復旧コマンドを決定(選択)する(S104)。例えば、ニューラルネットワークからは、各復旧コマンドの確率が出力される。復旧方策学習部12は、最も確率が高い復旧コマンドを選択する。続いて、行動実行部13は、復旧方策学習部12によって決定された復旧コマンドを学習用システムに対して実行(入力)する(S105)。
続いて、復旧方策学習部12は、システム状態確認装置30から報酬を取得する(S106)。例えば、システム状態確認装置30は、学習用システムの状態変化を確認し、当該状態変化に応じた報酬を復旧方策学習部12に与える。続いて、前処理部11は、状態変化後(復旧コマンドの実行後)の学習用システムから観測データを取得する(S107)。続いて、前処理部11は、観測データを特徴ベクトルへ変換し、当該特徴ベクトルを復旧方策学習部12へ入力する(S108)。
続いて、復旧方策学習部12は、ステップS103において生成された特徴ベクトルを状態sとし、ステップS104において決定した復旧コマンドを行動aとし、ステップS106において取得した報酬を報酬rとし、ステップS108において生成された特徴ベクトル状態s'とする経験(s,a,r,s')を経験履歴記憶部14に記憶する(S109)。したがって、経験履歴記憶部14には、経験の履歴が記憶される。
続いて、復旧方策学習部12は、経験履歴記憶部14に記憶された経験をランダムにミニバッチとして取り出してニューラルネットワークのパラメタ更新(ニューラルネットワークの学習)を行う(S110)。続いて、復旧方策学習部12は、例えば、システム状態確認装置30から取得される状態に基づいて、学習用システムが正常状態であるか(障害から復旧したか)否かを判定する(S111)。
学習用システムが正常状態でない場合(S111でNo)、復旧方策学習部12は、行動回数(復旧コマンドの実行回数)が閾値以上であるか否かを判定する(S112)。なお、行動回数は、ステップS104以降の繰り返しの回数と等価である。行動回数が閾値未満である場合(S112でNo)、ステップS104以降が繰り返される。
一方、学習用システムが正常状態である場合(S111でYes)、又は行動回数が閾値以上である場合(S112でYes)、1つのエピソードについて、図3の処理手順は終了する。なお、行動回数が閾値以上であるという条件に基づいて図3の処理手順が終了する場合、学習用システムの初期状態のバックアップなどを用いて、検証状態が正常状態に戻されるようにしてもよい。そうすることで、今回のエピソードにおいて発生した障害について、次に実行されるエピソードに対する影響を低下させることができる。
1つのエピソードが終了すると、次のエピソードが開始される。例えば、エピソードが終了するたびに、事前定義された学習収束条件(例えば過去数回のエピソードでの平均獲得報酬和がある閾値を超えること)の充足の有無を復旧方策学習部12が判定し、当該学習収束条件が満たされた場合に、復旧方策学習部12が学習フェーズを終了させる。
図4は、自動復旧フェーズにおいて障害復旧装置10が実行する処理手順の一例を説明するためのフローチャートである。
実システムにおいて障害が発生すると(S201でYes)、前処理部11は、当該障害が発生している状態の実システムから観測データを取得する(S202)。続いて、前処理部11は、観測データを特徴ベクトルへ変換し、当該特徴ベクトルを復旧方策学習部12へ入力する(S203)。
続いて、復旧方策学習部12は、特徴ベクトルを学習済みニューラルネットワーク(学習済みの復旧方策)に入力することで、実システムに入力すべき復旧コマンドを決定(選択)する(S204)。例えば、学習済みニューラルネットワークからは、各復旧コマンドの確率が出力される。復旧方策学習部12は、最も確率が高い復旧コマンドを選択する。続いて、行動実行部13は、復旧方策学習部12によって決定された復旧コマンドを実システムに対して実行(入力)する(S205)。
ステップS202〜S205は、例えば、システム状態確認装置30から取得される状態に基づいて、実システムが正常状態に戻ったと判定されるまで(障害から復旧するまで)繰り返される(S206)。
続いて、本実施の形態を実施する上で生じうるいくつかの課題とその解決策について述べる。
[課題1]
本実施の形態の学習フェーズでは、各エピソード内において、障害要因挿入後に観測データ収集、行動実行というステップを何度も繰り返すことになる。対象システムによってはこの1ステップを回すのに時間を要したり技術的に難しかったりする場合がある。例えば、サーバに何らかの障害要因を挿入した後、再起動やバックアップなどのコマンドで復旧しようとした場合、数分のオーダーで時間がかかることがある。また、障害要因挿入の方法も難しい場合がある。本実施の形態では、深層強化学習を行える程度のデータ量が必要であるため、1ステップに要する時間・困難性はできるだけ小さくしなければならない。
[課題1の解決策]
このような課題がある場合、学習用システムをコンテナ基盤などの仮想環境で模擬し、仮想環境を用いて学習フェーズが実施されてもよい。コンテナであれば、再起動に要する時間は数秒程度であり、また、Kubernetesなどのようなオーケストレータも利用することができるため、複数台のコンテナに関する操作も容易である。また、コンテナはイメージファイルで管理されるため、完全に同じ環境を再現することもできる。同一環境を複数用意し、同時に本実施の形態の手法を適用することで、効率よく経験(s,a,r,s')を蓄積する分散学習も可能である。更に、近年カオスエンジニアリングの取組の中で様々な障害要因挿入ツールが開発されている(「C. Rosenthal, L. Hochstein, A. Blohowiak, N. Jones, and A. Basiri, "Chaos Engineering," O 'Reilly Media, Incorporated, 2017.」参照)ため、多種多様な障害を容易に挿入することができる。
[課題2]
本実施の形態では、様々な障害要因を挿入し深層強化学習を実行するが、挿入する障害要因の選択をランダムに、あるいは均等にすることは必ずしも得策ではない。同じ障害を複数回挿入した場合、毎回同じような観測データが得られるため復旧方策が簡単に獲得できるような障害もあれば、観測データが大きく揺らぐため復旧方策の獲得に時間がかかる障害もある。後者のような障害に対して重点的に障害要因挿入を行って学習を行うのが望ましい。このように挿入する障害要因の選択方法は、復旧方策の精度や、復旧方策獲得までの時間に大きな影響を与える。
[課題2の解決策]
そこで、次のような挿入障害要因の選択方法を採用することで、効果的に観測データを取得することが考えられる。まず、或る程度ランダムに障害要因挿入を行い深層強化学習を実行してエピソードを繰り返す。その後、学習フェーズの途中の段階(例えば、最大で100回のエピソードを繰り返す予定であれば、50回のエピソードの終了した段階)で、復旧方策学習部12は、障害要因ごとに、直近の過去N回(例えば、N=5等)の報酬和の平均を求める。当該平均が高報酬和の基準として設定された閾値以上である障害要因群があれば、その障害要因群に対しては復旧方策が獲得できたと考えてよい。一方で、当該平均が当該閾値未満である障害要因群に関しては、復旧方策が対応できていないので、そのような障害要因群を重点的に挿入するようにして深層学習を続ける。例えば、この場合、復旧方策学習部12は、当該障害要因群の中からランダムに障害要因挿入を実行するように、障害要因挿入装置20に指示を送信してもよい。すなわち、復旧方策の学習度合いに応じて、障害要因別(障害種類別及び障害箇要因挿入箇所別)に挿入回数が変更されてもよい。このようにすることで、あらゆる障害要因に対応できる復旧方策を効率よく学習することができる。
[課題3]
観測データは、挿入された障害要因(障害種類、障害要因挿入箇所)だけではなく、背景トラヒックなどの状況によっても大きく変化しうる。そのため、一定条件下で復旧方策を学習した場合、トラヒックのトレンドなど環境の状況が変わっただけで、復旧方策が役立たなくなってしまう可能性がある。
[課題3の解決方法]
このような課題がある場合は、例えば、トラヒック生成装置などを用い、学習用システムに背景トラヒックを生成し、その大きさ等、学習用システムが属する環境を変化させながら深層強化学習を行うことで、様々な状況に対応できる復旧方策を学習することができる。すなわち、復旧方策学習部12は、学習用システムが属する環境が時間の経過に応じて変化する状況においてニューラルネットワークの学習を行ってもよい。この場合、背景トラヒックの大きさ等の環境の変化は、エピソード単位で変更されてもよいし、各エピソードのステップS104が繰り返される過程において変更されてもよい。
次に、本実施の形態について実際に行った実験の結果について説明する。
コンテナ型仮想環境のオーケストレータであるKubernetesを用いてKubernetesクラスタを作成し、その中にweb3層環境を構築した。このコンテナで実現されたweb3層環境を、本実施の形態における検証環境及び実環境とみなす。Web3層環境は、Nginx、Rails、MySQLの3コンテナによって構成されたものが2セットあり、全6コンテナからなる環境である。
背景トラヒックとして、負荷試験ツールによりhttpリクエストをランダムに発生させた。また障害要因として、6個中最大2個のコンテナに80%のパケットロスまたは10000±1000msの遅延のいずれかを挿入した。
各コンテナにおける流入出トラヒック(バイト単位、パケット数単位)を収集し観測データとした。特徴ベクトルは、観測データをスケーリングして得られる24次元ベクトルである。
エージェントがとりうる行動は、各コンテナを再生成させるコマンドの実行である。コンテナは全6個であるため、全行動数も6である。障害要因を挿入されたコンテナは、再生成コマンドを打たれることで復旧する。
報酬は、次のように定めた。挿入された障害が1箇所の場合、r=1.0(復旧完了) or 0.25(それ以外)。挿入された障害が2箇所の場合、r=0.5(1箇所の障害が復旧)or−0.25(それ以外)。すなわち、エージェントが復旧に必要十分な復旧コマンドを実行した場合、報酬+1.0を獲得し、誤ったコマンドを実行した場合、ペナルティ(負の報酬)を得る。深層強化学習で用いるアルゴリズムとしては、DQNの改良版であるDouble DQN(「H. Van Hasselt, A. Guez, and D. Silver, "Deep reinforcement learning with double Q-learning," in Proc. of the 30th National Conference on American Association for Artificial Intelligence (AAAI), pp. 2094-2100, 2016.」)を採用し、過去10エピソードの平均獲得報酬が0.95を超えたことをもって学習完了とみなした。
学習結果を図5に示す。横軸はエピソード数であり、縦軸は過去10エピソードの平均獲得報酬である。青い実線が学習曲線で、水平な破線が報酬和=0.95の閾値(学習完了の閾値)である。732エピソードで完了し、所要時間は約58.5時間であった。このように、適切な学習を行えば、復旧方策を自動で獲得し、システムの自動復旧が可能となることが分かり、本実施の形態の有効性を示している。
上述したように、本実施の形態によれば、学習データや事前の確率モデル作成が不要でありながら、ログやメトリクスなどの高次元で、確率的に変動する、複雑な相関関係を持つ観測データをもとに、障害を復旧させるためのコマンドを自動的に推定可能とすることができる。
学習データや事前の確率モデル作成が不要であるため、十分な量の学習データが蓄積されていなかったり、システム挙動を表すような確率モデルの作成が難しかったりする場合でも、高次元な観測データを元に適切な復旧コマンドを出力するような復旧方策を獲得することができるようになり、障害復旧の自動化、高精度化に貢献することができる。
なお、本実施の形態において、学習用システムは、第1のシステムの一例である。実システムは、第2のシステムの一例である。前処理部11は、第1の取得部及び第2の取得部の一例である。観測データ及びその特徴ベクトルは、第1のデータ及び第2のデータの一例である。行動実行部13は、第1の実行部及び第2の実行部の一例である。復旧方策学習部12は、第3の取得部及び学習部の一例である。
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
10 障害復旧装置
11 前処理部
12 復旧方策学習部
13 行動実行部
14 経験履歴記憶部
20 障害要因挿入装置
30 システム状態確認装置
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 プロセッサ
105 インタフェース装置
B バス

Claims (9)

  1. 人工的な障害要因の挿入後において第1のシステムにおいて観測される第1のデータを取得する第1の取得部と、
    前記第1のデータをニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第1のシステムに対して実行する第1の実行部と、
    前記コマンドの実行後において前記第1のシステムにおいて観測される第2のデータを取得する第2の取得部と、
    前記コマンドの実行によって得られる報酬を取得する第3の取得部と、
    前記第1のデータ、前記コマンド、前記報酬、前記第2のデータに基づく深層強化学習によって前記ニューラルネットワークを学習する学習部と、
    を有することを特徴とする障害復旧装置。
  2. 第2のシステムにおいて障害が発生した状態において前記第2のシステムにおいて観測されるデータを学習済みの前記ニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第2のシステムに対して実行する第2の実行部、
    を有することを特徴とする請求項1記載の障害復旧装置。
  3. 前記第1のシステムは、仮想環境である、
    ことを特徴とする請求項1又は2記載の障害復旧装置。
  4. 前記ニューラルネットワークの学習度合いに応じて、人工的な障害要因別に前記第1のシステムに対する挿入回数が変更される、
    ことを特徴とする請求項1乃至3いずれか一項記載の障害復旧装置。
  5. 前記学習部は、前記第1のシステムが属する環境の状況が時間の経過に応じて変化する状況において、前記ニューラルネットワークを学習する、
    ことを特徴とする請求項1乃至4いずれか一項記載の障害復旧装置。
  6. 人工的な障害要因の挿入後において第1のシステムにおいて観測される第1のデータを取得する第1の取得手順と、
    前記第1のデータをニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第1のシステムに対して実行する第1の実行手順と、
    前記コマンドの実行後において前記第1のシステムにおいて観測される第2のデータを取得する第2の取得手順と、
    前記コマンドの実行によって得られる報酬を取得する第3の取得手順と、
    前記第1のデータ、前記コマンド、前記報酬、前記第2のデータに基づく深層強化学習によって前記ニューラルネットワークを学習する学習手順と、
    をコンピュータが実行することを特徴とする障害復旧方法。
  7. 第2のシステムにおいて障害が発生した状態において前記第2のシステムにおいて観測されるデータを学習済みの前記ニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第2のシステムに対して実行する第2の実行手順、
    をコンピュータが実行することを特徴とする請求項6記載の障害復旧方法。
  8. 人工的な障害要因の挿入後において第1のシステムにおいて観測される第1のデータを取得する第1の取得手順と、
    前記第1のデータをニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第1のシステムに対して実行する第1の実行手順と、
    前記コマンドの実行後において前記第1のシステムにおいて観測される第2のデータを取得する第2の取得手順と、
    前記コマンドの実行によって得られる報酬を取得する第3の取得手順と、
    前記第1のデータ、前記コマンド、前記報酬、前記第2のデータに基づく深層強化学習によって前記ニューラルネットワークを学習する学習手順と、
    をコンピュータに実行させることを特徴とするプログラム。
  9. 第2のシステムにおいて障害が発生した状態において前記第2のシステムにおいて観測されるデータを学習済みの前記ニューラルネットワークに入力することで前記ニューラルネットワークによって推定されるコマンドを前記第2のシステムに対して実行する第2の実行手順、
    をコンピュータに実行させることを特徴とする請求項8記載のプログラム。
JP2020079042A 2020-04-28 2020-04-28 障害復旧装置、障害復旧方法及びプログラム Active JP7472628B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020079042A JP7472628B2 (ja) 2020-04-28 2020-04-28 障害復旧装置、障害復旧方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020079042A JP7472628B2 (ja) 2020-04-28 2020-04-28 障害復旧装置、障害復旧方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2021174348A true JP2021174348A (ja) 2021-11-01
JP7472628B2 JP7472628B2 (ja) 2024-04-23

Family

ID=78280164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020079042A Active JP7472628B2 (ja) 2020-04-28 2020-04-28 障害復旧装置、障害復旧方法及びプログラム

Country Status (1)

Country Link
JP (1) JP7472628B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014078067A (ja) * 2012-10-09 2014-05-01 Nec Corp データベースシステム、データベース装置、データベースの障害回復方法およびプログラム
JP2019174870A (ja) * 2018-03-26 2019-10-10 Kddi株式会社 情報処理装置、情報処理方法、及びプログラム
US20190347933A1 (en) * 2018-05-11 2019-11-14 Virtual Traffic Lights, LLC Method of implementing an intelligent traffic control apparatus having a reinforcement learning based partial traffic detection control system, and an intelligent traffic control apparatus implemented thereby

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014078067A (ja) * 2012-10-09 2014-05-01 Nec Corp データベースシステム、データベース装置、データベースの障害回復方法およびプログラム
JP2019174870A (ja) * 2018-03-26 2019-10-10 Kddi株式会社 情報処理装置、情報処理方法、及びプログラム
US20190347933A1 (en) * 2018-05-11 2019-11-14 Virtual Traffic Lights, LLC Method of implementing an intelligent traffic control apparatus having a reinforcement learning based partial traffic detection control system, and an intelligent traffic control apparatus implemented thereby

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IKEUCHI, H ET AL.: ""Root-Cause Diagnosis Using Logs Generated by User Actions"", 2018 IEEE GLOBAL COMMUNICATIONS CONFERENCE (GLOBECOM) [ONLINE], JPN6023046010, 2019, pages 1 - 7, ISSN: 0005195456 *
MNIH, V ET AL.: ""Human-level control through deep reinforcement learning"", NATURE [ONLINE], JPN6023046009, 2015, pages 529 - 533, XP037437579, ISSN: 0005195455, DOI: 10.1038/nature14236 *
川田 丈浩 ほか: ""復旧コマンド列自動生成技術"", NTT技術ジャーナル, vol. 第31巻, 第5号, JPN6023046011, 2019, pages 19 - 20, ISSN: 0005195457 *

Also Published As

Publication number Publication date
JP7472628B2 (ja) 2024-04-23

Similar Documents

Publication Publication Date Title
CN111652496B (zh) 基于网络安全态势感知系统的运行风险评估方法及装置
KR102118670B1 (ko) Ict 인프라 관리 시스템 및 이를 이용한 ict 인프라 관리 방법
Welte Using state diagrams for modeling maintenance of deteriorating systems
CN105530122A (zh) 一种基于选择性隐朴素贝叶斯分类器的网络故障诊断方法
CN108334997B (zh) 基于支撑故障事件约束机组组合的备用优化方法和装置
CN111369094A (zh) 告警派单方法、装置、系统及计算机可读存储介质
CN101753382A (zh) 一种自适应网络故障监控定位安全模型的构建方法
CN114666204B (zh) 一种基于因果强化学习的故障根因定位方法及系统
CN113590370A (zh) 一种故障处理方法、装置、设备及存储介质
CN113239534A (zh) 风力发电机组的故障、寿命预测方法和装置
US11907865B2 (en) Determination of security-constrained optimal power flow
CN109309594B (zh) 通信设备电源故障分析的方法、装置、设备及存储介质
CN114580546A (zh) 基于联邦学习框架的工业机泵类故障预测方法及系统
JP7472628B2 (ja) 障害復旧装置、障害復旧方法及びプログラム
CN111144572B (zh) 一种基于树形贝叶斯网络的配电网灾情推断方法及系统
CN108920939B (zh) 基于学习诊断器的信息安全判别方法、系统及相关装置
CN110874325B (zh) 一种基于用户会话的Web应用测试用例扩充方法
CN109784629B (zh) 一种基于神经网络的变电站工控网络故障定位方法
CN110380411A (zh) 一种考虑通信影响的配电网恢复力定量评估方法
CN113377595B (zh) 故障诊断方法、装置、电子设备和存储介质
KR20230100683A (ko) 준마코프 사후상태 액터-크리틱을 활용한 전력망 자동 운영 방법
Li et al. Active learning for causal Bayesian network structure with non-symmetrical entropy
JP7327493B2 (ja) 異常対処支援装置、方法およびプログラム
Laroche et al. Optimising a handcrafted dialogue system design.
Paixao et al. A recoverable robust approach for the next release problem

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240325

R150 Certificate of patent or registration of utility model

Ref document number: 7472628

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150