【実施例1】
【0037】
図2は、実施例1に係わるイベント監視システムの構成を示すブロック図である。イベント監視システムは管理計算機100とディスプレイ105を備えており、ITシステム120からのイベントを監視する。ITシステム120の中には複数の計算機130で構成されているものもある。
【0038】
管理計算機100は、イベント管理プログラム500とガイド引き当てプログラム600を実行する計算機である。上述したイベント管理部21はイベント管理プログラム500により実現され、上述したガイド引き当て部22はガイド引き当てプログラム600により実現される。
【0039】
管理計算機100は、LAN(Local Area Network)110を介して、監視対象であるITシステム120と接続されている。管理計算機は、CPU101、メモリHard Disk Drive)103、ディスプレイ105を備える。HDD103には、イベント管理プログラム500およびガイド引き当てプログラム600と、これらのプログラムが参照するデータを記録したイベントテーブル200、ガイドテーブル300、およびガイド引き当て結果テーブル400が格納される。イベント管理プログラム500、ガイド引き当てプログラム600は、メモリ102へロードされ、CPU101上で実行される。
【0040】
ITシステム120は監視対象である。ITシステム120上のエージェント(不図示)が発行するイベントは管理計算機100にて受信される。監視オペレータがディスプレイ105の表示を見ながらイベント監視業務を行う。
【0041】
ITシステム120は、一例として複数の計算機130とその上で動作するソフトウェアプログラム(図示せず)を有して構成される。計算機130は、ハードウェアとしては、管理計算機100と同様の構成要素を持つ計算機である。計算機130上では、OS(不図示)やミドルウェア(不図示)、各種の業務プログラム(不図示)、それらハードウェアおよびソフトウェアの動作を監視するエージェント(不図示)が動作する。エージェントは、それぞれの監視対象の性能や生死が特定の条件を満たすと、イベントを生成し、管理計算機100へ送付する。
【0042】
管理計算機100上のイベント管理プログラム500は、イベントを受信し、イベントテーブル200へ格納する。ガイド引き当てプログラム600は、ガイドテーブル300からガイドのデータを読み込み、イベントテーブル200内の新着イベントに対するガイド引き当て処理を行い、その結果をガイド引き当て結果テーブル400へ格納する。
【0043】
イベントと、同イベントに対するガイド引き当ての結果とは、ディスプレイ105に表示される。監視オペレータは、その表示を確認し、イベントに対するガイドの引き当てが妥当であるか否か判断し、引き当てに誤りがあれば、不図示の入力装置を用いて、その旨のフィードバックを管理計算機100に入力する。
【0044】
図3は、イベントテーブル200の構成例を示す図である。イベントテーブル200は、エージェントから送られた各イベントが持つデータを格納するためのテーブルである。イベントテーブル200には、イベントごとに行が作成される。イベントテーブル200の各行は、例えば、個々のイベントを一意に識別するイベントID201、イベントの発生時刻202、発生した事象を人に伝えるための文字列で示されたイベントメッセージ203、イベントが発生した計算機130を示す発生元204、イベントを発行したエージェントの種類を示すエージェント種別205が格納される。エージェント種別205には、例えば、OSを監視するエージェントであれば「OS」、データベース等のミドルウェアを監視するエージェントであれば「ミドル」、ユーザ定義のエージェントであれば「ユーザ」というように、エージェトの種別を短縮した情報が格納される。
【0045】
また、イベントテーブル200は、
図3に示したデータに限らず、イベントが持つ多様な属性データを格納することができる。
【0046】
図4は、ガイドテーブル300の構成例を示す図である。ガイドテーブル300は、監視オペレータがイベントをエスカレーションすべきか否かを判断するのに使用するガイドのデータと、イベントに対する自動的なガイドの引き当てに使われる閾値などのデータと、を格納するテーブルである。エスカレーションは、監視オペレータがイベントを上位の管理者に通報することである。監視オペレータは、イベント対応ガイドに含まれるガイドに従って、エスカレーションの要否を判断し、エスカレーション先の管理者に通報する。
【0047】
ガイドテーブル300には、ガイドごとに行が作られる。ガイドテーブル300の各行は、例えば、ガイドに対して一意に付与された識別子であるガイドID301、当該ガイドに対応するイベントのイベントメッセージのサンプルであるガイドメッセージ302、受信したイベントのエスカレーション要否を判定するためのルールである判定ルール304、エスカレーション先の部署である通報先303が格納される。
【0048】
判定ルール304は、図に示すような、プログラムでエスカレーション要否を判定するためのIF−THENルールであってもよいし、人が読んで判定するための基準を文字列で記載した文章であってもよい。
【0049】
ガイドテーブル300には、イベントに対する自動的なガイドの引き当てを行うために使用するデータである、閾値305、学習完了フラグ306、必須キーワード307、およびエージェント種別308が格納される。閾値305は、当該ガイドの引き当ての判定に使われる数値である。イベントメッセージとガイドメッセージとの類似度に関する閾値であり、図の例では0.0〜1.0までの数値が格納されるものとなっている。閾値が未学習であり、閾値に有効な数値がない場合は、「n/a」が格納される。
【0050】
学習完了フラグ306は、当該ガイドをイベントに自動的に引き当てるための閾値の学習が完了したか否かを示すデータである。図の例では、学習が完了していれば「Y」、完了していなければ「N」が格納される。
【0051】
必須キーワード307には、当該ガイドを引き当てるイベントメッセージに必ず含まれる文字列(複数可能)を格納する。
【0052】
必須キーワード307には、当該ガイドを引き当てるべきイベントのイベントメッセージに必ず含まれる単語の文字列を格納する。1つのガイドに対して複数の単語を設定することが可能である。当該ガイドを引き当てるべきイベントのイベントメッセージに必ず含まれる単語がない場合には、必須キーワード307には「なし」が格納される。
【0053】
エージェント種別308は、上述したイベントテーブル200におけるエージェント種別205と同じ情報であり、発生したイベントのイベントメッセージ203をもとにして当該ガイドの行を作成した際に、もとにしたイベントを発行したエージェントのエージェント種別205の値をそのまま格納する。これらの、イベントに対する自動的なガイドの引き当てに使用されるデータの具体的な使い方は後ほど詳しく説明する。
【0054】
図5は、ガイド引き当て結果テーブル400の構成例を示す図である。ガイド引き当て結果テーブル400は、イベントごとに自動的なガイドの引き当てが行われた結果と、その結果が妥当か否かに関する監視オペレータからのフィードバックのデータを格納するテーブルである。
【0055】
ガイド引き当て結果テーブル400は、各行にイベントに対するガイド引き当て結果が格納される。ガイド引き当て結果テーブル400の各行には、例えば、イベントID401、当該イベントに対して引き当てたガイドのガイドID402、イベントメッセージ203と当該ガイドのガイドメッセージ302との類似性を示す数値である類似度スコア403、ガイドを引き当てるべきか否かを示す引き当て要否404、エスカレーション要否の判定結果である通報要否405、監視オペレータからのフィードバック結果を格納するフィードバック406を格納する。イベントID401は、イベントテーブル200のイベントID201と同じ形式のものである。ガイドID402は、ガイドテーブル300のガイドID301と同じ形式のものである。ガイド引き当て結果テーブル400に含まれる、これらのデータの算出方法や、格納される値については後ほど詳しく説明する。
【0056】
1つのイベントに対して、複数のガイド引き当て結果が格納されてよい。例えば、
図5では、イベントIDが「E1」である1つのイベントに対して、ガイドIDが「G1」のガイドのガイド引き当て結果と、ガイドIDが「G3」のガイドのガイド引き当て結果が格納されている。また、ガイド引き当て結果として、イベントに対してガイドの引き当て要すなわちそのイベントにそのガイドが該当すると判断した場合だけでなく、イベントに対してガイドを引き当て不要と判断した場合にも、そのイベントとガイドとのガイド引き当て結果をも格納してよい。
図5の例では、イベントIDが「E2」のイベントに対してガイドIDが「G99」であるガイドを引き当てる必要がないと判断した、ガイド引き当て結果が示されている。
【0057】
以下、実施例1におけるいくつかの処理の流れを説明する。
【0058】
まず、
図6および
図7を用いて、ガイド引き当てプログラム600による閾値学習処理を説明する。
図6は、ガイド引き当てプログラム600が、過去のイベントデータから自動的なガイド引き当てのための閾値学習処理の一例を示すフローチャートである。
図7は、
図6の処理の一部であるイベントメッセージとガイドメッセージの類似度スコアを算出する処理を示す補足図である。
【0059】
まず、
図7を用いて、類似度スコアの算出方法の一例を説明する。
図7には、イベントメッセージ203とガイドメッセージ302の類似度スコアを算出する処理の流れが示されている。
【0060】
はじめに、ガイド引き当てプログラム600は、イベントメッセージ203とガイドメッセージ302の単語行列をそれぞれ作成する。単語行列とは、各文書(ここではメッセージ)に含まれる単語を要素として、1つ以上の文書をベクトルで表したものである。単語行列の作成方法には、例えば、複数の文書をそれぞれ単語に分割し、それぞれの文書を行とし各単語を列とし、ある文書がある単語を持っている場合その文書とその単語で特定される行列のセルを「1」とし、それ以外のセルを「0」とする方法がある。単語行列は、他の方法で作成してもよい。例えば、連続する単語を一つの列として構成してもよい(Ngram)。また、セルの値を0または1ではなく、単語の出現頻度を考慮した値としてもよい。
【0061】
図7の例では、ガイドIDが「G1」のガイドメッセージ302は、「Word1 Word2 Word3」という3つの単語を有する文字列である。この場合、単語行列におけるG1の行は、Word1〜3の列が「1」となり、それ以外の列は「0」となる。また、このガイドメッセージ302の単語数701は「3」となる。但し、単語数701の列は、単語行列には含まれない。
【0062】
ガイド引き当てプログラム600は、同様にして、イベントメッセージ203からも単語行列を作成する。
図5の例ではイベントメッセージ203は、イベントIDが「E1」であるイベントメッセージの1つのみである。図に示すイベントIDが「E1」のイベントメッセージ203は「Word1 Word2 Word5」という3つの単語を有する文字列である。したがって、作成される単語行列は1行のみであり、そのWord1、2、5の列が「1」である。
【0063】
次に、ガイド引き当てプログラム600は、ガイドメッセージの単語行列の各行とイベントメッセージの単語行列の行とを比較し、共通の単語を数える。
図7の例では、ガイドIDが「G1」の行とイベント「E1」の行とにおいて、Word1の列とWord2の列はどちらも「1」であり、Word3の例とWord5の例は片方だけが「1」である。そのため共通する単語の個数(一致単語数)は「2」となる。
【0064】
次に、ガイド引き当てプログラム600は、各ガイドに含まれる単語の個数である単語数701に対する一致単語数702の割合を求め、類似度スコア703とする。ガイドIDが「G1」のガイドの単語数が「3」であり、ガイドIDが「G1」のガイドとイベントIDが「E1」のイベントとの一致単語数が「2」であることから、ガイドIDが「G1」のガイドのガイドメッセージとイベントIDが「E1」のイベントのイベントメッセージの類似度スコア703は2/3=0.67となる。
【0065】
ここではメッセージ同士の類似度スコアを算出する方法の一例を説明したが、類似度スコアの算出する方法は他にもあり、算出方法をこの例に限定するものではない。なお、類似度スコアの算出は、以後、いくつかの処理の中に現れるが同じ処理によるものとする。
【0066】
本実施例では、上述のように、ガイド引き当てプログラム600は、ガイドメッセージを構成する単語のうちどの程度の割合の単語がイベントメッセージに含まれているかという指標を類似度として用いる。これにより、ガイドメッセージとイベントメッセージとが共有する単語を探索する単純な処理でガイドメッセージとイベントメッセージの類似度を算出することができる。
【0067】
図6には、ガイド引き当てプログラム600が、過去のイベントデータから自動的なガイド引き当てのための閾値学習処理の一例が示されている。この処理は、例えば、管理計算機100によるイベントにガイドを自動的に引き当てる機能を初めて有効にしたときに実行される。あるいは本処理を定期的に実行するようにしてもよい。例えば、後述するような新規のイベントを受信するごとに、監視オペレータによるフィードバックの入力を取得する処理を適用しない場合に本処理を定期的に実行してもよい。
【0068】
本処理は、所与の期間(例えば3ヶ月)の過去に発生したイベントのイベントメッセージと、イベント対応ガイドに含まれる全てのガイドのガイドメッセージとを総当たりで類似度スコアを計算し、得られた類似度スコアのデータをガイド毎に分析し、ガイドをイベントに引き当てるか否かを判定する閾値を決定する処理である。
【0069】
過去のイベントの中に、あるガイドを引き当てるべきイベントがあれば、そのイベントのイベントメッセージとそのガイドのガイドメッセージとの類似度を示す類似度スコアは、そのガイドの他のイベントとの類似度を示す類似度スコアよりも高くなると考えられる。そのような高い類似度スコアを示す場合には閾値を超えることになるように閾値を自動的に設定する。
【0070】
ステップS100では、ガイド引き当てプログラム600は、ガイドテーブル300の全行の内、未処理のガイドを1つ選択する。
【0071】
ステップS101では、ガイド引き当てプログラム600は、選択したガイドのガイドメッセージ302の単語行列を作成する。
【0072】
ステップS102では、ガイド引き当てプログラム600は、イベントテーブル200から、過去イベントデータを取得する。すなわち、イベントテーブル200の発生時刻202を参照し、発生時刻が所与の期間内であるイベントデータを、特にそのイベントのイベントメッセージ203を読み込む。このとき、所与の期間内のイベントのデータではなく、蓄積されている全てのイベントのデータを読み込むことにしても良い。
【0073】
ステップS103では、ガイド引き当てプログラム600は、読み込んだ各イベントメッセージ203の単語行列を作成する。
【0074】
ステップS104では、ガイド引き当てプログラム600は、ステップS101で作成したガイドメッセージ302の単語行列と、ステップS103で作成したイベントメッセージ203の単語行列とを比較し、ガイドメッセージ302とイベントメッセージ203との類似度を示す類似度スコアを算出する。
【0075】
ステップS105では、ガイド引き当てプログラム600は、ステップS100で選択したガイドが該当する可能性のあるイベントが存在するか否か判定する。類似度スコアが所定の足きり閾値以上のイベントが1つ以上存在するか否かをチェックする。選択されているガイドのガイドメッセージと、読み込んだ全てのイベントのイベントメッセージとの類似度スコアが足きり閾値未満であれば、ガイド引き当てプログラム600は、選択されているガイドのガイドメッセージと、読み込んだイベントのイベントメッセージとの類似度スコアのうち1つでも足きり閾値以上ものもがあれば、ガイド引き当てプログラム600は、そのガイドを引き当てるべきイベントが存在する可能性があると判定し、ステップS105へ進む。
【0076】
ここで足きり閾値は、例えば0.5といった類似度スコアの所定の程度を示す数値である。足切り閾値が0.5の場合、ガイドメッセージ302とイベントメッセージ203に共通する単語が、ガイドメッセージ302の単語数の半分以上であれば、そのガイドメッセージ302とそのイベントメッセージ203の類似度スコアが足切り閾値を超えることになる。ここで上げた足きり閾値はひつつの例であり、実行環境に合わせた、他の数値でも構わない。
【0077】
なお、類似度スコアが所定の足きり閾値以上のイベントが1つ以上存在すると判定された場合、ガイド引き当てプログラム600は、類似度スコアが足きり閾値未満であった全てのイベントを、選択されているガイドを引き当てる必要のないものと分類する。そうすることにより、以下に示すステップS106およびステップS107の処理対象を削減することができる。
【0078】
ステップS106では、ガイド引き当てプログラム600は、選択されているガイドを引き当てるべきイベントが1つ以上存在する可能性がある場合、ガイドを引き当てるイベントと、そうでないイベントとを類似度スコアによって分離するための仮の閾値を作成する。仮の閾値を作成する方法には様々な方法が考えられる。例えば、選択されているガイドのガイドメッセージと全てのイベントのイベントメッセージとの類似度スコアの最大値から所定の数値(例えば0.05などの小さな値)を減算する、といった簡易な方法でもよい。あるいは、選択されているガイドのガイドメッセージとの類似度スコアが最大であるイベントのイベントメッセージに含まれガイドメッセージの単語と一致した単語のうち、所定の数(例えば1〜2個)の単語が一致しなかったと仮定して算出した類似度スコアを仮閾値としてもよい。また、選択されているガイドのガイドメッセージと全てのイベントのイベントメッセージとの類似度スコアのヒストグラムを作成し、ヒストグラムに生じる複数のグループのうち最も類似度スコアが高いグループと他のグループとを分離するように仮閾値を設定してもよい。
【0079】
ステップS107では、ガイド引き当てプログラム600は、選択されているガイドのガイドメッセージと各イベントのイベントメッセージとの類似度スコアを仮閾値と比較することにより、イベントを、選択されているガイドを引き当てるべきイベント(引き当て要)と、引き当てる必要のないイベント(引き当て不要)とに分類する。選択されているガイドのガイドメッセージとの類似度スコアが、ステップS106で設定した仮閾値以上であれば、そのガイドメッセージを有するガイドを引き当て要に分類し、それ以外のガイドを引き当て不要に分類する。
【0080】
ステップS108では、ガイド引き当てプログラム600は、選択されているガイドについて、引き当て要のイベントと、引き当て不要のイベントとをディスプレイ105に表示し、その分類結果が妥当であるか否かを、監視オペレータによるフィードバックの入力として受領する。
【0081】
図11は、フィードバックを入力する画面例を示す図である。
図11を参照すると、一括フィードバック800のペインの中に、表801と、OKボタン850と、キャンセルボタン851とがある。表801の各行810、811、812にガイド毎の情報が表示されている。ガイド毎の情報として、そのガイドのガイドID820およびガイドメッセージ821に加え、引き当て要のイベントに関する情報と、引き当て不要のイベントに関する情報と、が表示されている。引き当て要のイベントに関する情報および引き当て不要のイベントに関する情報のそれぞれに、ガイド引き当て822、イベントメッセージ823、および、フィードバック824がある。
【0082】
ガイド引き当て822には、ガイドごとに「要」と「不要」がある。「要」の場合、隣のイベントメッセージ823に、ステップS107においてガイド引き当て要に分類されたイベントのイベントメッセージが表示される。
【0083】
図11の例では、ガイド引き当て要に分類されたイベントのうち、1つのイベントのイベントメッセージが表示されている。ここでは、この1つのイベントの選択方法として、ガイド引き当て「要」に分類されたイベントのうち、類似度スコアが最も低いイベントを選択する方法が採られる。ただし、1つのイベントメッセージを表示するというには一例にすぎず、表示するイベントメッセージは複数個であってもよい。例えば、全てのイベントのイベントメッセージをスクロール可能に表示してもよい。
【0084】
ガイド引き当て822が「不要」の場合、隣のイベントメッセージ823には、ステップS107においてガイド引き当て不要に分類されたイベントのうち、類似度スコアが最も高い値であったイベントのイベントメッセージが表示される。引き当て不要と判定したイベントの中で類似度スコアが最も高い値のイベントのイベントメッセージを表示し、そのフィードバックを得ることで、閾値が高すぎて本来引き当て要とすべきイベントメッセージが引き当て不要と判定されているかどうかを知得することができる。
【0085】
ガイド引き当て822が「要」と「不要」のいずれの場合も、該当するイベントが存在しない場合、イベントメッセージ823に「n/a」が表示される。
図11の例では、行811において、ガイド引き当て822が「要」のイベントが存在しないため、「n/a」が表示されている。
【0086】
フィードバック824は、ガイド引き当ての要否の判定結果が妥当か否かを監視オペレータが入力する列である。各行について「OK」830と「NG」831のどちらかを選択できる。判定結果が妥当であれば、「OK」830を、判定結果が妥当でなければ「NG」831を選択する。
【0087】
「NG」831を選択すると、イベントメッセージ823には別のイベントのイベントメッセージが表示される。例えば、ガイド引き当て822が「要」の行でフィードバック824の「NG」831が選択されると、それまでイベントメッセージ823に表示されていたイベントの次に類似度スコアが低いイベントのイベントメッセージが表示される。そして、このとき、ステップS106で作成された仮閾値は、それまでイベントメッセージが表示されていたイベントがガイド引き当て不要となり、次にイベントメッセージが表示されたイベントがガイド引き当て要となるような値に更新される。
【0088】
次に、この画面から、必須キーワードを入力するための操作について説明する。
図11の例では、行812のガイドメッセージ821に「ジョブJ1が失敗しました」というメッセージ文が設定されている。そして、ガイド引き当て822が「要」のイベントメッセージ823には「ジョブJ2が失敗しました」というメッセージ文が表示され、ガイド引き当て822が「不要」のイベントメッセージ823には「ジョブJ1が遅延しました」というメッセージ文が表示されている。
【0089】
ここで、この行812に表示されているガイドIDがG3のガイドは、ジョブ番号の「J1」のイベントに引き当てるガイドであるとする。したがって、ジョブ番号の「J1」が一致していることが必須であるが、ガイド引き当て822が「要」のイベントメッセージ823には、ジョブ番号が「J2」のイベントが表示されている。イベントメッセージ823のジョブ番号の「J1」の部分以外がガイドメッセージ821のメッセージ文と一致しているため類似度スコアは高い値を示すからである。しかし、ガイド引き当て822が「要」という判断は誤りである。
【0090】
このような場合には必須キーワードを設定するのが有効である。そこでガイドメッセージ821のメッセージ文において必須キーワードに設定したい単語、ここでは「J1」の部分840を例えばマウスで選択し、マウスを右クリックするとメニュー841が開く。メニュー841から必須キーワードに登録841という項目を選択すると、「J1」という単語が必須キーワードとして登録され、ガイドメッセージとの類似度スコアが閾値以上であっても「J1」という単語を含んでいないイベントメッセージを有するイベントには、このガイドが引き当てられないようになる。なお、ここで選択した必須キーワードは、後述するステップS112において、ガイド引き当てプログラム600がガイドテーブル300の必須キーワード307へ保存される。
【0091】
図6へ戻り、ステップS108以降の処理の説明を続ける。
【0092】
ステップS108では、ガイド引き当てプログラム600は、
図11で説明したようにして入力された、ガイドごとのイベントメッセージに対する引き当ての要否判定が妥当か否かの情報と、必須キーワード(入力された場合)の情報とを受領する。ここで、当該ガイドについて、そのガイドを引き当てるべきイベントと、そのガイドを引き当てる必要がないイベントとが確定する。
【0093】
ステップS109では、ガイド引き当てプログラム600は、選択されているガイドを引き当てるべきイベントが、過去のイベントの中に1つ以上存在しているか否か判定する。例えば、
図11の行811のように、ガイド引き当て822が「要」のイベントメッセージ823が「n/a」である場合は、そのガイドを引き当てるべきイベントが1つもないことを意味する。この場合、ガイド引き当てプログラム600は、ステップS110へ進む。そのガイドを引き当てるべきイベントが1つ以上ある場合、ガイド引き当てプログラム600は、ステップS113へ進む。
【0094】
ステップS113〜ステップS114の処理は、そのガイドをイベントに引き当てるか否かの判定のための閾値の学習ができた場合の処理である。ステップS110〜ステップS111の処理は、その閾値の学習ができなかった場合の処理である。
【0095】
ステップS110およびステップS111は、閾値を学習することができなかった場合にガイドテーブル300における当該ガイドの学習完了フラグ306および閾値305の値を設定する処理である。ステップS110では、ガイド引き当てプログラム600は、当該ガイドの学習完了フラグ306の値を「N」に設定する。ステップS111では、ガイド引き当てプログラム600は、閾値305を、当該ガイドに対して、ガイド引き当て不要に分類されたイベントの類似度スコアのうち最も高い類似度スコアの値を閾値305に設定する。
【0096】
ステップS113およびS114は、閾値を学習することができた場合にガイドテーブル300における当該ガイドの学習完了フラグ306および閾値305の値を設定する処理である。ステップS113では、ガイド引き当てプログラム600は、当該ガイドの学習完了フラグ306を「Y」に設定する。ステップS114では、ガイド引き当てプログラム600は、閾値305を、ステップS106で作成した仮閾値とする。
【0097】
ステップS112では、ガイド引き当てプログラム600は、ステップS108で受領した必須キーワードがあれば、ガイドテーブル300における当該ガイドの必須キーワード307へ、受領した必須キーワードを登録する。
【0098】
ステップS115では、ガイド引き当てプログラム600は、全てのガイドに対して一連の処理を完了したかチェックし、完了していなければステップS100へ戻る。全てのガイドに対して一連の処理が完了していれば、ガイド引き当てプログラム600は、最後にステップS116にて、閾値の学習が完了していないガイドの閾値を推定する閾値推定用回帰器710を作成し、処理を終了する。
【0099】
続いて、閾値推定用回帰器710について説明する。
【0100】
図8は、閾値推定用回帰器710の作成と閾値推定の流れについて説明するための図である。ここでは閾値推定用回帰器710の作成について説明する。閾値推定については後述する。
【0101】
閾値推定用回帰器710は、閾値の学習が完了していないガイド、すなわち、ガイドテーブル300の学習完了フラグ306が「N」であるガイドの閾値を推定するものである。閾値推定用回帰器710は回帰問題の機械学習により作成される。回帰分析に用いるアルゴリズムは特に限定されない。例えば、線形回帰による回帰分析を行ってもよいし、Random Forestによる回帰分析や、Support Vector Regresionあるいはニューラルネットワークによる回帰分析を行ってもよい。
【0102】
閾値推定用回帰器710の学習による作成は次の手順で行う。
【0103】
ガイド引き当てプログラム600は、まず、ガイドテーブル300の行のうち、学習完了フラグ306が「Y」、つまり閾値の学習が完了したガイドの行を取り出す。ガイド引き当てプログラム600は、次に、取りだしたガイドのガイドメッセージ302を基にガイドメッセージの単語行列700を作成する。単語行列の作成方法は、例えば、
図7を用いて上述した方法でよい。ガイド引き当てプログラム600は、次に、ガイドメッセージの単語行列700を説明変数とし、対応するガイドの学習済みの閾値305を目的変数として、前述した回帰分析のアルゴリズムを用いて回帰器を作成する。
【0104】
そして、この作成した閾値推定用回帰器710を用いて、閾値の学習が完了していないガイドの閾値を推定するときは、閾値を推定したいガイドメッセージの単語行列730を上述と同様の方法で作成し、その単語行列を閾値推定用回帰器710へ入力すると、閾値推定用回帰器710から閾値の推定値720が出力される。
【0105】
本実施例による閾値の推定手法が有効に働く理由を説明する。
【0106】
前述のとおり、大規模なITシステムの場合、イベント対応ガイドに含まれるガイドの数が膨大になる。これらガイドの中には、ガイドメッセージの文言が非常に良く似たものが多数ある。そして、ガイドメッセージの文言が類似していると、その引き当て判定用の閾値も似た値になることが多い。閾値推定用回帰器710の役割は、あるガイドメッセージの文言と、その確定した学習済の閾値との対応関係を学習し、そのガイドメッセージと文言が似ている他のガイドメッセージの閾値の推定を可能にすることである。これにより、閾値の学習が完了していないガイドメッセージについても不要なガイドを引き当てる回数を低減することができる。その結果、後述する新着イベントに対するガイド引き当て結果が妥当か否かのフィードバックを監視オペレータに入力させる回数を削減することができる。
【0107】
図9は、新着イベントに対するガイド引き当て処理の流れの一例を示すフローチャートである。この処理は、イベント管理プログラム500が、新着イベントを受信してイベントテーブル200へイベントのデータを登録した後、当該イベントに対する処理として、ガイド引き当てプログラム600により実行される。
【0108】
ステップS200では、ガイド引き当てプログラム600は、必須キーワード307が設定されているガイドのうち、新着イベントのイベントメッセージにその必須キーワード307が含まれていないガイドを除外することにより、対象のガイドを絞り込む。その際、ガイド引き当てプログラム600は、まず、ガイドテーブル300のデータを読み込み、各ガイドの必須キーワード307を取得する。次に、ガイド引き当てプログラム600は、新着の当該イベントのイベントメッセージと、取得した必須キーワード307とを対比し、当該イベントのイベントメッセージに必須キーワード307が含まれるガイドを引き当て候補とする。また、ガイド引き当てプログラム600は、必須キーワード307が「なし」であるガイドも引き当て候補とする。また、ガイド引き当てプログラム600は、必須キーワード307に複数の必須キーワードが格納されているガイドについては、全ての必須キーワードが当該イベントのイベントメッセージに含まれているガイドのみを引き当て候補とする。
【0109】
ステップS201では、ガイド引き当てプログラム600は、ステップS200で引き当て候補とされた全てのガイドのガイドメッセージ302と、当該イベントのイベントメッセージとの類似度スコアを計算する。
【0110】
ステップS202では、ガイド引き当てプログラム600は、計算した類似度スコアが高い順に、ステップS203〜ステップS208の処理を未だ行っていないガイドを1つ選択する。
【0111】
ステップS203では、ガイド引き当てプログラム600は、ステップS202で選択した当該ガイドの学習完了フラグ306を参照し、学習完了フラグ306が「Y」であるか「N」であるかを判定する。学習完了フラグ306の値が「Y」であれば、ガイド引き当てプログラム600はステップS204へ進む。学習完了フラグ306の値が「N」であればガイド引き当てプログラム600はステップS205へ進む。
【0112】
ステップS204では、ガイド引き当てプログラム600は、当該ガイドの学習済みの閾値、すなわち、閾値305を取得する。
【0113】
一方、ステップS205では、ガイド引き当てプログラム600は、閾値の学習が完了していないため、閾値推定用回帰器710を用いて閾値を推定し、推定した推定値を閾値に設定する。閾値の推定方法は、
図8を用いた前述の説明の通りである。なお、推定された閾値を用いるのではなく、推定された閾値から一定値を減算して得た値を用いることにしてもよい。例えば、類似度スコアが正規化され、0〜1の範囲の値を取るものである場合に、推定された閾値から0.05を減算した値を用いることにしてもよい。これは推定された閾値が高すぎて、新着イベントに引き当てるべきガイドを引き当てずに見逃してしまうリスクを低減するものである。
【0114】
ステップS206では、ガイド引き当てプログラム600は、ステップS201で算出した類似度スコアと閾値とを比較する。類似度スコアが閾値以上であれば、ガイド引き当てプログラム600は、当該ガイドは当該イベントに対して引き当てるべきものと判定しステップS207へ進む。そうでなければ、ガイド引き当てプログラム600は、引き当て不要と判定し、ステップS202へ戻る。
【0115】
ステップS207では、ガイド引き当てプログラム600は、当該ガイドを、当該イベントへ引き当てるべきガイドのリスト、すなわち引き当てリストへ登録する。引き当てリストには複数のガイドが登録可能である。
【0116】
ステップS208では、ガイド引き当てプログラム600は、引き当てリストに登録されたガイドの個数が所定の数(例えば3個)を超えているか否か判定する。引き当てリストに登録されたガイドの個数が所定の数を超えていなければ、ガイド引き当てプログラム600はステップS202へ戻る。引き当てリストに登録されたガイドの個数が所定の数を超えていれば、ガイド引き当てプログラム600はステップS209へ進む。本処理は、1つのイベントに対して、あまりに多数のガイドを引き当てることは考えにくいことから、新着イベントに引き当てるガイドの個数に上限を設けるものである。ただし、本処理はオプショナルであり、実施しなくてもよい。
【0117】
ステップS209では、ガイド引き当てプログラム600は、引き当て結果を引き当て結果テーブル400へ保存する。引き当て結果テーブル400のイベントID401には、当該イベントのイベントID201を、ガイドID402には、引き当て要と判定したガイドのガイドID301を格納し、類似度スコア403には、ステップS201で算出した当該ガイドと当該イベントの類似度スコアを格納する。引き当て要否404には、当該ガイドが引き当て要であるか否かを格納する。当該ガイドが、ステップS207にて引き当てリストにて登録されたガイドであれば、引き当て要否404に「要」を格納する。また、ガイド引き当てプログラム600は、当該イベントへの引き当てが不要と判定されたガイドも引き当て結果テーブル400へ格納する。このとき、当該イベントへの引き当てが不要と判定されたガイドを全て引き当て結果テーブル400に格納するのではなく、例えば、引き当て不要と判定されたガイドのうち、ステップS201で算出した類似度スコアが高い順に上位所定個数の引き当て不要なガイドを引き当て結果テーブル400へ格納することにしてもよい。引き当て不要なガイドについては引き当て要否404を「否」とする。
【0118】
通報要否405には、引き当て要否404が「要」であるガイドについてのみ、上位管理者へエスカレーションすべきか否かを示す情報を格納する。通報要否405には、エスカレーション要と判定されれば「要」を格納し、そうでなければ「否」を格納する。当該イベントを上位管理者へエスカレーションすべきか否かは、当該イベントへ引き当てるべきと判定された当該ガイドの判定ルール304により判定すればよい。ただし、判定ルール304に「IF−THEN」といった機械的な判定ルールが格納されておらず、機械的な判定ができない場合、ガイド引き当てプログラム600は、通報要否405に「該当ルールなし」を格納する。
【0119】
フィードバック406には、当該イベントに対するガイド引き当て結果の表示に対して監視オペレータが入力したフィードバックの内容を格納する。ステップS209の時点では、監視オペレータによるフィードバックが未だ入力されていないため、初期値である「未済」を格納する。フィードバック406に格納されるその他の値については後述する。
【0120】
以上の通り、本実施例では、ガイド引き当てプログラム600は、過去の複数のイベントに基づく閾値の学習が可能なガイドについて閾値を学習してガイドに対応づけてガイドテーブル300に記録し、ガイドの閾値が学習済であればその閾値を新規のイベントとそのガイドとの類似度に対して用い、閾値が学習済でなければ学習済である他のガイドの閾値に基づいて推定した閾値を新規のイベントと前記ガイドとの類似度に対して用いる。したがって、過去のイベントを基に閾値を学習し、学習ができていない閾値を学習済の他のガイドの閾値から推定するので、ガイド毎の適切な閾値を容易に設定することができる。その際、ガイド引き当てプログラム600は、閾値が学習済である他のガイドのガイドメッセージを説明変数とし、そのガイドの学習済の閾値を目的変数として回帰器を生成し、前記回帰器を用いて前記学習済でない閾値を推定する。ガイドのガイドメッセージ同士が似ていればそれらガイドの閾値も近い値になりやすい傾向があると考えられるので、ガイドメッセージを説明変数とし、閾値を目的変数として生成した回帰器を用いることにより、学習済でない閾値を良好に推定することができる。
【0121】
図10は、新着イベントに対するガイド引き当て結果へのフィードバックにより閾値を調整する処理の一例を示すフローチャートである。本処理は、ガイド引き当てプログラム600により実行される。ガイド引き当てプログラム600は、新着イベントに対するガイド引き当て結果に対して監視オペレータが入力したフィードバックを受領し、そのフィードバックに基づいて閾値を調整する。
【0122】
ステップS300では、ガイド引き当てプログラム600は、新着イベントに対するガイド引き当て結果をディスプレイ105へ表示する。監視オペレータは、その結果に対してフィードバックを入力する。ガイド引き当てプログラム600は、そのフィードバックを受領する。
【0123】
図12は、新着イベントに対するガイド引き当て結果を表示する画面例を示す図である。
図12を参照すると、ガイド引き当て結果画面900は、3つのペインを有する。3つのペインは、発生イベント情報ペイン910、引き当てたガイド一覧ペイン920、および引き当てなかったガイド一覧ペイン930である。
【0124】
発生イベント情報ペイン910は、新着イベントのイベント情報を表示するペインである。ガイド引き当てプログラム600は、イベントテーブル200から、当該新着イベントのデータを取得し、発生イベント情報ペイン910の画面へ表示する。
図12の例では、当該新着イベントのイベントメッセージ911を表示している。ここでは図示していないが、発生時刻202や発生元204などの他の情報を表示してもよい。
【0125】
また、この発生イベント情報ペイン910には、新規ガイド登録ボタン912が表示される。
図12の例では、新規ガイド登録ボタン912に「このイベントを新しいガイドとして登録」と表示されている。例えば、監視オペレータは、後述する引き当てたガイド一覧ペイン920および引き当てなかったガイド一覧ペイン930を参照し、当該新着イベントに対して引き当てるべきガイドが存在しないとき、この新規ガイド登録ボタン912をマウスでクリックして、当該イベントのイベントメッセージを元に新しいガイドを登録することができる。このボタンをクリックすると、不図示のダイアログが現れ、監視オペレータに通報先303や判定ルール304などの入力を促す。入力の際には、当該イベントのイベントメッセージにおいて、ガイドメッセージにした場合にイベントメッセージと一致する必要のない変数部分を削除する等の編集を可能としてもよい。
【0126】
新しいガイドの登録は監視オペレータではなく上位管理者が行うものとしてもよい。その場合、監視オペレータがこの新規ガイド登録ボタン912をマウスでクリックすると、上位管理者へ新規ガイドの登録を要請する通知が送信される。上位管理者である通知の送信先を示すアドレス情報は予め設定しておけばよい。
【0127】
引き当てたガイド一覧ペイン920は、当該新着イベントに対して、ガイド引き当てプログラム600が引き当てたガイド(該当ガイド)の情報を表示し、それに対するフィードバックを受け付けるペインである。ガイド引き当てプログラム600は、ガイド引き当て結果テーブル400における当該新着イベントに関するデータを参照し、引き当て要否404が「Y」であるガイドのデータを取得する。また、ガイド引き当てプログラム600は、ガイドテーブル300から、当該ガイドのガイドメッセージ302を取得し、ガイドメッセージ表示部921へ表示する。
図12の例では、ガイドメッセージにおいて当該新着イベントのイベントメッセージと一致した部分を網掛け表示している。図示はしていないが、ガイド引き当てプログラム600は、ガイドテーブルの他の情報、例えば通報先303、判定ルール304、学習完了フラグ306、ガイド引き当て結果テーブル400の類似度スコア403、通報要否405を引き当てたガイド一覧ペイン920に表示してもよい。ガイド引き当てプログラム600は、このペインに、イベントに引き当てた複数の該当ガイドの情報を類似度スコアの順にスクロール可能に表示することができる。
【0128】
ガイド引き当てプログラム600は、更に、ガイド別のフィードバック入力フォーム922をこの引き当てたガイド一覧ペイン920上に表示する。監視オペレータは、引き当てたガイド一覧ペイン920に表示された当該ガイドの情報を見て、当該ガイドを当該新着イベントへ引き当てることが正しければフィードバック入力フォーム922の「正解」を選択し、誤りであれば「誤り」を選択する。ここでの誤りというのは、すなわち、引き当て不要を意味する。なお、フィードバック入力フォーム922のデフォルトは「正解」であり、監視オペレータが選択操作を行わなかった場合は、フィードバックとして「正解」が選択されるものとする。
【0129】
以上より、ガイド引き当てプログラム600は、引き当てたガイド一覧ペイン920により、当該新着イベントに引き当てたガイドそれぞれについて、その引き当て結果が「正解」であるかもしくは「誤り」であるかという、監視オペレータによるフィードバックを取得する。
【0130】
引き当てなかったガイド一覧ペイン930は、当該新着イベントに対して、ガイド引き当てプログラム600が引き当てなかったガイド(非該当ガイド)の情報を表示し、それに対するフィードバックを受け付けるペインである。ガイド引き当てプログラム600は、ガイド引き当て結果テーブル400における当該新着イベントに関するデータを参照し、引き当て要否404が「N」であるガイドのデータを取得する。引き当てなかったガイド一覧ペイン930に表示される情報は、基本的に引き当てたガイド一覧ペイン920に表示される情報と同様の形式である。ガイド引き当てプログラム600は、引き当てなかったガイド一覧ペイン930に、イベントに引き当てなかった複数の非該当ガイドの情報を類似度スコアの順にスクロール可能に表示することができる。監視オペレータは、引き当てなかったガイド一覧ペイン930に表示された当該ガイドの情報を見て、当該ガイドを当該新着イベントへ引き当てないことが正しければ、フィードバック入力フォーム932の「正解」を選択し、誤りであれば「誤り」を選択する。フィードバック入力フォーム932のデフォルトは「正解」であり、監視オペレータが選択操作を行わなかった場合は、フィードバックとして「正解」が選択される。ガイド引き当てプログラム600は、引き当てなかったガイド一覧ペイン930により、当該新着イエントに引き当てなかったガイドそれぞれについて、その引き当てなかったことが「正解」であるのかもしくは「誤り」であるのかという、監視オペレータによるフィードバックを取得する。
【0131】
以上のようにして、ガイド引き当てプログラム600は、ガイド引き当て結果画面900へフィードバックとして入力された、新規にガイドを登録するための情報、新着イベントに引き当てたガイドごとのその引き当てが「正解」であるか「誤り」であるかの情報、新着イベントに対して引き当てなかったガイド毎のその引き当てなかったことが「正解」であるか「誤り」であるかの情報を取得することができる。ガイド引き当てプログラム600は、イベントに対して、そのイベントのイベントメッセージとガイドメッセージの類似度が閾値を超えるガイドを該当ガイドと判断し、そのイベントのイベントメッセージとガイドメッセージの類似度が閾値を超えないガイドを非該当ガイドと判断し、該当ガイドと非該当ガイドのそれぞれを類似度の順に表示する。これにより、該当ガイドと非該当ガイドの判断結果をそれぞれ毎に類似度の順に表示するので、閾値による判断結果を容易に把握でき、その判定が妥当かどうかを容易に確認できる。
【0132】
ステップS301では、ガイド引き当てプログラム600は、得られたフィードバックが新規にガイドを登録する旨(新規ガイド登録)のものか否かを判定する。ガイド引き当てプログラム600は、フィードバックが新規ガイド登録であればステップS302へ進み、そうでなければステップS303へ進む。
【0133】
ステップS302では、ガイド引き当てプログラム600は、ガイドテーブル300へ新しい行を追加し、その行の各列の欄に新規のガイドの情報を登録する。ガイドメッセージ302の欄には当該新着イベントのイベントメッセージをそのまま格納すればよい。ただし、新規ガイド登録の情報が入力された際に、イベントメッセージから、ガイドメッセージになったときイベントメッセージと一致する必要のない変数部分を削除する等の編集がされた場合には、編集後のイベントメッセージを格納する。
【0134】
ステップS303では、ガイド引き当てプログラム600は、イベントに対して引き当てたガイドへのフィードバックとイベントに対して引き当てなかったガイドへのフィードバックとのうち未処理のものを1つ選択する。
【0135】
ステップS304では、ガイド引き当てプログラム600は、ステップS303で選択したフィードバックが、イベントに対して引き当てたガイドへのフィードバックか否かを判定する。イベントに引き当てたガイドへのフィードバックであればガイド引き当てプログラム600はステップS305へ進む。そうでなければ、ガイド引き当てプログラム600は、イベントに引き当てなかったガイドへのフィードバックと判断し、ステップS310へ進む。
【0136】
ステップS305では、ガイド引き当てプログラム600は、イベントに引き当てた当該ガイドへのフィードバックが、その引き当てが「正解」である旨のものか否か判定する。フィードバックが「正解」の旨のものであれば、ガイド引き当てプログラム600は、ステップS306へ進む。フィードバックが「誤り」の旨のものであれば、ガイド引き当てプログラム600はステップS309へ進む。
【0137】
ステップS306〜S308は、当該ガイドのイベントへの引き当てが正しかった、すなわち、閾値が正しい値であった場合の処理であり、ガイド引き当てプログラム600は、当該閾値を記録し、当該閾値を学習済にし、新たな学習済みの当該ガイドメッセージと当該閾値を追加したデータにより閾値推定用回帰器710の再学習を行う。ただし、当該ガイドの学習完了フラグ306が既に「Y」であった場合、つまり既に学習済みであった場合は、ガイド引き当てプログラム600はステップS306〜ステップS308の処理をスキップしてステップS317へ進む。すなわち、ガイド引き当てプログラム600は、該当ガイドのそれぞれについての判断が正しいか否かを入力可能にし、該当ガイドについての判断が正しいという入力が得られかつガイドの閾値が学習済でなければ、判断に用いられた類似度未満の閾値をガイドに設定し、閾値を学習済とする。これにより、該当ガイドの判断結果が正しいか否かのフィードバックを入力可能とし、判断が正しいというフィードバックが得られたら、判断結果とフィードバックを反映した閾値を設定するので、妥当な閾値の設定が可能となる。
【0138】
以下、ステップS306、S307、S308を詳しく説明する。
【0139】
ステップS306では、ガイド引き当てプログラム600は、ガイドテーブル300の閾値305の欄へ閾値を格納する。格納する値には、当該新着イベントと当該ガイドとの類似度スコア、すなわち、引き当て結果テーブル400に格納されている類似度スコア403の値から所定値を減算して得た値を用いる。減算する値はマージンであり、減算により得られる値は類似度スコア403の値より僅かに小さい値となる。ただし、他の例として、当該類似度スコア403の値をそのまま用いてもよい。
【0140】
ステップS307では、ガイド引き当てプログラム600は、ガイドテーブル300における当該ガイドの学習完了フラグ306へ「Y」を格納する。
【0141】
ステップS308では、ガイド引き当てプログラム600は、閾値が学習済みのガイドが1つ増えたことを受けて、閾値推定用回帰器710の再学習を行う。閾値推定用回帰器710の学習については前述のとおりである。すなわち、ガイド引き当てプログラム600は、新たに閾値を学習済としたガイドを含む、閾値が学習済であるガイドのガイドメッセージを説明変数とし、そのガイドの学習済の閾値を目的変数として回帰器を生成し、回帰器を用いて学習済でない閾値を推定するものとする。したがって、学習済であった閾値と新たに学習した閾値とを用いて回帰器を生成し、閾値の推定に用いるので、最新の学習結果を反映した閾値の推定が可能となる。
【0142】
ステップS309は、当該新着イベントに対して当該ガイドを引き当てたことが誤りであった場合の処理である。引き当てを誤った理由は、閾値が低かったためと考えられる。そのため、当該ガイドの閾値305へ、当該新着イベントと当該ガイドとの類似度スコアに所定値を加算して得た値を用いる。加算する値はマージンであり、加算により得られる値は、当該新着イベントと当該ガイドとの類似度スコアよりも僅かに大きな値となる。
【0143】
ステップS310〜ステップS316は、イベントに対してガイドを引き当てなかったことに対するフィードバックに関する処理である。ガイド引き当てプログラム600は、非該当ガイドのそれぞれについての判断が正しいか否かを入力可能にし、非該当ガイドについての判断が正しくないという入力が得られかつガイドの閾値が学習済でなければ、その判断に用いられた類似度未満の閾値をガイドに設定して、ガイドの閾値を学習済とする。非該当ガイドの判断結果が正しいか否かのフィードバックを入力可能とし、判断が誤っているというフィードバックが得られたら、判断結果とフィードバックを反映した閾値を設定するので、妥当な閾値の設定が可能となる。また、ガイド引き当てプログラム600は、非該当ガイドのそれぞれについての判断が正しくないという入力が得られかつそのガイドの閾値が学習済であれば、そのガイドのガイドメッセージとして、そのイベントのイベントメッセージを登録する。非該当ガイドの学習済の閾値による判断が誤っているというフィードバックが得られたら、そのときのイベントのイベントメッセージに基づいて新たなガイドメッセージを登録するので、ガイドメッセージとそのイベントメッセージとの類似度が上がり、同じイベントが発生したときに引き当てるガイドと判断されるようにすることができる。
【0144】
ステップS310では、ガイド引き当てプログラム600は、当該イベントに引き当てなかった当該ガイドに対するフィードバックが、その引き当てなかったことが「正解」であるか否か判定する。引き当てなかったことが「正解」であれば、ガイド引き当てプログラム600は何もせずステップS317へ進む。引き当てなかったことが「誤り」であれば、ガイド引き当てプログラム600はステップS311へ進む。
【0145】
ステップS311〜ステップS316は、ガイドをイベントに引き当てなかったことが誤りであるというフィードバックが得られた場合の処理である。ガイドをイベントに引き当てなかったことが誤りというのは、イベントに引き当てるべきガイドを引き当てなかったことである。
【0146】
ステップS311では、ガイド引き当てプログラム600は、当該イベントに引き当てるべきであったにもかかわらず引き当てると判断されなかった当該ガイドの学習完了フラグ306が「N」であるか否か、つまり当該ガイドの閾値が未学習であるか否か判定する。当該ガイドの学習完了フラグ306が「N」であれば、ガイド引き当てプログラム600はステップS312へ進む。そうでなければ、ガイド引き当てプログラム600はステップS315へ進む。
【0147】
ステップS312からステップS314は、当該新着イベントに対して当該ガイドを正しく引き当てることができるように閾値を設定し、更に閾値推定用回帰器710を再学習する処理である。ステップS312からステップS314の処理はそれぞれ上述したステップS306からステップS308の処理と同じであるため、ここでは説明を省略する。
【0148】
ステップS315からステップS316は、引き当てるべきであるにも関わらず引き当てなかったガイドの閾値が既に学習済みであるにもかかわらず、引き当ての要否の判定が誤りであった場合の処理である。このような状況となる理由として、当該イベントを発行するエージェントにて、当該イベントに記載するイベントメッセージのテキスト文が変更となり、そのイベントメッセージとガイドメッセージとの類似度スコアが低下し、今までの閾値では引き当て不要と判断されるようになった可能性がある。エージェントのプログラムが変更されたときにイベントメッセージのテキスト文が修正されることがまれにある。この状況への対処として、修正された当該イベントの新たなイベントメッセージを当該ガイドのガイドメッセージ302として登録あるいは追加登録するのが有効である。
【0149】
ステップS315では、ガイド引き当てプログラム600は、ガイドテーブル300の当該ガイドの行にガイドメッセージ302の行を追加し、新たなガイドメッセージのテキスト文を登録する。新たなガイドメッセージのテキスト文は、当該新着イベントのイベントメッセージをそのまま用いればよい。あるいは、ステップS302の新規ガイド登録の場合と同様にダイアログを表示し、監視オペレータに通報先303や判定ルール304などの入力を促すことにしてもよい。入力の際には、当該イベントのイベントメッセージにおいて、ガイドメッセージにした場合にイベントメッセージと一致する必要のない変数部分を削除する等の編集を可能としてもよい。また、ガイドテーブル300の閾値305には、当該ガイドのガイドメッセージと当該新着イベントのイベントメッセージとの類似度スコアの値、あるいは、その類似度スコアから所定値を減算して僅かに小さくした値を格納する。
【0150】
ステップS316では、ガイド引き当てプログラム600は、閾値推定用回帰器710を再学習する。この処理は、ステップS308およびステップS314の処理と同じであるため、ここでは説明を省略する。
【0151】
ステップS317では、ガイド引き当てプログラム600は、ガイドに対するフィードバックのうち未処理のものがあるか否か判定する。未処理のフィードバックがあれば、ガイド引き当てプログラム600はステップS303へ戻り、なければ処理を終了する。
【実施例2】
【0152】
図13は、実施例2に係わるイベント監視システムの構成を示すブロック図である。ここでは実施例2の主に実施例1との差異を説明する。
【0153】
実施例2によるイベント監視システムは、ガイド提供サービス(以下、リモートサイトともいう)1000と、企業サイト(以下、ローカルサイトともいう)1400を含む構成である。リモートサイト1000とローカルサイト1400はインターネット1500で相互に接続される。
【0154】
各ローカルサイト1400では、それぞれ実施例1のものと同様の管理計算機100がITシステム120とともに動作する。
【0155】
リモートサイト1000には、リモート管理計算機1100がある。リモート管理計算機1100は、管理計算機100と同様の構成を持つ計算機で構成される。リモート計算機1100のHDD103には、共通ガイド管理プログラム1200と、リモート登録条件テーブル1300と、ガイドテーブル300が格納される。ガイドテーブル300は、管理計算機100のものと同様の構成である。共通ガイド管理プログラム1200は、メモリ102に読み込まれ、CPU101上で動作する。
【0156】
リモートサイト1000の役割は、各サイトで共通化が可能な、各ローカルサイト1400のITシステム120上のOSやミドルウェアなどのエージェントから発行されるイベントに対するガイド、そのイベントに対してガイドを引き当てるための閾値、等の各ローカルサイト1400での学習結果を収集し、また各ローカルサイト1400へ配布することである。各ローカルサイト1400での個々の学習結果を収集して各ローカルサイト1400へ共通的に配布することにより、各ローカルサイト1400で個々にガイドを作成したり閾値を決定したりするよりも効率よく、ガイドおよび閾値の質を向上させることができる。
【0157】
ただし、各ローカルサイト1400には、ローカルサイト1400から外部に出したくガイドが存在する可能性がある。そのため、実施例2のリモートサイト1000のリモート管理計算機1100は、リモートサイト1000へ登録するガイドの条件を記載したリモート登録条件テーブル1300を備え、リモート登録条件テーブル1300に記載された条件に合致したガイドのみをローカルサイト1400から収集し、ガイドテーブル300に格納する。
【0158】
なお、本実施例では、リモート登録条件テーブル1300をリモート管理計算機1100が備える構成を例示するが、他の構成も可能である。例えば、各ローカルサイト1400の管理計算機100がそのローカルサイト1400に独自の条件を定めたリモート登録条件テーブル1300を備える構成も可能である。各ローカルサイト1400の管理計算機100は、リモート登録条件テーブル1300の条件を満たしたガイドのみをリモートサイト1000のリモート管理計算機1100へ送信することにすればよい。
【0159】
図14は、リモート登録条件テーブル1300の構成例を示す図である。リモート登録条件テーブル1300は、属性1301と条件値1302とを対応づけ、属性1301が条件値1302に該当するガイドのみを登録するという条件を設定することができる。属性1301の列および条件値1302の列に格納される値と、その使用方法とについては後ほど説明する。
【0160】
図15は、ローカルサイトにてリモートサイトから学習済みのガイドのデータをダウンロードして格納する処理の流れの一例を示すフローチャートである。ローカルサイト1400の管理計算機100は最初に起動するときに本処理を実行することにしてもよい。また、ローカルサイト1400の管理計算機100は、定期的に本処理を実行することにしてもよい。ローカルサイト1400の管理計算機100はリモートサイト1000のリモート管理計算機1100のガイドテーブル300に新たなガイドが追加されたときに本処理を実行することにしてもよい。
【0161】
ステップS400では、ガイド引き当てプログラム600が、リモートサイト1000のリモート管理計算機1100にあるガイドテーブル300条のガイドのデータを取得する処理である。ガイド引き当てプログラム600は、リモート管理計算機1100に対して、そのリモート管理計算機1100のガイドテーブル300にあるガイドデータ(以下、リモートガイドともいう)を要求する。リモート管理計算機1100では、共通ガイド管理プログラム1200がその要求を受け、ガイドテーブル300の全データを読み込み、ローカルサイト1400の管理計算機100のガイド引き当てプログラム600へ送る。
【0162】
ステップS401では、ガイド引き当てプログラム600は、ステップS400で受領したリモートガイドのガイドデータから未処理のものを1つ選択する。
【0163】
ステップS402では、ガイド引き当てプログラム600は、ステップS401で選択したガイドデータのガイドメッセージと、ローカルサイト1400の管理計算機100にあるガイドテーブル300に格納された各ガイド(以下、ローカルガイド)のガイドメッセージとの類似度スコアを計算する。
【0164】
ステップS403では、ガイド引き当てプログラム600は、リモートガイドのガイドメッセージとの類似度スコアが閾値以上であるガイドメッセージを有するローカルガイドのみを残し、他のローカルガイドを除外する。
【0165】
ステップS404では、ガイド引き当てプログラム600は、残したローカルガイドの中から、当該リモートガイドとの類似度スコアが最も高いローカルガイドを選択する。そして、ガイドテーブル300における当該ローカルガイドの閾値305、学習完了フラグ306、および必須キーワード307の欄へ、当該リモートガイドの閾値、学習完了フラグ、および必須キーワードのそれぞれの値を格納する。なお、ステップS403で、類似度スコアが閾値を越えるローカルガイドが1つもなければ、本ステップS404ではなにもせずステップS405へ進む。
【0166】
ステップS405では、ガイド引き当てプログラム600は、ステップS400で取得したリモートガイドの中に未処理のものが残っているか否か判定する。未処理のリモートガイドがあれば、ガイド引き当てプログラム600はステップS401へ戻り、なければ本処理を終了する。
【0167】
図15に示した一連の処理により、ローカルサイト1400の管理計算機100は、リモートサイト1000にある学習済みのガイドデータを取り込むことができ、ローカルサイト1400での学習による閾値の決定およびフィードバックによる閾値の調整を行う手間を削減することができる。
【0168】
本実施例によれば、イベント監視システムは、情報システムで発生した事象に関連する文字列で示されたイベントメッセージを含むイベントを監視する装置であって、文字列で示されたガイドメッセージを含みイベントへの対処方法を示す複数のガイドと、それぞれのガイドのガイドメッセージとイベントメッセージとの類似度に関する閾値とを対応づけて記憶し、ITシステムからのイベントを記録し、そのイベントに含まれるイベントメッセージとガイドのガイドメッセージとの類似度を計算し、その類似度が閾値を超えていたガイドをイベントに対応付けるローカルサイト1400のイベント監視装置(管理計算機)100と、イベント監視装置100と通信可能に接続し、文字列で示されたガイドメッセージを含みイベントへの対処を示す共通ガイドと、共通ガイドのガイドメッセージの類似度に関する閾値である共通閾値とを対応づけてするリモートサイト1000の共通ガイド管理装置(リモート管理計算機)1100と、を有し、管理計算機100は、共通ガイドをリモート管理計算機1100からダウンロードし、その共通ガイドのガイドメッセージと自身が持つ複数のガイドのガイドメッセージとの類似度を計算し、類似度が最も高いガイドの閾値として、共通ガイドに対応した共通閾値を設定する。共通ガイドおよび共通閾値を共通管理し、ローカルサイト1400の管理計算機100は、その共通閾値を利用して自身のガイドの閾値を設定することができるので、例えばローカルサイト1400の管理計算機100での学習で得られていないようなガイドの閾値を良好な値に設定することができる。
【0169】
図16は、ローカルサイトで学習により取得されたガイドしたガイドデータをリモートサイトへアップロードする処理の一例を示すフローチャートである。本処理により、リモートサイト1400における学習により生成されたガイドデータをリモートサイト1000のリモート管理計算機1100にて収集し、蓄積することができる。本処理は、ローカルサイト1400の管理計算機100においてガイド引き当てプログラム600が、ガイドデータを新たに学習完了済みとしたときに実行することにしてもよい。
【0170】
ステップS500では、ローカルサイト1400の管理計算機100にて、ガイド引き当てプログラム600が、新たに学習を完了したガイドのデータを、ガイドテーブル300から取得する。
【0171】
ステップS501では、ガイド引き当てプログラム600は、リモートサイト1000のリモート管理計算機1100の共通ガイド管理プログラム1200に対して、リモート登録条件テーブル1300のデータを要求し、取得する。
【0172】
ステップS502では、ガイド引き当てプログラム600は、新たに学習を完了した当該ガイドが、ステップS5021で取得したリモート登録条件テーブル1300に記載されている条件に合致するか否かを判定する。例えば、
図14に例示したリモート登録条件テーブル1300の内容であれば、当該ガイドのエージェント種別308が「OS」もしくは「ミドル」であれば条件に合致することになる。当該ガイドがリモート登録条件テーブル1300の条件に合致すれば、ガイド引き当てプログラム600はステップS503に進み、そうでなければ本処理を終了する。
【0173】
ステップS503では、ガイド引き当てプログラム600は、当該ガイドのデータをリモートサイト1000へ送付してよいか否かを管理者に確認する。例えば、ディスプレイ105に、リモートサイト1000への送付および登録の許諾を求めるダイアログを表示し、管理者による承諾もしくは拒否の入力を得ることにすればよい。当該ガイドの送付について管理者の承諾が得られれば、ガイド引き当てプログラム600は、ステップS504へ進み、そうでなければ本処理を終了する。
【0174】
ステップS504では、ガイド引き当てプログラム600は、リモートサイト1000へ当該ガイドのガイドデータを送信する。
【0175】
ステップS505では、リモートサイト1000のリモート管理計算機1100にて、共通ガイド管理プログラム1200が、当該ガイドデータを受信し、当該ガイドデータを、リモートサイト1000のガイドテーブル300に格納する。その際、共通ガイド管理プログラム1200は、受信した当該ガイドデータが、未登録のガイドのガイドデータでなければリモートサイト1000のガイドテーブル300に格納することにしてもよい。登録されているガイドのガイドデータをより適切なものに更新することができる。本処理により、複数のローカルサイト1400で使用可能な共通性の高い学習済みのガイドデータがリモートサイト1000にて収集される。
【0176】
本実施例によれば、ローカルサイト1400の管理計算機100が、過去のイベントに基づいてガイドの閾値を学習し、ガイドと閾値とを互いに対応づけてリモートサイト1000のリモート管理計算機1100に送信し、リモート管理計算機1100は、ローカルサイト1400の管理計算機100から受信したガイドを共通ガイドとし、受信した閾値を共通閾値として互いに対応づけて記憶するので、ローカルサイト1400の管理計算機100における学習で得られたガイドの閾値を共通に管理する共通ガイドの共通閾値として設定し、例えばそのガイドの閾値が学習で得られていないローカルサイト1400に提供可能とすることができる。
【0177】
以上、本発明の実施形態および実施例について説明してきたが、本発明は、これら実施形態および実施例だけに限定されるものではなく、本発明の技術思想の範囲内において、これらの実施形態および実施例を組み合わせて使用したり、一部の構成を変更したりしてもよい。