(57)【要約】【課題】構成情報の更新の検知を迅速にするための情報を生成する構成情報管理プログラムを提供する。【解決手段】一態様によるプログラムがコンピュータに実行させる処理は、第１の装置についての構成情報と第１ログデータと、第２の装置についての構成情報と第２ログデータと、を取得し、第１ログデータ及び第２ログデータに含まれる複数のメッセージを、メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成し、第１の装置の構成情報の値と第２の装置の対応する構成情報の値との異同と、第１ログデータにおけるメッセージパターンの可変部分に対応する値と第２ログデータにおけるメッセージパターンの可変部分に対応する値との異同と、が一致する場合、メッセージパターンを構成情報と対応付けて記録する処理を含む。【選択図】図２
2015170207.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１の装置についての構成情報と第１ログデータと、第２の装置についての構成情報と第２ログデータと、を取得し、
前記第１ログデータ及び前記第２ログデータに含まれる複数のメッセージを、該メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成し、
前記第１の装置の前記構成情報の値と前記第２の装置の対応する前記構成情報の値との異同と、前記第１ログデータにおける前記メッセージパターンの前記可変部分に対応する値と前記第２ログデータにおける前記メッセージパターンの前記可変部分に対応する値との異同と、が一致する場合、前記メッセージパターンを前記構成情報と対応付けて記録する
処理を実行させることを特徴とする構成情報管理プログラム。
【請求項２】
コンピュータに、
第３の装置についての構成情報と第３ログデータを取得し、
前記第１ログデータ、第２ログデータ、及び第３ログデータに含まれる複数のメッセージを、該メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成し、
前記第１の装置の前記構成情報の値と前記第２の装置の対応する前記構成情報の値とが異なり、前記第１の装置の前記構成情報の値と前記第３の装置の対応する前記構成情報の値とが一致する場合に、前記第１ログデータにおける前記メッセージパターンの前記可変部分に対応する値と前記第２ログデータにおける前記メッセージパターンの前記可変部分に対応する値とが異なり、且つ、前記第１ログデータにおける前記メッセージパターンの前記可変部分に対応する値と前記第３ログデータにおける前記メッセージパターンの前記可変部分に対応する値とが一致する場合、前記メッセージパターンを、前記構成情報と対応付けて記録する
処理を実行させることを特徴とする請求項１に記載の構成情報管理プログラム。
【請求項３】
コンピュータに、
前記第１の装置の前記構成情報の値と前記第２の装置の対応する前記構成情報の値との異同と、前記第１ログデータにおける前記メッセージパターンの前記可変部分に対応する値と前記第２ログデータにおける前記メッセージパターンの前記可変部分に対応する値との異同とが一致する場合、前記可変部分を前記構成情報と対応付けて記録する
処理を実行させることを特徴とする請求項１または２に記載の構成情報管理プログラム。
【請求項４】
コンピュータに、
第４ログデータを取得し、
前記第４ログデータから前記メッセージパターンに合致するメッセージを抽出し、抽出したメッセージの可変部分の値に基いて、該メッセージパターンに対応する構成情報の変更を検知する
処理を実行させることを特徴とする請求項１〜３のうちいずれか１項に記載の構成情報管理プログラム。
【請求項５】
第１の装置についての構成情報と第１ログデータと、第２の装置についての構成情報と第２ログデータと、を取得し、
前記第１ログデータ及び前記第２ログデータに含まれる複数のメッセージを、該メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成し、
前記第１の装置の前記構成情報の値と前記第２の装置の対応する前記構成情報の値との異同と、前記第１ログデータにおける前記メッセージパターンの前記可変部分に対応する値と前記第２ログデータにおける前記メッセージパターンの前記可変部分に対応する値との異同と、が一致する場合、前記メッセージパターンを前記構成情報と対応付けて記録する
ことを特徴とする構成情報管理方法。
【請求項６】
第１の装置についての構成情報と第１ログデータと、第２の装置についての構成情報と第２ログデータと、を取得する取得部と、
前記第１ログデータ及び前記第２ログデータに含まれる複数のメッセージを、該メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成する生成部と、
前記第１の装置の前記構成情報の値と前記第２の装置の対応する前記構成情報の値との異同と、前記第１ログデータにおける前記メッセージパターンの前記可変部分に対応する値と前記第２ログデータにおける前記メッセージパターンの前記可変部分に対応する値との異同と、が一致する場合、前記メッセージパターンを前記構成情報と対応付けて記録する対応付け部と、
を備えることを特徴とする構成情報管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報の管理に関する。
【背景技術】
【０００２】
データセンターなどで複数の装置を管理する構成管理装置では、各装置の構成情報を把握し、ユーザからのリクエストに応じて、構成情報の中の情報を応答することがある。構成情報の更新は、各装置のプログラムから通知される。
【０００３】
図１は、構成情報管理システムの一例である。図１において、クラウドまたはデータセンター等で複数のテナントがそれぞれ複数のサーバを運用している。テナントに含まれるサーバは物理サーバまたは仮想サーバであり、サーバの数は例えば１０００台以上である。これらのサーバの構成管理やログ監視を行うために、各サーバでは例えば構成管理ツール等のソフトウェアが稼動する。そしてこのソフトウェアは、各サーバの構成情報とログ情報を、構成情報の管理とログの監視を行う構成情報管理装置へ送信する。構成情報管理装置は構成情報データベースを有し、サーバから受信した構成情報を構成情報データベースへ格納して管理する。
【０００４】
各サーバでソフトウェアのアップデート等が発生した場合、そのサーバの構成情報も更新されることがある。その場合サーバのソフトウェアは、更新された構成情報を構成情報管理装置へ通知する。また障害が発生した場合には、各サーバは、構成情報管理装置から構成情報を取得して障害対処にあたる。障害対処にあたって取得する構成情報は、常に最新の情報であることが求められる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１０／０２４１３３号
【特許文献２】特開２０１０−１０８２２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、構成情報の更新の通知において、各サーバのプログラムによっては更新が通知されなかったり、まとめて通知するなどして通知が遅かったりする。このように装置の構成情報が変化したにも関わらず通知が来ないと、構成情報管理装置は最新の構成情報を持たないため、ユーザからのリクエストに対して正しい応答をすることができない。
【０００７】
そこで、１つの側面では、本発明は、構成情報の更新の検知を迅速にするための情報を生成する構成情報管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
一態様によるプログラムがコンピュータに実行させる処理は、第１の装置についての構成情報と第１ログデータと、第２の装置についての構成情報と第２ログデータと、を取得し、第１ログデータ及び第２ログデータに含まれる複数のメッセージを、メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成し、第１の装置の構成情報の値と第２の装置の対応する構成情報の値との異同と、第１ログデータにおけるメッセージパターンの可変部分に対応する値と第２ログデータにおけるメッセージパターンの可変部分に対応する値との異同と、が一致する場合、メッセージパターンを構成情報と対応付けて記録する処理を含む。
【発明の効果】
【０００９】
一態様によれば、構成情報の更新の検知を迅速にするための情報を生成する構成情報管理プログラムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】構成情報管理システムの一例である。
【図２】構成情報管理装置の一実施例の構成を図解した機能ブロック図である。
【図３】実施形態に係る構成情報管理装置の構成の一例を示す図である。
【図４Ａ】学習段階で取得部が取得する構成情報とログの組み合わせの一例を示す図である。
【図４Ｂ】学習段階で取得部が取得する構成情報とログの組み合わせの一例を示す図である。
【図５】学習段階の処理の説明のために着目するメッセージを示す図である。
【図６】メッセージ間の類似度の比較を説明する図である。
【図７】類似度を算出した結果をまとめた情報を示す図である。
【図８Ａ】同一グループに含まれるメッセージからパターンを生成する様子を説明する図（その１）である。
【図８Ｂ】同一グループに含まれるメッセージからパターンを生成する様子を説明する図（その２）である。
【図９】図４で示される構成情報とログが入力された場合に生成されるパターンの例である。
【図１０】関連表の例（その１）である。
【図１１】関連表の例（その２）である。
【図１２】関連表の例（その３）である。
【図１３】関連表の例（その４）である。
【図１４】パターン表及び対応表の構成の一例である。
【図１５】パラメータ「version」の検知プログラムの作成を説明する図である。
【図１６】パラメータ「innodb」の検知プログラムの作成を説明する図である。
【図１７】運用ログを検知プログラムに適用する様子を説明する図である。
【図１８】学習段階の処理を図解したフローチャートである。
【図１９】処理対象パラメータの値が異なる場合に、可変部分が一致するパターンを、処理対象パラメータとは対応しないと判定する処理の詳細を図解したフローチャートである。
【図２０】処理対象パラメータの値が一致する場合に、可変部分が異なるパターンを、処理対象パラメータとは対応しないと判定する処理の詳細を図解したフローチャートである。
【図２１】処理対象パラメータの値が異なり、且つパターンの出現が変化する場合、パターンの出現の有無が処理対象パラメータに関連すると判定する処理の詳細を図解したフローチャートである。
【図２２】検知段階の処理を図解したフローチャートである。
【図２３】構成情報管理装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
図２は、構成情報管理装置の一実施例の構成を図解した機能ブロック図である。図２において、構成情報管理装置１０は、取得部１、生成部２、対応付け部３、及び検知部４を含む。
【００１２】
取得部１は、第１の装置についての構成情報と第１ログデータと、第２の装置についての構成情報と第２ログデータと、を取得する。
【００１３】
生成部２は、第１ログデータ及び第２ログデータに含まれる複数のメッセージを、メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成する。
【００１４】
対応付け部３は、第１の装置の構成情報の値と第２の装置の対応する構成情報の値との異同と、第１ログデータにおけるメッセージパターンの可変部分に対応する値と第２ログデータにおけるメッセージパターンの可変部分に対応する値との異同と、が一致する場合、メッセージパターンを構成情報と対応付けて記録する。
【００１５】
また取得部１は、第３の装置についての構成情報と第３ログデータを取得する。
また生成部２は、第１ログデータ、第２ログデータ、及び第３ログデータに含まれる複数のメッセージを、メッセージ間の類似度に基づいて分類して、分類されたメッセージ間で相違する可変部分を含むメッセージパターンを生成する。
【００１６】
また対応付け部３は、第１の装置の構成情報の値と第２の装置の対応する構成情報の値とが異なり、第１の装置の構成情報の値と第３の装置の対応する構成情報の値とが一致する場合に、第１ログデータにおけるメッセージパターンの可変部分に対応する値と第２ログデータにおけるメッセージパターンの可変部分に対応する値とが異なり、且つ、第１ログデータにおけるメッセージパターンの可変部分に対応する値と第３ログデータにおけるメッセージパターンの可変部分に対応する値とが一致する場合、メッセージパターンを、構成情報と対応付けて記録する。
【００１７】
また、対応付け部３は、第１の装置の構成情報の値と第２の装置の対応する構成情報の値との異同と、第１ログデータにおけるメッセージパターンの可変部分に対応する値と第２ログデータにおけるメッセージパターンの可変部分に対応する値との異同とが一致する場合、可変部分を構成情報と対応付けて記録する。
【００１８】
また取得部１は、第４ログデータを取得する。
検知部４は、第４ログデータからメッセージパターンに合致するメッセージを抽出し、抽出したメッセージの可変部分の値に基いて、メッセージパターンに対応する構成情報の変更を検知する。
【００１９】
実施形態の構成情報管理装置は、パラメータの更新を、サーバの運用ログに出力されるメッセージから検知する。運用ログに出力されるメッセージから更新を検知するために、構成情報管理装置は、予めパラメータの値が出力されるログメッセージのパターンを記憶しておく。そして構成情報管理装置は、運用ログに出力されるメッセージの中から、記憶しておいたパターンに合致するメッセージを抽出し、抽出したメッセージからパラメータの値を特定する。
【００２０】
実施形態において、構成情報は複数のパラメータを含み、サーバから出力されるログは複数のメッセージを含む。以下の説明においては、各サーバにおいて構成情報の変更が発生した場合に、ログからの更新の検知を行いたいパラメータを対象パラメータと記す。
【００２１】
実施形態に係る構成情報管理装置が行う処理は、学習段階と検知段階の２つの段階に分けられる。学習段階は、パラメータの値が出力されるログメッセージのパターンを生成し記憶する段階である。検知段階は、学習段階で生成したパターンを用いて、運用ログから更新を検知する段階である。
【００２２】
学習段階では、構成情報管理装置は、サーバの構成情報とログを用いて、パラメータの値が出力されるメッセージのパターンを特定し、特定したメッセージのパターンとパラメータとを対応付けたパターン表を生成する。検知段階では、構成情報管理装置は、学習段階で生成したパターン表を用いて、運用ログからパターンに合致するメッセージを特定してパラメータの値を抽出することにより、構成情報の変更を検知する。
【００２３】
図３は、実施形態に係る構成情報管理装置の構成の一例を示す。図３において、構成情報管理装置は、取得部３１、分類部３２、パターン生成部３３、対応付け部３４、記憶部３５、プログラム生成部３６、及び適用部３７を含む。このうち、学習段階に関連するものは、取得部３１、分類部３２、パターン生成部３３、対応付け部３４、及び記憶部３５であり、構成情報２１とログ２２の組み合わせを入力として、パターン表２４、対応表２５の情報が出力される。検知段階に関連するものは、取得部３１、記憶部３５、プログラム生成部３６、及び適用部３７であり、運用ログ２３、パターン表２４、対応表２５の情報を入力として、構成管理情報２６の情報が出力される。
【００２４】
取得部３１は、取得部１の一例である。分類部３２及びパターン生成部３３は、生成部２の一例である。対応付け部３４は、対応付け部３の一例である。プログラム生成部３６及び適用部３７は、検知部４の一例である。
【００２５】
先ず学習段階に関連する構成について説明する。
取得部３１は、複数のサーバの構成情報２１とログ２２の組み合わせを取得する。ここで取得される構成情報２１には対象パラメータが含まれる。そして取得部３１は、取得した複数のサーバの構成情報２１とログ２２の組み合わせを分類部３２へ出力する。
【００２６】
ここで取得する構成情報２１とログ２２は、必ずしも最新のものでなくともよく、予め構成情報管理装置に格納されているものが使用されてもよい。ただし、構成情報２１の値は、ログ２２が出力された時点における値であるとする。尚、構成情報２１とログ２２に関しては所定のコンポーネント（例えばソフトウェア）に関するものとする。例えば、コンポーネント「mysqld」に関して、構成情報２１が「/etc/mysql/my.cnf」、ログ２２が「/var/log/mysql/error.log」であってもよい。
【００２７】
分類部３２は、ログ２２に出力されたメッセージ間の類似度に基いて、メッセージをタイプ毎にグループに分類する。そして分類部３２は、分類されたグループと、そのグループに含まれるメッセージを、構成情報２１とともにパターン生成部３３へ出力する。
【００２８】
メッセージの分類において、例えば分類部３２は先ず、ログ２２に出力されているメッセージのうち、所定の２つのメッセージを選択し、選択したメッセージ間の類似度を算出する。このような類似度の算出を、分類部３２は全てのログ２２における全ての２つのメッセージの組み合わせで行う。そして分類部３２は、メッセージ間の類似度が所定の閾値以上であるメッセージ同士を同一のグループに含まれるように分類する。
【００２９】
パターン生成部３３は、分類部３２により分類された各グループに含まれるメッセージ同士を比較して、メッセージの共通部分と可変部分を特定し、メッセージのパターンを生成する。そしてパターン生成部３３は、生成したパターンを構成情報２１とともに対応付け部３４へ出力する。ここで、分類部３２により分類されるグループは複数ある場合があり、その場合は、パターンはグループの数だけ生成されてもよい。
【００３０】
同一グループに含まれるメッセージ同士は、類似度が所定の閾値以上と判定されたものであるので、各メッセージ同士は類似するものである。従って、これらのメッセージのうちでは、共通して出現する部分（単語、フレーズ）が多くなるが、異なる部分も存在する。このような同じグループ内のメッセージ間で異なっているメッセージの一部を可変部分と記す。
【００３１】
生成されるパターンは、同一グループに含まれるメッセージの共通部分と、可変部分を置き換えた変数とで構成される。ここで、可変部分を置き換えた変数の名称は、複数のパターンの可変部分を一意に識別できる識別情報とする。
【００３２】
可変部分の特定において、例えばパターン生成部３３は先ず、同一グループに含まれるメッセージのうち、所定の２つのメッセージを選択する。次にパターン生成部３３は、選択したメッセージ間で単語毎に、その単語が一致するか否かを判定する。そして一致しないと判定した単語を、パターン生成部３３は、可変部分と特定する。このような可変部分の特定処理を、パターン生成部３３は、同一グループに含まれる全ての２つのメッセージの組み合わせにおいて行う。
【００３３】
対応付け部３４は、パターンと、そのパターンのメッセージに値が出力されるパラメータの識別情報（以下、単にパラメータと記す）とを対応付けて、記憶部３５のパターン表２４に記録する。パターンとパラメータの対応関係は、パターンに合致するメッセージの可変部分に、対応するパラメータの値が出力される関係となる。
【００３４】
ここで、あるメッセージを含むログ２２を出力したサーバに関するパラメータを、以下の説明では、そのメッセージに対応するパラメータと記す。すなわち、メッセージmに対応するパラメータとは、mを含むログ２２を出力したサーバに関するパラメータである。
【００３５】
対応付けにおいては、入力された構成情報２１のうちの対象パラメータのうち、一つずつ対象パラメータに着目して、以下で説明する、パターンと対象パラメータの対応付け処理を行う。また、パターンと対象パラメータの対応付け処理において、例えば対応付け部３４は、パターン生成部３３から入力された複数のパターンのうち、一つずつパターンに着目して、着目したパターンと対象パラメータを対応付けるか否かの判定を行う。
【００３６】
着目したパターンと対象パラメータを対応付けるか否かの判定において、対応付け部３４は先ず、取得部３１が取得したログ２２に含まれるメッセージのうち、パターンに合致するメッセージに対応するパラメータの値を特定する。これは言い換えると対応付け部３４は、パターンの生成基のグループに含まれる各メッセージに対応する対象パラメータの値を特定しているともいえる。ここで、パターンに合致するメッセージとは、可変部分以外の共通部分がパターンと一致するメッセージを指す。
【００３７】
次に対応付け部３４は、着目したパターンに合致する２つのメッセージのすべての組み合わせにおいて、メッセージの比較を行う。２つのメッセージの比較において対応付け部３４は、比較対象の２つのメッセージの可変部分の異同と、比較対象の２つのメッセージの各々に対応する対象パラメータの値の異同とが一致するか否かを判定する。そして、比較対象の２つのメッセージの可変部分の異同と、比較対象の２つのメッセージの各々に対応する対象パラメータの値の異同とが一致しないと判定した場合、対応付け部３４は、対象パラメータと着目したパターンは対応しないと判定する。
【００３８】
すなわち対応付け部３４は先ず、比較対象の２つのメッセージに対応する対象パラメータの値が異なる場合に、２つのメッセージの可変部分が一致するか否かを判定する。そして、比較対象の２つのメッセージに対応する対象パラメータの値が異なるすべての組み合わせにおいて、２つのメッセージの可変部分が一致すると判定した場合、対応付け部３４は対象パラメータと着目したパターンは対応しないと判定する。
【００３９】
そして対応付け部３４は、比較対象の２つのメッセージに対応する対象パラメータの値が一致する場合に、２つのメッセージの可変部分が異なるか否かを判定する。そして２つのメッセージに対応する対象パラメータの値が一致する何れかの組み合わせにおいて、２つのメッセージの可変部分が異なると判定した場合、対応付け部３４は対象パラメータと着目したパターンは対応しないと判定する。
【００４０】
次に対応付け部３４は、着目したパターンに合致する全てのメッセージに対応するパラメータの値が同じか否かを判定する。着目したパターンに合致する全てのメッセージに対応するパラメータの値が同じであると判定した場合、対応付け部３４は、着目したパターンの出現の有無は対象パラメータに関連があると判定する。
【００４１】
最後に対応付け部３４は、着目したパターンの出現の有無が対象パラメータに関連があると判定された場合、または、着目したパターンは対象パラメータとは対応しないと判定されなかった場合は、着目したパターンと対象パラメータを対応付けると判定する。
【００４２】
そして、着目したパターンと対象パラメータを対応付けると判定すると、着目したパターンと対象パラメータとを対応付けて、記憶部３５のパターン表２４に格納する。また対応付け部３４は、パターンの可変部分の値に対するパラメータの値、または、パターンの出現の有無とパラメータの値との関係を対応表２５に記録する。
【００４３】
このように、パターンと対象パラメータを対応付けるか否かの判定を行って、判定の結果に応じて、パターンと対象パラメータを対応付けてパターン表２４に格納する処理を、対応付け部３４は、パターン生成部３３から入力されたすべてのパターンについて行う。
記憶部３５は、パターン表２４、対応表２５、及び構成管理情報２６を記憶する。
【００４４】
次に、学習段階の処理について、図４〜図１４を参照して具体的に説明する。図４〜図１４を参照しての学習段階の処理の説明においては、対象パラメータは、パラメータが「version」、「bind-address」、「innodb」の３つである例を示す。
【００４５】
図４Ａ及び図４Ｂは、学習段階で取得部３１が取得する構成情報２１とログ２２の組み合わせの一例を示す。図４Ａ及び図４Ｂにおいては、サーバ「svr01」〜「svr06」の６つのサーバの構成情報２１とログ２２の組み合わせが示されている。ここでは説明のために、図４に示すログ２２に含まれるメッセージのうち、図５に示すメッセージに着目して説明する。図５は、学習段階の処理の説明のために着目するメッセージを示す図である。図５に示すように、サーバ「svr01」〜「svr04」の４つのサーバのログ２２に含まれるメッセージ「m1」〜「m8」に着目して、学習段階の処理を説明する。
【００４６】
分類部３２は、構成情報２１とログ２２の組み合わせを取得部３１から入力されると、ログ２２のメッセージの「m1」〜「m8」のうち、所定の２つのメッセージを選択し、選択したメッセージ間の類似度を算出する。以下、メッセージの分類について、図５〜図７を参照して説明する。ただし、図５〜図７を参照して説明するメッセージの分類の方法は一例であり、種々の方法を用いてもよい。
【００４７】
類似度の算出において分類部３２は先ず、選択したメッセージの組み合わせにおいて、単語毎のアラインメントをとる。すなわち分類部３２は、選択したメッセージの単語毎に１対１での対応付けを行う。そして分類部３２は、対応付けた単語同士が一致するか否かを判定する。
【００４８】
図６（Ａ）は、メッセージ「m2」と「m6」の類似度の比較の様子を示している。図６（Ｂ）は、メッセージ「m2」と「m3」の類似度の比較の様子を示している。図６（Ａ）及び図６（Ｂ）に示すように、メッセージの単語毎に対応付けが行われ、一致するか否かの比較が行われる。図６（Ａ）においては、単語順が「2」の単語が異なっている。図６（Ｂ）においては、単語順が「1」〜「5」の単語が異なっている。
【００４９】
各単語が一致するか否かを判定したら分類部３２は、以下の式により類似度を算出する。
類似度＝（一致する単語の数）／（（一致する単語の数）＋（異なる単語の数））
【００５０】
図６（Ａ）においては、一致する単語の数は「5」であり、異なる単語の数は「1」である。よって、「m2」と「m6」の類似度は、5/(5+1)≒0.83となる。図６（Ｂ）においては、一致する単語の数は「2」であり、異なる単語の数は「5」である。よって、「m2」と「m3」の類似度は、2/(2+5)≒0.29となる。
【００５１】
尚、メッセージ間の類似度の算出方法は上記の方法に限定されず、種々の方法が用いられてもよい。
【００５２】
全てのメッセージの組み合わせの類似度を算出すると、分類部３２は、所定の閾値以上であるメッセージ同士が同一グループに含まれるように、メッセージを分類する。
【００５３】
図７は、「m1」〜「m8」の全てのメッセージ間の類似度を算出した結果をまとめた情報である。図７においては、各セルの値は、列項目と行項目のメッセージの組み合わせの類似度を示している。例えば、「m1」の行の「m3」列のセルの値は、「m1」と「m3」の類似度の値を示している。図７において、所定の閾値の値を「0.5」とすると、「m1」に対して、「m3」、「m5」、「m7」の類似度が閾値以上となっている。また、「m2」に対して、「m4」、「m6」、「m8」の類似度が閾値以上となっている。すると分類部３２は類似度が閾値以上のメッセージ同士である、「m1」、「m3」、「m5」、「m7」を同一グループに分類し、また、「m2」、「m4」、「m6」、「m8」を同一グループに分類する。
【００５４】
次に、パターン生成部３３は、分類部３２により分類された各グループに含まれるメッセージ同士を比較して、メッセージの共通部分と可変部分を特定し、メッセージのパターンを生成する。
【００５５】
図８Ａ及び図８Ｂは、同一グループに含まれるメッセージからパターンを生成する様子を説明する図である。図８Ａは、メッセージ「m1」、「m3」、「m5」、「m7」からパターンが生成される様子を示している。図８Ｂは、メッセージ「m2」、「m4」、「m6」、「m8」からパターンが生成される様子を示している。
【００５６】
図８Ａ及び図８Ｂにおいて、各メッセージ間では、共通する単語と、相違する単語が存在している。パターン生成部３３は、ここで相違する単語をパターンの可変部分として、パターンを生成する。
【００５７】
図８Ａにおいてパターン生成部３３は、例えば「m1」と「m3」を選択する。そしてパターン生成部３３は、「m1」と「m3」においては、「127.0.0.1」と「0.0.0.0」とが一致しないと判定し、この部分を可変部分と判定する。同様にパターン生成部３３は、グループに含まれるメッセージのすべての組み合わせを選択して、選択したメッセージ間で一致しない部分を特定し、その部分を可変部分と判定する。そしてパターン生成部３３は、グループの可変部分を所定の変数（図８Ａにおいては「v1」）で置き換え、置き換えた変数と共通部分とを有するパターンを生成する。尚、可変部分は、選択したメッセージの組み合わせによっては、一致する場合もある。例えば、「m1」と「m5」が選択された場合は、可変部分も一致している。
【００５８】
同様にして、図８Ｂにおいてパターン生成部３３は、例えば「m2」と「m6」を選択する。そして、パターン生成部３３は、「5.5.31」と「5.5.29」とが一致しないと判定し、この部分を可変部分と判定する。そしてパターン生成部３３は、可変部分を変数「v1」で置き換え、置き換えた変数と共通部分とを有するパターンを生成する。
【００５９】
図９は、図４で示される構成情報２１とログ２２が入力された場合に生成されるパターンの例を示す。図９に示すように、図４で示される構成情報２１とログ２２が入力された場合は、パターン「t1」〜「t6」が生成される。図９の各パターンにおいては、「v1」、「v2」で示した部分が可変部分である。尚、図９のパターン「t1」と「t3」のように、可変部分が存在しないパターンも生成される。また、「t2」、「t4」、「t5」のように、一つのパターンに複数の可変部分が含まれる場合もある。
【００６０】
次に、対応付け部３４は、パターン生成部３３が生成したパターンと、そのパターンに合致するメッセージに値が出力されるパラメータとを対応付ける。実施形態では、各パラメータに対応するパターンを特定するために関連表を生成して、対応付けを行う。
【００６１】
関連表の生成において先ず対応付け部３４は、構成情報２１とログ２２とから、サーバ毎に、サーバのログ２２に含まれる、パターンに合致するメッセージ（以下、単にパターンと記す場合がある）の可変部分の値と、そのサーバに関する対象パラメータの値とを取得する。そして対応付け部３４は、すべてのサーバを対象として、サーバのログ２２に含まれるパターンの可変部分の値と、そのサーバに関する対象パラメータの値とを対応付けて、パラメータ毎に図１０（Ａ）〜（Ｃ）で示す関連表を生成する。図１０（Ａ）〜（Ｃ）は、それぞれ、パラメータ「version」、「bind-address」、「innodb」に関する関連表の例である。尚、この３つのパラメータは、図４の構成情報２１に含まれているパラメータである。
【００６２】
図１０（Ａ）に示す関連表において、行項目は、パターンと可変部分の識別情報の組み合わせで示される。尚、このパターンと可変部分の値は、図９の値に対応している。また、列項目は、パラメータ「version」の値で示される。
【００６３】
例えば「srv01」について考えると、図４Ａに示すように、「srv01」のパラメータ「version」の値は「5.5.31」である。よって、「srv01」のログ２２に含まれるメッセージのうち、各パターンに合致するメッセージの可変部分の値を、列項目「5.5.31」の列に格納する。「srv01」について、例えば、「t2-v1」、「t2-v2」の可変部分に対応する単語はそれぞれ、「127.0.0.1」、「3306」である。よって、（行項目「t2-v1」、列項目「5.5.31」）で示されるセルには「127.0.0.1」、（行項目「t2-v2」、列項目「5.5.31」）で示されるセルには「3306」が格納される。
【００６４】
また、「srv02」のパラメータ「version」の値は「5.5.31」である。よって、「srv02」のログ２２に含まれるメッセージのうち、パターンに合致するメッセージの可変部分の値を、列項目「5.5.31」の列に格納する。「srv02」について、例えば「t2-v1」、「t2-v2」の可変部分に対応する単語はそれぞれ、「0.0.0.0」、「3306」である。よって、（行項目「t2-v1」、列項目「5.5.31」）で示されるセルには「0.0.0.0」、（行項目「t2-v2」、列項目「5.5.31」）で示されるセルには「3306」が格納される。ここで、（行項目「t2-v1」、列項目「5.5.31」）で示されるセルには、サーバ「srv01」の値「127.0.0.1」に追加して、サーバ「srv02」の値「0.0.0.0」が格納されている。
【００６５】
また、「srv03」のパラメータ「version」の値は「5.5.29」である。よって、「srv03」のログ２２に含まれるメッセージのうち、パターンに合致するメッセージの可変部分の値を、列項目「5.5.29」の列に格納する。「srv03」について、例えば「t4-v1」、「t4-v2」の可変部分に対応する単語は、「5.5.29」、「3306」である。よって、（行項目「t4-v1」、列項目「5.5.29」）で示されるセルには「5.5.29」、（行項目「t4-v2」、列項目「5.5.29」）で示されるセルには「3306」が格納される。
【００６６】
同様にして、サーバ「srv04」〜「srv06」についても、各サーバが出力するログ２２に含まれるメッセージのうち、パターンに合致するメッセージの可変部分の値を、そのサーバのパラメータの値に応じて、対応する列に格納する。
【００６７】
尚、可変部分を持たないパターンの行には、「○」が格納され、行項目で示されるパターンが、どのサーバのログ２２にも現れない場合には、「×」が格納される。例えば、（行項目「t5-v1」、列項目「5.5.29」）、（行項目「t5-v2」、列項目「5.5.29」）で示されるセルには「×」が格納されている。これは、パラメータ「version」の値として「5.5.29」が設定されているサーバ、すなわち、「srv03」、「srv04」には、パターン「t5」が出現していないことを示している。
【００６８】
以上のように、図４に示す構成情報２１とログ２２の組み合わせが入力される例では、対応付け部３４は、パラメータ「version」に関して、図１０（Ａ）に示す関連表を作成する。パラメータ「bind-address」、「innodb」についても、パラメータ「version」と同様にして、対応付け部３４は、図１０（Ｂ）、図１０（Ｃ）に示す関連表を作成する。
【００６９】
次に、対応付け部３４は、作成した関連表を用いて、パラメータ毎に、そのパラメータの値が出力される可変部分を特定する。パラメータの値が出力される可変部分を特定する処理を図１０〜図１３を参照して説明する。
【００７０】
パラメータの値が出力される可変部分の特定において、先ず対応付け部３４は、図１０の関連表を用いて、パラメータの値が異なった場合に、可変部分が一致するか否かを判定する。例えば図１０（Ａ）において、対応付け部３４は、列項目「5.5.31」と「5.5.29」を比較したときに、行項目で示される可変部分の値が異なるか否かを判定する。例えば、行項目「t2-v2」の行においては、（行項目「t2-v2」、列項目「5.5.31」）のセルと（行項目「t2-v2」、列項目「5.5.29」）のセルの値はどちらも「3306」となっている。よって対応付け部３４は、行項目「t2-v2」で示される可変部分は、列項目「5.5.31」と「5.5.29」の間で一致していると判定する。パラメータの値が異なった場合に、すべての組み合わせで可変部分が一致すると判定すると、対応付け部３４は、一致した可変部分はパラメータとは対応しないと判定する。すなわち、図１０（Ａ）の「t2-v2」で示される可変部分はパラメータ「version」とは対応しないと判定する。
【００７１】
行項目「t2-v1」の行においては、（行項目「t2-v1」、列項目「5.5.31」）のセルには「127.0.0.1, 0.0.0.0」、（行項目「t2-v1」、列項目「5.5.29」）のセルには「127.0.0.1, 0.0.0.0」が格納されている。この場合、対応付け部３４は、（行項目「t2-v1」、列項目「5.5.31」）の「127.0.0.1」と（行項目「t2-v1」、列項目「5.5.29」）の「0.0.0.0」の組み合わせにおいて、可変部分が異なっていると判定する。
【００７２】
また、可変部分を持たないパターン（関連表では「○」が格納されている例えば「t1」）についても対応付け部３４は、対象パラメータとは対応しないと判定する。
【００７３】
同様にすべての行項目について判定を行い、対応付け部３４は、図１０（Ａ）の関連表から、対応しないと判定した行項目にその旨の記録を行った図１１（Ａ）の関連表を生成する。パラメータ「version」についてと同様に、対応付け部３４は、パラメータ「bind-address」、「innodb」についても、図１０（Ｂ）、（Ｃ）から図１１（Ｂ）、（Ｃ）を生成する。
【００７４】
次に、対応付け部３４は、図１１（Ａ）〜（Ｃ）の関連表を用いて、パラメータの値が同じである場合に可変部分が異なるか否かを判定する。すなわち図１１（Ａ）〜（Ｃ）において、対応付け部３４は、全てのセルを参照し、一つのセルに複数の異なる値が格納されているか否かを判定する。一つのセルに異なる値が格納されていると判定した場合、対応付け部３４は判定したセルの行項目で示される可変部分は、対象パラメータとは対応しないと判定し、関連表に記録する。
【００７５】
例えば、図１１（Ａ）において、（行項目「t2-v1」、列項目「5.5.31」）で示されるセルには、「127.0.0.1」と「0.0.0.0」の値が格納されている。よって、対応付け部３４は、一つのセルに異なる値が格納されていると判定し、行項目「t2-v1」で示される可変部分は、対象パラメータとは対応しないと判定する。
【００７６】
同様にすべてのセルについて判定を行い、対応付け部３４は、図１１（Ａ）〜（Ｃ）の関連表から、対応しないと判定した行項目にその旨の記録を行った図１２（Ａ）〜（Ｃ）の関連表を生成する。
【００７７】
次に対応付け部３４は、図１２（Ａ）〜（Ｃ）の関連表を用いて、パラメータの値が異なる場合に、パターンに合致するメッセージの出現が変化するか否かを判定する。すなわち対応付け部３４は、同一の行において、異なる列を比較したときに、一方のセルに「×」のみが格納され、他方のセルに「×」以外の値が格納されているか否かを判定する。
【００７８】
例えば、図１２（Ｃ）において、（行項目「t6-v1」、列項目「TRUE」）のセルには、「×」以外の値（「29」、「30」、「26」、「75」）が格納されており（「×」が格納されておらず）、（行項目「t6-v1」、列項目「FALSE」）のセルには、「×」が格納されている。よって、対応付け部３４は、パラメータ「innodb」に関して、パラメータの値が異なる場合に、パターン「t6」に合致するメッセージの出現が変化すると判定する。そして、対応付け部３４は判定したセルの行項目で示されるパターンの出現の有無は、対象パラメータに関連すると判定し、図１２（Ａ）〜（Ｃ）の関連表から、関連すると判定した行項目にその旨の記録を行った図１３（Ａ）〜（Ｃ）の関連表を生成する。図１３（Ｃ）では、図１２（Ｃ）と比較して、「t6-v1」が対象パラメータとは対応しないことを示す記録（「t6-v1」行全体の×）が消えている。これはすなわち、パラメータの値が同じである場合に値が異なることがある可変部分であっても、パラメータの値が異なる場合にメッセージの出現が変化する可変部分は、そのパラメータと対応しないとは判定されないということを意味する。
【００７９】
図１０〜図１３を参照して説明したようにして、対応付け部３４は、パラメータ毎に、そのパラメータの値が出力される可変部分を特定する。すなわち、対応付け部３４は、関連表において、対象パラメータと対応しないと判定されなかった行項目で示される可変部分を対象パラメータの値が出力される可変部分であると特定する。
【００８０】
図１３（Ａ）〜（Ｃ）に示されるように、パラメータ「version」に関しては「t4-v1」、パラメータ「bind-address」に関しては「t2-v1」、パラメータ「innodb」に関しては「t6」が、各々のパラメータに対応するパターンまたは可変部分である。
【００８１】
次に対応付け部３４は、各パラメータとそのパラメータの値が出力される可変部分とを対応付けて、パターン表２４に格納する。図１４は、パターン表２４の一例を示す。パターン表２４は、ＩＤ５１、パターン５２、可変部分の位置５３、パラメータに対応する位置５４、対応表ＩＤ５５、及びパラメータ５６のデータ項目を含む。ＩＤ５１はパターンとパラメータとの対応付けを管理するための管理番号である。尚、ＩＤ５１は、パターン表２４に含まれなくてもよい。パターン５２は、パターン生成部３３により生成されたパターンである。可変部分の位置５３は、パターン５２における可変部分の位置を、パターン５２の文字列に含まれる単語の先頭からの位置で示している。パラメータに対応する位置５４は、パターン５２に含まれる可変部分のうち、パラメータの値が出力される可変部分を示している。対応表ＩＤ５５は、可変部分の値に対するパラメータの値、または、パターンの出現の有無とパラメータの値との関係を示す対応表２５の識別情報である。対応表２５については後ほど説明する。パラメータ５６は、パターン５２と対応するパラメータである。尚、パターン表２４の各エントリに格納される値は互いに対応付けられるものとする。
【００８２】
図１３（Ａ）で示されるように、パラメータ「version」に関しては、「t4-v1」で示される可変部分に値が出力されると特定される。この場合、対応付け部３４は、ＩＤ５１が「1」のエントリを生成し、そのエントリにおいて、パターン５２に「t4」で示されるパターンを格納し、パラメータ５６に「version」を格納する。次に対応付け部３４は、可変部分の位置５３に、「t4」の可変部分である、「t4-v1」と「t4-v2」の位置をパターンの文字列の先頭からの単語の位置で示した値を格納する。図１４の例では、パターンの文字列の先頭からの単語の位置は、パターンの先頭の単語を「0」とし、以降昇順に番号を振った値で示される。次に対応付け部３４は、パラメータに対応する位置５４に、パターン「version」の値が出力される可変部分であると特定された「t4-v1」の位置を格納する。パラメータ「version」とパターンの出現の有無は関係ないので、対応付け部３４は、対応表ＩＤ５５に「−」を格納する。
【００８３】
パラメータ「innodb」に関しては、図１３（Ｃ）で示されるように、「t6」で示されるパターンの出現の有無がパラメータ「innodb」と関連すると判定される。すると対応付け部３４は、ＩＤ５１が「3」のエントリを生成し、そのエントリにおいて、パターン５２に「t6」で示されるパターンを格納し、パラメータ５６に「innodb」を格納する。次に対応付け部３４は、可変部分の位置５３に、「t6」の可変部分である、「t6-v1」の位置をパターンの文字列の先頭からの単語の位置で示した値を格納する。次に対応付け部３４は、対応表２５を生成し、生成した対応表２５に、記憶部３５に記憶される複数の対応表２５のうちで、生成した対応表２５を一意に識別するための識別情報である対応表ＩＤを振る。
【００８４】
図１４（Ｂ）は、対応表２５の一例を示す。図１４（Ｂ）の対応表２５には、対応表ＩＤ「5」が振られている。図１４（Ｂ）の対応表２５は、メッセージの出現の有無とパラメータの値とが対応付けて格納される。尚、対応表２５の各エントリに格納される値は互いに対応付けられるものとする。対応付け部３４は、図１３（Ｃ）で示されるように、パターンに合致するメッセージが出現する場合には、パラメータ「innodb」の値が「TRUE」であることを対応付けて、対応表２５に格納する。また対応付け部３４は、パターンに合致するメッセージが出現しない場合には、パラメータの値が「FALSE」であることを対応付けて、対応表２５に格納する。図１４（Ｂ）では、メッセージの「○」はメッセージが出現することを示し、メッセージの「×」はメッセージが出現しないことを示す。
【００８５】
尚、図１４（Ｂ）の対応表２５は、メッセージの出現の有無とパラメータの値とが対応付けて格納される例を示したが、可変部分の値と、パラメータの値とが対応付けて格納されてもよい。
【００８６】
対応表２５を生成すると、対応付け部３４は、対応表ＩＤ５５に、生成した対応表２５の対応表ＩＤを格納する。尚、メッセージの出現の有無とパラメータの値とが対応する場合には、対応付け部３４はパラメータに対応する位置５４に「−」を格納する。以上のようにして、対応付け部３４は、パターン表２４と対応表２５を生成する。そして、対応付け部３４は、生成したパターン表２４と対応表２５を記憶部３５に格納する。
【００８７】
次に、検知段階に関連する構成について説明する。図３において、検知段階に関連するものは、取得部３１、記憶部３５、プログラム生成部３６、及び適用部３７であり、運用ログ２３、パターン表２４及び対応表２５の情報を入力として、構成管理情報２６の情報が出力される。
【００８８】
取得部３１は、運用ログ２３を取得して、適用部３７へ出力する。
プログラム生成部３６は、パターン表２４及び対応表２５を用いて、運用ログ２３からパターンに合致するメッセージを抽出してパラメータの値の変更を検知する検知プログラムを生成する。そしてプログラム生成部３６は、生成した検知プログラムを適用部３７へ出力する。
【００８９】
適用部３７は、運用ログ２３を検知プログラムに適用し、パラメータの値の変更を検知する。パラメータの変更を検知すると適用部３７は、パラメータの変更後の内容を構成管理情報２６に反映する。
構成管理情報２６には、各サーバの最新の構成情報の値が格納されて管理される。
【００９０】
次に、検知段階の処理について、図１５〜図１７を参照して具体的に説明する。ここでは、図１４（Ａ）のパターン表２４、及び図１４（Ｂ）の対応表２５を用いて、パラメータ「version」とパラメータ「innodb」の変更を検知する処理を説明する。
【００９１】
プログラム生成部３６は、記憶部３５に記憶されたパターン表２４及び対応表２５を取得する。ここでは、図１４（Ａ）のパターン表２４及び図１４（Ｂ）の対応表２５を取得する。そしてプログラム生成部３６は、パラメータ「version」とパラメータ「innodb」の変更を検知する検知プログラムを生成する。図１５は、パラメータ「version」の検知プログラムの作成を説明する図である。図１６は、パラメータ「innodb」の検知プログラムの作成を説明する図である。
【００９２】
先ず、図１５を参照してパラメータ「version」の変更を検知するプログラムの生成について説明する。プログラム生成部３６は、図１４（Ａ）のパターン表２４のうち、パラメータ５６が「version」である行を特定して、特定した行を読み込む。図１５（Ａ）は、プログラム生成部３６が読み込んだパラメータ５６が「version」の行を示している。そしてプログラム生成部３６は、読み込んだ行の情報を用いて、図１５（Ｂ）に示す検知プログラムを生成する。図１５（Ｂ）は、パラメータ「version」の検知プログラムの一例である。
【００９３】
図１５（Ｂ）の検知プログラムは、例えばスクリプト言語（ここではperl）を用いて作成されている。尚、図１５（Ｂ）、図１６（Ｃ）の「#」以降の数字は行番号を表すものであり、実際の処理とは関係ない。検知プログラムでは、先ず１行目において、運用ログ２３からメッセージを読み込み、読み込んだメッセージがパターン５２の文字列に合致するか否かを判定する処理が行われる。尚、１行目において「$str」には、運用ログ２３から読み込んだメッセージが格納されるものとする。そして、読み込んだメッセージがパターンの文字列に合致すると判定した場合、合致すると判定したメッセージを抽出する処理が行われる。次に、２行目において、抽出したメッセージを単語（空白で区切られた文字列の単位）に分解し、可変部分の位置５３で示される位置の単語を抽出する処理が行われる。ここで抽出した単語が、運用ログ２３にメッセージが出力された時点のパラメータの値である。そして、３行目において、抽出した単語の値を構成管理情報２６のパラメータ「version」の値として反映する処理が行われる。
【００９４】
尚、構成管理情報２６に反映する処理においては、抽出した単語の値と、構成管理情報２６に既に格納されていたパラメータの値との比較が行われ、比較の結果が異なっていれば、パラメータの値が更新されたと判定される。そして、パラメータの値が更新されたと判定された場合に、抽出した値が、構成管理情報２６のパラメータ「version」の値に反映される。
【００９５】
次に、図１６を参照してパラメータ「innodb」の変更を検知するプログラムの生成について説明する。先ずプログラム生成部３６は、図１４（Ａ）のパターン表２４のうち、パラメータ５６の値が「innodb」である行を特定して、特定した行を読み込む。図１６（Ａ）は、プログラム生成部３６が読み込んだパラメータ５６の値が「innodb」の行を示している。そしてプログラム生成部３６は、読み込んだ行の対応表ＩＤ５５に値が格納されているか否かを判定する。対応表ＩＤ５５に値が格納されていると判定した場合、プログラム生成部３６は、対応表ＩＤ５５で識別される図１６（Ｂ）の対応表２５を読み込む。そしてプログラム生成部３６は、読み込んだ行と対応表２５の情報を用いて、図１６（Ｃ）に示す検知プログラムを生成する。ここで、パラメータ「innodb」の値は、図１６（Ｂ）に示されるように、メッセージの有無に関連している。
【００９６】
図１６（Ｃ）の検知プログラムでは、先ず１行目において、運用ログ２３の読み込み前に前処理として、パターン５２に合致するメッセージの出現の有無の判定に用いる判定フラグの値を「0」で初期化する処理が行われる。そして、３行目において、運用ログ２３からメッセージを読み込み、読み込んだメッセージがパターン５２の文字列に合致するか否かを判定する処理が行われる。次に読み込んだメッセージがパターンの文字列に合致すると判定した場合、４行目において、図１６（Ｂ）に示される、メッセージが出現する場合に対応するパラメータの値（「TRUE」）を、現在のパラメータの値であると判定する処理が行われる。ここで現在のパラメータの値とは正確には、運用ログ２３にメッセージが出力された時点のパラメータの値である。そして、メッセージが出現した場合に対応するパラメータの値（「TRUE」）を構成管理情報２６に反映する処理が行われる。その後、５行目において、判定フラグの値を「1」に設定する処理が行われる。すべのログ２２の読み込と、読み込んだメッセージがパターンの文字列に合致するか否かを判定する処理が終了すると、８行目において後処理として、判定フラグの値が「0」か否かを判定する処理が行われる。そして判定フラグの値が「0」であると判定すると、９行目において、図１６（Ｂ）に示される、メッセージが出現しない場合に対応するパラメータの値（「FALSE」）を、現在のパラメータの値であると判定する処理が行われる。そして、メッセージが出現しない場合に対応するパラメータの値（「FALSE」）を、構成管理情報２６に反映する処理が行われる。
【００９７】
以上のようにしてプログラム生成部３６は、パラメータ「version」とパラメータ「innodb」の変更を検知する検知プログラムを生成する。同様に、プログラム生成部３６は、パラメータ「bind-address」の変更を検知する検知プログラムを生成する。次に、適用部３７は、運用ログ２３を検知プログラムに適用する。すなわち、適用部３７は、運用ログ２３を入力として検知プログラムを実行する。
【００９８】
図１７は、運用ログを検知プログラムに適用する様子を説明する図である。図１７（Ａ）は、サーバ「srv04」の運用ログ２３である「mysqld」ログ２２の一例を示す。運用ログ２３の適用前のサーバ「srv04」の「mysqld」の構成管理情報２６が１７（Ｂ）であるとすると、図１７（Ａ）で示される運用ログ２３を、図１５（Ｂ）と図１６（Ｃ）の検知プログラムに適用した場合、図１７（Ｃ）のように構成管理情報２６が更新される。
【００９９】
図１８は、学習段階の処理を図解したフローチャートである。図１８において、先ず取得部３１は、構成情報２１とログ２２とを取得する（Ｓ１０１）。
【０１００】
次に分類部３２は、ログ２２に出力されたメッセージ間の類似度に基いて、メッセージを複数のグループに分類する（Ｓ１０２）。そして、パターン生成部３３は、分類部３２により分類された各グループに含まれるメッセージ同士を比較して、メッセージの共通部分と可変部分を特定し、メッセージのパターンを生成する（Ｓ１０３）。
【０１０１】
次に、対応付け部３４は、対象パラメータのうちの一つを処理対象パラメータとして選択する（Ｓ１０４）。
【０１０２】
次に、対応付け部３４は、処理対象パラメータの値が異なる場合に、可変部分が一致するパターンを、処理対象パラメータとは対応しないと判定する（Ｓ１０５）。
【０１０３】
次に、対応付け部３４は、処理対象パラメータの値が一致する場合に、可変部分が異なるパターンを、処理対象パラメータとは対応しないと判定する（Ｓ１０６）。
【０１０４】
次に、対応付け部３４は、処理対象パラメータの値が異なる場合に、パターンの出現が変化する場合、パターンの出現の有無が処理対象パラメータに関連すると判定する（Ｓ１０７）
次に、対応付け部３４は、Ｓ１０３で生成したパターンのうち、Ｓ１０５、Ｓ１０６において処理対象パラメータと対応しないと判定しなかったパターンとそのパターンの可変部分を、処理対象パラメータと対応付けて、パターン表２４に格納する（Ｓ１０８）。
【０１０５】
次に、対応付け部３４は、Ｓ１０３で生成したパターンのうち、パターンの出現の有無が処理対象パラメータに関連すると判定したパターンを、処理対象パラメータと対応付けて、パターン表２４に格納する（Ｓ１０９）。ここで対応付けたパターンを含むログ２２を出力したサーバの処理対象パラメータの値を、パターンが出現した場合の値として対応表２５に記録し、また、それ以外のサーバの処理対象パラメータの値を、パターンが出現しない場合の値として、対応表２５に記録する。
【０１０６】
そして、対応付け部３４は、Ｓ１０４において、対象パラメータのすべてのパラメータを選択したか否かを判定する（Ｓ１１０）。対象パラメータのすべてのパラメータを選択していないと判定すると（Ｓ１１０でＮｏ）、対応付け部３４は、処理をＳ１０４に遷移させ、未選択のパラメータを選択する。Ｓ１０４で対象パラメータのすべてのパラメータを選択されたと判定されると（Ｓ１１０でＹｅｓ）、処理は終了する。
【０１０７】
図１９は、図１８のＳ１０５における、処理対象パラメータの値が異なる場合に、可変部分が一致するパターンを、処理対象パラメータとは対応しないと判定する処理の詳細を図解したフローチャートである。
【０１０８】
図１９において対応付け部３４は先ず、図１８のＳ１０３で生成したパターンのうちの一つを処理対象パターンとして選択する（Ｓ２０１）。
【０１０９】
次に、対応付け部３４は、処理対象パラメータの値が異なる２つのサーバの組み合わせにおいて、２つのサーバの各々のログ２２から、処理対象パターンに合致するメッセージを抽出する（Ｓ２０２）。
【０１１０】
そして対応付け部３４は、抽出した２つのメッセージの間で、処理対象パターンの可変部分に対応する値が一致するか否かを判定する（Ｓ２０３）。
【０１１１】
メッセージ間で、処理対象パターンの可変部分に対応する値が一致しないと判定すると（Ｓ２０３でＮｏ）、対応付け部３４は、以下の処理を行う。すなわち対応付け部３４は、Ｓ２０２で、処理対象パラメータの値が異なる２つのサーバの全ての組み合わせにおいてメッセージを抽出する処理を行ったか否かを判定する（Ｓ２０４）。処理対象パラメータの値が異なる２つのサーバのいずれかの組み合わせにおいて、メッセージを抽出する処理を行っていないと判定すると（Ｓ２０４でＮｏ）、対応付け部３４は、処理をＳ２０２に遷移させ、未処理の組み合わせでＳ２０２の処理を行う。
【０１１２】
一方、処理対象パラメータの値が異なる２つのサーバの全ての組み合わせにおいてメッセージを抽出する処理を、Ｓ２０２で行ったと判定すると（Ｓ２０４でＹｅｓ）、対応付け部３４は、処理をＳ２０６に遷移させる。
【０１１３】
一方、Ｓ２０３において、メッセージ間で処理対象パターンの可変部分に対応する値が一致すると判定すると（Ｓ２０３でＹｅｓ）、対応付け部３４は、処理対象パターンは、処理対象パラメータと対応しないと判定する（Ｓ２０５）。
【０１１４】
次に対応付け部３４は、Ｓ２０１において、Ｓ１０３で生成したすべてのパターンを処理対象パターンとして選択したか否かを判定する（Ｓ２０６）。Ｓ１０３で生成した何れかのパターンを処理対象パターンとして選択していないと判定すると（Ｓ２０６でＮｏ）、対応付け部３４は、処理をＳ２０１に遷移させ、未選択のパターンを選択する。Ｓ１０３で生成したすべてのパターンが処理対象パターンとして選択されたと判定されると（Ｓ２０６でＹｅｓ）、処理は終了する。
【０１１５】
尚、Ｓ２０２において、いずれか一方または両方のサーバからメッセージが抽出できなかった場合も、Ｓ２０３において対応付け部３４は、処理対象パターンの可変部分に対応する値が一致しないと判定する。
【０１１６】
図２０は、図１８のＳ１０６における、処理対象パラメータの値が一致する場合に、可変部分が異なるパターンを、処理対象パラメータとは対応しないと判定する処理の詳細を図解したフローチャートである。
【０１１７】
図２０において対応付け部３４は先ず、Ｓ１０３で生成したパターンのうちの一つを処理対象パターンとして選択する（Ｓ３０１）。
【０１１８】
次に対応付け部３４は、処理対象パラメータの値が同じである全てのサーバのログ２２から、処理対象パターンに合致するメッセージを抽出する（Ｓ３０２）。
【０１１９】
そして対応付け部３４は、抽出した任意のメッセージの間で、処理対象パターンの可変部分に対応する値が異なるか否かを判定する（Ｓ３０３）。メッセージ間で、処理対象パターンの可変部分に対応する値が一致すると判定すると（Ｓ３０３でＮｏ）、対応付け部３４は、処理をＳ３０５に遷移させる。
【０１２０】
一方Ｓ３０３において、メッセージ間で、処理対象パターンの可変部分に対応する値が異なると判定すると（Ｓ３０３でＹｅｓ）、対応付け部３４は、処理対象パターンは処理対象パラメータと対応しないと判定する（Ｓ３０４）。
【０１２１】
次に対応付け部３４は、Ｓ３０１において、Ｓ１０３で生成したすべてのパターンを処理対象パターンとして選択したか否かを判定する（Ｓ３０５）。Ｓ１０３で生成した何れかのパターンを処理対象パターンとして選択していないと判定すると（Ｓ３０５でＮｏ）、対応付け部３４は、処理をＳ３０１に遷移させ、未選択のパターンを選択する。Ｓ１０３で生成したすべてのパターンが処理対象パターンとして選択されたと判定されると（Ｓ３０５でＹｅｓ）、処理は終了する。
【０１２２】
図２１は、図１８のＳ１０７における、処理対象パラメータの値が異なり、且つパターンの出現が変化する場合、パターンの出現の有無が処理対象パラメータに関連すると判定する処理の詳細を図解したフローチャートである。
【０１２３】
図２１において対応付け部３４は先ず、Ｓ１０３で生成したパターンのうちの一つを処理対象パターンとして選択する（Ｓ４０１）。
【０１２４】
次に、対応付け部３４は、処理対象パターンに合致するメッセージを含むログ２２を出力した全てのサーバにおいて、処理対象パラメータの値が一致するか否かを判定する（Ｓ４０２）。処理対象パターンを含むログ２２を出力したいずれかのサーバ間で、処理対象パラメータの値が一致しないと判定した場合（Ｓ４０２でＮｏ）、対応付け部３４は、処理をＳ４０４へ遷移させる。
【０１２５】
一方、処理対象パターンを含むログ２２を出力した全てのサーバにおいて、処理対象パラメータの値が一致すると判定した場合（Ｓ４０２でＹｅｓ）、対応付け部３４は、処理対象パターンの出現の有無は処理対象パラメータに関連すると判定する（Ｓ４０３）。
【０１２６】
次に、対応付け部３４は、Ｓ４０１において、Ｓ１０３で生成したすべてのパターンを処理対象パターンとして選択したか否かを判定する（Ｓ４０４）。Ｓ１０３で生成したすべてのパターンを処理対象パターンとして選択していないと判定すると（Ｓ４０４でＮｏ）、対応付け部３４は、処理をＳ４０１に遷移させ、未選択のパターンを選択する。Ｓ１０３で生成したすべてのパターンが処理対象パターンとして選択されたと判定されると（Ｓ４０４でＹｅｓ）、処理は終了する。
【０１２７】
図２２は、検知段階の処理を図解したフローチャートである。
図２２においてプログラム生成部３６は先ず、記憶部３５に記憶されたパターン表２４及び対応表２５を取得して、パラメータの更新を検知する検知プログラムを生成する（Ｓ５０１）。次に、適用部３７は、検知プログラムを実行することにより、前処理として、パターンに合致するメッセージの出現の有無の判定に用いる判定フラグの値を例えば「0」で初期化する（Ｓ５０２）。
【０１２８】
次に適用部３７は、運用ログ２３のメッセージのうちの１つを読み込む（Ｓ５０３）。そして適用部３７は、読み込んだメッセージが、パターンに合致するか否かを判定する（Ｓ５０４）。読み込んだメッセージがパターンに合致しないと判定した場合（Ｓ５０４でＹｅｓ）、処理はＳ５０６へ遷移する。
【０１２９】
一方Ｓ５０４において、読み込んだメッセージがパターンに合致すると判定した場合（Ｓ５０４でＮｏ）、適用部３７は、パターンに合致すると判定したメッセージに基づいて、構成管理情報２６のパラメータの値を更新する（Ｓ５０５）。さらに適用部３７は、Ｓ５０２で初期化した判定フラグの値を例えば「1」に更新する。構成管理情報２６のパラメータの値の更新においては、適用部３７は、更新後のパラメータの値と、構成管理情報２６に格納されていた更新前のパラメータの値との比較を行う。そして、比較の結果が異なる場合、適用部３７は、パラメータの値が更新されたと判定し、その結果、パラメータの値の更新を検知する。
【０１３０】
次に、適用部３７は、ログ２２に含まれるすべてのメッセージをＳ５０３において読み込み済みか否かを判定する（Ｓ５０６）。ログ２２に含まれる何れかのメッセージをＳ５０３において読み込み済みでないと判定した場合（Ｓ５０６でＮｏ）、適用部３７は、処理をＳ５０３へ遷移させる。
【０１３１】
一方、運用ログ２３に含まれるすべてのメッセージをＳ５０３において読み込み済みであると判定した場合（Ｓ５０６でＹｅｓ）、適用部３７は、後処理としてパターンに合致するメッセージの出現の有無に対応するパラメータの更新処理を行う（Ｓ５０７）。具体的には、適用部３７は、パラメータがメッセージの出現の有無に対応する場合、判定フラグの値が「0」か否かを判定する。判定フラグの値が「0」であると判定すると、適用部３７は、対応表２５に基づいて、構成管理情報２６のパラメータの値を更新する。そして処理は終了する。
【０１３２】
次に、構成情報管理装置２０のハードウェア構成について説明する。図２３は、構成情報管理装置２０のハードウェア構成の一例を示す。
【０１３３】
図２３において、構成情報管理装置２０は、ＣＰＵ（Central Processing Unit）５０１、メモリ５０２、記憶装置５０３、読取装置５０４、及び通信インターフェース５０５を含む。ＣＰＵ５０１、メモリ５０２、記憶装置５０３、読取装置５０４、及び通信インターフェース５０５はバスを介して接続される。
【０１３４】
構成情報管理装置２０のＣＰＵ５０１は、メモリ５０２を利用して上述のフローチャートの手順を記述したプログラムを実行することにより、分類部３２、パターン生成部３３、対応付け部３４、プログラム生成部３６、及び適用部３７の一部または全部の機能を提供する。
【０１３５】
メモリ５０２は、例えば半導体メモリであり、ＲＡＭ（Random Access Memory）領域およびＲＯＭ（Read Only Memory）領域を含んで構成される。記憶装置５０３は、例えばハードディスクである。なお、記憶装置５０３は、フラッシュメモリ等の半導体メモリであってもよい。また、記憶装置５０３は、外部記録装置であってもよい。記憶装置５０３は記憶部３５の一部または全部の機能を提供する。
【０１３６】
読取装置５０４は、ＣＰＵ５０１の指示に従って着脱可能記憶媒体５５０にアクセスする。着脱可能記憶媒体５５０は、たとえば、半導体デバイス（ＵＳＢメモリ等）、磁気的作用により情報が入出力される媒体（磁気ディスク等）、光学的作用により情報が入出力される媒体（ＣＤ−ＲＯＭ、ＤＶＤ等）などにより実現される。尚、読取装置５０４は構成情報管理装置２０に含まれなくてもよい。
【０１３７】
通信インターフェース５０５は、ＣＰＵ５０１の指示に従ってネットワークを介してデータを送受信する。通信インターフェース５０５は取得部３１の一部または全部の機能を提供する。
【０１３８】
実施形態のプログラムは、例えば、下記の形態で構成情報管理装置２０に提供される。
（１）記憶装置５０３に予めインストールされている。
（２）着脱可能記憶媒体５５０により提供される。
（３）プログラムサーバ（図示せず）から通信インターフェース５０５を介して提供される。
【０１３９】
さらに、実施形態の構成情報管理装置２０の一部は、ハードウェアで実現してもよい。或いは、実施形態の構成情報管理装置２０は、ソフトウェアおよびハードウェアの組み合わせで実現してもよい。
【０１４０】
構成情報を取得するためには、構成情報の書かれたファイルの中の記述パターンより、構成情報のパラメータの位置を特定することも考えられる。しかしながら、このようなパラメータの位置を特定するスクリプトは、ソフトウェアやＯＳ(Operating System)に応じて作成する必要があり煩雑である。それに対して、実施形態においては、構成情報管理装置は、複数のサーバのログと構成情報の組み合わせから、パラメータと、そのパラメータが出力されるメッセージのパターンとを対応付けて記録する。これにより、構成情報の更新を検知するプログラムの生成を容易にする。また実施形態においては、構成情報管理装置は、運用ログに出力されるメッセージの中から、記憶しておいたパターンに合致するメッセージを抽出し、抽出したメッセージからパラメータの値を特定する。このため、実施形態では、稼働中のシステムのログから、構成情報管理装置に負荷をかけずに自動的に構成情報の変更の検知が可能となる。
【符号の説明】
【０１４１】
１      取得部
２      生成部
３      対応付け部
４      検知部
１０    構成情報管理装置
２０    構成情報管理装置
２１    構成情報
２２    ログ
２３    運用ログ
２４    パターン表
２５    対応表
２６    構成管理情報
３１    取得部
３２    分類部
３３    パターン生成部
３４    対応付け部
３５    記憶部
３６    プログラム生成部
３７    適用部
５１    ＩＤ
５２    パターン
５３    可変部分の位置
５４    パラメータに対応する位置
５５    対応表ＩＤ
５６    パラメータ
５０１  ＣＰＵ
５０２  メモリ
５０３  記憶装置
５０４  読取装置
５０５  通信インターフェース
５５０  着脱可能記憶媒体
【図１】
2015170207.tif 000003
【図２】
2015170207.tif 000004
【図３】
2015170207.tif 000005
【図４Ａ】
2015170207.tif 000006
【図４Ｂ】
2015170207.tif 000007
【図５】
2015170207.tif 000008
【図６】
2015170207.tif 000009
【図７】
2015170207.tif 000010
【図８Ａ】
2015170207.tif 000011
【図８Ｂ】
2015170207.tif 000012
【図９】
2015170207.tif 000013
【図１０】
2015170207.tif 000014
【図１１】
2015170207.tif 000015
【図１２】
2015170207.tif 000016
【図１３】
2015170207.tif 000017
【図１４】
2015170207.tif 000018
【図１５】
2015170207.tif 000019
【図１６】
2015170207.tif 000020
【図１７】
2015170207.tif 000021
【図１８】
2015170207.tif 000022
【図１９】
2015170207.tif 000023
【図２０】
2015170207.tif 000024
【図２１】
2015170207.tif 000025
【図２２】
2015170207.tif 000026
【図２３】
2015170207.tif 000027