(57)【特許請求の範囲】
【請求項１】
機器の稼動ログを分析して障害検知または障害原因分析を行う機器障害分析装置であって、
前記機器の稼働時におけるイベントを含む機器稼動ログを記憶する機器稼動ログ記憶部と、
前記機器の正常稼動時におけるイベントを含む正常時ログを記憶する正常時ログ記憶部と、
前記正常時ログの特徴を示すパターン情報を含む正常時パターンを記憶する正常時パターン記憶部と、
前記機器稼動ログに含まれる前記イベントの順列と前記正常時パターンに含まれる前記パターン情報の順列とを比較することにより、前記機器稼動ログと前記正常時パターンとの不一致箇所を特定し、特定した前記不一致箇所に基づいて、前記機器稼動ログと前記正常時パターンとの不一致の程度が所定のしきい値を超えているか否かを判定するパターンチェック部と、
前記パターンチェック部が、前記不一致の程度が所定のしきい値を超えていないと判定した場合に、前記機器稼動ログを前記正常時ログに追加し、前記正常時ログから前記正常時パターンを抽出し、抽出した前記正常時パターンを前記正常時パターン記憶部に記憶させる特徴抽出部と、
を備えることを特徴とする機器障害分析装置。
【請求項２】
請求項１に記載の機器障害分析装置であって、
前記機器の異常稼動時におけるイベントを含む異常時ログを記憶する異常時ログ記憶部をさらに備え、
前記パターンチェック部は、前記不一致の程度が所定のしきい値を超えていると判定した場合に、特定した前記不一致箇所の位置を示す位置情報と前記機器稼動ログとを前記異常時ログ記憶部に記憶させることを特徴とする機器障害分析装置。
【請求項３】
請求項１または２に記載の機器障害分析装置であって、
前記パターンチェック部は、前記機器稼動ログと前記正常時パターンとの不一致の程度が所定のしきい値を超えていないと判定した場合において、既に前記機器稼動ログと同一の正常時ログが前記正常時ログに記憶されているか否かを判定し、既に前記機器稼動ログと同一の正常時ログが前記正常時ログに記憶されていると判定した場合、前記特徴抽出部によって前記正常時パターンが前記同一の正常時ログから抽出された回数を示す頻度情報を更新することを特徴とする機器障害分析装置。
【請求項４】
請求項１〜３のいずれか１項に記載の機器障害分析装置であって、
前記パターンチェック部は、前記機器の稼働中に障害が発生した場合は、前記機器の動作開始から障害発生までの前記イベントを前記機器から取得することを特徴とする機器障害分析装置。
【請求項５】
請求項１〜４のいずれか１項に記載の機器障害分析装置であって、
前記パターンチェック部は、前記機器の稼働中に障害が発生しなかった場合は、機器の動作開始から動作終了までの前記イベントを前記機器から取得することを特徴とする機器障害分析装置。
【請求項６】
請求項１〜５のいずれか１項に記載の機器障害分析装置であって、
前記機器障害分析装置の利用者が、前記障害検知または障害原因分析に関する情報を確認するための画面表示部を有し、
前記パターンチェック部は、前記画面表示部に、前記機器稼動ログと、前記正常時パターンとを並べて表示させ、前記機器稼動ログと、前記正常時パターンとの不一致箇所を示す情報を表示させることを特徴とする機器障害分析装置。
【請求項７】
請求項１〜６のいずれか１項に記載の機器障害分析装置であって、
前記正常時パターンに含まれる前記パターン情報は前記機器の正常稼動時におけるイベントから構成され、
前記パターンチェック部は、前記パターン情報の最初のイベントと同一のイベントを前記機器稼動ログの中から特定し、特定した前記イベントの後に続くイベントの順列が、前記パターン情報の最初のイベントの後に続くイベントの順列と一致しない場合に、両者のイベントの順列が一致していない位置を前記機器の異常稼動時におけるイベントを含む異常時ログに記録することを特徴とする機器障害分析装置。
【請求項８】
請求項１〜７のいずれか１項に記載の機器障害分析装置であって、
前記特徴抽出部は、前記正常時ログに含まれる前記イベントごとに、前記正常時ログにおける出現位置を特定し、特定した前記出現位置が複数ある場合において、一の前記出現位置に出現した前記イベントに続くイベントと、他の前記出現位置に出現した前記イベントに続くイベントとが同一であるか否かを判定し、一の前記出現位置に出現した前記イベントに続くイベントと、他の前記出現位置に出現した前記イベントに続くイベントとが同一であると判定する限りにおいて、前記イベントに続くイベントを前記パターン情報に追加することを特徴とする機器障害分析装置。
【請求項９】
請求項１〜８のいずれか１項に記載の機器障害分析装置であって、
前記パターンチェック部は、特定した前記不一致箇所に基づいて前記機器稼動ログと前記正常時パターンとの不一致の程度を、文字列の編集距離に基づいて算出することを特徴とする機器障害分析装置。
【請求項１０】
機器の稼動ログを分析して障害検知または障害原因分析を行う機器障害分析装置において行われる機器障害分析方法であって、
前記機器の稼動時におけるイベントを含む機器稼動ログに含まれる前記イベントの順列と前記機器の正常稼動時におけるイベントを含む正常時ログの特徴を示すパターン情報を含む正常時パターンに含まれる前記パターン情報の順列とを比較することにより、前記機器稼動ログと前記正常時パターンとの不一致箇所を特定する特定ステップと、
前記特定ステップにおいて特定された前記不一致箇所に基づいて、前記機器稼動ログと前記正常時パターンとの不一致の程度が所定のしきい値を超えているか否かを判定するパターンチェックステップと、
前記パターンチェックステップにおいて、前記不一致の程度が所定のしきい値を超えていないと判定した場合に、前記機器稼動ログを前記正常時ログに追加し、前記正常時ログから前記正常時パターンを抽出し、抽出した前記正常時パターンを正常時パターン記憶部に記憶させる特徴抽出ステップと、
を含むことを特徴とする機器障害分析方法。
【請求項１１】
コンピュータに、
機器の稼動時におけるイベントを含む機器稼動ログに含まれる前記イベントの順列と前記機器の正常稼動時におけるイベントを含む正常時ログの特徴を示すパターン情報を含む正常時パターンに含まれる前記パターン情報の順列とを比較することにより、前記機器稼動ログと前記正常時パターンとの不一致箇所を特定する特定ステップと、
前記特定ステップにおいて特定された前記不一致箇所に基づいて、前記機器稼動ログと前記正常時パターンとの不一致の程度が所定のしきい値を超えているか否かを判定するパターンチェックステップと、
前記パターンチェックステップにおいて、前記不一致の程度が所定のしきい値を超えていないと判定した場合に、前記機器稼動ログを前記正常時ログに追加し、前記正常時ログから前記正常時パターンを抽出し、抽出した前記正常時パターンを正常時パターン記憶部に記憶させる特徴抽出ステップと、
を実行させることを特徴とする機器障害分析プログラム。
【請求項１２】
請求項１１に記載の機器障害分析プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＴ装置、ＭＲＩ装置などの医療機器の障害検知、ログによる障害原因分析を行うための技術に関するものである。
【背景技術】
【０００２】
特開２００６−１５５０６４号公報では、ログにおけるイベントの発生頻度を計算し、異常検知を行う技術を開示している。学術論文 "Dynamic Syslog Mining for  Network Failure Monitoring" では、通信ネットワークのアクセスログを分析し、不正アクセスなどの障害を検知する技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１５５０６４
【非特許文献】
【０００４】
【非特許文献１】"Dynamic Syslog Mining for Network Failure Monitoring", Proceedings of the 11th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (2005)
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コンピュータなどの機器に障害が起こった際に原因調査を行うために、機器の稼働状態を示すログを保存する機能が使われる。ログには、ログを出力する機器が障害の発生を検知し、これを通知するために出力する「エラーログ」がある。一方、障害の有無とは関係なく、機器の稼働状態を通知または記録するために出力するログもある。このようなログは、さらに、定期ログとイベントログの二種類に分けられる。定期ログは、稼動状態を定期的に出力するもの（例えば、１分毎に機器の温度データを出力する）、イベントログは、イベントが発生した時に出力するものである。
【０００６】
機器に不具合が発生した際、エラーログが出力されていれば、どのような障害が起こったかを知ることができる。例えば、機器が予定外に停止してしまった際に、エラーログに「供給電圧低下」とあれば、機器に供給される電圧が許容範囲を下回ったために機器が停止したのだとわかる。だが、問題は、供給電圧が低下した原因である。技術者が原因を分析するには、障害が発生するまでの定期ログやイベントログを利用する。このとき、ログの中で、障害原因の特定の手掛かりとなる箇所を短時間で見つけ出すことが、障害から復帰するまでの時間を短縮することにつながる。本発明が解決しようとする課題は、ログに基づく障害原因の検知をサポートする技術を提供することである。。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために本発明は、機器の稼動ログを分析して障害検知または障害原因分析を行う機器障害分析装置であって、前記機器の稼働時におけるイベントを含む機器稼動ログを記憶する機器稼動ログ記憶部と、前記機器の正常稼動時におけるイベントを含む正常時ログを記憶する正常時ログ記憶部と、前記正常時ログの特徴を示すパターン情報を含む正常時パターンを記憶する正常時パターン記憶部と、前記機器稼動ログに含まれる前記イベントの順列と前記正常時パターンに含まれる前記パターン情報の順列とを比較することにより、前記機器稼動ログと前記正常時パターンとの不一致箇所を特定し、特定した前記不一致箇所に基づいて、前記機器稼動ログと前記正常時パターンとの不一致の程度が所定のしきい値を超えているか否かを判定するパターンチェック部と、前記パターンチェック部が、前記不一致の程度が所定のしきい値を超えていないと判定した場合に、前記機器稼動ログを前記正常時ログに追加し、前記正常時ログから前記正常時パターンを抽出し、抽出した前記正常時パターンを前記正常時パターン記憶部に記憶させる特徴抽出部と、を備えることを特徴とする。
【０００８】
また、本発明は、上記機器障害分析装置で行われる機器障害分析方法および機器障害分析プログラムである。
【発明の効果】
【０００９】
技術者がログに基づき障害原因を分析する場合に備え、障害原因の検知をサポートすることができる。
【図面の簡単な説明】
【００１０】
【図１】実施例１の装置の構成図である。
【図２】コンピュータを利用した装置構成図である。
【図３】機器稼動ログの例である。
【図４】正常時パターンの例である。
【図５】機器稼動ログと正常時パターンの不一致箇所を示す表示の例である。
【図６】ＣＴ撮影中にエラーが発生した場合のパターンチェック処理のフローチャートである。
【図７】ＣＴ撮影が最後まで行われた場合のパターンチェック処理のフローチャートである。
【図８】正常時ログから正常時パターンを抽出する処理のフローチャートである。
【図９】ログからパターンを抽出するアルゴリズムのフローチャートである。
【図１０】ログの中で、パターンとの不一致箇所を発見するアルゴリズムのフローチャートである。
【図１１】実施例１の装置構成を一部変更した構成図である。
【図１２】図１１の構成における、正常時ログから正常時パターンを抽出する処理のフローチャートである。
【図１３】実施例２の装置の構成図である。
【図１４】実施例２における、正常時ログから正常時パターンを抽出する処理のフローチャートである。
【図１５】実施例２の装置構成を一部変更した構成図である。
【図１６】図１５の構成における、正常時ログから正常時パターンを抽出する処理のフローチャートである。
【図１７】ログの中で、パターンとの不一致箇所を発見するアルゴリズムを一部変更したアルゴリズムのフローチャートである。
【図１８】ログとパターンの不一致の評価値の計算に用いる記憶領域を表す図である。
【図１９】ログとパターンの不一致の評価値の計算過程の第１段階の結果を表す図である。
【図２０】ログとパターンの不一致の評価値の計算過程の第２段階の結果を表す図である。
【図２１】ログとパターンの不一致の評価値の計算結果を表す図である。
【発明を実施するための形態】
【００１１】
（実施例１）
以下に添付図面を参照して、本発明にかかる機器障害分析装置、機器障害分析方法、および機器障害分析プログラムの実施の形態を詳細に説明する。
【００１２】
実施例１における機器障害分析装置１０００の装置構成図を図１に示す。以下では、機器障害分析装置１０００とＣＴ撮影装置０１０１とは別個の異なる筐体から構成される装置として説明しているが、これらを１つの装置として構成することも可能である。
【００１３】
ＣＴ撮影装置０１０１は、撮影時のエラーログやイベントログなどの各種のログ（以下、機器稼動ログ、または単にログと呼ぶ。）を出力する。これらは、機器障害分析装置１０００の機器稼動ログ記憶部０１０２に出力され、機器稼動ログ記憶部０１０２がこれらのログを記憶する。正常時パターン記憶部０１０４は、ＣＴ撮影装置０１０１などの機器が正常に動作した場合のログのパターンを記憶する。このパターンはＣＴ撮影装置０１０１の稼働結果から取得されるものだが、外部から与えられる初期値として、初期正常時パターン０１０３を有している。
【００１４】
パターンチェック部０１０５は、機器稼動ログ記憶部０１０２に記憶されたログを検証対象とし、これと、正常時パターン記憶部１０４０に記憶されたパターンとを比較し、不一致箇所を探索する。パターンチェック部０１０５は、不一致箇所が見つからなかった場合は、検証対象のログは異常無しと判断し、正常時ログ記憶部０１０６にそのログを送る。特徴分析部０１０７は、正常時ログ記憶部０１０６に記憶された正常時ログを分析対象とし、その中から正常時の特徴を示すパターン（以下、正常時パターンと呼ぶ。）を抽出する。特徴分析部０１０７は、抽出した正常時パターンを正常時パターン記憶部０１０４に記憶させる。
【００１５】
一方、パターンチェック部０１０５が、検証対象としたログと正常時パターンとに不一致箇所が見つかった場合、検証対象のログは異常ありと判断し、異常情報出力部０１０８にそのログを送る。異常情報出力部０１０８は、使用者に異常を通知するとともに、不一致箇所を示す情報などをログに付加し、そのログを異常時ログ記憶部０１０９に送る。以下、このように正常時ログ記憶部０１０６に記憶されたログを正常時ログ、異常時ログ記憶部０１０９に記憶されたログを異常時ログと呼ぶこととする。
【００１６】
図２は、上記の機器障害分析装置１０００を、コンピュータを利用して構成した場合の装置構成図である。ＣＴ撮影装置０１０１以外の他の部分を、機器障害分析装置１０００として、ＣＰＵ０２０１、記憶部０２０２、ユーザ入出力部０２０３という、典型的なコンピュータの構成要素で実現している。すなわち、機器稼動ログ記憶部０１０２と、正常時パターン記憶部０１０４(初期正常時パターン０１０３を含む)と、正常時ログ記憶部０１０６と、異常時ログ記憶部０１０９とは、メモリやハードディスク等から構成される記憶部０２０２に記憶され、パターンチェック部０１０５と、特徴分析部０１０７と、異常情報出力部０１０８とは、ＣＰＵ０２０１からの制御によって記憶部０２０２にロードされ、上述した各部の機能が実行されるようになっている。
【００１７】
図３は、ＣＴ撮影装置０１０１が出力するログの例を示す図である。図３に示す例ではイベントログの形式をとっている。このログでは、各行が１つのイベント発生に対応しており、イベントの発生した日時と、発生したイベントの種類、内容が記載されている。例えば、「20100701 09:27:10」はイベントの発生日時「2010年7月1日  9時27分10秒」を表し、「Reset Device」は、その時に発生したイベントの種類を表す文字列である。また、記号「＊」だけが並んだ行はイベントではなく、ログの区切りを表す。ＣＴ装置を例に取ると、１名の患者のＣＴ撮影ごとにログに区切りを挿入する。すなわち、「＊」の行に挟まれたログのブロックが、１名の患者のＣＴ撮影において出力されるログである。
【００１８】
また、ログに記載されたイベントには、「Move -0430 [mm]」のように、イベントの種類を表す文字列（Move）と数値パラメータ（-0430 [mm]）の組み合わせになっているものがある。例えば、
Move -0430 [mm]
Move -0420 [mm]
Move -0400 [mm]
というイベントがログに出現したとして、これらを単純に文字列と考えると、機器障害分析装置１０００は、これらを３種類の異なるイベントとして扱う。ログ分析において、これらの数値の違いには意味がなく、どれも「Move」という同一のイベントとして扱うのが妥当であれば、これらのログの数値パラメータを変数として取り扱い、パターンチェック部０１０５や特徴分析部０１０７が、「Move (value)」のように変換する処理を、追加の処理として行うことも可能である。
【００１９】
図４は、正常時パターンの例を示す図である。正常時パターンとは、正常時パターン記憶部１０４０に記憶されている、ログに登場するイベントの順列である。正常時パターンは、イベント発生日時は含まず、また、上記の「Move (value)」の例のように、変換後の文字列をイベントとして含むこともある。後述するように、正常時パターンは、特徴分析部０１０７が正常時パターン記憶部０１０４に記憶させている。その際に、頻度情報を付加して記憶することも考えられる。頻度情報とは、例えば、各々のイベントの順列が正常時ログの中に出現した回数である。
【００２０】
図５は、パターンチェック部０１０５が機器稼動ログと正常時パターンに不一致を見つけた場合に、ユーザ入出力部０２０３にこれを表示させて、使用者に提示するための表示形式の例である。図５に示す例では、検証対象である機器稼動ログと、正常時パターンとを左右に並べて表示し、不一致箇所を下線で示している。不一致箇所は後述の図６や図７に示す処理によって記録されるので、ユーザ出力部0203に表示することができる。なお、一般的には、正常時パターンは複数存在するので、１つの機器稼動ログが複数の正常時パターンとの間で不一致を起こす。そこで、向かって右側に表示される正常時パターンは、使用者の操作によってユーザ入出力部０２０３が受け付けた、複数の正常時パターンの中からユーザによって選択された正常時パターンとする。
【００２１】
続いて、機器稼動ログと正常時パターンとの比較を行う処理を以下に説明する。。ＣＴ撮影装置０１０１がＣＴ撮影中に、機器に不具合が発生した場合、撮影は中断され、使用者にはエラーが通知される。また、この場合、機器稼動ログにはエラーログが出力される。この時、パターンチェック部０１０５が、機器稼動ログと正常時パターンとの比較を行う処理のフローを図６に示す。
【００２２】
図６に示すように、ＣＴ撮影装置０１０１にエラーが発生すると、ＣＴ撮影装置０１０１はエラー発生イベントを出力し、機器稼動ログ記憶部０１０２はエラー発生イベントを受け取る（ステップ０６０１）。これがきっかけとなり、機器稼動ログ記憶部０１０２は、ＣＴ撮影装置０１０１が、当該の撮影開始からエラー発生による撮影中断までの機器稼動ログを記憶する（ステップ０６０２）。このように記憶された機器稼動ログが、図３に示したように、「＊」記号で区切られた機器稼動ログの１つのブロックになる。
【００２３】
そして、パターンチェック部０１０５は、このように機器稼動ログ記憶部０１０２に記憶されたログのブロックをパターンチェックにかける（ステップ０６０３）。ステップ０６０３に示すパターンチェック処理では、パターンチェック部０１０５は、正常時パターン記憶部０１０４に記憶されている正常時パターンを読み出し、読み出した正常時パターンとログのブロックとを比較する。ここで、パターンチェック部０１０５は、１つのログのブロックを、１つ以上の正常時パターンと比較する。パターンチェックの結果は、「不一致の評価値」という、１つのスカラー値で得られる。ここでは、「不一致の評価値」を判定するためのしきい値をあらかじめ定めておくものとする。その一例としては、パターンチェック部０１０５が、１つ以上の正常時パターンとログのブロックとを比較する場合において、不一致が１つでも見つかれば評価値は１、不一致が１つも見つからなければ評価値を０とし、このときのしきい値を０．５と定めた場合である。なお別の一例として、正常時パターンとログのブロックを比較した際に見つかった不一致イベントの数を「不一致の評価値」とし、閾値として自然数を予め定めておいても良い。
【００２４】
パターンチェック部０１０５は、パターンチェックをした結果、不一致の評価値がしきい値を超えたか否かで、処理を分岐する（ステップ０６０４）。すなわち、パターンチェック部０１０５が、不一致の評価値がしきい値を超えたと判定した場合（ステップ０６０４；Ｙｅｓ）、機器稼動ログの中で不一致があった箇所を記録する（ステップ０６０５）。その後、パターンチェック部０１０５は、異常時ログ記憶部０１０９に、この不一致箇所を記録した機器稼動ログを異常時ログとして記憶する（ステップ０６０６）。
【００２５】
一方、パターンチェック部０１０５が、不一致の評価値がしきい値を超えていないと判定した場合（ステップ０６０４；Ｎｏ）、ステップ０６０５の処理を行わず、異常時ログ記憶部０１０９に機器稼動ログを異常時ログとして記憶する（ステップ０６０６）。このステップ０６０６の処理が終了すると、図６に示した全ての処理が終了する。
【００２６】
続いて、ＣＴ撮影装置０１０１がＣＴ撮影中に不具合が発生せず、最後まで撮影が行われた場合の、機器稼動ログと正常時パターンとの比較を行う処理のフローを図７に示す。
【００２７】
この場合、ＣＴ撮影装置０１０１はエラー発生イベントを出力せず、代わりに、撮影終了イベントを出力し、これを機器稼動ログ記憶部０１０２が受け取る（ステップ０７０１）。これがきっかけとなり、機器稼動ログ記憶部０１０２は、当該の撮影開始から撮影終了までの機器稼動ログをブロックとしてＣＴ撮影装置０１０１が出力したログを記憶する（ステップ０７０２）。
【００２８】
そして、パターンチェック部０１０５は、このログのブロックをパターンチェックにかける（ステップ０７０３）。パターンチェック部０１０５は、パターンチェックの結果、不一致の評価値がしきい値を超えたか否かで、処理を分岐する（０７０４）。すなわち、パターンチェック部０１０５は、不一致の評価値がしきい値を超えたと判定した場合（ステップ０７０３；Ｙｅｓ）、使用者に対して異常検知を通知するためのアラートを発生させ（ステップ０７０５）、機器稼動ログの中で不一致があった箇所を記録する（ステップ０７０６）。その後、パターンチェック部０１０５は、異常時ログ記憶部０１０９に、この不一致箇所を記録した機器稼動ログを記憶する（ステップ０７０７）。
【００２９】
一方、パターンチェック部０１０５は、不一致の評価値がしきい値を超えていないと判定した場合（ステップ０７０３；Ｎｏ）、当該ログは正常であると見なし、正常時ログを対象とした特徴分析を行う（ステップ０７０８）。このステップ０７０８の処理が終了すると、図７に示した全ての処理が終了する。
【００３０】
図８に、特徴分析のフローを示す。まず、パターンチェック部０１０５は、上記のパターンチェック処理において、不一致の評価値がしきい値を超えず、正常と判断されたログを対象とし、正常時ログ記憶部０１０６に記憶されている正常時ログと比較する（ステップ０８０１）。
【００３１】
ここで、パターンチェック部０１０５は、イベントの順列が同じであるログのブロックが、既に正常時ログ記憶部０１０６に記憶されている場合は処理０８０３へ、そうでない場合は処理０８０５へ進む（ステップ０８０２）。すなわち、パターンチェック部０１０５は、ログのブロックに示されたイベントの順列と、既に正常時ログ記憶部０１０６に記憶されている正常時ログのイベントの順列とを比較し、両者が同一の順列であるか否かを判定することにより、イベントの順列が同じであるログのブロックが、既に正常時ログ記憶部０１０６に記憶されていると判定する。
【００３２】
そして、パターンチェック部０１０５は、イベントの順列が同じであるログのブロックが、既に正常時ログ記憶部０１０６に記憶されていると判定した場合（ステップ０８０２；Ｙｅｓ）、正常時パターンが既に抽出されているので、その頻度情報を更新し（ステップ０８０３）、対象のログを正常時ログ記憶部０１０６へ記憶する（ステップ０８０４）。
【００３３】
一方、パターンチェック部０１０５は、イベントの順列が同じであるログのブロックが、既に正常時ログ記憶部０１０６に記憶されていないと判定した場合（ステップ０８０２；Ｎｏ）、対象のログを正常時ログ記憶部０１０６に記憶し（ステップ０８０５）、その後、特徴分析部０１０７は、正常時ログを対象とした特徴分析処理を行う（ステップ０８０６）。そして、特徴分析部０１０７は、その結果として得られた正常時パターンを正常時パターン記憶部０１０４に記憶する（ステップ０８０７）。
【００３４】
なお、ここまでの処理では、パターンチェック部０１０５は、正常時ログから正常時パターンを抽出し、これと機器稼動ログの不一致を見つけることで異常を判定していた。これとは逆に、異常時ログから異常時パターンを抽出し、これと機器稼動ログの一致を見つけることで異常を判定することも可能である。
【００３５】
ステップ０８０６における特徴分析処理では、特徴分析部０１０７は、処理対象のログからシーケンスパターンを抽出する。そのアルゴリズムを図９に示す。処理対象のログは、図３に示すように複数のブロックが区切り記号で区切られてつながったログである。
【００３６】
図９に示したアルゴリズムでは、特徴分析部０１０７は、まず、処理対象のログに出現する全てのイベントを調べ、そのリストを作成する（ステップ０９０１）。このリストをＥとする。そして、特徴分析部０１０７は、イベントの１つ１つについて、以下の処理を行う。ステップ０９０２では、特徴分析部０１０７は、リストＥが空であるか否かを調べる。特徴分析部０１０７は、処理済みのイベントをリストから取り除くので、リストＥが空であるということは、全てのイベントの処理が終了したことを意味する。特徴分析部０１０７は、リストＥが空であると判定した場合（ステップ０９０２；Ｙｅｓ）、アルゴリズムは終了する。特徴分析部０１０７は、リストＥが空でないと判定した場合（ステップ０９０２；Ｎｏ）、ステップ０９０３へ進む。
【００３７】
ステップ０９０３では、特徴分析部０１０７は、これから処理する対象となるイベントを１つ決定する。このイベントをＡとする。そして、特徴分析部０１０７は、ＡをリストＥから取り除く（ステップ０９０３）。次に、特徴分析部０１０７は、処理対象のログの中で、イベントＡを全て見つけ、その位置をリストにする（ステップ０９０４）。このリストをＰとする。イベントＡの「位置」とは、例えば、ログの先頭から行番号を付けたとして、イベントＡが出現する行の番号である。
【００３８】
次に、特徴分析部０１０７は、空のリストＳを作成し、その先頭要素として、ＳにＡを挿入する（ステップ０９０５）。リストＳは、これから抽出するシーケンスパターンを一時的に保存する記憶領域となる。この時点で、リストＳの要素数は１である。ステップ０９０６では、特徴分析部０１０７は、リストＳの要素数を変数Ｌに保持する。
【００３９】
そして、特徴分析部０１０７は、ステップ０９０７では、先に作成したリストＰに保持されているイベントＡの位置各々にＬの値を加えて算出されるログ中の位置にあるイベントを参照し、参照した各イベントが全て同一のイベントか否かを調べる。すなわち、特徴分析部０１０７は、ログ中に現れる全てのＡについて、そこからＬだけ進んだ位置にあるイベントが全て同じか否かを判定する。
【００４０】
特徴分析部０１０７は、ログ中に現れる全てのＡについて、そこからＬだけ進んだ位置にあるイベントが全て同じであると判定した場合（ステップ０９０７；Ｙｅｓ）、そのイベントを、リストＳの末尾に挿入する（ステップ０９０８）。すなわち、シーケンスパターンが１つ伸びるわけである。
【００４１】
例えば、特徴分析部０１０７は、Ｌの値が１である時、ログ中の全てのＡについて、その次のイベントが全てＢであれば、リストＳの末尾にＢを挿入する。その結果、リストＳの長さは２となり、最初の要素はＡ、２番目の要素はＢである。これは、処理対象のログにおいて、イベントＡの次には必ずイベントＢが続いているということを意味する。以下、同様にして、後続のイベントが全ての場合で同一である限り、シーケンスパターンが伸びていくことになる。
【００４２】
そして、特徴分析部０１０７は、後続のイベントが同一でないと判定した場合（ステップ０９０７；Ｎｏ）、ステップ０９０９へ進む。この場合、シーケンスパターンの伸長が停止したことを意味し、特徴分析部０１０７は、その時点までのリストＳをシーケンスパターン抽出結果に加える。ただし、リストＳの長さが１以下の場合、すなわち、Ｓの要素が先頭のイベントのみであった場合は、特徴分析部０１０７は、シーケンスパターンとしての意味を成さないとし、シーケンスパターン抽出結果に加えない。
【００４３】
図１０は、図６、図７に示したパターンチェック処理における、機器稼動ログと正常時パターンの比較のアルゴリズムを示す図である。パターンチェック処理では、パターンチェック部０１０５は、機器稼動ログの１つのブロックと、複数の正常時パターンを比較するが、図１０には、１つのブロックと、１つの正常時パターンの比較のアルゴリズムを示している。すなわち、パターンチェック部０１０５は、複数の正常時パターンと比較するには、図１０のアルゴリズムを正常時パターンの数だけ実行する。
【００４４】
まず、パターンチェック部０１０５は、準備として、比較する正常時パターンをＳ、Ｓの要素数すなわち正常時パターンの長さをＬ、Ｓの先頭要素すなわち正常時パターンの最初のイベントをＡとし（ステップ１００１）、処理対象である機器稼動ログのブロックの先頭を、探索開始位置とし（ステップ１００２）、探索開始位置からログの末尾へ向かって、イベントＡを探す（ステップ１００３）。ここで、パターンチェック部０１０５は、処理対象である機器稼動ログのブロックにイベントＡが見つかったか否かを判定し（ステップ１００４）、処理対象である機器稼動ログのブロックイベントＡが見つからずにログの末尾まで達した場合（ステップ１００４；Ｎｏ）、アルゴリズムを終了させる。
【００４５】
一方、パターンチェック部０１０５は、処理対象である機器稼動ログのブロックＡが見つかったと判定した場合（ステップ１００４；Ｙｅｓ）、その位置をＰとする（１００５）。その後、パターンチェック部０１０５は、任意の変数ｉを１に設定し（ステップ１００６）、設定した変数ｉが、正常時パターンの長さＬよりも小さいか否かを判定する（ステップ１００７）
そして、パターンチェック部０１０５は、Ｐに変数ｉを加えた位置（Ｐ＋ｉ）におけるイベントが、Ｓのｉ＋１の位置におけるイベントと同じであるか否かを判定し（ステップ１００８）、両者が同じであると判定した場合（ステップ１００８；Ｙｅｓ）、変数ｉをｉ＋１に設定し（ステップ１００９）、ステップ１００７に戻る。このように、パターンチェック部０１０５は、ログ中の位置Ｐからイベントの順列が正常時パターンＳと一致しているかを、１つ１つイベントを比較しながら調べる。
【００４６】
一方、パターンチェック部０１０５は、上述した両者が同じではないと判定した（すなわち、正常時パターンＳの途中で不一致があった）場合（ステップ１００８；Ｎｏ）、ステップ１０１０に進む。パターンチェック部０１０５は、ステップ１０１０において、正常時パターンと不一致のあったログ中の位置を記録し（ステップ１０１０）、ステップ１０１１に進む。ステップ１０１１では、パターンチェック部０１０５は、Ｐの次の位置を新たなログ中の探索開始位置として設定し（ステップ１０１１）、ステップ１００３に戻る。こうして、パターンチェック部０１０５は、ログ中の全てのＡについて、正常時パターンＳとのイベントの順列の一致／不一致を調べる。このような処理結果として、１つの正常時パターンＳとの不一致箇所が得られる。
【００４７】
続いて、図１に示した装置構成を一部変更した構成を図１１に示す。図１１では、ＣＴ撮影装置０１０１、パターンチェック部０１０５などが置かれる利用者サイトの他にサービスセンタを設置し、その中に正常時ログ記憶部１１０１、特徴分析部１１０２、正常時パターン記憶部１１０３を有する構成としたものである。これらの各部の役割は、図１における正常時ログ記憶部０１０６、特徴分析部０１０７、正常時パターン記憶部０１０４と同じであるが、利用者サイトとサービスセンタに分かれているため、ログやパターンの送受信が行われるという点が図１の構成と異なる。
【００４８】
図１２には、利用者サイトとサービスセンタの間の送受信を含んだ特徴分析処理のフローを示す。まず、利用者サイト側で、機器障害分析装置１０００は、パターンチェック部０１０５が、パターンチェックの結果、異常無しとなったログのブロックを取得し（ステップ１２０１）、これを利用者サイト側の正常時ログ記憶部１１０１に記憶する（ステップ１２０２）。その後、パターンチェック部０１０５は、正常時ログの中で、まだサービスセンタへ送信していない分（差分）を送信し（ステップ１２０３）、機器障害分析装置１０００は、サービスセンタから結果が送られてくるのを待つ待機状態となる（ステップ１２０４）。
【００４９】
一方、サービスセンタ側では、特徴分析部１１０２が、このログを受信し（ステップ１２０７）、既に受信済みのログと合わせてサービスセンタ側の正常時ログ記憶部１１０１に記憶する（ステップ１２０８）。そして、特徴分析部１１０２は、この正常時ログを対象として特徴分析処理を行い（ステップ１２０９）、結果として得られたシーケンスパターンすなわち正常時パターンを利用者サイトへ送信する（ステップ１２１０）。
【００５０】
利用者サイトでは、パターンチェック部０１０５がこのシーケンスパターンを受信し（ステップ１２０５)、利用者サイト側の正常時パターン記憶部０１０４に記憶する（ステップ１２０６）。このように、サービスセンタでログを集めて特徴分析を行うという構成にすることにより、複数の利用者サイトから収集したログを合わせて特徴分析と行うことも可能である。こうした場合、１つの利用者サイトのＣＴ撮影部だけの機器稼動ログを対象とするよりも多様な正常時パターンを得られることが期待できる。なお、この場合、パターンチェック部０１０５および特徴分析部１１０２は、従来から知られている種々の無線あるいは有線によって実現される通信機能を有しているものとする。
（実施例２）
実施例２の装置構成図を図１３に示す。本実施例では、利用者サイトとサービスセンタを設置し、利用者サイト側でＣＴ撮影装置の稼動、機器稼動ログと正常時パターンとの比較、異常情報の出力、およびその記憶を行い、サービスセンタ側で正常時ログの取得と正常時パターンの抽出を行う。
【００５１】
利用者サイト側の処理は、実施例１と類似しているが、特徴抽出の対象として利用者サイトの機器稼動ログを使わないという点が異なる。サービスセンタ側には、ＣＴ撮影部１３０１、正常時ログ記憶部１３０２、特徴分析部１３０３、正常時パターン記憶部１３０４を有する。サービスセンタ側のＣＴ撮影部１３０１は正常な機器稼働のモデルであり、利用者サイト側では、ここから得られる機器稼動ログは正常時ログであると見なす。特徴分析部１３０３は、この正常時ログに基づいて正常時パターンを抽出し、利用者サイトへ送信する。
【００５２】
そして、利用者サイトでは、パターンチェック部０１０５が、サービスセンタから受け取った正常時パターンを用いてパターンチェックを行う。サービスセンタに設置したＣＴ撮影装置をよくメンテナンスし、稼動状態をよく監視することにより、正常時ログとしての信頼性の高い機器稼働ログを得ることが可能になると期待される。なお、本実施の形態においても、この場合、パターンチェック部０１０５および特徴分析部１１０２は、従来から知られている種々の無線あるいは有線によって実現される通信機能を有しているものとする。
【００５３】
図１４に、利用者サイトとサービスセンタの間の送受信を含んだ特徴分析処理のフローを示す。まず、サービスセンタ側で、ＣＴ撮影装置１３０１から撮影終了イベントを受け取ると（ステップ１４０３）、特徴分析部１３０３は、機器稼動ログをＣＴ撮影装置から取得する（ステップ１４０４）。ＣＴ撮影装置１３０１は正常モデルであり、この機器稼働ログは正常時ログであると見なされるので、特徴分析部１３０３は、サービスセンタ側の正常時ログ記憶部１３０２にその正常時ログを記憶する（ステップ１４０５）。
【００５４】
そして、特徴分析部１３０３は、正常時ログを対象に特徴分析処理を行い（ステップ１４０６）、結果として得られたシーケンスパターンすなわち正常時パターンを利用者サイトへ送信する（ステップ１４０７）。利用者サイトでは、パターンチェック部０１０５が、サービスセンタからシーケンスパターンを受信し（ステップ１４０１）、これを利用者サイト側の正常時パターン記憶部に記憶する（ステップ１４０２）。
【００５５】
図１３に示した装置構成を一部変更した構成を図１５に示す。ほぼ同一の構成だが、利用者サイト側のＣＴ撮影装置０１０１から、サービスセンタ側のＣＴ撮影装置１３０１へ、撮影条件を送信する点が異なる。同一のＣＴ撮影部を用いているとしても、撮影目的、撮影方法は利用者ごとに違いがあると考えられる。そこで、利用者ごとの撮影条件の違いを反映した正常時パターンを得るために、利用者サイトからサービスセンタへ撮影条件を送信する。
【００５６】
上記の利用者サイトとサービスセンタ間の通信を含んだ特徴分析処理のフローを図１６に示す。まず、利用者サイト側から、ＣＴ撮影装置０１０１が、撮影条件をサービスセンタに送信する（ステップ１６０１）。サービスセンタ側では、ＣＴ撮影装置１３０１がこれを受信し（ステップ１６０４）、この条件に従ってＣＴ撮影を行う（ステップ１６０５）。そして、特徴分析部１３０３は、ＣＴ撮影装置１３０１から撮影終了イベントを受け取ると（ステップ１６０６）、機器稼動ログをＣＴ撮影装置１３０１から取得する（１６０７）。ＣＴ撮影装置１３０１は正常モデルであり、この機器稼働ログは正常時ログであると見なされるので、特徴分析部１３０３は、その正常時ログをサービスセンタ側の正常時ログ記憶部１３０２に記憶する（ステップ１６０８）。
【００５７】
そして、特徴分析部１３０３は、正常時ログを対象に特徴分析処理を行い（ステップ１６０９）、結果として得られたシーケンスパターンすなわち正常時パターンを利用者サイトへ送信する（ステップ１６１０）。利用者サイトでは、パターンチェック部０１０５がサービスセンタからシーケンスパターンを受信し（ステップ１６０２）、これを利用者サイト側の正常時パターン記憶部０１０４に記憶する（ステップ１６０３）。
【００５８】
続いて、実施例１および実施例２におけるパターンチェック処理を一部変更したフローチャートを図１７に示す。これは、機器稼動ログと正常時パターンの比較のアルゴリズムを表した図１０のフローチャートの、ステップ１００６〜ステップ１０１０を、ステップ１７０１〜ステップ１７０５に変更したものである。
【００５９】
ステップ１７０１では、パターンチェック部０１０５は、パターンチェック処理で用いる計算領域を記憶部（例えば、不図示のメモリ）に確保する。その計算領域の例を図１８に示す。計算領域は、比較対象である正常時パターンＳを格納する領域Ｘ、機器稼働ログを格納する領域Ｙと、２次元のマトリックス領域からなる。領域Ｘの長さは、正常時パターンＳの要素数Ｌとする。図１８の例では、Ｌ＝４である。領域Ｙの長さは、Ｌの２倍とする。マトリックス領域の大きさは、行数がＬ、列数がＬの２倍とする。領域Ｘには、正常時パターンＳの要素を先頭から順に格納する。領域Ｙには、位置Ｐからの機器稼動ログを順に格納する。なお、位置Ｐからの機器稼動ログの末尾までの長さがＬの２倍に満たない場合は、領域Ｙの長さ、およびマトリックス領域の列数は、位置Ｐから機器稼動ログの末尾までの長さとする。
【００６０】
ステップ１７０２では、パターンチェック部０１０５は、マトリックス領域に格納する値を計算する。値の計算は、２段階の手順を踏む。計算の第１段階は初期値の設定である。マトリックス領域の第１行第１列に０を設定し、第１行の第２列以降には、１から昇順に整数を設定する。第１列の第２行以降も同様に、１から昇順に整数を設定する。初期値を設定し終わったマトリックス領域を図１９に示す。計算の第２段階では、パターンチェック部０１０５は、マトリックス領域の残りの要素の値を計算する。ここで、第ｉ行第ｊ列の要素の値をa[i,j]とすると、a[i,j]の値は、例えば、以下の規則によって定めることが出来る（ただし、１＜ｉ、１＜ｊ）。
if (領域Ｘのｉ番目の要素 ＝ 領域Ｙのｊ番目の要素) then
a[i,j] ← min( a[i-1, j-1], a[i-1, j] +1 , a[i, j-1] +1 )
else
a[i,j] ← min( a[i-1, j] +1 , a[i, j-1] +1 )
endif
このような規則によってパターンチェック部０１０５が全ての値の計算を終えた場合のマトリックス領域を図２０に示す。
【００６１】
パターンチェック部０１０５は、マトリックス領域の値を全て決定したら、マトリックス領域の第Ｌ行、すなわち、最下段の行の中での最小値を、正常時パターンＳと機器稼動ログの不一致の評価値とする。これをＤとする（ステップ１７０３）。図２１では、Ｄ＝２である。このＤの値が０であれば、正常時パターンと機器稼働ログに不一致はない。パターンチェック部０１０５は、このＤの値が０でなければ、不一致があると判定する（ステップ１７０４）。Ｄが０でない場合、パターンチェック部０１０５は、位置Ｐを不一致箇所とし、Ｄの値とともに記録する（ステップ１７０５）。なお、正常時パターンＳと機器稼動ログの不一致の評価値として、上記のＤの代わりに、Ｄを正常時パターンの長さＬで除した値を用いることも可能である。
【００６２】
以上のパターンチェック処理とすることで、不一致の有無だけでなく、不一致の程度を評価することができる。上記で示した計算方法は、２つの文字列の「編集距離」または「レーベンシュタイン距離」として知られている尺度の計算方法の応用である。本来の編集距離の計算方法では、マトリックス領域の最下段の右端の要素の値を編集距離とするが、上記の不一致の評価値の計算方法では、マトリックス領域の最下段の中の最小値を評価値としている点が異なる。
【００６３】
なお、上述した機器障害分析装置１０００で実行される各種の処理は、実際にはプログラムが実行されることによって、これらの各機能が実現され、そのプログラムは、例えば、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供することが可能である。
【００６４】
また、本実施の形態のプログラムは、上述した各部（パターンチェック部、特徴分析部等）を含むモジュール構成となっており、図２に示したように、実際のハードウェアとしてはＣＰＵが上記記録媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、パターンチェック部、特徴分析部等が主記憶装置上に生成されるようになっている。
【００６５】
本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【００６６】
以上の実施形態によれば、機器稼動ログの中で、正常時の特徴と不一致のある箇所を使用者に提示することにより、機器稼動ログの中で、障害原因の特定の手掛かりとなる箇所を使用者が短時間で把握することができる。また、機器稼動ログの中で、正常時の特徴と不一致のある箇所を検出することにより、障害が発生しなくても、異常の兆候を検出することができる。
【符号の説明】
【００６７】
１０００  機器障害分析装置
０１０１  ＣＴ撮影装置
０１０２  機器稼動ログ記憶部
０１０３  初期正常時パターン
０１０４  正常時パターン記憶部
０１０５  パターンチェック部
０１０６  正常時ログ記憶部
０１０７  特徴分析部
０１０８  異常情報出力部
０１０９  異常時ログ記憶部
１１０１  サービスセンタ側の正常時ログ記憶部
１１０２  サービスセンタ側の特徴分析部
１１０３  サービスセンタ側の正常時パターン記憶部
１３０１  サービスセンタ側のＣＴ撮影装置。
【図１】
0005530897.tif 000002
【図２】
0005530897.tif 000003
【図３】
0005530897.tif 000004
【図４】
0005530897.tif 000005
【図５】
0005530897.tif 000006
【図６】
0005530897.tif 000007
【図７】
0005530897.tif 000008
【図８】
0005530897.tif 000009
【図９】
0005530897.tif 000010
【図１０】
0005530897.tif 000011
【図１１】
0005530897.tif 000012
【図１２】
0005530897.tif 000013
【図１３】
0005530897.tif 000014
【図１４】
0005530897.tif 000015
【図１５】
0005530897.tif 000016
【図１６】
0005530897.tif 000017
【図１７】
0005530897.tif 000018
【図１８】
0005530897.tif 000019
【図１９】
0005530897.tif 000020
【図２０】
0005530897.tif 000021
【図２１】
0005530897.tif 000022