(57)【要約】【課題】コンピュータシステムの運用のための作業負担を軽減すること。【解決手段】操作列生成装置は、コンピュータシステムの状態を示す情報と、前記状態において前記コンピュータシステムに対して行われた操作の内容を示す単語列との関係性を学習する学習部と、前記コンピュータシステムの状態について、新たな状態を示す情報が入力されると、前記関係性に対して当該情報を入力して、前記新たな状態に対する前記単語列を生成する生成部と、を有する。【選択図】図３
2020024538.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムの状態を示す情報と、前記状態において前記コンピュータシステムに対して行われた操作の内容を示す単語列との関係性を学習する学習部と、
前記コンピュータシステムの状態について、新たな状態を示す情報が入力されると、前記関係性に対して当該情報を入力して、前記新たな状態に対する前記単語列を生成する生成部と、
を有することを特徴とする操作列生成装置。
【請求項２】
前記コンピュータシステムの状態を示す情報は、系列データ及び非系列データの双方を含みうる、
ことを特徴とする請求項１記載の操作列生成装置。
【請求項３】
前記関係性のモデル化を再帰型ニューラルネットワークで実現した、
ことを特徴とする請求項１又は２記載の操作列生成装置。
【請求項４】
前記関係性のモデル化をsequence-to-sequenceで実現した、
ことを特徴とする請求項１又は２記載の操作列生成装置。
【請求項５】
コンピュータシステムの状態を示す情報と、前記状態において前記コンピュータシステムに対して行われた操作の内容を示す単語列との関係性を学習する学習手順と、
前記コンピュータシステムの状態について、新たな状態を示す情報が入力されると、前記関係性に対して当該情報を入力して、前記新たな状態に対する前記単語列を生成する生成手順と、
をコンピュータが実行することを特徴とする操作列生成方法。
【請求項６】
請求項１乃至４いずれか一項記載の学習部及び生成部としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、操作列生成装置、操作列生成方法及びプログラムに関する。
【背景技術】
【０００２】
大規模化・構成機器の多様化が進むＩＴシステム（コンピュータシステム）においては、発生故障件数が増大し、従来のようなオペレータによる障害からの復旧措置では、高品質なマネジメントの維持が困難となっている。
【０００３】
このような課題に対し、自動復旧システムが開発されている。一般に自動復旧システムは、特定のアラームの発生などをトリガに、予め設定されている手順（シナリオ）を実行することで、オペレータの作業を介さずに復旧を実現する。したがって、自動復旧システムは、トリガとなるアラームとそのときのシナリオを予め作成しておく必要がある。
【０００４】
しかしながら、自動復旧システムでは、手作業でのシナリオの構築の手間が、導入の障壁となっている。シナリオの作成はシステム運用に纏わる多くのノウハウを必要とし、対象システムの保守運用に慣れた人物しか行えないからである。シナリオも数十の操作（コマンド等）から構成されることが多いため、シナリオ作成は、非常に高コストな業務である。また、自動復旧システムは、事前に定義したトリガ条件に合致した場合にのみ措置を実行することが可能であるため、未知の障害が発生した場合には対応ができない。更に、より複雑な障害になると、トリガとなるアラームも極めて煩雑になる。人手でのトリガ設定が困難な、複雑な発生条件も出現し得る。これらのシナリオとトリガの設定の難しさが、自動復旧システム導入の課題となっている。
【０００５】
シナリオ構築の手間の最大の要因となっているのが、シナリオを構成する要素である"操作"の事前定義が困難なことである。シナリオ構築を自動的に行う関連技術として、検証環境で模擬的に操作を繰り返すことで、システム状態に基づいて事前に定義した操作のいずれを実行すればよいのかの判定を自動的に学習する手法が提案されている（非特許文献１）。また、過去の復旧手順の履歴から、順に行うべき一連の操作手順を学習する手法も提案されている（非特許文献２）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】宮本達史, 黒木圭介, 宮澤雅典, 林通秋, "DNNを適用したNFV障害業務プロセス管理モデルの提案", 電子情報通信学会総合大会, B-14-4, 2018.
【非特許文献２】Michael L. Littman, Nishkam Ravi, Eitan Fenson and Rich Howard, "An Instance-based State Representation for Network Repair", In Proc. of AAAI'04, pp.287-292, 2004.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１及び非特許文献２等の従来技術では、シナリオの構成要素である操作の事前定義が必要である。実際には定義すべき操作は数百に及ぶことが予想される。また、新たなサービスやソフトウェアを導入すれば定義すべき操作も増加するため定期的な操作リストの更新も必要である。そのため、従来技術では自動復旧できる故障の種類は決められた操作のみで処置できる範囲に限定されるという課題がある。また、例えば、操作をどのようなホスト名の装置に行うか、どのようなＩＤを設定するかなど、パラメータの詳細は人手で対応する必要があり、そのような作業が必要となる故障の自動復旧は困難である。
【０００８】
本発明は、上記の点に鑑みてなされたものであって、コンピュータシステムの運用のための作業負担を軽減することを目的とする。
【課題を解決するための手段】
【０００９】
そこで上記課題を解決するため、操作列生成装置は、コンピュータシステムの状態を示す情報と、前記状態において前記コンピュータシステムに対して行われた操作の内容を示す単語列との関係性を学習する学習部と、前記コンピュータシステムの状態について、新たな状態を示す情報が入力されると、前記関係性に対して当該情報を入力して、前記新たな状態に対する前記単語列を生成する生成部と、を有する。
【発明の効果】
【００１０】
コンピュータシステムの運用のための作業負担を軽減することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態において出力される操作列のイメージの一例を示す図である。
【図２】本発明の実施の形態における操作列生成装置１０のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における操作列生成装置１０の機能構成例を示す図である。
【図４】学習フェーズで利用される部分を示す図である。
【図５】学習フェーズにおいて操作列生成装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【図６】操作列生成フェーズで利用される部分を示す図である。
【図７】操作列生成フェーズにおいて操作列生成装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、過去に故障が発生したときのＩＴシステム等のコンピュータシステム（以下、単に「システム」という。）の状態を示す情報（アラーム等）と、当該障害からの復旧のために行われた操作の内容を文字列の系列によって示す操作列を学習データとして、システム状態と操作列の関係性が学習され、新たな異常の発生時に、システム状態から尤もらしい操作列が出力されてオペレータに提示される。
【００１３】
本実施の形態のポイントは、新たな故障に対して出力される操作列を、従来手法のような事前定義された操作で構成された系列とせず、直接キーボード入力されるような、純粋な（単なる）文字列として定義する点である。なお、「新たな故障」とは、学習後に発生した故障をいい、必ずしも、未知の故障とは限らない。
【００１４】
図１は、本発明の実施の形態において出力される操作列のイメージの一例を示す図である。図１における操作列は、"login, host01, <ENT>, show, log, <ENT>, show, session, <ENT>, show, state, all, <ENT>, configure, -t, 2018/06/01, 10:00:00, <ENT>, sync, <ENT>, exit, <ENT>, 
"の様に、単語列の系列である。ここで、単語列とは、<ENT>又は
で区切られる単語の列をいう。なお、<ENT>はコマンドの実行を示す改行に当たる単語であり、また、
は文の終わりを示す単語である。出力される単語の候補は、学習データに含まれる操作の履歴の全単語である。
【００１５】
従来技術で図１の操作列を出力しようとすると、事前に「login <host名>」、「show log」、「show session」など、一行ずつの操作が操作リストの中に人手で事前定義されなければならない。
【００１６】
一方、本実施の形態では、学習データに含まれる単語がそのまま出力の要素の候補となるため、過去に保守運用を行なった際の履歴があれば、操作についての人手での事前定義が不要となる。また従来技術で「login <host名>」のようにパラメータを含む操作は、人手での対処（この場合は、"host01"を代入すること）が必要である。これに対し、本実施の形態では、学習データ中に"host01"という単語が含まれていれば、そのパラメータも含めて推定可能である（さらに言えば、後述のようにｓｅｑ２ｓｅｑ  Ｐｏｉｎｔｅｒ機構を用いれば、学習データ中に"host01"が含まれていなくても、入力データ中に"host01"が含まれていれば推定可能である。）。
【００１７】
出力を単語列の系列とみなす本実施の形態は、従来の入力や出力を成型し構造化された系列とみなす方法に比べて、出力され得る値の空間が膨大で、入力と出力の値の関係も複雑である。そのような技術的な問題をクリアするための実現例として、多量の学習データから入力単語列と出力単語列の複雑な関係性を学習できる、再帰型ニューラルネットワークと呼ばれる深層学習の一種をもとにした手法を下記で説明する。
【００１８】
本実施形態から明らかなように、出力された操作列や、新たにオペレータによって行われた操作の履歴は、そのときのシステム状態を表すアラーム列と組にして、学習データに追加することが可能である。よって、システムの更新に伴い新たな操作が追加されても、新たな操作を自動的に学習することが容易で、人手での操作一覧の更新管理が不要なことも本実施の形態の利点である。
【００１９】
以下、更に具体的に説明する。
【００２０】
本実施の形態では、入力として異常なシステム状態を示す何らかの情報（例えば、オペレータに通知されるシステムアラーム、ＣＰＵやＨＤＤの使用率など）が与えられたときに、システム状態を正常に戻すための操作列が出力される。
【００２１】
学習データＡとして、システム状態と操作列との組がＮ個（Ａ＝｛（Ｘｉ，Ｙｉ）｝Ｎｉ＝１）与えられる。出力に該当する操作列は、上記した通り単なる単語列の系列である。Ｙｉは、学習データＡにおけるｉ番目の組の操作列であり、Ｙｉ＝ｙｉ１ｙｉ２…ｙｉ｜Ｙｉ｜と、単語ｙｉｔ∈Ｖで構成される系列として表せる。但し、単語集Ｖは、とり得る単語の集合であり、学習データの操作列に含まれる全単語である。また、｜Ｙｉ｜は、操作列Ｙｉに含まれる単語の総数である。
【００２２】
一方、Ｘｉは、学習データＡにおけるｉ番目の組のシステム状態である。Ｘｉは、例えば、発生したシステムアラームなどであれば操作列と同様に系列データとなるが、ＣＰＵ使用率などを入力とした場合は、時間軸を持たないベクトル（すなわち、非系列データ）にもなり得るため、どのような値かは定義されない。換言すれば、Ｘｉの値は、所定の形式の値に限定されない。例えば、Ｘｉは、系列データ及び非系列データの双方を含んでもよい。
【００２３】
従来技術の場合は、出力として考えられる有限個の操作を操作リストとして予め定義しておく必要がある。したがって、学習用に用意した操作列データＹｉの中に操作リストに載っていない操作が含まれていた場合、Ｙｉを学習データとして用いるのを断念する（すなわち、自動化の対象とするのを断念する）か、操作リストに新しい操作を人手で加える必要があった。
【００２４】
一方、本実施の形態では｛Ｙｉ｝ｉに基づいて単語集Ｖが機械的に増え、単語集Ｖ内の単語の組み合わせにより事実上全ての操作の文字列の再現が可能となる。したがって、学習データ全てを自動化の対象とすることができる。
【００２５】
本実施の形態では、新たなシステム状態ＸＮ＋１が与えられたときに、過去の学習データからＸＮ＋１に対応する適切な操作列ＹＮ＋１を出力する。これを数式で表すと、次のようになる。
ＹＮ＋１＝Ｆ（ＸＮ＋１；Ａ）
【００２６】
なお、操作列ＹＮ＋１は、単なる文字列である。したがって、関数Ｆは、系列データ若しくは非系列データである、又は系列データ及び非系列データの双方を含むシステム状態ＸＮ＋１を操作列を示す文字列に変換する関数であるといえる。
【００２７】
本実施の形態における学習フェーズでは、上式の関数Ｆのパラメータを学習データＡから計算する。すなわち、関数ＦにＸｉを与えたときの出力をＹ'ｉとしたとき、Ｙ'ｉと、Ｘｉに対する正解としてのＹｉとができるだけ近くなるように、関数Ｆのパラメータを計算する。操作列生成フェーズでは、計算されたパラメータを用いた関数Ｆと入力ＸＮ＋１から、ＹＮ＋１を出力する。
【００２８】
関数Ｆは、出力Ｙの長さ｜Ｙ｜が未知であることを考慮し、可変長の系列の出力が行える必要がある。任意の長さの出力が可能な学習モデルであって、入出力の関係を学習するモデルとしては、再帰型ニューラルネットワーク（Recurrent Neural Network; ＲＮＮ）がある。本実施の形態もＲＮＮを用いて、状態Ｘと操作列Ｙとの関係性のモデル化が実現可能である。
【００２９】
ＲＮＮの概要を説明する。ＲＮＮは、ある時刻ｔにおいて隠れ要素と呼ばれる値ｓｔ−１及び入力値Ｘを受けて隠れ要素ｓｔを出力する関数ｆ（Ｘ，ｓｔ−１）と、ｓｔを入力にＶのいずれかの単語を出力する関数ｇ（ｓｉｔ）とで構築され、ｇ（ｓｉｔ）＝ｇ（ｆ（Ｘｉ，ｓｉｔ−１））が、
を出力するまで繰り返し任意の単語と中間層を生成し続ける。学習は、ｇ（ｆ（Ｘｉ，ｓｉｔ−１））が学習データのｙｉｔとできるだけ一致するように行われる。
【００３０】
なお、本実施の形態の実現において求められる要件は、出力される系列が可変長である方法であることのみで、実現の形態はＲＮＮに限らない。例えば、入力となるＸｉを操作列と同様の系列（発生したアラームを並べたデータなど）とすると、入力及び出力をそれぞれ系列とする、ｓｅｑ２ｓｅｑ（sequence-to-sequence）という手法を用いて状態Ｘと操作列Ｙとの関係性のモデル化が実現されてもよい（但し、これもＲＮＮの一種の拡張である）。特に、ｓｅｑ２ｓｅｑは、近年の精度向上の改良として、ａｔｔｅｎｔｉｏｎ付きモデルというものが提案されており、入力として与えられた系列のいずれの要素に着目するか、という変数を導入し、この変数の影響も学習する。また、Ｐｏｉｎｔｅｒ機構という手法も提案されており、学習データ中に含まれない単語であっても（Ｙ中に含まれない単語であっても）、入力値ＸＮ＋１中から単語をコピーして出力値ＹＮ＋１中へ挿入することができる。これらの手法を取り入れることにより、例えば、入力データであるアラーム中に出現した（学習データ中には登場しない新しい）装置名を、出力データであるコマンドの引数パラメータとして埋め込むようにするなど、正しい操作列の生成の精度向上、可変なパラメータに対する対応が期待できる。
【００３１】
また、別の例として、入力に系列データ及び非系列データの双方が与えられ、操作列を出力することも考えられる。これは、例えば、入力として発生アラーム系列と、その際のシステムステータス（ＣＰＵ使用率、ＨＤＤ使用率、ＣＰＵ温度など）とが与えられ、これらから操作列を生成する場合である。発生アラーム系列だけでは操作列を一意に特定しづらいような故障事例であっても、適切な非系列データを付加情報として加えることで、より精度の高い操作列の出力が期待できる。ｓｅｑ２ｓｅｑは、入力を一つの系列、出力を別の系列としたモデルが多く提案されており、入力に系列又は非系列的な複数のデータが同時に与えられるようなモデルは、これまでに提案されていない。
【００３２】
以下、上記した内容を実現する操作列生成装置１０について具体的に説明する。図２は、本発明の実施の形態における操作列生成装置１０のハードウェア構成例を示す図である。図２の操作列生成装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００３３】
操作列生成装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００３４】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って操作列生成装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００３５】
図３は、本発明の実施の形態における操作列生成装置１０の機能構成例を示す図である。図３において、操作列生成装置１０は、入出力制御部１１、関係学習部１２及び操作列生成部１３等を有する。これら各部は、操作列生成装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。操作列生成装置１０は、また、操作履歴ＤＢ１４、システム状態ＤＢ１５及び状態操作列関係ＤＢ１６等のデータベース（記憶部）を利用する。これら各データベース（各記憶部）は、例えば、補助記憶装置１０２、又は操作列生成装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００３６】
入出力制御部１１は、ユーザによる入力や、ユーザに対する出力等を制御する。システム状態ＤＢ１５は、過去のシステム障害ごとに、当該障害時のシステム状態を示す情報を蓄積（記憶）する。操作履歴ＤＢ１４は、システム状態ＤＢ１５に記憶されている各情報が示す各システム状態において行われた操作内容を示す単語列の系列で示す操作列を蓄積（記憶）する。関係学習部１２は、システム状態と、当該システム状態から復旧するために行われた操作の内容を示す文字列（単語列の系列）である操作列との関係性を学習する。関係学習部１２によって学習された関係性を示す情報（すなわち、関数Ｆのパラメータ）は、状態操作列関係ＤＢ１６に記憶される。操作列生成部１３は、新たなシステム状態を示す情報が与えられたときに、状態操作列関係ＤＢ１６が記憶する情報が示す関係性に対して当該システム状態を入力して、当該システム状態に対応する操作列を生成する。
【００３７】
操作列生成装置１０が実行する処理は、事前にシステム状態と操作列の関係性を学習して学習結果（当該関係性）を記憶する学習フェーズと、学習フェーズで記憶した関係性から新たに与えられた（異常を示す）システム状態に対応する操作列を生成する操作列生成フェーズから構成される。
【００３８】
図４は、学習フェーズで利用される部分を示す図である。図４では、学習フェーズで利用される部分が実線で示され、そうでない部分が破線で示されている。すなわち、学習フェーズでは、関係学習部１２、操作履歴ＤＢ１４、システム状態ＤＢ１５及び状態操作列関係ＤＢ１６が利用される。
【００３９】
図５は、学習フェーズにおいて操作列生成装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【００４０】
ステップＳ１０１において、関係学習部１２は、操作履歴ＤＢ１４から操作列Ｙ＝｛Ｙ１，Ｙ２，・・・，ＹＮ｝を取得する。操作履歴ＤＢ１４には、操作列ごとに、当該操作列を構成する単語の列（当該操作列が単語ごとに分割された単語の列）が記憶されている。但し、単語そのものではなく、各単語に対して割り当てられたＩＤ（以下「単語ＩＤ」という。）が、単語の代わりに記憶されてもよい。この場合、Ｙｉの一例は、以下のように単語ＩＤの系列である。
Ｙｉ＝（４，８，２，６，７，２，…，５，２，３）
【００４１】
単語ＩＤと単語とは、例えば、次のような「辞書」で一対一に紐づけられている．この操作列Ｙｉは図１を表現したものである．辞書は、全データＹ１，Ｙ２，・・・，ＹＮに出現する単語から生成されており、例えば、操作履歴ＤＢ１４に記憶されていてもよい。
辞書＝｛１：ssh，２：<ENT>，３：
，４：login，５：exit，６：show，７：log，８：host01，…｝
【００４２】
続いて、関係学習部１２は、システム状態ＤＢ１５から状態Ｘ＝｛Ｘ１，Ｘ２，…，ＸＮ｝を取得する（Ｓ１０２）。ここで、Ｘｉの一例は、以下のように非系列データＡと系列データＢとの組である。但し、Ｘｉは、非系列データのみ、又は系列データのみであってもよい。
Ｘｉ＝［Ａ，Ｂ］
【００４３】
ここで、例えば、非系列データＡ＝（０．３，０．７，…，４２）であり、これは、「ＣＰＵ使用率３０％，ＨＤＤ使用率７０％，…，ＣＰＵ温度４２℃」を数値ベクトル化したものである。また、例えば、系列データＢ＝（１，４，１３，２２，５，…，３）であり、これは、アラームＩＤを発生順に並べたベクトルである。
【００４４】
続いて、関係学習部１２は、状態Ｘと操作列Ｙとの関係性を、当該関係性を示すモデル（関数Ｆ）のパラメータの値として学習し、学習結果（当該パラメータの値）を状態操作列関係ＤＢ１６に記憶する（Ｓ１０３）。例えば、関係学習部１２は、ＲＮＮ又はｓｅｑ２ｓｅｑによって、当該関係性のモデル化を実現する。
【００４５】
例えば、ｓｅｑ２ｓｅｑによって当該関係性のモデル化を実現される場合、関数Ｆは、ニューラルネットで構成されるため、このニューラルネットの重みパラメータの値が学習され、状態操作列関係ＤＢ１６に記憶される。例えば、当該重みパラメータが、Ｕｊ，Ｗｊ，ｂｊであるとすると、
Ｕ１＝０．３，Ｕ２＝０．５，…
Ｗ１＝０．２，Ｗ２＝−０．７，…
ｂ１＝−０．４，ｂ２＝０．０，…
といったような各重みパラメータの値が状態操作列関係ＤＢ１６に記憶される。なお、関係学習部１２は、状態Ｘと操作列Ｙとの関係性の学習時において、辞書に登録されていない単語が操作列Ｙｉに含まれている場合には、当該単語及び当該単語の単語ＩＤとを辞書に登録する。単語ＩＤは、例えば、関係学習部１２が自動的に生成してもよい。
【００４６】
図６は、操作列生成フェーズで利用される部分を示す図である。図６では、操作列生成フェーズで利用される部分が実線で示され、そうでない部分が破線で示されている。すなわち、操作列生成フェーズでは、入出力制御部１１、操作列生成部１３及び状態操作列関係ＤＢ１６が利用される。
【００４７】
図７は、操作列生成フェーズにおいて操作列生成装置１０が実行する処理手順の一例を説明するためのフローチャートである。
【００４８】
ステップＳ２０１において、入出力制御部１１は、新たなシステム状態ＸＮ＋１を入力する。続いて、操作列生成部１３は、状態操作列関係ＤＢ１６に記憶されている、状態Ｘと操作列Ｙとの関係性を示す関数Ｆのパラメータの値を取得する（Ｓ２０２）。続いて、操作列生成部１３は、取得した値が適用された関数Ｆに対して状態ＸＮ＋１を入力することで、操作列ＸＮ＋１を生成する（Ｓ２０３）。続いて、入出力制御部１１は、操作列ＸＮ＋１を出力する（Ｓ２０４）。例えば、操作列ＸＮ＋１が表示装置１０６に表示されてもよい。
【００４９】
続いて、本実施の形態の効果を具体的に説明するために、次のような状況を考える。新たなサービスを開始し、しばらく運用した結果、操作履歴の中に「commandX -q system」、「commandY -kv service」など１０００種類程度の新たな操作のパターンが増えたとする。このような状況下で自動復旧の機構を導入することを考える。
【００５０】
従来技術により自動復旧を試みる場合、操作履歴に基づいて操作リストを事前定義する必要がある。操作履歴を確認しながら、馴染みの薄いコマンドである"commandX"、"commandY"に対して、そのオプション"-q"、"-kv"などの組み合わせも含めて操作を網羅的に定義していくのは極めて手間のかかる作業であり、高度な専門知識を必要とする。実際には、頻出のコマンドパターンのみを操作として定義するにとどまり、完全な自動復旧を実現するのは困難である。
【００５１】
一方、本実施の形態によれば、過去の各システム状態を示すデータをシステム状態ＤＢ１５に登録し、当該各システム状態に対応する各操作列を操作履歴ＤＢ１４に登録し、各システム状態と各操作列との関係性を学習させるだけでよい。この際、新出単語の"commandX"、"commandY"や、"-q"、"-kv"も漏れなく辞書に登録され、どのような状況のときにどのコマンドとどのオプションが組み合わさるのかなども合わせて学習されるため、実質的に１０００種類程度の新たな操作パターンをモデル内に自動で獲得することができる。したがって、学習データの中に出現したようなあらゆる故障に対し、自動復旧が可能となる。
【００５２】
上述したように、本実施の形態によれば、過去にシステム故障が発生した際に、その時のシステムの状態と、当該故障から復旧するためにオペレータが実施した操作の履歴を示す操作列とを大量に残していれば、新たにシステム故障が発生した際の自動対処の手順を自動生成できるようになる。ここで、操作列は、操作に含まれる単語を並べた単なる単語列として把握され、単語列である操作列の生成が、再帰型ニューラルネットワークなどの可変長の系列を生成可能な手法を用いて実現される。したがって、従来多くのコストを要していた事前のシナリオ定義およびシナリオの実行トリガ定義を行うことなしに、過去に実施された操作列から得た単語の組み合わせによって操作列を生成可能にし、自動復旧システムを実現可能とすることができる。その結果、システム運用のための作業負担を軽減することができる。
【００５３】
なお、本実施の形態において、関係学習部１２は、学習部の一例である。操作列生成部１３は、生成部の一例である。
【００５４】
以上、本発明の実施の形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５５】
１０          操作列生成装置
１１          入出力制御部
１２          関係学習部
１３          操作列生成部
１４          操作履歴ＤＢ
１５          システム状態ＤＢ
１６          状態操作列関係ＤＢ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
Ｂ            バス
【図１】
2020024538.tif 000003
【図２】
2020024538.tif 000004
【図３】
2020024538.tif 000005
【図４】
2020024538.tif 000006
【図５】
2020024538.tif 000007
【図６】
2020024538.tif 000008
【図７】
2020024538.tif 000009