以下に、本願の開示する監視システム、装置、監視方法及び監視プログラムの実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
[実施例2に係る監視システムの構成]
図2は、実施例2に係る監視システムの構成を示す機能ブロック図である。図2に示すように、監視システム1Aは、監視装置2A及び複数の監視対象装置3Aを有する。監視装置2Aは、複数の監視対象装置3Aと接続し、これらの監視対象装置3Aによって送信されるメッセージを管理する。また、監視装置2Aは、監視クライアント4と接続する。監視クライアント4は、GUI(Graphical User Interface)を用いて監視対象装置3Aのメッセージを例えばモニタに表示して、監視対象装置3Aの異常を監視する。監視対象装置のメッセージとして、例えば監視対象装置3Aの異常を示すメッセージがあり、監視対象装置3Aの異常として、例えば監視対象装置3Aの誤動作による異常や通信異常等が考えられる。
さらに、監視装置2Aは、制御部20、メッセージログDB21、保持データ記憶部22及び蓄積データDB23を有する。監視装置2Aと接続する監視対象装置3Aは、制御部40、メッセージ記憶部41及び蓄積データDB43を有する。
監視対象装置3Aの制御部40は、新たなメッセージを監視装置2Aに管理させるべく、監視装置2Aへ当該メッセージを送信する。さらに制御部40は、新規メッセージ取得部51、蓄積データ管理部52及び通信制御部53を有する。なお、制御部40は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路である。
新規メッセージ取得部51は、新たなメッセージを取得する。具体的には、新規メッセージ取得部51は、メッセージ記憶部41に保持される新たなメッセージを監視し、メッセージ記憶部41に保持された新規メッセージを取得する。ここで、メッセージ記憶部41は、自装置の異常に関するシステムログやアプリケーションログを含むメッセージを記憶する。なお、メッセージ記憶部41は、例えば、RAM(Random Access Memory)、フラッシュメモリ(flash memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置である。
蓄積データ管理部52は、蓄積データを管理し、管理する蓄積データを用いて、新規メッセージから監視装置2Aへ送信する送信データを作成する。さらに、蓄積データ管理部52は、メッセージ一致判定部52A及び蓄積データ差分更新部52Bを有する。メッセージ一致判定部52Aは、新規メッセージ取得部51によって取得された新規メッセージが蓄積データDB43に蓄積されたメッセージを含んでいるか否かを判定する。ここで、蓄積データDB43について、図3を参照しながら説明する。
図3は、蓄積データDB43のデータ構造の一例を示す図である。図3に示すように、蓄積データDB43は、蓄積データID43a毎に発生元ホスト名43b及び定型メッセージ43cを対応付けて記憶する。この蓄積データID43a毎のレコードに含まれるデータを、それぞれ「蓄積データ」とする。
蓄積データID43aは、定型メッセージ43c毎に一意に割り振られた識別番号である。発生元ホスト名43bは、メッセージの発生元である監視対象装置3Aの名称である。定型メッセージ43cは、メッセージを可変部分と不変部分とに区別した文字列である。可変部分とは、例えば数字、括弧内の文字列、ブランク、タブ、日付、「:」または「=」後の文字列等の可変となる部分であり、パラメータとして表される。なお、可変部分となる文字を「特定文字」というものとする。図3の例では、蓄積データID43aを「1」とする定型メッセージ43cでは、数字部分を特定文字としてパラメータ化して表している(T1)。また、蓄積データID43aを「2」とする定型メッセージ43cでは、括弧内の文字列部分を特定文字としてパラメータ化して表している(T2)。なお、蓄積データDB43のそれぞれのデータは、後述する監視装置2Aのメッセージ類似判定部32Bによって作成される。
図2に戻って、具体的には、メッセージ一致判定部52Aは、蓄積データDB43に記憶された定型メッセージ43cから特定文字として表されるパラメータを除外した文字列を作成する。そして、メッセージ一致判定部52Aは、新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいるか否かを判定する。
メッセージ一致判定部52Aは、新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいると判定する場合には、メッセージが一致すると判断する。そして、メッセージ一致判定部52Aは、新規メッセージに示される文字列と定型メッセージ43cから作成された文字列との差分を抽出する。すなわち、メッセージ一致判定部52Aは、新規メッセージに示される文字列から定型メッセージ43cに表されたパラメータに相当する特定文字を抽出する。そして、メッセージ一致判定部52Aは、抽出したパラメータに相当する特定文字及び定型メッセージ43cに対応付けられた蓄積データID43aを送信データとして、通信制御部53に出力する。
また、メッセージ一致判定部52Aは、新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいないと判定する場合には、メッセージが一致しないと判断する。そして、メッセージ一致判定部52Aは、新規メッセージで示される文字列そのものを送信データとして、通信制御部53に出力する。
ここで、送信データのデータ構造について、図4を参照しながら説明する。図4は、送信データのデータ構造の一例を示す図である。図4(A)では、蓄積データDB43に蓄積データがない場合、もしくは新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいない場合の送信データのデータ構造を示す。図4(B)では、蓄積データDB43に蓄積データがあり、且つ新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいる場合の送信データのデータ構造を示す。
図4(A)に示すように、蓄積データDB43に蓄積データがない場合の送信データには、全データ長1a、データ種別1b、ホスト名オフセット1c、メッセージオフセット1d、ホスト名1e及びメッセージ1fが含まれる。全データ長1aは、送信データの全データ長を示す。データ種別1bは、送信するデータがメッセージで示される文字列そのものであることを示す値を指す。ここでは、この値を「0x04」とする。ホスト名オフセット1cは、後述するホスト名について、送信データの先頭からの設定される位置を示す。メッセージオフセット1dは、後述するメッセージについて、送信データの先頭からの設定される位置を示す。ホスト名1eは、メッセージの発生元であるホスト名を示す。すなわち、ホスト名1eには、自装置のホスト名が設定される。メッセージ1fは、メッセージそのものが設定される。
図4(B)に示すように、蓄積データDB43に蓄積データがある場合の送信データには、全データ長2a、データ種別2b、蓄積データID2c、ホスト名オフセット2d、パラメータ数2e及びパラメータ数分のパラメータオフセット2fが含まれる。さらに、送信データには、ホスト名2g及びパラメータ数分のパラメータ2hが含まれる。全データ長2a、ホスト名オフセット2d及びホスト名2gは、それぞれ図4(A)に示した全データ長1a、ホスト名オフセット1c及びホスト名1eに相当するので、その説明を省略する。データ種別2bは、送信するデータが特定文字及び蓄積データIDであることを示す値を指す。ここでは、この値を「0x01」とする。蓄積データID2cには、メッセージと一致すると判断された定型メッセージ43cに対応付けられた蓄積データID43aが設定される。パラメータ数2eは、定型メッセージ43cに含まれるパラメータの数を示す。パラメータオフセット2fは、後述するパラメータについて、送信データの先頭からの設定される位置を示す。パラメータ2hには、メッセージに示される文字列から抽出される、定型メッセージ43cに表されたパラメータに相当する特定文字を示す。
図2に戻って、蓄積データ差分更新部52Bは、自装置に有する蓄積データDB43について、監視装置2Aに有する蓄積データDB23との差分を更新する。具体的には、蓄積データ差分更新部52Bは、通信制御部53を介して監視装置2Aから配付された蓄積データの差分を取得する。また、蓄積データ差分更新部52Bは、取得した蓄積データを自装置に有する蓄積データDB43に更新する。すなわち、蓄積データ差分更新部52Bは、自装置に有する蓄積データDB43の内容を監視装置2Aに有する蓄積データDB23の内容と同一にすることができる。
通信制御部53は、監視装置2Aから送信された蓄積データを蓄積データ差分更新部52Bに出力する。また、通信制御部53は、メッセージ一致判定部52Aから要求された内容で、送信データを監視装置2Aへ送信する。
監視装置2Aの制御部20は、監視対象装置3Aのメッセージを管理する。さらに、制御部20は、通信制御部31、蓄積データ管理部32及びメッセージログ管理部33を有する。蓄積データ管理部32は、メッセージ復元部32A、メッセージ類似判定部32B及び蓄積データ差分配付部32Cを有する。なお、制御部20は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路である。
通信制御部31は、監視対象装置3Aから送信された送信データを受信し、蓄積データ管理部32に出力する。また、通信制御部31は、後述する蓄積データ差分配付部32Cによって配付される蓄積データを監視対象装置3Aへ送信する。蓄積データ差分配付部32Cによって配付される蓄積データは、自装置に有する蓄積データDB23と監視対象装置3Aに有する蓄積データDB43との差分となる。
メッセージ復元部32Aは、送信データが特定文字及び定型メッセージに対応付けられた蓄積データIDを含む場合には、蓄積データDB23を用いて、メッセージを復元する。具体的には、メッセージ復元部32Aは、通信制御部31によって受信された送信データが特定文字及び蓄積データIDである場合には、蓄積データDB23から蓄積データIDに対応付けられた定型メッセージ43cを読み出す。そして、メッセージ復元部32Aは、読み出した定型メッセージ43cに表されたパラメータに、送信データに含まれた特定文字を挿入し、メッセージを復元する。そして、メッセージ復元部32Aは、復元後のメッセージをメッセージログ管理部33に出力する。
メッセージ類似判定部32Bは、送信データがメッセージそのものを含む場合には、当該メッセージについて、保持データ記憶部22に記憶された保持データとの類似を、予め定められた割合を用いて判定する。具体的には、メッセージ類似判定部32Bは、送信データに含まれるメッセージが保持データ記憶部22に記憶されたいずれかの保持データと予め定められた割合以上一致するか否かを判定する。そして、メッセージ類似判定部32Bは、送信データに含まれるメッセージが保持データ記憶部22に記憶されたいずれかの保持データと予め定められた割合以上一致すると判定する場合には、類似メッセージであると判断する。そして、メッセージ類似判定部32Bは、一致した部分の文字列を含む蓄積データを生成し、生成した蓄積データを蓄積データDB23に格納し、蓄積データDB23を更新する。
メッセージ類似判定部32Bは、送信データに含まれるメッセージが保持データ記憶部22に記憶されたいずれの保持データとも予め定められた割合以上一致しないと判定する場合には、類似メッセージでないと判断する。そして、メッセージ類似判定部32Bは、送信データに含まれるメッセージを保持データ記憶部22に記憶する。そして、メッセージ類似判定部32Bは、送信データに含まれるメッセージをメッセージログ管理部33に出力する。
さらに具体的に、メッセージ類似判定部32Bは、送信データに含まれるメッセージに示される文字列から特定文字を除外した文字列を生成する。また、メッセージ類似判定部32Bは、保持データ記憶部22に記憶された保持データに示される文字列から特定文字を除外した文字列を生成する。そして、メッセージ類似判定部32Bは、生成したそれぞれの文字列について、予め定められた割合以上一致するか否かを判定する。そして、メッセージ類似判定部32Bは、送信データに含まれるメッセージが保持データ記憶部22に記憶されたいずれかの保持データと予め定められた割合以上一致すると判定する場合には、類似メッセージであると判断する。そして、メッセージ類似判定部32Bは、送信データに含まれるメッセージに示される文字列の特定文字に該当する部分をパラメータ化して、定型メッセージを生成する。そして、メッセージ類似判定部32Bは、生成した定型メッセージに対応付ける識別番号を蓄積データIDとして、他の識別番号と重複しないように割り振る。そして、メッセージ類似判定部32Bは、割り振られた蓄積データID及び定型メッセージを対応付けて蓄積データDB23に格納し、蓄積データDB23を更新する。
なお、予め定められた割合は、例えば80%であるが、これに限定されるものではなく、メッセージ同士が類似と認められる割合であれば良い。また、予め定められた割合以上一致するか否かの判定方法として、例えばエディットグラフを利用したO(ND)アルゴリズム等を用いることができる。また、蓄積データDB23のデータ構造は、監視対象装置3Aに有する蓄積データDB43と同様であるので、その説明を省略する。
蓄積データ差分配付部32Cは、更新された蓄積データDB23と監視対象装置3Aの蓄積データDB43との蓄積データの差分を監視対象装置3Aに配付する。具体的には、蓄積データ差分配付部32Cは、前回配付してから今回配付するまでの期間に新しく更新された蓄積データを、蓄積データの差分として監視対象装置3Aに配付する。なお、蓄積データの差分の配付タイミングは、予め定められた一定間隔であったり、予め定められた不定間隔であったりするが、予め定められていない随時であっても良い。
メッセージログ管理部33は、メッセージ復元部32Aによって復元されたメッセージをメッセージログとしてメッセージログDB21に格納する。また、メッセージログ管理部33は、メッセージ類似判定部32Bによって出力されたメッセージをメッセージログとしてメッセージログDB21に格納する。ここで、メッセージログDB21は、メッセージログを、メッセージの発生元である監視対象装置3Aに対応付けて記憶する。なお、監視クライアント4は、定期的または不定期的にメッセージログDB21からメッセージログを参照することで、監視対象装置3Aを監視することができる。
[実施例2に係る監視対象装置の処理]
次に、実施例2に係る監視対象装置3Aの処理手順を、図5を参照して説明する。図5は、実施例2に係る監視対象装置3Aの処理手順を示すフローチャートである。
まず、新規メッセージ取得部51は、メッセージ記憶部41を用いて、新規メッセージを待つ(ステップS11)。新規メッセージ取得部51は、予め定められたタイマ時間が経過したか否かを判定する(ステップS12)。そして、新規メッセージ取得部51によって予め定められたタイマ時間が経過したと判定された場合には(ステップS12;Yes)、通信制御部53は、監視装置2Aから送信された蓄積データの差分が有るか否かを判定する(ステップS13)。
そして、通信制御部53によって蓄積データの差分が有ると判定された場合には(ステップS13;有)、蓄積データ差分更新部52Bは、通信制御部53を介して蓄積データを取得し、取得した蓄積データを蓄積データDB43に更新する(ステップS14)。そして、蓄積データ差分更新部52Bは、新規メッセージを検知すべく、ステップS15に移行する。
一方、通信制御部53によって蓄積データの差分が無いと判定された場合には(ステップS13;無)、新規メッセージを検知すべく、ステップS15に移行する。
新規メッセージ取得部51によって予め定められたタイマ時間が経過していないと判定された場合には(ステップS12;No)、新規メッセージを検知すべく、ステップS15に移行する。新規メッセージ取得部51は、メッセージ記憶部41を用いて、新規メッセージの検知を判定する(ステップS15)。新規メッセージ取得部51が新規メッセージを検知しない場合には(ステップS15;No)、処理を終了する。一方、新規メッセージ取得部51が新規メッセージを検知した場合には(ステップS15;Yes)、新規メッセージをメッセージ記憶部41から取得する(ステップS16)。
続いて、メッセージ一致判定部52Aは、新規メッセージ取得部51によって取得された新規メッセージを蓄積データDB43に記憶された定型メッセージ43cと照合する(ステップS17)。そして、メッセージ一致判定部52Aは、新規メッセージが蓄積データDB43に記憶された定型メッセージ43cと一致するか否かを判定する(ステップS18)。具体的には、メッセージ一致判定部52Aは、新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいるか否かを判定する。
メッセージ一致判定部52Aは、新規メッセージが蓄積データDB43に記憶された定型メッセージ43cと一致すると判定する場合には(ステップS18;Yes)、検索結果を取得する(ステップS19)。具体的には、メッセージ一致判定部52Aは、新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいると判定する場合には、メッセージが一致すると判断する。そして、メッセージ一致判定部52Aは、蓄積データDB43から検索した蓄積データを取得する。
続いて、メッセージ一致判定部52Aは、蓄積データに含まれる蓄積データID43a及び新規メッセージの可変パラメータを送信データとして組み立てる(ステップS20)。具体的には、メッセージ一致判定部52Aは、新規メッセージに示される文字列から定型メッセージ43cに表されたパラメータに相当する特定文字を抽出する。そして、メッセージ一致判定部52Aは、抽出した特定文字及び定型メッセージ43cに対応付けられた蓄積データID43aを送信データとして組み立てる。このとき、送信データには、自装置を示す発生元ホスト名を含む。そして、メッセージ一致判定部52Aは、組み立てた送信データを監視装置2Aに送信するように、通信制御部53に送信要求を行い(ステップS22)、通信制御部53は送信要求の内容で送信データを送信する。その後、ステップS11に移行する。
一方、メッセージ一致判定部52Aは、新規メッセージが蓄積データDB43に記憶された定型メッセージ43cと一致しないと判定する場合には(ステップS18;No)、新規メッセージそのものを送信データとして組み立てる(ステップS21)。このとき、送信データには、自装置を示す発生元ホスト名を含む。そして、メッセージ一致判定部52Aは、組み立てた送信データを監視装置2Aに送信するように、通信制御部53に送信要求を行う(ステップS22)、通信制御部53は送信要求の内容で送信データを送信する。その後、ステップS11に移行する。
[実施例2に係る監視装置の処理]
次に、実施例2に係る監視装置2Aの処理手順を、図6を参照して説明する。図6は、実施例2に係る監視装置の処理手順を示すフローチャートである。
まず、通信制御部31は、監視対象装置3Aから送信される送信データを待つ(ステップS31)。通信制御部31は、予め定められたタイマ時間が経過したか否かを判定する(ステップS32)。そして、通信制御部31によって予め定められたタイマ時間が経過したと判定された場合には(ステップS32;Yes)、蓄積データ差分配付部32Cは、複数の監視対象装置3Aの中から1個の監視対象装置3Aを選択する(ステップS33)。
そして、蓄積データ差分配付部32Cは、選択した監視対象装置3Aにおける蓄積データDB23に記憶された蓄積データについて、前回配付してから今回配付するまでの期間の差分を抽出する(ステップS34)。そして、蓄積データ差分配付部32Cは、抽出した蓄積データの差分を、該選択した監視対象装置3Aに配付する(ステップS35)。蓄積データ差分配付部32Cは、全監視対象装置3Aを選択したか否かを判定する(ステップS36)。
蓄積データ差分配付部32Cは、全監視対象装置3Aを選択していないと判定した場合には(ステップS36;No)、次の監視対象装置3Aを選択し(ステップS37)、ステップS34に移行する。一方、蓄積データ差分配付部32Cは,全監視対象装置3Aを選択したと判定した場合には(ステップS36;Yes)、ステップS38に移行する。
続いて、予め定められたタイマ時間が経過していない場合(ステップS32;No)または全監視対象装置3Aを選択した場合には(ステップS36;Yes)、通信制御部31は、送信データを受信したか否かを判定する(ステップS38)。そして、通信制御部31は、送信データを受信していないと判定する場合(ステップS38;No)、ステップS31に移行する。
一方、通信制御部31は、送信データを受信したと判定する場合(ステップS38;Yes)、送信データを取得する(ステップS39)。そして、通信制御部31は、送信データが定型メッセージ内のパラメータに相当する特定文字及び蓄積データIDを含むか否かを判定する(ステップS40)。
送信データがパラメータに相当する特定文字及び蓄積データIDを含む場合(ステップS40;Yes)、メッセージ復元部32Aは、送信データ内の蓄積データID及び発生元ホスト名を指定し、蓄積データDB23から蓄積データを検索する(ステップS41)。そして、メッセージ復元部32Aは、検索結果である蓄積データ及びパラメータに相当する特定文字から新規メッセージを復元する(ステップS42)。すなわち、メッセージ復元部32Aは、蓄積データ内の定型メッセージに表されたパラメータに、当該パラメータに相当する特定文字を挿入し、メッセージを復元する。そして、メッセージ復元部32Aは、ステップS52に移行する。
送信データがパラメータに相当する特定文字及び蓄積データIDを含まない場合(ステップS40;No)、メッセージ類似判定部32Bは、送信データ内のメッセージ中の特定文字を、パラメータを表す文字(パラメータ文字)に置き換える(ステップS43)。なお、送信データがパラメータに相当する特定文字及び蓄積データIDを含まない場合とは、すなわち送信データがメッセージそのものを含む場合を意味する。
続いて、メッセージ類似判定部32Bは、保持データ記憶部22に記憶された、1個の保持データを選択する(ステップS44)。そして、メッセージ類似判定部32Bは、選択した保持データから特定文字を除外した文字列と、特定文字をパラメータ文字に置き換えたメッセージからパラメータ文字を除外した文字列との一致文字数を算出する(ステップS45)。なお、この文字列同士の一致文字数の算出については、後に詳述する。
そして、メッセージ類似判定部32Bは、算出した一致文字数を用いて、これら文字列同士が予め定められた割合(例えば80%)以上一致するか否かの一致率判定を行なう(ステップS46)。メッセージ類似判定部32Bは、これら文字列同士が80%以上一致すると判定する場合(ステップS46;80%以上)、類似メッセージであると判断する。そして、メッセージ類似判定部32Bは、特定文字をパラメータ文字に置き換えたメッセージを、さらに保持データとの不一致部分をパラメータ文字に置き換えて定型メッセージを生成する(ステップS47)。
そして、メッセージ類似判定部32Bは、生成した定型メッセージに対応付ける蓄積データIDを割り振り、当該蓄積データID、発生元ホスト名及び生成した定型メッセージを対応付けて蓄積データDB23に登録する(ステップS48)。そして、メッセージ類似判定部32Bは、ステップS52に移行する。
メッセージ類似判定部32Bは、これら文字列同士が80%未満しか一致しないと判定する場合(ステップS46;80%未満)、類似メッセージでないと判断する。そして、メッセージ類似判定部32Bは、保持データ記憶部22に記憶された全保持データを選択したか否かを判定する(ステップS49)。メッセージ類似判定部32Bは,全保持データを選択していないと判定する場合(ステップS49;No)、次の保持データを選択し(ステップS50)、選択した保持データとの一致文字数を算出すべく、ステップS45に移行する。
一方、メッセージ類似判定部32Bは、全保持データを選択したと判定する場合(ステップS49;Yes)、送信データに含まれるメッセージを保持データとして保持データ記憶部22に登録する(ステップS51)。そして、メッセージ類似判定部32Bは,送信データに含まれるメッセージをメッセージログ管理部33に出力し(ステップS52)、ステップS31に移行する。
[一致文字数の算出処理]
次に、図6のステップS45に示した文字列同士の一致文字数の算出処理の一例について説明する。なお、この文字列同士の一致文字数の算出処理は、例えば、既存技術である「エディットグラフに基づいて最長共通部分(LCS:Longest Common Subsequence)を求めるO(ND)アルゴリズム」を利用するものである。
ここで、文字列同士の一致文字数の算出処理の概念を、図7を参照して説明する。図7は、文字列同士の一致文字数算出処理の概念を説明する図である。図7(A)に示すように、1個目の文字列をA(i)(1≦i≦9)配列に設定される「あいうあおかきあか」、2個目の文字列をB(j)(1≦j≦11)配列に設定される「いうあかききあかかあか」とする。
図7(B)に示すように、A(i)及びB(j)の文字同士の比較結果を2次元配列C(i、j)の比較表で示す。文字同士の比較結果が一致する場合には「1」が設定され、文字同士の比較結果が一致しない場合には「0」が設定される。例えば、符号C1で表されるB(1)の文字「い」について、A(2)の文字が「い」と一致するので、C(2、1)には「1」が設定され、それ以外の文字が「い」と不一致であるので、C(i、1)(i≠2)には「0」が設定される。
次に、図7(C)に示すように、C(i、j)の比較表からエディットグラフを生成する。エディットグラフとは、文字列A(i)、B(j)の各文字をX軸Y軸上に並べ、これらの交点を縦横の辺で結合し、Aのx番目の文字とBのy番目の文字とが等しい場合のみ(x−1、y−1)から(x、y)を線分とするものである。文字列A(i)をX軸、文字列B(j)をY軸に並べた場合、S1〜S12を線分とするエディットグラフが生成される。なお、ここでは(x−1、y−1)を(x1、y1)とし、(x、y)を(x2、y2)として説明する。また、線分が連続する場合には、線分の開始を(x1、y1)とし、連続した線分の終了を(x2、y2)とする。
次に、図7(D)に示すように、エディットグラフから線分毎の位置と連続する一致文字数とを取り出す。例えば、線分がS1である場合には、(x1、y1)が(1、0)であり、(x2、y2)が(4、3)であり、連続する一致文字数(連続一致文字数)Lが3となる。
次に、図7(E)に示すように、線分間の関係表を生成する。すなわち、線分毎に同時に選択可能な他の線分を抽出する。なお、ここでは、上位列とは、線分に対して先に選択可能な線分(文字列)を示し、下位列とは、線分に対して後に選択可能な線分(文字列)を示す。例えば、線分S3では、先に選択可能な線分にS1、S2があり、後に選択可能な線分にS8、S11がある。
次に、図7(F)に示すように、線分間の関係表を用いて一致文字数が最長となるルート探索を行なう。ここでは、例えば先後順にS1、S3及びS8の経路では、一致文字数が6となり、S1、S3及びS11の経路では、一致文字数が7となる。また、S1及びS4の経路では、一致文字数が6となり、S1、S6及びS11の経路では、一致文字数が6となる。したがって、S1、S3及びS11の経路が一致文字数を最長とすることがわかる。
図8−1〜図8−4は、一致文字数の算出処理の手順を示すフローチャートである。図8−1は、A(i)及びB(j)の文字同士の比較結果を2次元配列C(i、j)の比較表とする処理手順を示し、図8−2は、比較表からエディットグラフを生成し、エディットグラフから線分毎の位置等を取り出す処理手順を示す。図8−3は、線分間の関係表を生成する処理手順を示し、図8−4は、線分間の関係表を用いたルート探索処理手順を示す。なお、2個の文字列は、A(i)(1≦i≦n)、B(j)(1≦j≦m)の配列にそれぞれ設定されているものとして説明する。また、i、j、n及びmは自然数であるものとする。
まず、メッセージ類似判定部32Bは、A文字列のインデックスi、B文字列のインデックスjをそれぞれ1に設定する(ステップS61、S62)。そして、メッセージ類似判定部32Bは、A(i)の文字がB(j)の文字と一致するか否かを判定する(ステップS63)。A(i)の文字がB(j)の文字と一致しない場合(ステップS63;No)、メッセージ類似判定部32Bは、文字同士の比較結果である2次元配列C(i、j)に「0」を設定する(ステップS64)。
一方、A(i)の文字がB(j)の文字と一致する場合(ステップS63;Yes)、メッセージ類似判定部32Bは、C(i、j)に「1」を設定する(ステップS65)。そして、メッセージ類似判定部32Bは、インデックスjを1加算し(ステップS66)、インデックスjがB文字列の最大数mより大きいか否かを判定する(ステップS67)。インデックスjがB文字数の最大数m以下である場合には(ステップS67;No)、メッセージ類似判定部32Bは、ステップS63に移行する。
一方、インデックスjがB文字数の最大数mより大きい場合には(ステップS67;Yes)、メッセージ類似判定部32Bは、インデックスiを1加算し(ステップS68)、インデックスiがA文字列の最大数nより大きいか否かを判定する(ステップS69)。インデックスiがA文字数の最大数n以下である場合には(ステップS69;No)、メッセージ類似判定部32Bは、ステップS62に移行する。一方、インデックスiがA文字数の最大数nより大きい場合には(ステップS69;Yes)、メッセージ類似判定部32Bは、図8−2に示すステップS71に移行する。
次に、図8−2は、エディットグラフから線分毎の位置等を取り出す処理手順を示すフローチャートである。まず、メッセージ類似判定部32Bは、線分の数βを初期化すべく「0」を設定する(ステップS71)。メッセージ類似判定部32Bは、A文字列のインデックスi、B文字列のインデックスjにそれぞれ1を設定し(ステップS72、S73)、連続一致文字数αを初期化すべく「0」を設定する(ステップS74)。
そして、メッセージ類似判定部32Bは、C(i、j)が1であるか否かを判定する(ステップS75)。C(i、j)が1である場合(ステップS75;Yes)、メッセージ類似判定部32Bは、C(i、j)を「0」に設定し(ステップS76)、インデックスi及びjをそれぞれ1加算し(ステップS77)、連続一致文字数αを1加算する(ステップS78)。そして、メッセージ類似判定部32Bは、ステップS75に移行する。
一方、C(i、j)が1でない場合(ステップS75;No)、メッセージ類似判定部32Bは、インデックスi及びjをそれぞれ連続一致文字数αだけ減算する(ステップS79)。そして、メッセージ類似判定部32Bは、連続一致文字数αが「0」であるか否かを判定する(ステップS80)。連続一致文字数αが「0」である場合(ステップS80;No)、メッセージ類似判定部32Bは、ステップS83に移行する。一方、連続一致文字数αが「0」でない場合(ステップS80;Yes)、メッセージ類似判定部32Bは、一致文字に対する線分であると判断し、線分の数βを1加算する(ステップS81)。そして、メッセージ類似判定部32Bは、連続一致文字数L(β)にα値を設定し、x1(β)にインデックスi、y1(β)にインデックスjを設定し、x2(β)にインデックスi+α、y2(β)にインデックスj+αを設定する(ステップS82)。
そして、メッセージ類似判定部32Bは、インデックスjを1加算し(ステップS83)、インデックスjがB文字列の最大数mより大きいか否かを判定する(ステップS84)。インデックスjがB文字列の最大数m以下である場合には(ステップS84;No)、メッセージ類似判定部32Bは、ステップS74に移行する。
一方、インデックスjがB文字列の最大数mより大きい場合には(ステップS84;Yes)、メッセージ類似判定部32Bは、インデックスiを1加算し(ステップS85)、インデックスiがA文字列の最大数nより大きいか否かを判定する(ステップS86)。インデックスiがA文字列の最大数n以下である場合には(ステップS86;No)、メッセージ類似判定部32Bは、ステップS73に移行する。一方、インデックスiがA文字列の最大数nより大きい場合には(ステップS86;Yes)、メッセージ類似判定部32Bは、図8−3に示すステップS91に移行する。
次に、図8−3は、線分間の関係表を生成する処理手順を示すフローチャートである。まず、メッセージ類似判定部32Bは、対象線分を示すインデックスγに「1」、線分を示すインデックスγ´にそれぞれ「1」を設定する(ステップS91、S92)。そして、メッセージ類似判定部32Bは、インデックスγがγ´と一致するか否かを判定する(ステップS93)。インデックスγがγ´と一致しない場合(ステップS93;Yes)、インデックスγの対象線分とインデックスγ´の線分との関係を探索すると判断する。メッセージ類似判定部32Bは、γの対象線分の開始位置x1(γ)がγ´の線分の開始位置x1(γ´)以上且つγの対象線分の開始位置y1(γ)がγ´の線分の開始位置y1(γ´)以上であるか否かを判定する(ステップS94)。
x1(γ)がx1(γ´)以上且つy1(γ)がy1(γ´)以上である場合には(ステップS94;Yes)、メッセージ類似判定部32Bは、インデックスγ´の線分をインデックスγの対象線分の上位列として線分間の関係表に格納する(ステップS95)。一方、x1(γ)がx1(γ´)以上且つy1(γ)がy1(γ´)以上でない場合には(ステップS94;No)、メッセージ類似判定部32Bは、x2(γ)がx2(γ´)以下且つy2(γ)がy2(γ´)以下であるか否かを判定する(ステップS96)。x2(γ)がx2(γ´)以下且つy2(γ)がy2(γ´)以下である場合には(ステップS96;Yes)、メッセージ類似判定部32Bは、インデックスγ´の線分をインデックスγの対象線分の下位列として線分間の関係表に格納する(ステップS97)。一方、x2(γ)がx2(γ´)以下且つy2(γ)がy2(γ´)以下でない場合には(ステップS96;No)、メッセージ類似判定部32Bは、ステップS98に移行する。
ステップS95またはステップS97の処理後、メッセージ類似判定部32Bは、インデックスγの連続一致文字数L(γ)を線分間の関係表に格納する(ステップS98)。続いて、メッセージ類似判定部32Bは、線分を示すインデックスγ´を1加算し(ステップS99)、インデックスγ´が線分の数の最大値β以下であるか否かを判定する(ステップS100)。インデックスγ´が線分の数の最大値β以下である場合には(ステップS100;Yes)、メッセージ類似判定部32Bは、ステップS93に移行する。
一方、インデックスγ´が線分の数の最大値βより大きい場合には(ステップS100;No)、メッセージ類似判定部32Bは、インデックスγを1加算し(ステップS101)、インデックスγが線分の数の最大値β以下であるか否かを判定する(ステップS102)。インデックスγが線分の数の最大値β以下である場合には(ステップS102;Yes)、メッセージ類似判定部32Bは、ステップS92に移行する。一方、インデックスγが線分の数の最大値βより大きい場合には(ステップS102;No)、メッセージ類似判定部32Bは、図8−4に示すステップS111に移行する。
次に、図8−4は、線分間の関係表を用いたルート探索処理手順を示すフローチャートである。まず、メッセージ類似判定部32Bは、最大の一致文字数T及び対象線分を示すインデックスγを初期化すべくそれぞれ「0」に設定する(ステップS111)。メッセージ類似判定部32Bは、インデックスγを1加算し(ステップS112)、インデックスγが線分の数の最大値β以下であるか否かを判定する(ステップS113)。
インデックスγが線分の数の最大値β以下である場合(ステップS113;Yes)、メッセージ類似判定部32Bは、一致文字数Pを「0」に設定する。また、メッセージ類似判定部32Bは、一致文字を有する線分を示すインデックスを保持する配列Rのインデックスを示すkを「1」に選択する(ステップS114)。そして、メッセージ類似判定部32Bは、一致文字数Pに、線分を示すインデックスγの連続一致文字数L(γ)を加算し、配列R(k)に線分を示すインデックスγの値を設定する(ステップS115)。
メッセージ類似判定部32Bは、線分を示すインデックスγに選択されていない下位列があるか否かを、線分間の関係表に基づいて判定する(ステップS116)。インデックスγに選択されていない下位列がある場合(ステップS116;Yes)、メッセージ類似判定部32Bは、選択されていない下位列のうちの1つを選択し(ステップS117)、選択した下位列をインデックスγに設定する(ステップS118)。そして、メッセージ類似判定部32Bは、配列Rのインデックスを示すkを1加算し(ステップS119)、ステップS115に移行する。
一方、線分を示すインデックスγに選択されていない下位列がない場合(ステップS116;No)、メッセージ類似判定部32Bは、対象線分からの1個のルート探索を完了したと判断する。そして、メッセージ類似判定部32Bは、前回までの最大の一致文字数Tが今回のルート探索の結果を示す一致文字数Pより小さいか否かを判定する(ステップS120)。前回までの最大の一致文字数Tが今回のルート探索の結果を示す一致文字数Pより小さい場合(ステップS120;Yes)、メッセージ類似判定部32Bは、最大の一致文字数Tに今回のルート探索の結果を示す一致文字数Pを設定する(ステップS121)。そして、メッセージ類似判定部32Bは、一致文字を有する線分を示すインデックスを保持した配列Rを配列Qにコピーする(ステップS122〜S125)。一方、前回までの最大の一致文字数Tが今回のルート探索の結果を示す一致文字数P以上である場合(ステップS120;No)、次のルート探索を実行すべく、ステップS126に移行する。
メッセージ類似判定部32Bは、1個前のルートに戻るため、直近に選択された線分を示すインデックスγに関する情報をクリアする。ここでは、メッセージ類似判定部32Bは、配列R(k)を「0」に設定し、一致文字数Pから直近に選択された線分γの連続一致文字数を減算し(ステップS126)、線分γの値を1個前に選択された線分を示すR(k−1)に設定する(ステップS127)。さらに、メッセージ類似判定部32Bは、配列Rのインデックスを示すkを1減算する(ステップS128)。
そして、メッセージ類似判定部32Bは、減算したkが「1」であるか否かを判定する(ステップS129)。kが「1」である場合には(ステップS129;Yes)、メッセージ類似判定部32Bは、次の対象線分に関するルート探索を実行させるべく、ステップS112に移行する。一方、kが「1」でない場合には(ステップS129;No)、今回の対象線分に関する他のルート探索を実行させるべく、ステップS116に移行する。
そして、インデックスγが線分の数の最大値βを超過した場合に(ステップS113;No)、メッセージ類似判定部32Bは、最大の一致文字数Tを出力する(ステップS130)。そして、メッセージ類似判定部32Bは、配列Qに保持された、一致文字を有する線分を示すインデックスを出力して(ステップS131〜S134)、一致文字数の算出処理を終了する。
[実施例2の効果]
上記実施例2によれば、監視装置2Aが、複数の監視対象装置3Aとの通信により取得した第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列及びデータIDを含む蓄積データを生成する。そして、監視装置2Aは、生成した蓄積データを蓄積データDB23に更新し、更新した蓄積データを、蓄積データの差分として監視対象装置3Aに配付する。そして、監視対象装置3Aは、監視装置2Aから配付された蓄積データを取得し、自装置に有する蓄積データDB23に更新する。そして、監視対象装置3Aは、新たなデータに示される文字列が蓄積データDB43に更新された蓄積データに示される文字列を含む場合に、新たなデータに示される文字列から、当該蓄積データに示される文字列を除いた文字列を示すデータを生成する。そして、監視対象装置3Aは、生成したデータと当該蓄積データを識別するデータIDとを含む送信データを監視装置2Aに送信する。
かかる構成によれば、監視装置2Aが、第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致した部分の文字列及びデータIDを含む蓄積データを複数の監視対象装置3Aに配付することとした。このため、監視対象装置3Aは、新たなデータに示される文字列との比較に監視装置2Aから配付された蓄積データを用いることにより新たなデータの監視装置2Aへの送信を蓄積データとの差分のみとすることを可能とする。この結果、監視システム1Aは、監視対象装置3Aから監視装置2Aへの新たなデータのトラフィック量を軽減できる。
以下に、蓄積データDB43に蓄積データがある場合と、蓄積データDB43に蓄積データがない場合との送信データのデータ量を比較する。図9は、送信データのデータ量を比較する図である。図9(A)では、説明の便宜上、蓄積データ及び新たなデータである新規メッセージの例を示す。図9(B)では、蓄積データDB43に蓄積データがあり、且つ新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいる場合の送信データを示す。図9(C)では、蓄積データDB43に蓄積データがない場合、もしくは新規メッセージに示される文字列が定型メッセージ43cから作成された文字列を含んでいない場合の送信データを示す。
図9(A)に示すように、蓄積データDB43には、蓄積データID43aを「001」とする定型メッセージM1があるものとする。また、新規メッセージM2に示される文字列は、定型メッセージM1から特定文字として表されるパラメータT3、T4を除外した文字列を含んでいる。
図9(B)に示すように、蓄積データDB43に蓄積データがある場合、送信データのデータ量は、44バイトとなる。一方、図9(C)に示すように、蓄積データDB43に蓄積データがない場合、送信データのデータ量は、116バイトとなる。
したがって、図9(A)に示す新規メッセージの例においては、蓄積データDB43に蓄積データがある場合には、蓄積データDB43に蓄積データがない場合と比べて、送信データのデータ量を約2/5に減少させることができる。すなわち、監視システム1Aは、監視対象装置3Aから監視装置2Aへの新たなデータのトラフィック量を軽減できる。
また、上記実施例2によれば、監視装置2Aが、特定文字及び蓄積データを識別するデータIDを含む送信データを受信した場合に、蓄積データDB23から当該データIDに対応付けられた定型メッセージを読み出す。そして、監視装置2Aが、読み出した定型メッセージに表されたパラメータに、送信データに含まれた特定文字を挿入する。かかる構成によれば、監視装置2Aは、送信データに含まれたデータID及び特定文字を用いて、
監視対象装置3Aで発生した新たなメッセージを効率よく生成することができる。
なお、メッセージ類似判定部32Bは、送信データに含まれるメッセージから特定文字を除外した文字列及び保持データ記憶部22に記憶された保持データから特定文字を除外した文字列について、予め定められた割合以上一致するか否かを判定すると説明した。しかしながら、メッセージ類似判定部32Bは、これに限定されず、送信データに含まれるメッセージに示される文字列及び保持データ記憶部22に記憶された保持データに示される文字列について、予め定められた割合以上一致するか否かを判定しても良い。この場合、メッセージ類似判定部32Bは、送信データに含まれるメッセージの文字列について、保持データとの不一致部分をパラメータ化して、定型メッセージを生成する。そして、メッセージ類似判定部32Bは、生成した定型メッセージを、当該定型メッセージに対応付ける蓄積データIDとともに蓄積データとして蓄積データDB23に格納すれば良い。これにより、監視装置2Aが、蓄積データDB23の差分の蓄積データを複数の監視対象装置3Aに配付すれば、配付以降、監視対象装置3Aから監視装置2Aへの新たなデータのトラフィック量を軽減することが可能となる。
[プログラム等]
なお、監視装置2Aは、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記した通信制御部31、蓄積データ管理部32及びメッセージログ管理部33等の各機能を搭載することによって実現することができる。また、監視対象装置3Aは、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記した新規メッセージ取得部51、蓄積データ管理部52及び通信制御部53等の各機能を搭載することによって実現することができる。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、メッセージ復元部32Aとメッセージ類似判定部32Bとを1個の部として統合しても良い。一方、メッセージ類似判定部32Bを、送信データに含まれるメッセージと保持データとの一致率を算出する一致率算出部と、一致率から類似メッセージであるか否かを判定する類似判定部とに分散しても良い。また、蓄積データDB23や保持データ記憶部22等の記憶部を監視装置2Aの外部装置としてネットワーク経由で接続するようにしても良い。
さらに、監視装置2Aの制御部20に監視対象装置3Aの制御部40内の処理部(新規メッセージ取得部51、蓄積データ管理部52、通信制御部53)を追加して、監視装置2Aを監視対象装置3Aとして動作させるようにしても良い。一方、監視対象装置3Aの制御部40に監視装置2Aの制御部20内の処理部(通信制御部31、蓄積データ管理部32、メッセージログ管理部33)を追加して、監視対象装置3Aを監視装置2Aとして動作させるようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図10を用いて、図2に示した監視装置2Aの制御部20と同様の機能を有する監視プログラムを実行するコンピュータの一例を説明する。
図10は、監視プログラムを実行するコンピュータを示す図である。図10に示すように、コンピュータ1000は、RAM(Random Access Memory)1010と、キャッシュ1020と、HDD1030と、CPU(Central Processing Unit)1040及びバス1050とを有する。RAM1010、キャッシュ1020、HDD1030、CPU1040は、バス1050によって接続されている。
そして、HDD1030には、図2に示した制御部20と同様の機能を有する監視プログラム1031が記憶される。また、HDD1030には、図2に示したメッセージログDB21、保持データ記憶部22及び蓄積データDB23に対応する監視メッセージ関連情報1032が記憶される。なお、監視プログラム1031には、図2に示した制御部40と同様の機能を有するプログラムを含むものとしても良い。また、監視メッセージ関連情報1032には、図2に示したメッセージ記憶部41及び蓄積データDB43に対応するデータを含むものとしても良い。
そして、CPU1010が監視プログラム1031をHDD1030から読み出してRAM1010に展開することにより、監視プログラム1031は、監視プロセス1011として機能するようになる。そして、監視プロセス1011は、監視メッセージ関連情報1032から読み出した情報等を適宜RAM1010上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
なお、上記の監視プログラム1031は、必ずしもHDD1030に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておいても良い。この場合には、コンピュータ1000がこれらからプログラムを読み出して実行する。
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
(付記1)複数の装置を含む監視システムであって、
前記複数の装置のうちの第1の装置が、
前記複数の装置との通信により取得した第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列を示す第3のデータを生成する生成手段と、
前記生成手段によって生成された前記第3のデータ及び前記第3のデータを識別する情報を、前記複数の装置に含まれる第2の装置に送信する第1の送信手段とを有し、
前記第2の装置が、
前記第1の装置を送信先とする第4のデータに示される文字列が、前記第3のデータに示される文字列を含む場合に、前記第4のデータに示される文字列から、前記第3のデータに示される文字列を除いた文字列を示す第5のデータと、前記第3のデータを識別する情報とを前記第1の装置に送信する第2の送信手段
を有することを特徴とする監視システム。
(付記2)前記第1の装置が、
前記第5のデータと前記第3のデータを識別する情報とを受信した場合に、前記第3のデータに示される文字列に、前記第5のデータが示す文字列を挿入する挿入手段
をさらに有することを特徴とする付記1に記載の監視システム。
(付記3)複数の装置と通信可能な装置であって、
前記複数の装置との通信により取得した第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列を示す第3のデータを生成する生成手段と、
前記生成手段によって生成された前記第3のデータ及び前記第3のデータを識別する情報を、前記複数の装置に含まれる第2の装置に送信する第1の送信手段とを有し、
前記複数の装置のいずれかを送信先とする第4のデータに示される文字列が、前記第3のデータに示される文字列を含む場合に、前記第4のデータに示される文字列から、前記第3のデータに示される文字列を除いた文字列を示す第5のデータと、前記第3のデータを識別する情報とを前記送信先に送信する第2の送信手段と
を有することを特徴とする装置。
(付記4)複数の装置との通信により取得した第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列を示す第3のデータを生成する生成手段と、
前記生成手段によって生成された前記第3のデータ及び前記第3のデータを識別する情報を、前記複数の装置に含まれる監視対象の装置に送信する送信手段と
を有することを特徴とする監視装置。
(付記5)複数のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列を示す第3のデータ及び前記第3のデータを識別する情報を、複数の装置を監視する監視装置から取得する取得手段と、
前記監視装置を送信先とする第4のデータに示される文字列が、前記取得手段によって取得された前記第3のデータに示される文字列を含む場合に、前記第4のデータに示される文字列から、前記第3のデータに示される文字列を除いた文字列を示す第5のデータと、前記第3のデータを識別する情報とを前記送信先に送信する送信手段と
を有することを特徴とする監視対象装置。
(付記6)監視システムが複数の装置を監視する監視方法であって、
前記複数の装置との通信により取得した第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列を示す第3のデータを生成する生成工程と、
前記生成工程によって生成された前記第3のデータ及び前記第3のデータを識別する情報を、前記複数の装置に送信する第1の送信工程と、
前記複数の装置のいずれかを送信先とする第4のデータに示される文字列が、前記第3のデータに示される文字列を含む場合に、前記第4のデータに示される文字列から、前記第3のデータに示される文字列を除いた文字列を示す第5のデータと、前記第3のデータを識別する情報とを前記送信先に送信する第2の送信工程と
を含むことを特徴とする監視方法。
(付記7)複数の装置と通信可能なコンピュータに、
前記複数の装置との通信により取得した第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列を示す第3のデータを生成する生成手順と、
前記生成手順によって生成された前記第3のデータ及び前記第3のデータを識別する情報を、前記複数の装置に送信する第1の送信手順と、
前記複数の装置のいずれかを送信先とする第4のデータに示される文字列が、前記第3のデータに示される文字列を含む場合に、前記第4のデータに示される文字列から、前記第3のデータに示される文字列を除いた文字列を示す第5のデータと、前記第3のデータを識別する情報とを前記送信先に送信する第2の送信手順と
を実行させることを特徴とする監視プログラム。
(付記8)複数の装置と通信可能なコンピュータに、
前記複数の装置との通信により取得した第1のデータ及び第2のデータに示されるそれぞれの文字列が予め定められた割合以上一致する場合に、一致した部分の文字列を示す第3のデータを生成する生成手順と、
前記生成手順によって生成された前記第3のデータ及び前記第3のデータを識別する情報を、前記複数の装置に含まれる監視対象の装置に送信する送信手順と
を実行させることを特徴とする監視プログラム。