(57)【要約】【課題】センサ等のハードウェア機構を必要とせずに、トレース情報から障害の予兆を検知することを可能とする障害予兆検知システムを提供する。【解決手段】実施形態によれば、障害予兆検知システムは、第１装置と、第１装置の障害予兆を検知する第２装置とを具備する。第１装置は、第１装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数を含むトレース情報を記録するトレース情報記録部を具備する。第２装置は、学習モデル生成部と、予測部とを具備する。学習モデル生成部は、トレース情報と、トレース情報に対して関連づけられた第１装置の事象とに基づき、１関数以上の関数の呼び出し回数から第１装置の事象を予測するための決定木の学習モデルを生成する。予測部は、第１装置から新たに収集されたトレース情報と学習モデルとを用いて、第１装置の事象を予測する。【選択図】図３
2020135739.tif 000002
【特許請求の範囲】
【請求項１】
第１装置と、
１以上の前記第１装置の障害予兆を検知する第２装置と、
を具備し、
前記第１装置は、
前記第１装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数を含むトレース情報を記録するトレース情報記録部
を具備し、
前記第２装置は、
前記トレース情報と、前記トレース情報に対して関連づけられた前記第１装置の事象とに基づき、１関数以上の前記関数の呼び出し回数から前記第１装置の事象を予測するための決定木の学習モデルを生成する学習モデル生成部と、
前記第１装置から新たに収集された前記トレース情報と前記学習モデルとを用いて、前記第１装置の事象を予測する予測部と、
を具備する障害予兆検知システム。
【請求項２】
前記学習モデル生成部は、前記決定木を複数生成し、
前記予測部は、前記複数の決定木それぞれによる複数の前記第１装置の事象の予測結果に基づき、予測した前記第１装置の事象の確率を算出する、
請求項１に記載の障害予兆検知システム。
【請求項３】
障害に相当する前記第１装置の事象を予測した前記第２装置から前記第１装置の障害予兆が検知された旨を示す通知を受信する第３装置を具備し、
前記第３装置は、
前記第１装置の事象とその復旧手順とを記憶する記憶部と、
前記第２装置から通知された前記第１装置の事象に対応する復旧手順を前記記憶部から取得して提示する提示部と、
を具備する請求項１または２に記載の障害予兆検知システム。
【請求項４】
前記トレース情報記録部は、呼び出し回数の計数対象とする関数の一部または全部を変更するための前記プログラムの更新が行われるごとに値が増加する前記プログラムの改定番号を前記トレース情報に含め、
前記学習モデル生成部は、前記改定番号ごとに前記トレース情報を分類して前記決定木の学習モデルを生成する、
請求項１から３のいずれか１項に記載の障害予兆検知システム。
【請求項５】
前記学習モデル生成部は、前記第１装置の事象の予測に対する１関数以上の前記関数の呼び出し回数の寄与度を算出する請求項３に記載の障害予兆検知システム。
【請求項６】
前記学習モデル生成部は、前記複数の決定木のそれぞれにおける１関数以上の前記関数の呼び出し回数の寄与度を算出し、かつ、前記複数の決定木の全体における１関数以上の前記関数の呼び出し回数の寄与度の平均値を算出することによって、前記第１装置の事象の予測に対する１関数以上の前記関数の呼び出し回数の寄与度を算出する請求項５に記載の障害予兆検知システム。
【請求項７】
前記学習モデル生成部は、前記寄与度が閾値以下の関数の読み出し回数を除いて前記複数の決定木を再作成する請求項６に記載の障害予兆検知システム。
【請求項８】
前記プログラムが更新された直後における前記学習モデル生成部による前記決定木の学習モデルの生成時、障害に相当する事象が予測されるべき前記トレース情報を収集するための不調の前記第１装置が増設される請求項４に記載の障害予兆検知システム。
【請求項９】
ハードウェア制御を実行するプログラムに関する関数の呼び出し回数を含むトレース情報を記録するトレース情報記録部を具備する電子装置。
【請求項１０】
外部装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数を含むトレース情報と、前記トレース情報に対して関連づけられた前記外部装置の事象とに基づき、１関数以上の前記関数の呼び出し回数から前記外部装置の事象を予測するための決定木の学習モデルを生成する学習モデル生成部と、
前記外部装置から新たに収集された前記トレース情報と前記学習モデルとを用いて、前記外部装置の事象を予測する予測部と、
を具備する電子装置。
【請求項１１】
第１装置と第２装置とで構成されるシステムにおける障害予兆検知方法であって、
前記第１装置は、
前記第１装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数を含むトレース情報を記録すること
を具備し、
前記第２装置は、
前記トレース情報と、前記トレース情報に対して関連づけられた前記第１装置の事象とに基づき、１関数以上の前記関数の呼び出し回数から前記第１装置の事象を予測するための決定木の学習モデルを生成することと、
前記第１装置から新たに収集された前記トレース情報と前記学習モデルとを用いて、前記第１装置の事象を予測することと、
を具備する障害予兆検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、障害予兆検知システム、電子装置および障害予兆検知方法に関する。
【背景技術】
【０００２】
近年、様々な業種で業務の電子化が図られており、たとえばオフィスなどでは数多くの電子装置が使用されている。ＬＡＮ（Local Area Network）などと称される社内ネットワークが敷設されるオフィスなどで使用される電子装置は、その社内ネットワークに接続可能に設置される。
【０００３】
このような環境下で稼働する電子装置の障害発生時の対処法として、たとえば、障害を発生させた電子装置自身またはその電子装置に接続された電子計算機などが障害の検知と保守部門への通知とを行い、この通知を受けた保守部門が復旧作業を実施する、といったことが行われている。
【０００４】
また、電子装置内に組み込まれたセンサや負荷情報を用いることにより、部品故障の予兆を検知するといったことも行われている。たとえば、センサ情報とアプリケーションプログラムの稼働状態とを回帰分析することにより、障害の予兆が生じた部位を検知する方法などが提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４５７２２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、障害の通知を受けた保守部門が復旧作業を実施する場合、障害発生後から障害復旧までの間、障害を発生させた電子装置を適用するシステムが停止したり、システムの冗長性を失ったりする等の問題があった。
また、従来の障害予兆を検知するシステムにおいては、センサで検出できない部位または種類の障害予兆を検知できない等の問題があった。さらには、センサ等のハードウェア部品の実装が必要であるため、コストが高くなってしまうという問題があった。
【０００７】
本発明が解決しようとする課題は、センサ等のハードウェア機構を必要とせずに、トレース情報から障害の予兆を検知することを可能とする障害予兆検知システム、電子装置および障害予兆検知方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態によれば、障害予兆検知システムは、第１装置と、第２装置とを具備する。前記第２装置は、１以上の前記第１装置の障害予兆を検知する。前記第１装置は、トレース情報記録部を具備する。前記トレース情報記録部は、前記第１装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数を含むトレース情報を記録する。前記第２装置は、学習モデル生成部と、予測部とを具備する。前記学習モデル生成部は、前記トレース情報と、前記トレース情報に対して関連づけられた前記第１装置の事象とに基づき、１関数以上の前記関数の呼び出し回数から前記第１装置の事象を予測するための決定木の学習モデルを生成する。前記予測部は、前記第１装置から新たに収集された前記トレース情報と前記学習モデルとを用いて、前記第１装置の事象を予測する。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態の障害予兆検知システムの一構成例を示す図。
【図２】第１実施形態の障害予兆検知システムにおけるターゲット機器の部分ブロック図。
【図３】第１実施形態の障害予兆検知システムにおける障害予兆検知装置の部分ブロック図。
【図４】第１実施形態の障害予兆検知システムにおける保守部の部分ブロック図。
【図５】第１実施形態の障害予兆検知システムにおいて用いられるトレース情報の一例を示す図。
【図６】第１実施形態の障害予兆検知システムにおいて用いられる組み込みソフトウェアを構成するプログラムと、そのプログラムに設置されたトレースポイントとの一例を示す図。
【図７】第１実施形態の障害予兆検知システムにおいて用いられるトレース情報テーブルの一例を示す図。
【図８】第１実施形態の障害予兆検知システムにおける学習モデル生成処理のフローチャート。
【図９】第１実施形態の障害予兆検知システムにおいて用いられる決定木学習アルゴリズムの訓練データを２つの関数の呼び出し回数を軸とする２次元空間にプロットした例を示す図。
【図１０】第１実施形態の障害予兆検知システムにおいて用いられる決定木学習アルゴリズムの決定木の一構造例を示す図。
【図１１】第１実施形態の障害予兆検知システムにおける分類処理のフローチャート。
【図１２】第１実施形態の障害予兆検知システムにおいてランダムフォレストによってターゲット機器のトレース情報から障害予兆を分類する様子を示す図。
【図１３】第１実施形態の障害予兆検知システムにおいて用いられる保守情報テーブルの一例を示す図。
【図１４】第２実施形態の障害予兆検知システムの一構成例を示す図。
【図１５】第２実施形態の障害予兆検知システムにおける開発部の部分ブロック図。
【図１６】第２実施形態の障害予兆検知システムにおいて用いられる寄与度テーブルの一例を示す図。
【図１７】第３実施形態の障害予兆検知システムの一構成例を示す図。
【発明を実施するための形態】
【００１０】
以下、実施形態について図面を参照して説明する。
（第１実施形態）
まず、第１実施形態を説明する。
図１は、本実施形態の障害予兆検知システム１の一構成例を示す図である。
図１に示すように、障害予兆検知システム１は、障害予兆検出の対象となる単体または複数の同一機種であるターゲット機器１０−1〜１０−ｎと、ターゲット機器１０−１〜１０−ｎの障害予兆を検知する障害予兆検知装置２０と、障害予兆検知装置２０が検知した障害予兆を分析し、予防保全等の保守作業を実施する保守部３０とで構成される。ターゲット機器１０−1〜１０−ｎと障害予兆検知装置２０と、障害予兆検知装置２０と保守部３０とは、ネットワークによって接続される。以下、ターゲット機器１０−１〜１０−ｎを、ターゲット機器１０と総称することがある。
【００１１】
図２は、ターゲット機器１０−１〜１０−ｎの部分ブロック図である。
図２に示すように、ターゲット機器１０−１〜１０−ｎは、組み込みソフトウェア１００と、記憶部１１０と、トレース情報送信部１２０とを備える。
組み込みソフトウェア１００は、ターゲット機器１０−１〜１０−ｎ内のハードウェア制御を行うプログラムである。つまり、ターゲット機器１０−１〜１０−ｎは、組み込みソフトウェア１００を実行するプロセッサを備えている。組み込みソフトウェア１００には、関数の呼び出し回数（トレース情報１１１）をカウントするトレースポイントが設置されている。組み込みソフトウェア１００は、カウントしたトレース情報１１１を記憶部１１０に保存する。トレース情報１１１については後述する（図５参照）。つまり、組み込みソフトウェア１００は、トレース情報記録部としても機能する。
【００１２】
記憶部１１０は、組み込みソフトウェア１００によってカウントされたトレース情報１１１を保持する。トレース情報送信部１２０は、記憶部１１０に保持されるトレース情報１１１を障害予兆検知装置２０に送信する。
図３は、障害予兆検知装置２０の部分ブロック図である。
【００１３】
図３に示すように、障害予兆検知装置２０は、トレース情報受信部２００と、学習モデル生成部２２０と、予測部２３０と、障害予兆通知部２４０と、トレース情報テーブル操作部２５０とを備える。
トレース情報受信部２００は、ターゲット機器１０−１〜１０−ｎのトレース情報送信部１２０から送信されたトレース情報１１１を受信する。記憶部２１０は、トレース情報受信部２００によって受信されたトレース情報１１１が反映される、後述するトレース情報テーブル２１１（図７参照）を保持する。
【００１４】
学習モデル生成部２２０は、記憶部２１０に保持されるトレース情報テーブル２１１から訓練データを抽出し、抽出した訓練データから学習モデルを生成する。学習モデル生成部２２０は、生成した学習モデルを記憶部２１０に保存する。
予測部２３０は、記憶部２１０から読み込んだ未知トレース情報と学習モデルとを用いて、ターゲット機器１０−１〜１０−ｎに障害の予兆があるかどうかを予測し、障害が発生する確率を算出する。未知トレース情報は、後述する未知トレース情報テーブルから取り出されたトレース情報である。
【００１５】
障害予兆通知部２４０は、予測部２３０が障害予兆を検知した場合に、保守部３０に障害予兆の情報を送信する。トレース情報テーブル操作部２５０は、トレース情報テーブル２１１を操作するインタフェースである。
学習モデル生成部２２０および予測部２３０は、メモリに格納されてプロセッサによって実行されるソフトウェアとして実現されてもよいし、電気回路などのハードウェアとして実現されてもよい。ここでは、学習モデル生成部２２０および予測部２３０は、ソフトウェアとして実現されていることを想定する。つまり、障害予兆検知装置２０は、このソフトウェアを実行するプロセッサを備えている。
【００１６】
図４は、保守部３０の部分ブロック図である。
図４に示すように、保守部３０は、障害予兆受信部３００と、障害分析部門３１０と、保守実行部門３３０と、障害登録部門３４０と、トレース情報管理部３５０とを備える。
障害予兆受信部３００は、障害予兆検知装置２０の障害予兆通知部２４０から通知された障害予兆情報を受信する。障害分析部門３１０は、障害予兆受信部３００によって受信された障害予兆情報から実際に障害の可能性があるかどうかを判断する。障害の可能性があると判断した場合、障害分析部門３１０は、保守実行部門３３０に保守作業の指示を出し、また、障害登録部門３４０に障害登録の指示を出す。
【００１７】
保守データベース３２０は、過去の障害情報を保持する。保守実行部門３３０は、障害分析部門３１０から指示された手順にしたがってターゲット機器１０−１〜１０−ｎの保守作業を実行する。障害登録部門３４０は、新たな障害情報を保守データベース３２０に登録し、また、障害分析部門３１０によって障害予兆が障害と判定された場合に、トレース情報管理部３５０を用いて、障害予兆検知装置２０の記憶部２１０に保持されるトレース情報テーブル２１１を更新する。トレース情報管理部３５０は、障害予兆検知装置２０のトレース情報テーブル操作部２５０を介してトレース情報を管理する。なお、障害分析部門３１０、保守実行部門３３０および障害登録部門３４０は、障害分析、保守実行、障害登録に携わる人員を含む各種リソースの総称である。
【００１８】
図５は、ターゲット機器１０−１〜１０−ｎの記憶部１１０に保持されるトレース情報１１１の一例を示す図である。
図５に示すように、トレース情報１１１は、機器ＩＤ、開始日、終了日、トレースポイントが設置された関数名、その関数がコールされた回数を保持している。
【００１９】
機器ＩＤは、ターゲット機器１０−１〜１０−ｎを一意に識別できる、たとえばシリアルＩＤのような固有の識別子である。レビジョンは、組み込みソフトウェア１００のレビジョン番号である。開始日は、トレース情報１１１の収集を開始した日付である。終了日は、トレース情報１１１の収集を終了した日付である。
【００２０】
図５に示すトレース情報１１１は、機器ＩＤが１０００番のターゲット機器１０について当該ターゲット機器１０上で動作するレビジョン番号１．０の組み込みソフトウェア１００によって２０１８年９月１日から２０１８年９月７日までに関数Ａ１、関数Ｂ１、関数Ｃ１、関数Ａ２の読み出し回数がカウントされたものであって、その回数が、１０８４３１回、７回、３２１６回、１２４６回であったことを示している。つまり、レビジョン番号１．０の組み込みソフトウェア１００には、関数Ａ１、関数Ｂ１、関数Ｃ１、関数Ａ２の読み出し回数がカウントされるようにトレースポイントが設置されている。
【００２１】
図６は、組み込みソフトウェア１００を構成するプログラムと、そのプログラムに設置されたトレースポイントとの一例を示す図である。
トレースポイントは、プログラムの関数内の先頭に設置される命令であり、この命令が実行されると、その命令に関連付けられたカウンタに１を加算することで関数の呼び出し回数を数えるものとする。カウンタは、記憶部１１０のトレース情報１１１に保持されており、トレースポイントが設置された関数名で検索することができる。関数名で検索して見つかれば、その関数名のカウンタに１を加算する。トレース情報１１１に関数名が見つからなければ、新たに当該関数名の列を追加しカウンタに１を設定する。
【００２２】
図６によると、プログラムＡは、関数Ａ１から関数Ａ２と関数Ａ３とを呼び出す構造であり、トレースポイントは、関数Ａ１と関数Ａ２とには設置され、関数Ａ３には設置されていない。したがって、関数Ａ１と関数Ａ２の呼び出しはカウントされるが、関数Ａ３の呼び出しはカウントされない。
【００２３】
同様に、プログラムＢは関数Ｂ１、プログラムＣは関数Ｃ１にトレースポイントが設置され、それぞれの関数の呼び出し回数がカウントされる。トレースポイントを設置する位置は任意であるが、障害予兆の検出に寄与する箇所に多く設置することが望ましい。トレースポイント設置個所の調整については、後述の第２実施形態において説明する。
【００２４】
トレース情報送信部１２０は、ターゲット機器１０の起動時に、トレース情報１１１をリセットする。リセットとは、開始日に現在日付を、終了日には空を設定し、関数名の列をすべて削除することを意味する。一方、組み込みソフトウェア１００は、常にトレース情報を更新するため、トレース情報１１１がトレース情報送信部１２０によってリセットされると、トレース情報１１１には、リセットした時点以降の関数名と関数呼び出し回数とが記録される。
【００２５】
トレース情報送信部１２０には、タイマが設定されており、予め設定された日時になると、記憶部１１０からトレース情報１１１の終了日に現在の日付を設定し、トレース情報１１１を障害予兆検知装置２０のトレース情報受信部２００に送信する。送信する手段には、例えば電子メールなどがある。また、送信と同時に、トレース情報送信部１２０は、トレース情報１１１をリセットする。なお、トレース情報送信部１２０に設定するタイマの日時は、ターゲット機器１０−１〜１０−ｎの間で同じ日時にすることが望ましい。これにより、後述する訓練用のトレース情報と予測用のトレース情報との分割が、日付を使って行えるために容易となる。また、タイマの周期は１週間などにするのが望ましい。これは、機器に対する負荷には一般に時間帯や曜日によって変動する季節変動があり、その季節変動を平準化するためである。
【００２６】
図７に、障害予兆検知装置２０の記憶部２１０が保持するトレース情報テーブル２１１の一例を示す。
障害予兆検知装置２０のトレース情報受信部２００は、ターゲット機器１０−１〜１０−ｎよりトレース情報１１１を受信すると、記憶部２１０に保存されたトレース情報テーブル２１１に行を追加し、受信したトレース情報１１１の内容を記録する。なお、事象列には「正常」を記録し、関数名の列には関数名で検索して一致する列に関数の呼び出し回数を記録する。関数名が存在しない場合は、新たに関数名の列を追加し回数を記録するとともに、他の行には０を記録する。最後に、追加した行で関数呼び出し回数が空となっている箇所には０を記録する。また、詳細は後述するが、ターゲット機器１０に障害が発生すると、トレース情報テーブル操作部２５０によって当該ターゲット機器１０の機器ＩＤの不調期間の行について、事象列が「正常」から「障害Ａ」等の障害を表す事象に書き換えられる。
【００２７】
次に、学習モデル生成部２２０の処理について説明する。
本実施形態においては、学習モデルとして機械学習の手法の一つであるランダムフォレストを用いる。ランダムフォレストとは、訓練データから多数の決定木を生成し、それぞれの決定木で予測し、それらの結果を多数決することによって予測精度を高めるアンサンブル学習と呼ばれる手法である。ランダムフォレストの特徴として、比較的精度が高く、学習および分類が高速であることに加え、訓練データの正規化といった前処理が不要であること、特徴量の寄与度を算出可能であること、分類結果の根拠を人間が解析しやすいことなどが挙げられ、本実施形態の学習モデルに適している。なお、サポートベクターマシンやニューラルネットワークといった他の機械学習手法を用いても、トレースポイントを用いた障害予兆の学習モデルを作成することは可能であるが、処理が重いため大規模データに向かない、訓練データの正規化といった前処理が必要になる、後述の第２実施形態において説明する特徴量の寄与度の算出が難しいといった欠点がある。
【００２８】
学習モデル生成部２２０には、タイマが設定されており、設定された日時になると学習モデルの生成処理を開始する。
図８に示す学習モデル生成処理のフローチャートに従って、学習モデルの生成処理について説明する。
まず、学習モデル生成部２２０は、記憶部２１０に保持されるトレース情報テーブル２１１を参照し、最新日付より１周期前の日付について、レビジョン列に記録されたレビジョン毎に分類し、これをサンプルデータとする（ステップＡ１）。
【００２９】
学習モデル生成部２２０は、レビジョン毎に分類されたサンプルデータごとにステップＡ２〜ステップＡ８（ループＡ）を繰り返す。また、学習モデル生成部２２０は、決定木の本数を表すＭを１００に初期化し、後述する精度が向上しなくなるまで、ＭにＭの１０％を加算しながらステップＡ３〜ステップＡ７（ループＢ）を繰り返す。
【００３０】
学習モデル生成部２２０は、サンプルデータに対してブートストラップサンプリングをＭ回繰り返し、Ｍ組の訓練データとテストデータの対を作成する（ステップＡ４）。ブートストラップサンプリングとは、ｎ個からなるデータを重複を許してランダムにｎ回復元抽出することでｍ個のサンプルを抽出し、これをＭ回繰り返すことで、１個のサンプルからｍ個の訓練データとｎ−ｍ個のテストデータの対をＭ個生成するリサンプリング手法である。また、訓練データの特徴量（本実施形態における関数名）がＫ個である場合に、Ｋの平方根の個数の特徴量がランダムに選択される。
【００３１】
次に、学習モデル生成部２２０は、Ｍ組の訓練データからＭ本の決定木を生成する（ステップＡ５）。決定木の生成手順については後述する。学習モデル生成部２２０は、Ｍ本の決定木それぞれを、対となるＭ組のテストデータで評価して精度の平均を計算する（ステップＡ６）。精度とは、テストデータを評価した分類結果と、テストデータに含まれる実際の結果とを比較し、正しく識別した比率である。学習モデル生成部２２０は、最後に生成した決定木をレビジョンとともに記憶部２１０に保存し、レビジョンから決定木を取り出せるようにしておく（ステップＡ７）。
【００３２】
ここで、決定木と、決定木を生成する決定木学習アルゴリズムとについて説明する。
決定木は、図１０に示すような木構造であり、決定木学習アルゴリズムは、親集合を各ノードの分割条件によって子集合に分割していくことで分類する学習モデルである。決定木は訓練データを元に決定木学習アルゴリズムによって生成する。決定木学習アルゴリズムは一般に知られた手法である。図９と図１０の例を用いて、決定木学習アルゴリズムを本実施形態におけるトレース情報１１１に適用する方法を説明する。
【００３３】
図９は、訓練データを２つの関数の呼び出し回数を軸とする２次元空間にプロットしたものである。なお、実際の訓練データの特徴量がＫ個ある場合はＫ次元空間となるが、ここでは視覚的に分かり易くするために２次元空間を用いる。図９中、｛黒丸｝は「正常」、×は「障害Ａ」、▲は「障害Ｂ」の事象に属しているデータであることを表している。
【００３４】
ここで、決定学習アルゴリズムで用いる不純度と情報利得について説明する。
不純度とは、一般にエントロピーやジニ係数で計算される値であり、ある集合においてある１つの種類が大多数を占めるほど不純度が低くなり、逆に、ある集合内に多数の種類が混在しているほど不純度が高くなる。情報利得とは分割の良さを表す値であり、ある集合を分割する前の集合を親集合、２つに分割した後の集合を子集合としたとき、親集合とすべての子集合の不純度をそれぞれ計算し、親集合の不純度からすべての子集合の不純度を引くことで計算する。情報利得が大きい程、親集合をより純度の高い２つの子集合に分割できたことを表す。
【００３５】
本実施形態にかかる決定木学習アルゴリズムでは、まず、訓練データ全体の集合を親集合とし、情報利得が最大になるように再帰的に子集合に分割していことにより、木構造を生成する。具体的には、訓練データのある一つの特徴量、すなわち関数名に注目し、その関数名に記録された関数の呼び出し回数の範囲をいくつか均等な境界に分ける（図９の点線部）。次に、すべての境界について情報利得を計算し、情報利得が最大となる境界を選択する。この要領で、全ての関数名について最大となる情報利得と境界を計算し、全関数の中で情報利得が最大となる関数名と境界を選択する（図９：θ1）。選択した関数名と境界から「関数Ａの呼び出し回数＜θ1」という分割条件のノードを作成する（図１０：ａ１）。
【００３６】
次に、求めた分割条件で訓練データの全体集合を分割すると、図９における境界θ1で分割した２つの子集合となる。これらの子集合に対して分割を再帰的に繰り返し、それ以上分割できなくなる、つまり情報利得が０となると、そのノードに含まれる単一の事象を葉ノードとして登録する（図１０：ａ１１〜ａ１４）。
【００３７】
また、過学習を防ぐために、予め設定した分割回数（ノードの深さ）に達すると分割を停止し、そのノードに多く含まれる事象を葉ノードとすることがある（剪定と呼ぶ）。剪定には様々な手法が知られているが、一つの手法としてはクロスバリデーション（交差検定）がある。クロスバリデーションとは、学習モデル生成において訓練とテストを繰り返して分類精度が高くなるようにパラメーターを決定する手法であり、図８のフローチャートに示すように、決定木の本数Ｍを決定する際に使用している。ノードの深さについても同様に、クロスバリデーションの手法で決定することができる。なお、図１０に示す決定木は、図９の訓練データからノードの深さを４に設定して作成した決定木である。
【００３８】
次に、予測部２３０の処理を説明する。
図１１は、分類処理のフローチャートを示し、図1２は、ランダムフォレストによってターゲット機器１０のトレース情報１１１から障害予兆を分類する様子を示す。
予測部２３０は、記憶部２１０が保持するトレース情報テーブル２１１から現在日時に最も近い開始日のトレース情報テーブルを抽出する。このトレース情報テーブルは学習モデルの生成には用いられていないため、ここでは未知トレース情報テーブルと呼ぶ。未知トレース情報テーブルから１行ずつターゲット機器のトレース情報（図１２：未知トレース情報ｂ１）を取り出す（図１１：ステップＢ１）。
【００３９】
次に、予測部２３０は、取り出したターゲット機器１０−１〜１０−ｎのそれぞれの未知トレース情報ｂ１について、記録されているレビジョンをキーとして、記憶部２１０に保存されたＭ本の決定木ｂ２−１〜ｂ２−Ｍを取り出し、未知トレース情報ｂ１を決定木ｂ２−１〜ｂ２−Ｍを用いて分類する。なお、決定木による分類方法は、未知トレース情報ｂ１に記録された関数名と関数呼び出し回数を決定木の親ノードに記述された分割条件で判定し、左右どちらかの子ノードを辿る。これをルートノードから繰り返し、最終的に辿りついた葉ノードが分類結果ｂ３−１〜ｂ３−Ｍである（図１１：ステップＢ２）。
【００４０】
未知トレース情報ｂ１をＭ本の決定木で分類することで、Ｍ個の分類結果ｂ３−１〜ｂ３−Ｍを得ることができる。予測部２３０は、この分類結果を事象ごとにグループに分けて、グループ内に存在する決定木の数をそれぞれＭで割ることによって（図１２：ｂ４）、各事象の発生確率ｂ５を求める。また、正常の確率が５０％未満の場合は、多数決により障害発生の予兆ありと判定する。例えば、１００本の決定木があり、「正常」に分類された決定木が１３本、「障害Ａ」が７本、「障害Ｂ」が８０本だった場合、正常である確率は１３％、障害Ａが発生する確率は７％、障害Ｂが発生する確率は８０％である。また、正常の確率が５０％未満であることから、多数決により障害発生の予兆ありと判定する（図１１：ステップＢ３）。予測部２３０は、障害発生の予兆ありと判定した場合は、そのターゲット機器１０の未知トレースと、分類結果（各事象の発生確率）を障害予兆通知部２４０に渡す（図１１：ステップＢ４）。
【００４１】
障害予兆通知部２４０は、障害予兆ありと判定されたターゲット機器１０の未知トレースと事象発生確率を受けると、これらを保守部３０の障害予兆受信部３００に通知する。通知する手段は例えば電子メールなどがある。
次に、保守部３０について説明する。
【００４２】
障害予兆受信部３００は、障害予兆検知装置２０より、障害予兆ありと判定されたターゲット機器１０の未知トレースと事象発生確率情報を受信すると、障害分析部門３１０に情報を送信し、障害予兆を検知したことを通知する。障害分析部門３１０は、受信した未知トレース情報内の機器ＩＤからターゲット機器１０を特定し、ターゲット機器のログなどの機器情報から、障害予兆検知装置２０が予測した事象が発生する可能性があるかどうかを総合的に判断する。障害の可能性があると判断した場合は、保守データベース３２０のたとえば図１３に示すような保守情報テーブル３２１から事象に対応する対処方法を検索して対処方法を調べ、保守実行部門３３０に機器ＩＤと対処方法に記載の保守作業を指示する。さらに、障害予兆検知装置２０が保持する当該未知トレースの事象を「正常」から当該事象に更新するよう障害登録部門３４０に依頼する。
【００４３】
障害登録部門３４０は、障害分析部門３１０から未知トレースの事象を「正常」から当該障害に更新するよう依頼があると、障害予兆検知装置２０のトレース情報テーブル操作部２５０を介して、当該未知トレースと同一の行をトレース情報テーブル２１１から検索して、その行の事象を当該障害に書き換える。他に、障害登録部門３４０は、ターゲット機器１０−１〜１０−ｎにおいて障害が発生した場合も、そのターゲット機器の機器ＩＤと障害が発生した直近の１週間のトレースをトレース情報テーブル２１１から検索して事象を障害に書き換える。また、この障害が保守データベース３２０に存在しない障害である場合、障害登録部門３４０は、保守データベース３２０の保守情報テーブル３２１に事象、原因、対処方法を追加する。
【００４４】
以上のように、本実施形態の障害予兆検知システム１によれば、ターゲット機器１０の状態を関数の呼び出し回数で数値化して障害の予兆を検知し、その障害の事象と発生確率を保守部門に通知するため、障害が発生する前に予防保全することができ、システム停止あるいは冗長性の喪失を防ぐことができる。また、センサ等のハードウェア機構をターゲット機器に組み込む必要がないため低コストで実現できる。
【００４５】
つまり、本実施形態の障害予兆検知システム１は、センサ等のハードウェア機構を必要とせずに、トレース情報から障害の予兆を検知することを可能とする。
（第２実施形態）
次に、第２実施形態を説明する。なお、第１実施形態と同一の構成要件については同一の符号を使用し、重複した説明を省略する。
【００４６】
本実施形態の障害予兆検知システム１においては、さらに、組み込みソフトウェア１００に設置されるトレースポイントが障害予兆検知にどれだけ寄与したかを示す寄与度を算出し、寄与度が低いトレースポイントを学習モデル生成における特徴量から除外することで、障害予兆検知の精度を高める。また、組み込みソフトウェア１００の開発部門にトレースポイントの寄与度を伝える仕組みを追加することで、開発部門は次のレビジョンの組み込みソフトウェア１００のより効果の高い箇所にトレースポイントを設置することができ、障害予兆検知の精度を向上させることが可能となる。
【００４７】
図１４は、本実施形態の障害予兆検知システム１の一構成例を示す図である。
図１４に示すように、本実施形態の障害予兆検知システム１においては、第１実施形態の障害予兆検知システム１と比較して、さらに、保守部３０と接続された開発部４０を備える。
【００４８】
図１５は、開発部４０の部分ブロック図である。
図１５に示すように、開発部４０は、保守部３０の保守データベース３２０を参照するための保守データベース端末部４００と、組み込みソフトウェア１００の開発を実施する組み込みソフトウェア開発部門４１０とを備える。なお、組み込みソフトウェア開発部門４１０は、組み込みソフトウェア１００の開発に携わる人員を含む各種リソースの総称である。
【００４９】
図１６は、本実施形態における学習モデル生成部２２０が作成するトレースポイントの寄与度テーブル２１２である。
寄与度テーブル２１２は、組み込みソフトウェア１００のレビジョンと、各レビジョンに設定されたトレースポイントと、そのトレースポイントが障害予兆検知にどれだけ寄与したかを示す寄与度とから構成されるテーブルである。
【００５０】
決定木による特徴量の寄与度（重要度とも呼ぶ）の算出方法は一般的に知られており、決定木の各ノードの情報利得と、子ノードに分割する前の集合に存在するサンプル数を掛け合わせた値を特徴量毎に合計し、正規化することで算出する。
第１実施形態で用いた図９と図１０を援用して寄与度の計算を具体的に説明する。
【００５１】
図９によると、全サンプル数（｛黒丸｝と×と▲の総数）は３６個あり、そのうち正常なサンプル数は２５個、障害Ａのサンプル数は７個、障害Ｂのサンプル数は４個である。全体集合の不純度をジニ係数を使って計算すると０．４６８である。次に、図１０の決定木のノードａ１は、関数Ａの呼び出し回数でノードａ１１とノードａ２の集合に分割される。ノードａ１１の子集合のサンプル数は１３個であり、すべて正常であるため、不純度を計算すると０となる。一方、ノードａ２の子集合のサンプル数は２３個であり、正常が１２個、障害Ａが７個、障害Ｂが４個であり、不純度を計算すると０．６０５となる。ノードａ１の情報利得はノードａ１からノードａ１１とノードａ２の不純度の差分を計算したものであり、０．４６８−０×１３／３６−０．６０５×２３／３６＝０．０８１と計算される。情報利得にサンプル数を掛けると、そのノードの能力が計算される。ノードａ１の関数Ａは０．０８１×３６＝２．９２、ノードａ２の関数Ｂは６．３８、ノードａ３の関数Ａは２．５０の能力があることが計算される。最後に関数毎に能力を足して、全体の能力で割ることで寄与度が求める。以上により、トレースポイントの寄与度を計算すると、関数Ａが４５．９％、関数Ｂが５４．１％となる。つまり、関数Ａと関数Ｂの寄与率はほぼ同等であり、どちらも障害予兆の分類に寄与していることが分かる。
【００５２】
学習モデル生成部２２０は、Ｍ本の決定木それぞれでトレースポイントの寄与度を求めて、Ｍ本の決定木からトレースポイントの平均を求め、トレースポイントの寄与度テーブル２１２を生成し、記憶部２１０に保存する。次に、学習モデル生成部２２０は寄与度テーブル２１２を参照し、たとえば１％未満などの寄与率が低いトレースポイントを除外して、再度ランダムフォレストを生成することで学習モデルの精度を高めることができる。
【００５３】
また、トレース情報管理部３５０は、トレース情報テーブル操作部２５０を介して寄与度テーブル２１２を取得し、保守データベース３２０に保存する。
開発部４０の組み込みソフトウェア開発部門４１０は、保守データベース端末部４００を介して、保守部３０の保守データベース３２０に保存されている寄与度テーブル２１２を参照することで、どのトレースポイントが障害予兆に寄与しているかを見ることができる。組み込みソフトウェア開発部門４１０は、次のレビジョンの組み込みソフトウェア１００を作成する場合に、寄与度の低いトレースポイントを削除したり、寄与度が高いトレースポイントを含む関数と類似した関数にトレースポイントを追加したりする。
【００５４】
以上のように、本実施形態の障害予兆検知システム１によれば、組み込みソフトウェア１００におけるトレースポイントの寄与度を算出し、寄与度の低いトレースポイントを除外して再学習させることで障害予兆検知の精度を高めることができる。また、開発部４０が寄与度テーブル２１２を参考にすることでトレースポイントをより寄与する箇所に設置することができ、次のレビジョンの組み込みソフトウェア１００の障害予兆検知の精度を高めることができる。
【００５５】
（第３実施形態）
次に、第３実施形態を説明する。なお、第１実施形態と同一の構成要件については同一の符号を使用し、重複した説明を省略する。
障害予兆検知システム１では、正常データのサンプル数が多く、障害データのサンプル数が少ないというデータの不均衡が発生することが考えられる。データの不均衡がある場合、ランダムフォレストではラベル（本発明における事象）に重みを付けたり、サンプリングする正常データを減らすことでバランスを取る手法が知られている。しかし、組み込みソフトウェア１００のレビジョンアップ直後などは、障害データが存在しないか少なすぎるため障害予兆検知の精度が低下することが考えられる。そこで、本実施形態では、不調な部品を実装した不調ターゲット機器を接続し、疑似ターゲット機器に対して様々なパターンの入力を行うことで、障害事象の訓練データを増やす。
【００５６】
図１７は、本実施形態の障害予兆検知システムの一構成例を示す図である。
図１７に示すように、本実施形態の障害予兆検知システム１においては、第１実施形態の障害予兆検知システム１と比較して、さらに、障害予兆検知装置２０に接続されたターゲット機器１０−１〜１０−ｎと同じ構成のターゲット機器１０に不調な部品を故意に実装した不調ターゲット機器１１と、不調ターゲット機器１１と接続され種々のＩ／Ｏを発生可能なＩ／Ｏ発生装置５０とを備える。
【００５７】
ターゲット機器１０−１〜１０−ｎが、例えばストレージ装置である場合、ターゲット機器１０−１〜１０−ｎと同じ機種のストレージ装置に不調なＨＤＤ（Hard Disk Drive）やＨＢＡ（Host Bus Adaptor）等の部品を実装し、ターゲット機器１０−１〜１０−ｎと同じレビジョンの組み込みソフトウェア１００を組み込むことで不調ターゲット機器１１を作成することができる。
【００５８】
また、不調ターゲット機器１１と接続されたＩ／Ｏ発生装置５０は、例えばホスト計算機に様々なブロックサイズや種別や頻度のＩ／Ｏを発行するソフトウェアや、例えば、レプリケーションやスナップショットなどターゲット機器１０の様々な機能を繰り替えし実行するソフトウェアを動作させることで作成することができる。
【００５９】
不調ターゲット機器１１を接続すると、保守部３０の障害登録部門３４０は、保守データベース３２０に保存されている保守情報テーブル３２１に、不調ターゲット機器１１に実装した不調部品に関する事象と原因と対処方法とを追記する。障害予兆検知装置２０のトレース情報テーブルに不調ターゲット機器１１のトレース情報が追加されると、障害登録部門３４０は、トレース情報管理部３５０を介して、当該機器ＩＤとレビジョンの事象列を不調部位品に関する事象に書き換える。
【００６０】
以上のように、本実施形態の障害予兆検知システム１によれば、不調な部品を実装した不調ターゲット機器１１に対して、Ｉ／Ｏ発生装置５０から様々なＩ／Ｏを発行し続けることで、組み込みソフトウェア１００をレビジョンアップした直後など障害データが存在しない場合や、障害データのサンプル数が少ない場合であっても、障害データを生成することができるため、障害予兆検知の精度を向上させることができる。
【００６１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６２】
１…障害予兆検知システム、１０…ターゲット機器、１１…不調ターゲット機器、２０…障害予兆検知装置、３０…保守部、４０…開発部、５０…Ｉ／Ｏ発生装置、１００…組み込みソフトウェア、１１０…記憶部、１１１…トレース情報、１２０…トレース情報送信部、２００…トレース情報受信部、２１０…記憶部、２１１…トレース情報テーブル、２１２…寄与度テーブル、２２０…学習モデル生成部、２３０…予測部、２４０…障害予兆通知部、２５０…トレース情報テーブル操作部、３００…障害予兆受信部、３１０…障害分析部門、３２０…保守データベース、３２１…保守情報テーブル、３３０…保守実行部門、３４０…障害登録部門、３５０…トレース情報管理部、４００…保守データベース端末部、４１０…組み込みソフトウェア開発部門、４２０…込みソフトウェア開発部門。
【図１】
2020135739.tif 000003
【図２】
2020135739.tif 000004
【図３】
2020135739.tif 000005
【図４】
2020135739.tif 000006
【図５】
2020135739.tif 000007
【図６】
2020135739.tif 000008
【図７】
2020135739.tif 000009
【図８】
2020135739.tif 000010
【図９】
2020135739.tif 000011
【図１０】
2020135739.tif 000012
【図１１】
2020135739.tif 000013
【図１２】
2020135739.tif 000014
【図１３】
2020135739.tif 000015
【図１４】
2020135739.tif 000016
【図１５】
2020135739.tif 000017
【図１６】
2020135739.tif 000018
【図１７】
2020135739.tif 000019
【手続補正書】
【提出日】令和1年12月27日(2019.12.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１装置と、
１以上の前記第１装置の障害予兆を検知する第２装置と、
を具備し、
前記第１装置は、
前記第１装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数と、呼び出し回数の計数対象とする関数の一部または全部を変更するための前記プログラムの更新が行われるごとに値が増加する前記プログラムの改定番号とを含むトレース情報を記録するトレース情報記録部
を具備し、
前記第２装置は、
前記改定番号ごとに前記トレース情報を分類し、分類した前記トレース情報と、前記トレース情報に対して関連づけられた前記第１装置の事象とに基づき、１関数以上の前記関数の呼び出し回数から前記第１装置の事象を予測するための決定木の学習モデルを生成する学習モデル生成部と、
前記第１装置から新たに収集された前記トレース情報と前記学習モデルとを用いて、前記第１装置の事象を予測する予測部と、
を具備する障害予兆検知システム。
【請求項２】
前記プログラムが更新された直後における前記学習モデル生成部による前記決定木の学習モデルの生成時、障害に相当する事象が予測されるべき前記トレース情報を収集するための不調の前記第１装置が増設される請求項１に記載の障害予兆検知システム。
【請求項３】
第１装置と、
１以上の前記第１装置の障害予兆を検知する第２装置と、
障害に相当する前記第１装置の事象を予測した前記第２装置から前記第１装置の障害予兆が検知された旨を示す通知を受信する第３装置と、
を具備し、
前記第１装置は、
前記第１装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数を含むトレース情報を記録するトレース情報記録部
を具備し、
前記第２装置は、
前記第１装置の事象の予測に対する１関数以上の前記関数の呼び出し回数の寄与度を算出し、前記トレース情報と、前記トレース情報に対して関連づけられた前記第１装置の事象とに基づき、１関数以上の前記関数の呼び出し回数から前記第１装置の事象を予測するための決定木の学習モデルを複数生成する学習モデル生成部と、
前記第１装置から新たに収集された前記トレース情報と、複数の前記学習モデルとを用いて、複数の前記学習モデルごとに前記第１装置の事象を予測し、複数の前記学習モデルそれぞれによる前記第１装置の事象の複数の予測結果に基づき、予測した前記第１装置の事象の確率を算出する予測部と、
を具備し、
前記第３装置は、
前記第１装置の事象とその復旧手順とを記憶する記憶部と、
前記第２装置から通知された前記第１装置の事象に対応する復旧手順を前記記憶部から取得して提示する提示部と、
を具備する障害予兆検知システム。
【請求項４】
前記学習モデル生成部は、前記複数の決定木のそれぞれにおける１関数以上の前記関数の呼び出し回数の寄与度を算出し、かつ、前記複数の決定木の全体における１関数以上の前記関数の呼び出し回数の寄与度の平均値を算出することによって、前記第１装置の事象の予測に対する１関数以上の前記関数の呼び出し回数の寄与度を算出する請求項３に記載の障害予兆検知システム。
【請求項５】
前記学習モデル生成部は、前記寄与度が閾値以下の関数の読み出し回数を除いて前記複数の決定木を再作成する請求項４に記載の障害予兆検知システム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明の実施形態は、障害予兆検知システムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
本発明が解決しようとする課題は、センサ等のハードウェア機構を必要とせずに、トレース情報から障害の予兆を検知することを可能とする障害予兆検知システムを提供することである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
実施形態によれば、障害予兆検知システムは、第１装置と、第２装置とを具備する。前記第２装置は、１以上の前記第１装置の障害予兆を検知する。前記第１装置は、トレース情報記録部を具備する。前記トレース情報記録部は、前記第１装置内のハードウェア制御を実行するプログラムに関する関数の呼び出し回数と、呼び出し回数の計数対象とする関数の一部または全部を変更するための前記プログラムの更新が行われるごとに値が増加する前記プログラムの改定番号とを含むトレース情報を記録する。前記第２装置は、学習モデル生成部と、予測部とを具備する。前記学習モデル生成部は、前記改定番号ごとに前記トレース情報を分類し、分類した前記トレース情報と、前記トレース情報に対して関連づけられた前記第１装置の事象とに基づき、１関数以上の前記関数の呼び出し回数から前記第１装置の事象を予測するための決定木の学習モデルを生成する。前記予測部は、前記第１装置から新たに収集された前記トレース情報と前記学習モデルとを用いて、前記第１装置の事象を予測する。