添付図面を参照して、本発明の好適な実施形態(以下、「本実施形態」という)について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
本実施形態において、「部」や「手段」、「装置」、「システム」とは、単に物理的手段を意味するものではなく、その「部」や「手段」、「装置」、「システム」が有する機能をソフトウェアによって実現する場合も含む。また、1つの「部」や「手段」、「装置」、「システム」が有する機能が2つ以上の物理的手段や装置により実現されても、2つ以上の「部」や「手段」、「装置」、「システム」の機能が1つの物理的手段や装置により実現されてもよい。
<1.システム構成>
本実施形態では、システム管理者であるユーザUが、本実施形態に係る監視システム1を利用して、監視対象の第1対象機器T1及び第2対象機器T2を含む対象システムSの運用を監視する例を用いて説明するが、これに限る趣旨ではない。なお、第1対象機器T1と、第2対象機器T2とは、特に区別の必要が無い場合は、まとめて「対象機器T」という。
図1を参照して、本実施形態に係る監視システム1のシステム構成例を説明する。
監視システム1は、ユーザUが、対象システムSの運用を監視するためのシステムである。図1に示すように、監視システム1は、対象機器Tと、監視サーバ100と、対象機器Tの監視結果などをユーザUに対して出力する監視端末200とを含んでもよい。また、監視システム1は、例えば、対象機器Tにおける構成要素の状態データやログデータを収集するために対象機器Tに搭載された監視サーバ100のエージェントプログラム300(以下、単に「エージェント300」という)を含んでもよい。なお、状態データとログデータとは、特に区別の必要が無い場合は、まとめて「監視データ」ともいう。また、対象機器Tにおける構成要素は、例えば、対象機器Tにおける構成するアプリケーション、ミドルウェア、OS、又はハードウェアなどである。対象機器Tにおける構成要素は、監視対象の単位であってもよい。
「状態データ」とは、対象機器Tにおける構成要素の状態の履歴を示すデータである。また、状態データは、対象機器Tにおける監視サーバ100の監視対象のデータでもある。状態データは、例えば、いわゆるメトリクスデータであってもよく、エージェント300などにより測定されたデータであってもよい。状態データは、例えば、監視対象が対象機器TのOSであれば、メモリ容量の使用率若しくはCPU使用率などのリソースの使用状態を示すメトリクス、総プロセス数、又はログインユーザ数などであってもよい。また、状態データは、例えば、監視対象が対象機器Tに搭載されたアプリケーションであれば、当該アプリケーションのヒープ領域やインデックスの使用状態などであってもよい。また、状態データは、他の例として、数値ではなく、low/mid/highなどの「程度」を表すものであってもよい。
「ログデータ」とは、対象機器Tにおけるイベントの履歴を示すデータである。ログデータは、例えば、対象機器Tを構成するハードウェアやソフトウェアに関する動作履歴や構成変更履歴を含んでもよい。また、ログデータは、例えば、障害発生や例外処理発生などのエラーや警告の履歴を含んでもよい。
対象機器Tと監視サーバ100とは、ネットワークNを介して互いに接続されている。また、監視サーバ100と対象機器Tとは、例えば、ネットワークN上に構築されたVPN(Virtual Private Network)を利用するものであって、VPN装置を介して通信してもよい。監視サーバ100から対象機器Tへのリモートアクセスにあたっては、例えば、TELNETなどの通信プロトコル、若しくはSSH(Secure Shell)又はVNC(Virtual Network Computing)などのリモートアクセスツールをそれぞれ用いて実現してもよい。
監視システム1は、例えば、図示していないが、監視サーバ100と対象機器Tとの間に、対象機器Tにおける構成要素の監視データを収集するための収集サーバと当該収集サーバのエージェントプログラム(以下、「収集エージェント」という)とを設けてもよい。また、この収集サーバと収集エージェントとは、サードパーティーシステムのものであってもよい。監視サーバ100と対象機器Tとは、例えば、収集サーバと収集エージェントを介して、監視データの送受信などの通信をしてもよい。
ネットワークNは、無線ネットワークや有線ネットワークにより構成される。ネットワークの一例としては、携帯電話網や、PHS(Personal Handy−phone System)網、無線LAN(Local Area Network)、3G(3rd Generation)、LTE(Long Term Evolution)、4G(4th Generation)、5G(5th Generation)、WiMax(登録商標)、赤外線通信、Bluetooth(登録商標)、有線LAN、電話線、電灯線ネットワーク、IEEE1394などに準拠したネットワークがある。
監視サーバ100は、例えば、対象システムSの対象機器Tにおけるアプリケーション、ミドルウェア、OS、及びハードウェアの少なくとも一つの構成要素を監視するサーバ装置である。監視サーバ100は、所定のプログラムを実行することにより、対象機器Tにおける構成要素の動作状況や通信状況などをモニタリングしたり、対象システムSの運用を監視するための収集された状態データを分析したり、当該分析結果をユーザUに通知したりするサーバ機能を実現する。また、監視サーバ100は、例えば、対象機器Tへのリモートアクセスなどが可能であってもよい。
監視サーバ100からユーザUへの上記分析結果などの通知は、様々な通知の態様が適用可能である。当該通知は、例えば、監視端末200に備えられている既存のメッセージソフトに対するメッセージの出力若しくは既存のメールソフトに対するメール送信、対象システムSの運用状況を示す各種情報・各種データを統合して表示するダッシュボード(以下、単に「ダッシュボード」という)などの管理画面上での出力、又は電話による発呼などが考えられる。なお、ダッシュボードなどの管理画面は、例えば、監視端末200のWebブラウザで表示させるものであってもよい。また、ダッシュボードなどの管理画面は、他の例として、監視端末200に監視システム1専用のアプリケーションプログラム(以下、「監視アプリ」ともいう)をインストールさせて、監視アプリで表示させるものであってもよい。
監視端末200は、ユーザUからの対象システムSの監視のための操作入力や監視サーバ100との通信が可能なスマートフォンやラップトップなどの端末である。監視端末200は、ユーザが使用する端末の一態様である。監視端末200は、所定のプログラムを実行することにより、監視サーバ100と連携して監視に関する情報を送受信したり監視に関する画面を表示したりユーザUの操作入力を受け付けたりする。
エージェント300は、監視データの収集のために、対象機器Tに搭載されるプログラムである。エージェント300は、例えば、搭載された対象機器Tにおける構成要素「OS」のCPU使用率、メモリ使用率、ネットワーク使用率、又はプロセス起動数などの状態データや対象機器Tのログデータを収集する。エージェント300は、収集したこれらの監視データを監視サーバ100へ送信する。
<2.概要>
図2を参照して、監視システム1の概要を説明する。
(1)図2に示すように、監視サーバ100は、サイクリックに又はイベントドリブンで、対象機器Tから状態データとログデータとを取得する。
(2)監視サーバ100は、状態データに基づき、状態パターンモデルを用いて対象機器Tの構成要素において、通常時の時系列の状態パターンから逸脱する状態変化を検出する。ここで「状態パターン」とは、対象機器Tにおける構成要素の時系列の状態の推移をパターン化したものである。また、ここで「状態パターンモデル」とは、対象機器Tにおける構成要素の通常時の時系列の状態パターンを示すモデルである。また、監視サーバ100は、上記検出した状態変化が起きた変化時点を検出する。
監視サーバ100は、例えば、時系列上のあるタイミングにおいて対象機器TのOSのCPU使用率が突如上昇した場合でも、対象機器TのOSが通常時においても時系列上同じタイミングで上昇する傾向にあれば、上記状態変化が発生しているとは判定しない。言い換えれば、監視サーバ100は、上記のような場合において、対象機器TのOSのCPU使用率が通常時においては時系列上同じようなタイミングで上昇しない傾向にあれば、上記状態変化が発生していると判定する。そして、監視サーバ100は、当該状態変化を検出する。
(3)監視サーバ100は、取得したログデータから、上記(2)の変化時点と関連するログデータを抽出する。監視サーバ100は、例えば、当該変化時点が発生した日時(t)を基準として所定の期間内に記録されたログデータを抽出してもよい。(4)監視サーバ100は、抽出したログデータと上記(2)の変化時点の状態変化とを関連付けて出力するための後述のログ一覧画面D1(図6参照)を生成する。ログ一覧画面D1は、状態変化ログ関連情報の一態様である。監視サーバ100は、例えば、ログ一覧画面D1に表示させるログデータのうち上記状態変化と関連付けられているログデータのレコードにおいて、上記状態変化の原因の候補を示す「疑わしいログです」とするテキストメッセージを出力させてもよい。
上記構成によれば、対象機器Tにおける構成要素の状態変化が起きた変化時点を検出し、当該変化時点と関連する対象機器Tのログデータを、上記状態変化と関連付けて監視端末200に出力することができる。これにより、ユーザUは、状態変化の原因の候補としてログデータに示された対象機器の処理や構成変更などの履歴を把握することができる。
<3.機能構成>
図3を参照して、本実施形態に係る監視サーバ100の機能構成を説明する。図3に示すように、監視サーバ100は、通信部110と、制御部120と、記憶部140と、を備える。
通信部110は、ネットワークNを介して、対象機器T又は監視端末200などと各種データ又は各種情報を送受信する。通信部110は、例えば、ネットワークNを介して、対象機器Tから監視データを受信したり、監視端末200に状態変化ログ関連情報を送信したりする。
制御部120は、データ取得部121と、状態変化検出部122と、変化時点検出部123と、ログ抽出部124と、関連情報生成部125と、を備える。また、制御部120は、例えば、相関パターン算出部126、相関度算出部127、異常ログ選別部128、通知部129、リスト追加受付部130、リスト更新部131、評価受付部132、閾値調整部133、モデル構築部134、モデル再構築指示部135、比較情報生成部136、モデル受付部137、単語頻度算出部138、又は類似度算出部139を備えてもよい。
データ取得部121は、通信部110を介して、対象機器Tから監視データを取得する。データ取得部121は、例えば、収集サーバに実装されたAPIを利用して、監視データを取得してもよい。ここで、「API(Application Programming Interface)」とは、各種情報の参照機能などを個別にサービス化して、外部のアプリケーションから利用するために、ソフトウェアコンポーネントが互いにやり取りするために使用するインタフェースである。
データ取得部121は、例えば、上記APIを利用して、監視データの収集を収集サーバに指示する。収集サーバは、当該指示に基づいて、収集エージェントを用いて監視データを収集する。データ取得部121は、収集サーバの当該収集の結果として、当該APIを介して監視データを取得してもよい。
データ取得部121は、他の例として、対象機器Tに搭載されたエージェント300に対象機器Tの監視データを収集させ、収集された監視データをエージェント300から送信させてもよい。データ取得部121は、当該送信された監視データを、通信部110を介して受信する。また、データ取得部121は、他の例として、収集サーバに組み込んだ監視システム1専用のアウトプットプラグイン機能を利用して、収集サーバが収集した監視データを送信させてもよい。データ取得部121は、当該送信された監視データを、通信部110を介して受信する。また、データ取得部121は、他の例として、対象機器Tにリモートアクセスして、監視データを取得してもよい。
データ取得部121は、同一の構成要素若しくは同一の監視項目を有する複数の対象機器それぞれの状態データ、又は対象機器Tが有する複数の構成要素それぞれの状態データを当該対象機器から取得してもよい。ここで「監視項目」とは、対象機器Tの構成要素における監視を行う単位である。監視項目は、例えば、構成要素が対象機器TのOSの場合、メモリ容量の使用率又はCPU使用率などであってもよい。「同一の構成要素を有する複数の対象機器T」とは、例えば、対象システムSに含まれる第1対象機器T1と第2対象機器T2それぞれのOSを構成要素とし、CPU使用率を監視項目とする場合などである。また、「対象機器Tが有する複数の構成要素若しくは複数の監視項目それぞれの状態データ」とは、例えば、第1対象機器Tが有するCPU使用率とスワップ使用率それぞれの状態データとする場合などである。
状態変化検出部122は、状態パターンモデルを記憶するモデル記憶部を参照する。この「モデル記憶部」は、記憶部140に含まれる機能部(後述のモデル記憶部141)であってもよいし、外部の装置が備える機能部であってもよい。そして、状態変化検出部122は、データ取得部121により取得された状態データに基づいて、状態パターンモデルを用いて状態パターンから逸脱する対象機器Tにおける構成要素の状態変化を検出する。
状態変化検出部122は、例えば、単一の状態データにおける上記状態変化を検出してもよい。状態変化検出部122は、このような検出の場合、状態パターンモデルとして、状態パターンモデルがARモデル(autoregressive model(自己回帰モデル))又はARMAモデル(autoregressive moving average model(自己回帰移動平均モデル))などの時系列モデルを用いてもよい。
状態変化検出部122は、例えば、状態パターンモデルを用いて対象機器Tにおける構成要素の状態の予測パターンを算出してもよい。状態変化検出部122は、状態データに基づいて、当該予測パターンの数値と状態データの数値との差分の変化度が所定の第1閾値を超えた際に、状態パターンから逸脱する対象機器Tにおける構成要素の状態変化を検出してもよい。ここで「所定の第1閾値」とは、対象機器Tにおける構成要素の状態データの数値が、通常時の状態パターンに基づき予測される値から逸脱しているか否かを判定するための閾値である。状態変化検出部122は、例えば、予測パターンの数値に対する状態データの数値が、乖離する方向(障害方向)で推移しているか、また、収束する方向(復旧方向)で推移しているか判定してもよい。状態変化検出部122は、前者について対象機器Tの構成要素に障害が発生している可能性があると判定してもよい。状態変化検出部122は、後者について対象機器Tの構成要素が復旧している可能性があると判定してもよい。
状態変化検出部122は、例えば、サイクリックに(例えば、実行間隔を30分に1回にするなど)、状態パターンモデルを用いて所定の期間における予測パターンを算出する。状態変化検出部122は、当該予測パターンの数値と同じ所定の時間における状態データの数値との差分を算出する。状態変化検出部122は、算出した差分の推移を分析する。状態変化検出部122は、当該分析結果に基づいて差分の変化度を算出し、所定の第1閾値を超えた場合、状態変化を検出したと判定する。状態変化検出部122は、上記差分の変化度の算出にあたっては、状態パターンモデルがARモデル又はARMAモデルなどの場合、ChangeFingerなどの変化点検出アルゴリズム技術を用いてもよい。
ここで、図4を用いて、状態変化検出部122における単一の状態データにおける状態変化及び変化点検出の例を示す。縦軸をメモリの使用率(%)とし、横軸を時間軸(秒単位)とした波形図である。当該波形図は、状態データとして取得されたメモリ使用率について、経時的にプロットしたグラフである。P1及びP2がそれぞれ検出された状態変化が起きた変化点である。図4に示すように、一見他の変化点と変わりない変化点でも、上記構成によれば、状態変化検出部122は、通常時の状態パターンから逸脱する状態変化、ひいては変化点を検出することができる。
上記構成によれば、状態変化検出部122は、対象機器Tの構成要素において通常時の状態パターンから一時的に逸脱したものではなく、持続的に逸脱しつづける状態変化を検出することができる。このため、上記構成によれば、状態変化検出部122は、リリース作業後のCPU負荷状況の異常変化や定期バックアップによるディスク増加率の異常変化などを検出することができる。また、上記構成によれば、監視サーバ100は、持続的に逸脱しつづける状態変化において逸脱し始めた変化点を検出することできる。このため、上記構成によれば、状態変化検出部122は、リリース作業など何らかのオペレーションがきっかけで発生したCPU負荷状況が上昇しつづけているような特に重要度・緊急度の高い状態変化にフォーカスして検出することができる。また、上記構成によれば、状態変化検出部122は、状態の変化が許容されるべきものであれば受け入れて、新たな状態をベースに変化を検出し続けられる。
状態変化検出部122は、例えば、複数の状態データ間の相関関係における上記状態変化を検出してもよい。
状態変化検出部122は、例えば、後述の相関パターン算出部126により算出された相関度変動パターンを示す状態パターンモデルを用いて、当該相関度変動パターンに対する後述の相関度算出部127により算出された相関関係の変化度が所定の第2閾値を超えた際に、複数の対象機器T、又は複数の構成要素若しくは複数の監視項目を有する対象機器Tにおける状態パターンから逸脱する状態変化を検出してもよい。ここで「所定の第2閾値」とは、複数の対象機器T、又は複数の構成要素若しくは複数の監視項目の相関関係の変化度が、通常時の相関度変動パターンに基づき予測される値から逸脱しているか否かを判定するための閾値である。
ここで、図5を用いて、状態変化検出部122における複数の状態データ間の相関関係における状態変化検出の例を示す。図5(a)は、通常時の第1対象機器T1における複数の監視項目間の相関関係を表す二次元マトリクスである。図5(b)は、異常時の第1対象機器T1における複数の監視項目間の相関関係を表す二次元マトリクスである。各セルには、各相関関係の度合いが色の濃さで表現されている。図5に示すように、通常時にはCPU使用率とスワップ使用率の相関関係の度合いは高くないものの、リリース作業後の異常時にはCPUの異常によりスワップの使用率が上昇し相関関係の度合いが変化し通常時より高くなっている。このような構成によれば、状態変化検出部122は、単一ではスワップの使用率上昇の原因がなにかを把握することが困難だが、複数の状態データ間の相関関係の変化度を算出することで、スワップの使用率上昇の原因がCPU使用率にある可能性を見出すことができる。
例えば、他の構成要素の障害の影響を受けやすいメモリは、自身の不具合ではなく他の構成要素の不具合によってその使用量が異常となりやすい。しかしながら、上記構成によれば、ユーザは、(1)まず、図4に示すような単一の状態データにおける状態変化としてメモリ使用量の異常を確認する。(2)つぎに、メモリ使用量と他の構成要素の監視項目との状態データ間の相関関係の構造変化を確認して、その構造変化が異常となっていないかを確認する。(3)つぎに、構造変化が異常となっている相手の他の構成要素について障害の原因調査を行う。このように上記(1)〜(3)のステップを踏むことで、一見するとメモリに不具合があるように思われるが本当は別の構成要素に不具合があるケースにおいても障害の原因特定が可能になる。このため、上記構成によれば、ユーザは、障害対応の効率が向上する。
上記構成によれば、状態変化検出部122は、ロードバランサの設定変更に伴う負荷分散状況の変化やリリース作業後の対象機器内のリソース消費のバランスの変化を検出することができる。このため、上記構成によれば、状態変化検出部122は、単一の状態変化の検出だけだと見過ごす可能性のある、対象システムS全体の状態変化を検出することができる。また、上記構成によれば、状態変化検出部122は、状態の変化が許容されるべきものであれば受け入れて、新たな状態をベースに変化を検出し続けられる。
状態変化検出部122は、例えば、後述のモデル受付部137がユーザUから状態パターンモデル候補を採用する指定を受け付けた場合、これまで用いていた状態パターンモデルに替えて後述の状態パターンモデル候補を採用する。
上記構成によれば、状態変化検出部122は、現行の状態パターンモデルによる検知多発などが判定された場合、ユーザからのフィードバックを受けて、状態パターンモデルを現状に合わせて更新することができる。上記構成によれば、状態変化検出部122は、状態パターンモデルを精度よく維持することができる。
状態変化検出部122は、例えば、後述の類似度算出部により算出された各単語の類似度が所定の第3閾値を超えた際に、対象機器Tにおける構成要素の状態変化を検出してもよい。ここで「所定の第3閾値」とは、対象機器Tの各単語の出現頻度の相対度数が、通常時の相対度数から逸脱しているか否かを判定するための閾値である。上記構成によれば、状態変化検出部122は、対象機器Tにおける構成要素のログデータに含まれる各単語の発生傾向の変化を検出することができる。このため、上記構成によれば、状態変化検出部122は、キーワードマッチベースの検出では気付けない各単語の発生傾向の変化を検出することができる。
変化時点検出部123は、状態変化検出部122により検出された状態変化が起きた変化時点を検出する。変化時点検出部123は、例えば、状態パターンモデルがARモデル又はARMAモデルの場合、各時点のうち状態変化が検出された時点を変化時点としてもよい。
変化時点検出部123は、例えば、状態変化検出部122により各単語の類似度が所定の第3閾値を超えた際に検出された状態変化に関する所定の時間帯に基づき、当該変化が起きた変化時点を検出してもよい。
上記構成によれば、変化時点検出部123は、対象機器Tにおける構成要素のログデータに含まれる各単語の発生傾向の変化の変化時点を検出することができる。上記構成によれば、監視サーバ100は、各単語の発生傾向の変化点とログデータを関連付けて出力することで、どの時点のログデータにフォーカスして障害の原因を調査すればよいかといった情報をユーザUに提供することができる。
ログ抽出部124は、データ取得部121により取得されたログデータから、変化時点検出部123により検出された変化時点と関連するログデータを抽出する。ログ抽出部124は、例えば、対象機器Tにおける構成要素ごとに、上記変化時点を基準として所定の範囲内に発生したログデータを抽出してもよい。
関連情報生成部125は、変化時点における状態変化検出部122により検出された状態変化とログ抽出部124により抽出されたログデータとを関連付ける。そして、関連情報生成部125は、当該関連付けに基づいて、状態変化ログ関連情報を生成する。ここで「状態変化ログ関連情報」とは、上記状態変化と上記ログデータとを関連付けて監視端末200に出力するための情報である。状態変化ログ関連情報は、例えば、ログデータを表示するログ一覧画面D1において、各ログデータのレコードに状態変化を示すフラグやメッセージを付与してもよい。
上記構成によれば、関連情報生成部125は、対象機器Tにおける構成要素の状態変化と当該状態変化と関連する対象機器Tのログデータとを関連付けて監視端末200に出力させることができる。これにより、ユーザUは、状態変化の原因の候補としてログデータに示された対象機器の処理や構成変更などの履歴を把握することができる。
相関パターン算出部126は、相関度変動パターンを算出する。ここで「相関度変動パターン」とは、それぞれの状態データ間における通常時の時系列の相関度の変動パターンである。相関パターン算出部126は、当該算出した相関度変動パターンを状態パターンモデルとしてモデル記憶部に記憶する。相関パターン算出部126は、例えば、複数の対象機器T又は単一の対象機器Tが有する複数の構成要素又は複数の監視項目の組み合わせにおいて、それぞれの通常時の所定の期間における状態データに基づいて、GGM(Graphical Gaussian Model)などの技術を用いて、当該組み合わせの相関度を算出する。相関パターン算出部126は、この際併せて、特定の時間幅で逐次ずらしながら、複数回相関度を算出することで、上記相関度の分散値を算出する。相関パターン算出部126は、上記組み合わせそれぞれについて、上記算出した相関度と当該相関度の分散値を、相関度の変動パターンとしてモデル記憶部に記憶してもよい。
相関度算出部127は、データ取得部121に取得された、複数の対象機器T又は単一の対象機器Tが有する複数の構成要素又は複数の監視項目それぞれの状態データに基づいて、それぞれの状態データ間における時系列の相関関係の変化度を算出する。相関度算出部127は、例えば、複数の対象機器T又は単一の対象機器Tが有する複数の構成要素又は複数の監視項目の組み合わせにおいて、それぞれの状態データに基づいて、GGMなどの技術を用いて、当該組み合わせの状態データ間における時系列の相関関係の変化度を算出してもよい。
異常ログ選別部128は、選別リストを記憶するリスト記憶部を参照して、データ取得部により取得されたログデータのうち対象機器Tの異常に関するログデータか否かを選別する。ここで「選別リスト」とは、対象機器Tの異常に関するログデータか否かを選別するためのリストである。選別リストは、例えば、いわゆる、ログデータに対するブラックリスト又はホワイトリストであってもよい。
通知部129は、ログ抽出部124により抽出されたログデータの少なくとも一部を、選別リストに追加する候補として、ユーザUに通知する。通知部129は、例えば、監視端末200で表示される通知メッセージ画面D2(後述の図7参照)に、上記ログデータの少なくとも一部を選別リストに追加する候補として出力するための情報を生成してもよい。通知部129は、当該生成した情報を監視端末200に送信してもよい。また、通知部129の通知の態様は、他の例として、上記ログデータの少なくとも一部が選別リストに追加する候補である旨を示すメッセージやメールを監視端末200が備えるメールソフトやメッセージソフト宛に送信してもよい。
リスト追加受付部130は、通知された候補のログデータの少なくとも一部に対する、ユーザUによる選別リストへの追加の指定を受け付ける。リスト追加受付部130は、例えば、ダッシュボードに上記ログデータの少なくとも一部に対するユーザUの入力による選別リストへの追加の指定を受け付ける受け付け手段を設けて、当該受け付け手段を介して受け付けてもよい。
リスト更新部131は、リスト追加受付部130により追加の指定を受け付けた候補のログデータの少なくとも一部を、リスト記憶部に記憶される選別リストに追加する。この「リスト記憶部」は、記憶部140に含まれる機能部(後述のリスト記憶部142)であってもよいし、外部の装置が備える機能部であってもよい。
上記構成によれば、リスト更新部131は、対象機器Tにおける構成要素の状態変化に関連する、また、ユーザUが指定されたログを選別リストに追加することができる。このため、上記構成によれば、リスト更新部131は、ファクトベースで抽出されたログにより選別リストを更新することで、ログ単体では分からない状態変化と関連性の高いキーワードをもって選別リストにログデータを選別させることができる。これにより、リスト更新部131は、選別リストの精度を向上させることができる。
評価受付部132は、状態変化ログ関連情報により出力された状態変化の検出に対するユーザUからの妥当性評価の指定を受け付ける。当該妥当性評価の指定を受け付けに関して、例えば、ログ一覧画面D1で表示される状態変化と関連付けられたログデータ(例えば、「疑わしいログ」とされたログデータ)に対して「必要」か「不要」の評価の指定を受け付ける受け付け手段をログ一覧D1に設けてもよい。評価受付部132は、この受け付け手段をもって、ユーザUからログデータに関連付けられた状態変化の検出に対して「必要」か「不要」の妥当性の指定を受け付けてもよい。上記構成によれば、評価受付部132は、各状態変化の検出結果がユーザUにとって過検出又は検出不足などであった場合、その評価を受け付けることができる。
閾値調整部133は、評価受付部132により指定を受け付けた妥当性評価に基づき、所定の第1閾値及び所定の第2閾値の少なくともいずれか一つを調整する。
上記構成によれば、閾値調整部133は、各状態変化の検出結果がユーザUにとって過検出又は検出不足などであった場合、その評価を受け付けて、所定の第1閾値及び所定の第2閾値にフィードバックさせることができる。
モデル構築部134は、所定の学習期間における通常時の対象機器Tにおける構成要素の状態データを学習データとして入力することにより状態パターンモデルを構築する。
モデル再構築指示部135は、状態変化検出部122により検出された状態変化が所定の過誤検出条件を満たした場合、所定の学習期間とは異なる期間における通常時の状態データを学習データとして入力して状態パターンモデル候補の構築をモデル構築部134に指示する。ここで「所定の過誤条件」とは、状態変化の検出が過誤検出であるか否かを判定するための条件である。所定の過誤条件は、例えば、特定の監視項目において、同じような状態変化の検出を所定の回数を超えたこととしてもよい。
比較情報生成部136は、モデル比較情報を生成する。ここで「モデル比較情報」とは、状態変化検出部122で用いられている状態パターンモデルと状態パターンモデル候補とを監視端末200に比較可能に出力するための情報である。モデル比較情報は、例えば、状態パターンモデルと状態パターンモデル候補を同じ状態データを入力させて出力される状態パターンを、それぞれ図4のような波形図で比較表示するためのモデル比較画面(不図示)であってもよい。
モデル受付部137は、モデル比較情報により出力された状態パターンモデル及び状態パターンモデル候補に対する、ユーザUから採用するモデルの指定を受け付ける。モデル受付部137のモデルの指定を受け付けにおいては、例えば、上記モデル比較画面において、状態パターンモデルと状態パターンモデル候補のそれぞれに対して採用する旨を受け付ける受け付け手段を設けてもよい。モデル受付部137は、この受け付け手段をもって、状態パターンモデル及び状態パターンモデル候補に対する、ユーザUから採用するモデルの指定を受け付ける。
単語頻度算出部138は、所定の時間帯ごとのログデータに含まれる各単語の出現頻度の相対度数を算出する。ここで「所定の時間帯」とは、ログデータに含まれる各単語の相対的な出現傾向を計るための時間帯である。所定の時間帯は、例えば、対象システムSの稼働日の稼働時間のうち30分又は1時間ごとに区切られた時間帯であってもよい。単語頻度算出部138は、例えば、所定の時間帯ごとの各単語の出現数を算出する。つぎに単語頻度算出部138は、算出した各単語の出現数に基づいて、所定の時間帯における各単語の出現頻度の相対度数を算出する。
類似度算出部139は、出現頻度データを記憶する出現頻度記憶部を参照して、各単語の出現頻度の相対度数と出現頻度データが示す各単語それぞれの通常時の相対度数との類似度を算出する。ここで「出現頻度データ」とは、通常時の所定の時間帯ごとの対象機器Tのログデータにおける各単語の出現頻度の相対度数を示すデータである。また、この「出現頻度記憶部」は、記憶部140に含まれる機能部(後述の出現頻度記憶部143)であってもよいし、外部の装置が備える機能部であってもよい。類似度算出部139は、例えば、ヒストグラムインセクションなどの技術を用いて、上記類似度を算出してもよい。
記憶部140は、監視に関する各種データ及び各種情報を記憶する。記憶部140は、例えば、監視データ、状態変化ログ関連情報、選別リスト情報、モデル比較情報、又は出現頻度データなどを記憶する。また、記憶部140は、例えば、モデル記憶部141、リスト記憶部142、又は出現頻度記憶部143を備えてもよい。記憶部140は、データベースマネジメントシステム(DBMS)を利用して各種データ及び各種情報を記憶してもよいし、ファイルシステムを利用して各種データ及び各種情報を記憶してもよい。DBMSを利用する場合は、上記情報ごとにテーブルを設けて、当該テーブル間を関連付けて各種データ及び各種情報を管理してもよい。
モデル記憶部141は、状態パターンモデルを記憶する。リスト記憶部142は、選別リスト情報を記憶する。出現頻度記憶部143は、出現頻度データを記憶する。
<4.画面例>
図6〜図7を参照して、監視システム1の画面例を説明する。
図6は、ログ一覧画面D1の例を示す図である。図6に示すように、データ取得部121により取得された対象機器Tのログデータを一覧で表示する。
ログ一覧画面D1は、各ログデータのレコードにおいて、関連付けられた状態変化を示す「疑わしいログ」とするテキストメッセージを「状態」欄に表示してもよい。また、ログ一覧画面D1は、ログデータ一覧の表示において、状態変化と関連付けられたログデータ(本例では、「疑わしいログ」とする)に限定して表示してもよい。また、ログ一覧画面D1は、ログデータ一覧の表示において、状態変化と関連付けられていないログデータ(本例では、「通常のログ」とする)に限定して表示してもよい。また、ログ一覧画面D1は、これらの表示の切り替えを受け付ける受け付け手段(本例では、右上の「疑わしいログ」ボタン及び「通常のログ」ボタン)とする)を設けてもよい。
ログ一覧画面D1は、各ログデータのレコードにおいて、関連付けられた状態変化の詳細を表示する詳細画面に遷移するための受け付け手段(本例では、「疑わしいログ」テキストの右隣りの「詳細」ボタンとする)を設けてもよい。この詳細画面は、例えば、状態データにより描画された図4に示すような波形図を表示したり、上記モデル比較画面を表示したりしてもよい。
図7は、通知メッセージ画面D2の例を示す図である。図7に示すように、通知メッセージ画面D2は、対象システムSの監視においてユーザUに通知するメッセージをリストアップして表示する。通知メッセージ画面D1は、例えば、ログデータの一部(本例では、キーワード「Warning」とする)ブラックリストの追加候補として通知するメッセージを表示する。
<5.動作例>
図8〜図11を参照して、監視サーバ100又は監視システム1の動作例を説明する。なお、以下に示す図5〜図11の動作例の処理の順番は一例であって、適宜、変更されてもよい。
図8は、監視サーバ100における、監視データの取得処理から対象機器Tにおける構成要素の状態変化とログデータの関連付けを出力する情報の生成処理までの流れを示すフロー図である。
図8に示すように、監視サーバ100のデータ取得部121は、対象機器Tから、状態データとログデータとを取得する(S10)。状態変化検出部122は、状態データに基づいて、状態パターンモデルを記憶するモデル記憶部を参照して、状態パターンモデルを用いて状態パターンから逸脱する対象機器Tにおける構成要素の状態変化の検出を判定する(S11)。
状態変化検出部122が対象機器Tにおける構成要素の状態変化を検出した場合(S12のYes)、変化時点検出部123は、当該状態変化が起きた変化時点を検出する(S13)。
ログ抽出部124は、ログデータから、上記変化時点と関連するログデータを抽出する(S14)。関連情報生成部125は、上記変化時点における状態変化とログ抽出部124により抽出されたログデータとを関連付けて状態変化ログ関連情報を生成する(S15)。
監視サーバ100は、監視を終了しない場合(S16のNo)、フローチャートのステップS10の前に戻り監視を継続する。
図9は、監視システム1における、監視の前処理として、対象機器Tにおける構成要素の通常時の状態データを用いて状態パターンモデルを構築する際の相互作用の例を示すシーケンス図である。
図6に示すように、監視サーバ100及び第1対象機器T1と、監視サーバ100及び第2対象機器T2とは、対象機器Tの通常時において、複合フラグメントpara1(Parallel1、以下同じ)が示すエリア内の破線上部と下部にあるメッセージのやり取り及び処理をそれぞれ実行する。また、これらの機器は、所定の学習期間、複合フラグメントpara1が示すエリア内のやり取り及び処理を繰り返し実行してもよい。具体的には、第1対象機器T1は、自身の状態データを収集する(S20)。第1対象機器T1は、収集した状態データを監視サーバ100に送信する(S21)。監視サーバ100は、第1対象機器T1から状態データを取得する(S22)。第2対象機器T2は、搭載されたエージェント300により状態データを収集する(S23)。第2対象機器T2は、収集した状態データを監視サーバ100に送信する(S24)。監視サーバ100は、第2対象機器T2から状態データを取得する(S25)。
監視サーバ100は、所定の学習期間において取得した対象機器Tにおける構成要素の状態データを学習データとして入力することにより状態パターンモデルを構築する(S26)。監視サーバ100は、例えば、状態データを学習データとして入力してそれぞれの状態データ間における相関度変動パターンを算出してもよい。監視サーバ100は、構築した状態パターンモデルをモデル記憶部141に記憶する(S26)。監視サーバ100は、例えば、上記算出した相関度変動パターンを状態パターンモデルとしてモデル記憶部141に記憶してもよい。
図10A〜10Cは、監視システム1における、対象機器Tにおける構成要素の異常時において、状態変化を検出し、当該状態変化とログデータを関連付けて出力する際の相互作用の例を示すシーケンス図である。さらに、図10A〜10Cは、監視システム1における、上記状態変化とログデータとの関連付けを利用して、選別リストの更新や所定の第2閾値の調整する際の相互作用の例も示すシーケンス図である。
図10Aに示すように、監視サーバ100及び第1対象機器T1と、監視サーバ100及び第2対象機器T2とは、いずれかの対象機器Tにおける構成要素の異常時において、複合フラグメントpara2が示すエリア内の破線上部と下部にあるメッセージのやり取り及び処理をそれぞれ実行する。具体的には、第1対象機器T1は、自身の状態データ及びログデータを収集する(S30)。第1対象機器T1は、収集した状態データ及びログデータを監視サーバ100に送信する(S31)。監視サーバ100は、第1対象機器T1から状態データ及びログデータを取得する(S32)。第2対象機器T2は、搭載されたエージェント300により状態データ及びログデータを収集する(S33)。第2対象機器T2は、収集した状態データ及びログデータを監視サーバ100に送信する(S34)。監視サーバ100は、第2対象機器T2から状態データ及びログデータを取得する(S35)。
監視サーバ100は、上記状態データに基づいて、状態パターンモデルを用いて対象機器Tにおける構成要素の状態の予測パターンを算出する(S36)。監視サーバ100は、第1対象機器T1と第2対象機器T2はそれぞれ、当該予測パターンの数値と状態データの数値との差分の変化度と所定の第1閾値とを比較する(S37)。監視サーバ100と監視端末200とは、第1対象機器T1の差分の変化度が所定の第1閾値を超えた場合、複合フラグメントopt1(Option1、以下同じ)が示すエリア内にある処理を実行する。具体的には、監視サーバ100は、状態パターンから逸脱する第1対象機器T1における構成要素の状態変化(以下、「第1状態変化」ともいう)を検出する(S38)。
監視サーバ100は、第1状態変化が起きた変化時点(以下、「第1変化時点」という)を検出する(S39)。監視サーバ100は、第1対象機器T1から取得したログデータから、第1変化時点と関連するログデータ(以下、「第1ログデータ」という)を抽出する(S40)。監視サーバ100は、第1変化時点における第1状態変化と第1ログデータとを関連付けて監視端末200に出力するための状態変化ログ関連情報(以下、「第1状態変化ログ関連情報」という)を生成する(S41)。なお、監視サーバ100は、この状態変化ログ関連情報の生成にあたって、第1ログデータの一部(本例では、キーワード「Warning」とする)を選別リスト(本例では、「ブラックリスト」とする)の追加候補としてユーザUに通知するための情報を状態変化ログ関連情報に含める。
監視サーバ100は、第1状態変化ログ関連情報を監視端末200に送信する(S42)。監視端末200は、監視サーバ100から、第1状態変化ログ関連情報を取得する(S43)。監視端末200は、第1状態変化ログ関連情報に基づき、第1状態変化と第1ログデータとの関連付けをログ一覧画面D1に表示する(S44)。監視端末200は、通知メッセージ画面D2を表示して、第1ログデータの一部を選別リストの追加する候補としてユーザUに通知する(S45)。監視端末200は、第1ログデータの一部に対するユーザUによる選別リストへの追加の指定入力を受け付ける(S46)。
監視端末200は、監視サーバ100に、上記第1ログデータの一部に対する選別リストへの追加の指定を要求する(S47)。監視サーバ100は、第1ログデータの一部に対する、ユーザUによる選別リストへの追加の指定を受け付ける(S48)。監視サーバ100は、追加の指定を受け付けた候補の第1ログデータの一部を、選別リストに追加する(S49)。ステップ49に後続する監視サーバ100及び監視端末200のメッセージのやり取り及び処理を図10Bに示す。
図10Bに示すように、監視サーバ100は、第1対象機器T1及び第2対象機器T2それぞれの状態データに基づいて、それぞれの状態データの数値間における時系列の相関関係の変化度を算出する(S50)。監視サーバ100は、算出した相関度の変化度と所定の第2閾値とを比較する(S51)。監視サーバ100と監視端末200とは、当該比較の結果、相関度の変化度が所定の第2閾値を超えた場合、複合フラグメントopt2が示すエリア内にあるメッセージのやり取り及び処理を実行する。具体的には、監視サーバ100は、第1対象機器T1及び第2対象機器T2における構成要素の状態パターンから逸脱する状態変化(以下、「第2状態変化」という)を検出する(S52)。
監視サーバ100は、第2状態変化が起きた変化時点(以下、「第2変化時点」という)を検出する(S53)。監視サーバ100は、第1対象機器T1及び第2対象機器T2から取得したログデータから、第2変化時点と関連するログデータ(以下、「第2ログデータ」という)を抽出する(S54)。監視サーバ100は、第2変化時点における第2状態変化と第2ログデータとを関連付けて監視端末200に出力するための状態変化ログ関連情報(以下、「第2状態変化ログ関連情報」という)を生成する(S55)。なお、監視サーバ100は、この状態変化ログ関連情報の生成にあたって、第2状態変化の検出に対するユーザUからの妥当性評価の指定を受け付ける受け付け手段を、状態変化ログ関連情報に含める。
監視サーバ100は、第2状態変化ログ関連情報を監視端末200に送信する(S56)。監視端末200は、監視サーバ100から、第2状態変化ログ関連情報を取得する(S57)。監視端末200は、第2状態変化ログ関連情報に基づき、第2状態変化と第2ログデータとの関連付けをログ一覧画面D1に表示する(S58)。また、監視端末200は、モデル比較画面において、上記妥当性評価の指定を受け付ける受け付け手段も表示する。監視端末200は、ログ一覧画面D1で表示した第2状態変化の検出に対する妥当性評価の指定入力をモデル比較画面の受け付け手段により受け付ける(S59)。
監視端末200は、監視サーバ100に、上記妥当性評価の指定を要求する(S60)。監視サーバ100は、第2状態変化の検出に対する、ユーザUによる妥当性評価の指定を受け付ける(S61)。監視サーバ100は、上記指定を受け付けた妥当性評価に基づき、第2状態変化に対応する所定の第2閾値を調整する(S62)。ステップ62に後続する監視サーバ100及び監視端末200のメッセージのやり取り及び処理を図10Cに示す。
図10Cに示すように、監視サーバ100は、取得したログデータに含まれる各単語の所定の時間帯ごとの出現頻度の相対度数を算出する(S70)。監視サーバ100は、出現頻度データを記憶する出現頻度記憶部143を参照して、算出した各単語の出現頻度の相対度数と出現頻度データが示す各単語それぞれの通常時の相対度数との類似度を算出する(S71)。
監視サーバ100は、上記算出した各単語の類似度と所定の第3閾値とを比較する(S72)。監視サーバ100と監視端末200とは、当該比較の結果、各単語の類似度が所定の第3閾値を超えた場合、複合フラグメントopt3が示すエリア内にあるメッセージのやり取り及び処理を実行する。具体的には、監視サーバ100は、各単語を含むログデータの出力元の対象機器Tにおける状態パターンから逸脱する状態変化(以下、「第3状態変化」という)を検出する(S73)。
監視サーバ100は、第3状態変化に関する上記所定の時間帯に基づき、第3状態変化が起きた変化時点(以下、「第3変化時点」という)を検出する(S74)。監視サーバ100は、対象機器Tから取得したログデータから、第3変化時点と関連するログデータ(以下、「第3ログデータ」という)を抽出する(S75)。監視サーバ100は、第3変化時点における第3状態変化と第3ログデータとを関連付けて監視端末200に出力するための状態変化ログ関連情報(以下、「第3状態変化ログ関連情報」という)を生成する(S76)。
監視サーバ100は、第3状態変化ログ関連情報を監視端末200に送信する(S77)。監視端末200は、監視サーバ100から、第3状態変化ログ関連情報を取得する(S78)。監視端末200は、第3状態変化ログ関連情報に基づき、第3状態変化と第3ログデータとの関連付けをログ一覧画面D1に表示する(S79)。
図11は、監視システム1における、対象機器Tにおける構成要素の異常時において、状態変化を検出し、当該状態変化とログデータを関連付けて出力する際の相互作用の例を示すシーケンス図である。さらに、図11は、監視システム1における、状態変化の検出が所定の過誤検出条件を満たしたことにより状態パターンモデルを再構築し、既存のものと切り替える際の相互作用の例も示すシーケンス図である。
図11に示すように、監視サーバ100及び第1対象機器T1と、監視サーバ100及び第2対象機器T2とは、いずれかの対象機器Tにおける構成要素の異常時において、複合フラグメントpara3が示すエリア内の破線上部と下部にあるメッセージのやり取り及び処理をそれぞれ実行する。具体的には、第1対象機器T1は、自身の状態データ及びログデータを収集する(S90)。第1対象機器T1は、収集した状態データ及びログデータを監視サーバ100に送信する(S91)。監視サーバ100は、第1対象機器T1から状態データ及びログデータを取得する(S92)。第2対象機器T2は、搭載されたエージェント300により状態データ及びログデータを収集する(S93)。第2対象機器T2は、収集した状態データ及びログデータを監視サーバ100に送信する(S94)。監視サーバ100は、第1対象機器T2から状態データ及びログデータを取得する(S95)。
監視サーバ100は、上記状態データに基づいて、状態パターンモデルを用いて通常時の時系列の状態パターンから逸脱する対象機器Tにおける構成要素の状態変化を検出する(S96)。監視サーバ100と監視端末200は、当該状態変化が所定の過誤検出条件を満たした場合、複合フラグメントopt3が示すエリア内にあるメッセージのやり取り及び処理を実行する。具体的には、監視サーバ100は、所定の学習期間とは異なる期間における通常時の状態データを学習データとして入力して状態パターンモデル候補の構築をモデル構築部に指示する(S98)。監視サーバ100は、所定の学習期間とは異なる期間における通常時の対象機器Tにおける構成要素の状態データを学習データとして入力することにより状態パターンモデルを構築する(S99)。
監視サーバ100は、状態変化検出部で用いられている現行の状態パターンモデルと状態パターンモデル候補とを監視端末200に比較可能に出力するためのモデル比較情報を生成する(S100)。監視サーバ100は、モデル比較情報を監視端末200に送信する(S101)。監視端末200は、監視サーバ100からモデル比較情報を取得する(S102)。監視端末200は、モデル比較情報に基づき、モデル比較画面を表示する(S103)。監視端末200は、モデル比較画面により出力された現行の状態パターンモデル及び状態パターンモデル候補に対する、ユーザUから採用するモデルの指定を受け付ける(S104)。
監視端末200は、監視サーバ100に、上記採用するモデルの指定を要求する(S105)。監視サーバ100は、現行の状態パターンモデル及び状態パターンモデル候補に対する、ユーザUから採用するモデルの指定を受け付ける(S106)。監視サーバ100は、状態パターンモデル候補を採用する指定を受け付けた場合、複合フラグメントopt4−1が示すエリア内にある処理を実行する。具体的には、監視サーバ100は、現行の状態パターンモデルから状態パターンモデル候補に切り替える(S107)。
<6.ハードウェア構成>
図12を参照して、上述してきた監視サーバ100をコンピュータ800により実現する場合のハードウェア構成の一例を説明する。なお、それぞれの装置の機能は、複数台の装置に分けて実現することもできる。
図12に示すように、コンピュータ800は、プロセッサ801と、メモリ803と、記憶装置805と、入力I/F部807と、データI/F部809と、通信I/F部811、及び表示装置813を含む。
プロセッサ801は、メモリ803に記憶されているプログラムを実行することによりコンピュータ800における様々な処理を制御する。例えば、監視サーバ100の制御部120が備える各機能部などは、メモリ803に一時記憶された上で、主にプロセッサ801上で動作するプログラムとして実現可能である。
メモリ803は、例えばRAM(Random Access Memory)などの記憶媒体である。メモリ803は、プロセッサ801によって実行されるプログラムのプログラムコードや、プログラムの実行時に必要となるデータを一時的に記憶する。
記憶装置805は、例えばハードディスクドライブ(HDD)やフラッシュメモリなどの不揮発性の記憶媒体である。記憶装置805は、オペレーティングシステムや、上記各構成を実現するための各種プログラムを記憶する。この他、記憶装置805は、監視データ、状態変化ログ関連情報、選別リスト情報、モデル比較情報、又は出現頻度データを登録するテーブルと、当該テーブルを管理するDBを記憶することも可能である。このようなプログラムやデータは、必要に応じてメモリ803にロードされることにより、プロセッサ801から参照される。
入力I/F部807は、ユーザからの入力を受け付けるためのデバイスである。入力I/F部807の具体例としては、キーボードやマウス、タッチパネル、各種センサ、ウェアラブル・デバイスなどが挙げられる。入力I/F部807は、例えばUSB(Universal Serial Bus)などのインタフェースを介してコンピュータ800に接続されても良い。
データI/F部809は、コンピュータ800の外部からデータを入力するためのデバイスである。データI/F部809の具体例としては、各種記憶媒体に記憶されているデータを読み取るためのドライブ装置などがある。データI/F部809は、コンピュータ800の外部に設けられることも考えられる。その場合、データI/F部809は、例えばUSBなどのインタフェースを介してコンピュータ800へと接続される。
通信I/F部811は、コンピュータ800の外部の装置と有線又は無線により、インターネットNを介したデータ通信を行うためのデバイスである。通信I/F部811は、コンピュータ800の外部に設けられることも考えられる。その場合、通信I/F部811は、例えばUSBなどのインタフェースを介してコンピュータ800に接続される。
表示装置813は、各種情報を表示するためのデバイスである。表示装置813の具体例としては、例えば液晶ディスプレイや有機EL(Electro−Luminescence)ディスプレイ、ウェアラブル・デバイスのディスプレイなどが挙げられる。表示装置813は、コンピュータ800の外部に設けられても良い。その場合、表示装置813は、例えばディスプレイケーブルなどを介してコンピュータ800に接続される。また、入力I/F部807としてタッチパネルが採用される場合には、表示装置813は、入力I/F部807と一体化して構成することが可能である。
なお、本実施形態は、本発明を説明するための例示であり、本発明をその実施の形態のみに限定する趣旨ではない。また、本発明は、その要旨を逸脱しない限り、さまざまな変形が可能である。さらに、当業者であれば、以下に述べる各要素を均などなものに置換した実施の形態を採用することが可能であり、かかる実施の形態も本発明の範囲に含まれる。
[変形例]
なお、本発明を上記実施形態に基づいて説明してきたが、以下のような場合も本発明に含まれる。
上記実施形態に係る監視サーバ100における各構成の少なくとも一部は、対象機器Tに搭載するエージェント300又は監視端末200が備えてもよい。