IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ソフトバンクモバイル株式会社の特許一覧 ▶ 国立大学法人大阪大学の特許一覧

特開2023-183621情報処理装置、情報処理方法及びプログラム
<>
  • 特開-情報処理装置、情報処理方法及びプログラム 図1
  • 特開-情報処理装置、情報処理方法及びプログラム 図2
  • 特開-情報処理装置、情報処理方法及びプログラム 図3
  • 特開-情報処理装置、情報処理方法及びプログラム 図4
  • 特開-情報処理装置、情報処理方法及びプログラム 図5
  • 特開-情報処理装置、情報処理方法及びプログラム 図6
  • 特開-情報処理装置、情報処理方法及びプログラム 図7
  • 特開-情報処理装置、情報処理方法及びプログラム 図8
  • 特開-情報処理装置、情報処理方法及びプログラム 図9
  • 特開-情報処理装置、情報処理方法及びプログラム 図10
  • 特開-情報処理装置、情報処理方法及びプログラム 図11
  • 特開-情報処理装置、情報処理方法及びプログラム 図12
  • 特開-情報処理装置、情報処理方法及びプログラム 図13
  • 特開-情報処理装置、情報処理方法及びプログラム 図14
  • 特開-情報処理装置、情報処理方法及びプログラム 図15
  • 特開-情報処理装置、情報処理方法及びプログラム 図16
  • 特開-情報処理装置、情報処理方法及びプログラム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023183621
(43)【公開日】2023-12-28
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
   H04L 41/069 20220101AFI20231221BHJP
   H04L 41/16 20220101ALI20231221BHJP
   G06F 16/35 20190101ALI20231221BHJP
【FI】
H04L41/069
H04L41/16
G06F16/35
【審査請求】有
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022097225
(22)【出願日】2022-06-16
(71)【出願人】
【識別番号】501440684
【氏名又は名称】ソフトバンク株式会社
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】木村 達明
(72)【発明者】
【氏名】甲斐田 慶太郎
(72)【発明者】
【氏名】山内 啓嗣
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175DA01
5B175FA03
(57)【要約】
【課題】通信装置から得られるコマンドログの分析を効率化すること。
【解決手段】通信装置から出力される、コマンドの実行結果を示す複数のコマンドログを取得する取得部と、複数のコマンドログに基づいて共通部分及びパラメータ部分を示すテンプレートを生成する生成部であって、複数のコマンドログの各々を複数のブロックに分割し、複数のブロックをクラスタリングすることで、複数のブロッククラスタに分類し、同一のブロッククラスタに分類される複数のブロックに含まれる単語列のうち共通部分及びパラメータ部分を示すテンプレートを、ブロッククラスタごとに生成する、生成部と、を有する情報処理装置を提供する。
【選択図】図5
【特許請求の範囲】
【請求項1】
通信装置から出力される、コマンドの実行結果を示す複数のコマンドログを取得する取得部と、
前記複数のコマンドログに基づいて共通部分及びパラメータ部分を示すテンプレートを生成する生成部であって、
前記複数のコマンドログの各々を複数のブロックに分割し、
前記複数のブロックをクラスタリングすることで、複数のブロッククラスタに分類し、
同一のブロッククラスタに分類される複数のブロックに含まれる単語列のうち共通部分及びパラメータ部分を示すテンプレートを、ブロッククラスタごとに生成する、
生成部と、
を有する情報処理装置。
【請求項2】
前記生成部は、
前記複数のコマンドログの各々に対して前記ブロッククラスタごとのテンプレートを適用することで、前記複数のコマンドログの各々に含まれる単語列の中から、前記テンプレートで示されるパラメータ部分に対応する1以上の単語を、コマンドログごとにさらに抽出し、
抽出したコマンドログごとの前記1以上の単語に基づいて、前記複数のコマンドログの各々の特徴ベクトルをさらに生成する、
請求項1に記載の情報処理装置。
【請求項3】
前記複数のコマンドログの各々の特徴ベクトルと前記通信装置の動作状態を示す情報とを含む教師データを用いてモデルを学習させることで、特徴ベクトルを入力すると前記通信装置の動作状態を出力する学習モデルを生成する学習処理部、を有する、
請求項2に記載の情報処理装置。
【請求項4】
前記取得部は、前記通信装置から出力される、第2のコマンドログを取得し、
前記生成部は、前記第2のコマンドログの各々に対して前記ブロッククラスタごとのテンプレートを適用することで、前記第2のコマンドログに含まれる単語列の中から、前記テンプレートで示されるパラメータ部分に対応する1以上の第2の単語を抽出し、抽出した前記1以上の第2の単語に基づいて、前記第2のコマンドログの特徴ベクトルを生成し、
生成された前記第2のコマンドログの特徴ベクトルを前記学習モデルに入力することで、前記通信装置の動作状態を推定する、推定部、を有する、
請求項3に記載の情報処理装置。
【請求項5】
前記生成部は、前記複数のコマンドログを所定条件に従って分割することで、前記複数のコマンドログを複数のブロックに分割する、
請求項1に記載の情報処理装置。
【請求項6】
前記複数のコマンドログを前記所定条件に従って分割することは、前記複数のコマンドログを空白行で分割することである、
請求項5に記載の情報処理装置。
【請求項7】
前記複数のコマンドログを前記所定条件に従って分割することは、前記複数のコマンドログを特定の文字列で分割することである、
請求項5に記載の情報処理装置。
【請求項8】
前記複数のコマンドログを前記所定条件に従って分割することは、前記複数のコマンドログを空白行及び前記特定の文字列で分割することである、
請求項7に記載の情報処理装置。
【請求項9】
前記複数のコマンドログを前記所定条件に従って分割することは、前記複数のコマンドログを特定の文字列のパターンで分割することである、
請求項5に記載の情報処理装置。
【請求項10】
前記テンプレートで示されるパラメータ部分は、単語で表されるパラメータを示す単語パラメータを含み、
前記生成部は、抽出した前記1以上の単語のうち前記単語パラメータに対応する単語の中に含まれる、予め指定された単語の数に基づいて、前記特徴ベクトルを生成する、
請求項2に記載の情報処理装置。
【請求項11】
前記テンプレートで示されるパラメータ部分は、数値で表される数値パラメータを含み、 前記生成部は、抽出した前記1以上の単語のうち前記数値パラメータに対応する単語について、該数値で示される数値を標準化した後の数値に基づいて、前記特徴ベクトルを生成する、
請求項2に記載の情報処理装置。
【請求項12】
前記通信装置は、属性の異なる複数の通信装置を含み、
前記生成部は、属性の異なる前記複数の通信装置から出力される前記複数のコマンドログに基づいて前記テンプレートを生成する処理を、属性の異なる通信装置ごとに実行する、
請求項1に記載の情報処理装置。
【請求項13】
通信装置から出力される、コマンドの実行結果を示す複数のコマンドログを取得するステップと、
前記複数のコマンドログに基づいて共通部分及びパラメータ部分を示すテンプレートを生成するステップであって、
前記複数のコマンドログの各々を複数のブロックに分割し、
前記複数のブロックをクラスタリングすることで、複数のブロッククラスタに分類し、
同一のブロッククラスタに分類される複数のブロックに含まれる単語列のうち共通部分及びパラメータ部分を示すテンプレートを、ブロッククラスタごとに生成する、
ステップと、
を含む、情報処理装置が実行する情報処理方法。
【請求項14】
通信装置から出力される、コマンドの実行結果を示す複数のコマンドログを取得するステップと、
前記複数のコマンドログに基づいて共通部分及びパラメータ部分を示すテンプレートを生成するステップであって、
前記複数のコマンドログの各々を複数のブロックに分割し、
前記複数のブロックをクラスタリングすることで、複数のブロッククラスタに分類し、
同一のブロッククラスタに分類される複数のブロックに含まれる単語列のうち共通部分及びパラメータ部分を示すテンプレートを、ブロッククラスタごとに生成する、
ステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
現在、高品質な動画配信サービス、及び、車両及びIoT(Internet of Things)による通信等が普及していることで、通信事業者(キャリア)が構築する通信ネットワークは大規模かつ複雑化している。特許文献1には、通信事業者が管理するIP中継網で利用する通信装置及びその通信経路の監視技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005-184638号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
通信ネットワークを構成する通信装置群はマルチベンダ化されており、更に、仮想化技術の進展による通信装置のソフトウェア化や多重化が進んでいる。このように、通信ネットワークが更に大規模かつ複雑化することで、故障対応などのネットワーク監視及び管理業務が非常に困難になってきている。したがって、通信装置から出力されるコマンドログの分析を効率化することが、ネットワーク監視及び管理業務の効率化を図るために重要であると考えられる。
【0005】
そこで、本発明は、通信装置から得られるコマンドログの分析を効率化することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一態様に係る情報処理装置は、通信装置から出力される、コマンドの実行結果を示す複数のコマンドログを取得する取得部と、複数のコマンドログに基づいて共通部分及びパラメータ部分を示すテンプレートを生成する生成部であって、複数のコマンドログの各々を複数のブロックに分割し、複数のブロックをクラスタリングすることで、複数のブロッククラスタに分類し、同一のブロッククラスタに分類される複数のブロックに含まれる単語列のうち共通部分及びパラメータ部分を示すテンプレートを、ブロッククラスタごとに生成する、生成部と、を有する。
【0007】
本発明の他の態様に係る情報処理装置は、複数のコマンドログの各々の特徴ベクトルと通信装置の動作状態を示す情報とを含む教師データを用いてモデルを学習させることで、特徴ベクトルを入力すると通信装置の動作状態を出力する学習モデルを生成する学習処理部、を有する。
【発明の効果】
【0008】
本発明によれば、通信装置から得られるコマンドログの分析を効率化することを可能にする技術を提供することができる。
【図面の簡単な説明】
【0009】
図1図1は、本実施形態に係る監視システムのシステム構成例を示す図である。
図2図2は、コマンドログの一例を示す図である。
図3図3は、監視装置がコマンドログから特徴ベクトルを生成する処理の概要を示す図である。
図4図4は、監視装置のハードウェア構成例を示す図である。
図5図5は、監視装置の機能ブロック構成例を示す図である。
図6図6は、監視装置が特徴ベクトルを生成する処理の一例を示すフローチャートである。
図7図7は、Pingのコマンドログの一例を示す図である。
図8図8は、ブロック分割した後のPingのコマンドログの一例を示す図である。
図9図8は、ブロッククラスタの一例を示す図である。
図10図10は、Pingコマンドのテンプレートを抽出する処理手順の一例を説明するための図である。
図11図11は、コマンドXのテンプレートを抽出する処理手順の他の例を説明するための図である。
図12図12は、特徴ベクトルの構成例その1を説明するための図である。
図13図13は、特徴ベクトルの構成例その2を説明するための図である。
図14図14は、特徴ベクトルの具体例その1を示す図である。
図15図15は、特徴ベクトルの具体例その2を示す図である。
図16図16は、特徴ベクトルの具体例その3を示す図である。
図17図17は、通信装置の動作状態を推定する処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
添付図面を参照して、本発明の実施形態について説明する。なお、各図において、同一の符号を付したものは、同一又は同様の構成を有する。
【0011】
<システム構成>
図1は、本実施形態に係る監視システム1のシステム構成例を示す図である。監視システム1は、監視装置10(情報処理装置)と、端末20と、ネットワーク30とを含む。
【0012】
ネットワーク30は、複数の通信装置40により構成され、ユーザネットワークやインターネットなどと接続されていてもよい。通信装置40は、例えばルータ又はスイッチ等であり、各種データのルーティング等を行う。通信装置40は、冗長構成を有しており、片系が故障してもサービスを継続可能なように構成されていてもよい。
【0013】
監視装置10は、複数の通信装置40の動作状態を監視する装置である。監視装置10は、通信装置40から、装置コマンドの実行結果であるコマンドログを取得し、取得したコマンドログを分析することで、コマンドログの特徴量を生成する。また、監視装置10は、生成したコマンドログの特徴量に基づいて、通信装置40の動作状態を推定する。コマンドログは、装置コマンドログと呼ばれてもよい。装置コマンドはどのようなコマンドであってもよいが、例えば、ping、traceroute、show interface、show onu uni-status、show service id、show LAG(Link Aggregation Group)などが挙げられる。装置コマンドは、コマンドと呼ばれてもよい。
【0014】
端末20は、オペレータ等が利用する端末であり、パーソナルコンピュータ(PC)、ノート型PC、スマートフォン、タブレット端末、携帯電話機など、通信機能を備えた端末であればあらゆる端末を用いることができる。端末20は、監視装置10と通信可能に接続され、監視装置10が出力する各種の情報を表示する。
【0015】
図2は、コマンドログの一例を示す図である。コマンドログC10は、通信装置40から出力される、pingコマンドのコマンドログの一例を示す。コマンドログC11は、通信装置40から出力される、show interfaceコマンドのコマンドログの一例を示す。コマンドログは、十数から数百行にわたる非構造なメッセージであり、メッセージの内容は装置コマンドごとに異なる。また、通信装置40が実行可能な装置コマンドは多数存在し、更に、通信装置40の種類及びベンダ等によっても利用可能な装置コマンドは異なる。また、同種の装置コマンドであっても、通信装置40の種類またはベンダ、通信装置40上で動作しているソフトウェアのバージョン、通信装置40の設定等によって、メッセージの内容及び構造、項目等が異なる場合もある。したがって、通信装置40の自動監視を実現するために、装置コマンドごとに分析ロジックを手作業で構築していくことは、非常に手間であり困難である。なお、以下の説明において、通信装置40の種類、通信装置40のベンダ、通信装置40上で動作しているソフトウェアのバージョン、及び/又は、通信装置40の動作設定等を、「通信装置情報」と言う。
【0016】
ここで、コマンドログとして出力される文字列には規則性が存在する。つまり、コマンドログは、文字列の出力パターンが定義された1以上のテンプレートの組み合わせにより生成されたものとみなすことができる。そこで、本実施形態では、監視装置10は、コマンドログを分析することでテンプレートを自動的に特定し、当該テンプレートを用いて、コマンドログの特徴量を示す特徴ベクトルを生成する。更に、本実施形態では、コマンドログの特徴ベクトルから通信装置40の動作状態を推定可能な学習済モデルを予め生成しておき、監視装置10は、監視対象の通信装置40から得られたコマンドログから特徴ベクトルを生成して学習済モデルに入力することで、通信装置40の動作状態を推定する。
【0017】
図3は、監視装置10がコマンドログから特徴ベクトルを生成する処理の概要を示す図である。図3は、コマンドAを通信装置40で実行することで得られる複数のコマンドログから、複数のコマンドログの各々について特徴ベクトルを生成する処理を示す。
【0018】
まず、監視装置10は、複数のコマンドログの各々を、所定条件に基づいて複数のブロックに分割する。続いて、監視装置10は、複数のブロックを、似た単語が含まれるブロックにクラスタリングする。複数のブロックをクラスタリングすることで得られるブロックの集合を、「ブロッククラスタ」と呼ぶ。続いて、監視装置10は、同一のブロッククラスタに属するブロックの間で共通に表れる単語列(以下、「共通部分」と言う。)及び共通部分以外の部分(以下、「パラメータ部分」と言う。)を特定することで、ブロッククラスタごとにテンプレートを生成する。続いて、監視装置10は、ブロッククラスタごとのテンプレートを用いて、コマンドログからパラメータ部分に該当する単語を抽出し、抽出したパラメータ部分に該当する単語を用いて特徴ベクトルを生成する。
【0019】
なお、本実施形態における「単語」は、1以上の文字又は数字から構成される文字又は文字列を意味することとしてもよい。すなわち、「5」及び「1111」といったように数字のみから構成される文字又は文字列、及び、「abc1111」といったように文字及び数字から構成される文字列も単語に含まれるものとしてもよい。
【0020】
<ハードウェア構成>
図4は、監視装置10のハードウェア構成例を示す図である。監視装置10は、CPU(Central Processing Unit)、GPU(Graphical Processing Unit)等のプロセッサ11、メモリ、HDD(Hard Disk Drive)及び/又はSSD(Solid State Drive)等の記憶装置12、有線又は無線通信を行う通信IF(Interface)13、入力操作を受け付ける入力デバイス14、及び情報の出力を行う出力デバイス15を有する。入力デバイス14は、例えば、キーボード、タッチパネル、マウス及び/又はマイク等である。出力デバイス15は、例えば、ディスプレイ、タッチパネル及び/又はスピーカ等である。
【0021】
監視装置10は、1又は複数の物理的なサーバ等から構成されていてもよいし、ハイパーバイザー(hypervisor)上で動作する仮想的なサーバを用いて構成されていてもよいし、クラウドサーバを用いて構成されていてもよい。
【0022】
<機能ブロック構成>
図5は、監視装置10の機能ブロック構成例を示す図である。監視装置10は、記憶部100と、取得部101と、生成部102と、学習処理部103と、推定部104とを含む。記憶部100は、監視装置10が備える記憶装置12を用いて実現することができる。また、取得部101と、生成部102と、学習処理部103と、推定部104とは、監視装置10のプロセッサ11が、記憶装置12に記憶されたプログラムを実行することにより実現することができる。また、当該プログラムは、記憶媒体に格納することができる。当該プログラムを格納した記憶媒体は、コンピュータ読み取り可能な非一時的な記憶媒体(Non-transitory computer readable medium)であってもよい。非一時的な記憶媒体は特に限定されないが、例えば、USBメモリ又はCD-ROM等の記憶媒体であってもよい。
【0023】
記憶部100は、通信装置40から収集したコマンドログを蓄積するコマンドログDB(Data Base)100aと、コマンドログの特徴ベクトルを入力することで、通信装置40の動作状態を出力するように学習された学習済モデル100bと、各種の単語が格納される単語辞書DB100cとを記憶する。
【0024】
取得部101は、通信装置40から出力される、コマンドの実行結果を示す複数のコマンドログ(第1のコマンドログ)を取得する。当該コマンドログ(第1のコマンドログ)は、テンプレート及び/又はモデルを学習させるための教師データを生成するために取得されたコマンドログであってもよい。
【0025】
生成部102は、取得部101で得られた複数のコマンドログに基づいてテンプレートを生成する。より具体的には、生成部102は、複数のコマンドログの各々を複数のブロックに分割し、複数のブロックをクラスタリングすることで、複数のブロッククラスタに分類し、同一のブロッククラスタに分類される複数のブロックに含まれる単語列のうち共通部分及びパラメータ部分を示すテンプレートを、ブロッククラスタごとに生成する。
【0026】
また、生成部102は、取得部101で得られた複数のコマンドログを分析することで、複数のコマンドログの各々の特徴ベクトルを生成する。より具体的には、生成部102は、複数のコマンドログの各々を複数のブロックに分割し、複数のブロックをクラスタリングすることで、複数のブロッククラスタに分類し、同一のブロッククラスタに分類される複数のブロックに含まれる単語列のうち共通部分及びパラメータ部分を示すテンプレートを、ブロッククラスタごとに生成し、複数のコマンドログの各々に対してブロッククラスタごとのテンプレートを適用することで、複数のコマンドログの各々に含まれる単語列の中から、テンプレートで示されるパラメータ部分に対応する1以上の単語を、コマンドログごとに抽出し、抽出したコマンドログごとの当該1以上の単語に基づいて、複数のコマンドログの各々の特徴ベクトルを生成する。
【0027】
なお、通信装置40は、属性の異なる複数の通信装置40を含んでおり、生成部102は、属性の異なる複数の通信装置40から出力される複数のコマンドログに基づいてテンプレートを生成する処理を、属性の異なる通信装置ごとに実行するようにしてもよい。つまり、属性Aの複数の通信装置40と、属性Bの複数の通信装置40が存在する場合、属性Aの複数の通信装置40から出力される複数のコマンドログに基づいてテンプレートを生成する処理と、属性Bの複数の通信装置40から出力される複数のコマンドログに基づいてテンプレートを生成する処理とを、別々に実行するようにしてもよい。同様に、生成部102は、属性の異なる複数の通信装置40から出力される複数のコマンドログに基づいて特徴ベクトルを生成する処理を、属性の異なる通信装置ごとに実行するようにしてもよい。通信装置40の属性については後述する。
【0028】
また、取得部101は、通信装置40から出力される、コマンドの実行結果を示す複数のコマンドログ(第2のコマンドログ)を取得する。当該コマンドログ(第2のコマンドログ)は、作成済みのテンプレート及び学習済モデルを用いて通信装置40の動作状態を推定するために取得されたコマンドログであってもよい。
【0029】
また、生成部は、取得部101で取得されるコマンドログ(第2のコマンドログ)の各々に対してブロッククラスタごとのテンプレートを適用することで、当該コマンドログに含まれる単語列の中から、テンプレートで示されるパラメータ部分に対応する1以上の単語(1以上の第2の単語)を抽出し、抽出した1以上の単語(第2の単語列)に基づいて、当該コマンドログ(第2のコマンドログ)の特徴ベクトルを生成するようにしてもよい。
【0030】
学習処理部103は、複数のコマンドログ(第1のコマンドログ)の各々の特徴ベクトルと通信装置40の動作状態とを含む教師データを用いてモデルを学習させることで、特徴ベクトルを入力すると通信装置40の動作状態を出力する学習モデルを生成する。学習処理部103は、生成した学習モデルを定義するパラメータセットを、学習済モデル100bに格納する。
【0031】
推定部104は、生成部102で生成されたコマンドログ(第2のコマンドログ)の特徴ベクトルを、学習処理部103で学習された学習モデルに入力することで、通信装置40の動作状態を推定する。
【0032】
<処理手順>
(特徴ベクトルの生成)
図6は、監視装置10が特徴ベクトルを生成する処理の一例を示すフローチャートである。以下で説明する処理手順は、装置コマンド毎に実行される。すなわち、pingコマンドのコマンドログと、show service idコマンドのコマンドログについて特徴ベクトルを生成する場合、監視装置10は、pingコマンド及びshow service idコマンドについて、以下で説明する処理手順を別々に実行する。
【0033】
通信装置40は、通信装置情報に基づいて複数の属性に分けられてもよい。また、以下で説明する手順は、装置コマンド毎に加えて、通信装置40の属性毎に実行されてよい。具体的には、例えば、ベンダA製の通信装置40と、ベンダB製の通信装置40のそれぞれにおいて、pingコマンドのコマンドログと、show service idコマンドのコマンドログについて特徴ベクトルを生成する場合、監視装置10は、ベンダA製通信装置40のpingコマンドと、ベンダA製通信装置40のshow service idコマンド、ベンダB製通信装置40のpingコマンドと、ベンダB製通信装置40のshow service idコマンドについて、以下で説明する処理手順を別々に実行してよい。
【0034】
なお、通信装置情報は、通信装置情報を記憶するデータベース(図示しない)に予め記憶されたものを参照してよい。また、通信装置情報は、SNMP(Simple Network Management Protocol)をはじめとする既知の通信プロトコルを用いて、通信装置40から取得されてもよい。さらに、通信装置情報は、以下で説明する処理手順を用いて対応するコマンド(show version、show running-config等)のコマンドログから抽出され、取得されてもよい。上記の通信装置情報を取得する手段は一例であり、上記の例に限定されるものではない。
【0035】
通信装置40の属性は、通信装置情報を用いて定義可能であればどのように定義されてもよい。例えば、通信装置40の属性は、通信装置40の製造ベンダに基づいて定義されてよい。具体的には、例えば、ベンダAの通信装置40、ベンダBの通信装置40のように、製造ベンダが同一である通信装置40は同一の属性であることとしてよい。また、例えば、通信装置40の属性は、通信装置40の製造ベンダ及び通信装置40のソフトウェアバージョンに基づいて定義されてよい。具体的には例えば、ベンダAかつソフトウェアバージョンが1.0である通信装置40、ベンダAかつソフトウェアバージョンが2.0である通信装置のように、製造ベンダが同一であり、かつソフトウェアバージョンも同一である通信装置40は同一の属性であることとしてもよい。なお、上記の通信装置40の属性を定義する通信装置情報は、一例であり、上記の例に限定されない。例えば、通信装置40の型式または、通信装置40の設定状況に基づいて定義されてもよい。
【0036】
ステップS10で、取得部101は、ネットワーク30に存在する1以上の通信装置40から、特徴ベクトルを生成する装置コマンドについての複数のコマンドログを取得する。なお、取得部101は、監視装置10のコマンドログDB100aに格納されているコマンドログのログデータの中から、特徴ベクトルを生成するために用いる複数のコマンドログを取得するようにしてもよい。例えば、pingコマンドのコマンドログについて特徴ベクトルを生成する場合、コマンドログDB100aの中から、pingコマンドのコマンドログを複数取得するようにしてもよい。若しくは、取得部101は、通信装置40にログインしてpingコマンドを投入することにより、通信装置40から直接pingコマンドのコマンドログを取得するようにしてもよい。取得するコマンドログの数は2以上であれば特に限定されない。
【0037】
ステップS11で、生成部102は、ステップS10で取得した複数のコマンドログについて、複数のコマンドログの各々を、所定条件に従って分割することで、複数のコマンドログを複数のブロックに分割する。「所定条件」は、例えば空白行であってもよい。すなわち、複数のコマンドログを所定条件に従って分割することは、複数のコマンドログを空白行で分割することであってもよい。なお、所定条件は、空白行に限られず、特定の文字列であってもよい。また、所定条件は、複数種類の条件のうち少なくとも2つ以上の組み合わせであってもよいし、複数の条件のうちいずれか1つであってもよい。具体的には、例えば、所定条件として空白行と、特定の文字列とが設定されている場合、生成部102は、空白行及び特定の文字列の両方でコマンドログを分割してよい。さらに、所定条件は、特定の文字列のパターンであってもよい。具体的には、例えば、所定条件として、「-」が5回以上連続する箇所などのように指定されてよい。以下、所定条件は空白行であるものとして説明する。
【0038】
図7は、pingのコマンドログの一例を示す図である。図7には、コマンドログの例として、コマンドログ1(ping)、コマンドログ2(ping)、及び、コマンドログ3(ping)が図示されている。図7に示すように、pingコマンドには空白行が1つ存在しており、空白行よりも上側にはicmpパケットごとのラウンドトリップ時間が5つ記述され、空白行よりも下側には5つのicmpパケットについてラウンドトリップ時間の最小時間、平均時間、最大時間及び標準偏差(standard deviation)が記録されている。生成部102は、pingのコマンドログを、空白行で分割することで、コマンドログを2つのブロックに分割する。なお、空白行が2つ以上存在する装置コマンドの場合、生成部102は、コマンドログを3つ以上のブロックに分割することになる。
【0039】
図8は、ブロック分割した後のpingのコマンドログの一例を示す図である。図7におけるコマンドログ1は、図8のブロック1-1及びブロック1-2に対応する。また、図7におけるコマンドログ2は、図8のブロック2-1及びブロック2-2に対応する。また、図7におけるコマンドログ3は、図8のブロック3-1及びブロック3-2に対応する。図6に戻り説明を続ける。
【0040】
ステップS12で、生成部102は、ステップS11で複数のコマンドログを分割することで生成された複数のブロックをクラスタリングすることで、複数のブロックを、同一のテンプレートを有すると考えられるブロッククラスタごとに分類する。クラスタリング処理については後述する。
【0041】
ここで、ブロッククラスタCiをブロックの集合として定義する。なお、iは1以上の正の整数である。また、Ciに含まれるブロックに含まれる単語リストをLiと定義する。なお、単語リストLiは、空白(スペース)を区切り文字として抽出したブロック内の全単語を、重複を許さずに格納したリストである。また、単語リストLiにおける単語数をNiと定義する。同様に、ブロッククラスタCjをブロックの集合として定義する。なお、jは1以上の正の整数である。また、Cjに含まれるブロックに含まれる単語リストをLjと定義する。なお、単語リストLjは、空白を区切り文字として抽出したブロック内の全単語を、重複を許さずに格納したリストである。また、単語リストLjにおける単語数をNjと定義する。この場合において、異なるブロッククラスタCi及びCjに対する類似度スコアSijを、以下の数式1の通り定義する。
【数1】
ここで、len(X)は、Xに含まれる単語数を表す。すなわち、数式1における分子は、単語リストLi及びLjで共通に存在する単語の単語数を意味する。また、max(X)は、Xのうち値が大きい方の値を表す。すなわち、数式1における分母は、単語数Ni及びNjのうち大きい方の値を意味する。
【0042】
生成部102は、ステップS11の処理手順で生成された各々のブロックを1つのブロッククラスタとみなし、数式1を用いて、複数のブロッククラスタにおける全てのペアについて、類似度スコアを算出する。例えば、4つのブロッククラスタ1~4が存在する場合、生成部102は、ブロッククラスタ1及びブロッククラスタ2の類似度スコア、ブロッククラスタ1及びブロッククラスタ3の類似度スコア、ブロッククラスタ1及びブロッククラスタ4の類似度スコア、ブロッククラスタ2及びブロッククラスタ3の類似度スコア、ブロッククラスタ2及びブロッククラスタ4の類似度スコア、ブロッククラスタ3及びブロッククラスタ4の類似度スコアを算出する。
【0043】
続いて、生成部102は、ブロッククラスタの全てのペアのうち、類似度スコアが閾値Tを超えており、かつ、最も類似度スコアが高いブロッククラスタのペアを、以下に示す数式2、数式3及び数式4に従って併合する。なお、生成部102は、最も類似度スコアが高いブロッククラスタのペアが複数存在する場合、併合する1つのペアを、最も類似度スコアが高い複数のペアの中からランダムに選択する。
【数2】
ここで、Ci′は、Ci及びCjを併合した後のブロッククラスタを示す。
【数3】
ここで、Li′は、単語リストLi及びLjの両方に含まれる単語から構成される単語リストを示す。
【数4】
ここで、Ni′は、単語リストLiにおけるユニークな単語数Niと単語リストLiにおけるユニークな単語数Njとの平均値を意味する。
【0044】
ブロッククラスタのペアを併合した後、生成部102は、併合後のブロッククラスタを含む複数のブロッククラスタにおける全てのペアについて、類似度スコアを算出する。続いて、生成部102は、複数のブロッククラスタにおける全てのペアのうち、類似度スコアが閾値Tを超えており、かつ、最も類似度スコアが高いブロッククラスタのペアを併合する。もし、最も類似度スコアが高いブロッククラスタのペアが複数存在する場合、生成部102は、併合する1つのペアを、当該複数のペアの中からランダムに選択する。このように、生成部102は、ブロッククラスタにおける全てのペアの類似度スコアを算出して併合する処理を、類似度スコアが閾値Tを超えているペアが存在しなくなるまで繰り返す。
【0045】
続いて、図8を参照しながら、クラスタリングを行う処理の具体例を説明する。まず、生成部102は、各ブロックをブロッククラスタとみなし、ブロッククラスタ1-1~ブロッククラスタ3-2の全てのペア(すなわち、15個のペア)について、類似度スコアを算出する。ここで、ブロッククラスタ(1-1)及びブロッククラスタ(1-2)の間の類似度スコアSを算出する際の例を説明する。まず、ブロッククラスタ(1-1)の単語リストLは、「Ping」、「56」、「data」、「byte」、「64byte」、「from」、「icmp_seq=1」、「ttl=225」、「time=1.41ms」、「time=1.66ms」、「time=1.54ms」、「time=1.61ms」、「time=1.65ms」であり、ブロッククラスタ(1-1)の単語数Nは13である。
【0046】
また、ブロッククラスタ(1-2)における単語リストLは、「----」、「PING」、「Statistics」、「5」、「Packets」、「transmitted」、「packets」、「received」、「0.00%」、「packet」、「loss」、「round-trip」、「min」、「=」、「1.41ms」、「avg」、「1.57ms」、「max」、「1.66ms」、「stddev」、「0.091ms」であり、ブロッククラスタ(1-2)における単語数Nは21である。なお、生成部102は、「Ping」及び「PING」、「Packets」及び「packets」のように相違点が大文字及び小文字のみである単語を、異なる単語として認識するようにしてもよいし、同一の単語として認識するようにしてもよい。ここでは、異なる単語として認識するものとして説明する。
【0047】
以上より、ブロッククラスタ(1-1)の単語リスト及びブロッククラスタ(1-2)の単語リストについて、共通に存在する単語の単語数Nは、ゼロである。したがって、ブロッククラスタ(1-1)及びブロッククラスタ(1-2)の類似度スコアSはゼロになる。
【0048】
同様に、生成部102は、ブロッククラスタ(1-1)及びブロッククラスタ(2-1)の間の類似度スコアSを算出する際の例を説明する。ブロッククラスタ(2-1)の単語リストLは、「Ping」、「56」、「data」、「byte」、「64byte」、「from」、「icmp_seq=1」、「ttl=225」、「time=13.3ms」、「time=13.4ms」であり、ブロッククラスタ(2-1)の単語数Nは10である。
【0049】
ブロッククラスタ(1-1)の単語リストL及びブロッククラスタ(2-1)の単語リストLについて、共通に存在する単語の単語数Nは8である。また、ブロッククラスタ(1-1)の単語数及びブロッククラスタ(2-1)の単語数Nのうち大きい方の数は13である。したがって、ブロッククラスタ(1-1)及びブロッククラスタ(2-1)の間の類似度スコアSは、8/13(約0.62)になる。
【0050】
このように、生成部102は、ブロッククラスタのペアごとに類似度スコアを算出す処理を繰り返すことで、ブロッククラスタ1-1~ブロッククラスタ3-2における全てのペアについて、類似度スコアを算出する。
【0051】
次に、生成部102は、全てのペアの類似度スコアのうち、閾値Tを超えており、かつ、類似度スコアが最も高いブロッククラスタのペアを併合する。ここではブロッククラスタ(1-1)及びブロッククラスタ(2-1)を併合するものと仮定する。
【0052】
生成部102は、ブロッククラスタ(1-1)及びブロッククラスタ(2-1)を併合することで新たなブロッククラスタ(1-1、2-1)を生成する。併合後のブロッククラスタ(1-1、2-1)の単語リストLは、数式3に従い、「Ping」、「56」、「data」、「byte」、「64byte」、「from」、「icmp_seq=1」、「ttl=225」であり、併合後のブロッククラスタ(1-1、2-1)の単語数Nは、数式4に従って、(13+10)÷2=11.5になる。
【0053】
続いて、生成部102は、ブロッククラスタ(1-1、2-1)、ブロッククラスタ(1-2)、ブロッククラスタ(2-2)、ブロッククラスタ(3-1)及びブロッククラスタ(3-2)の5つのブロッククラスタにおける全てのペア(すなわち、10個のペア)について、類似度スコアを算出し、全てのペアの類似度スコアのうち、閾値Tを超えており、かつ、類似度スコアが最も高いブロッククラスタのペアを併合する。
【0054】
生成部102は、ブロッククラスタにおける全てのペアの類似度スコアを算出して併合する処理を繰り返し、ブロッククラスタ(1-1、2-1、3-1)及びブロッククラスタ(1-2、2-2、3-2)の2つのブロッククラスタが生成されたものとする。
【0055】
続いて、生成部102は、ブロッククラスタ(1-1、2-1、3-1)及びブロッククラスタ(1-2、2-2、3-2)の間の類似度スコアSを計算する。ここでは、当該類似度スコアSは閾値Tを超えなかったものと仮定する。この状態において、更に組み合わせ可能なブロッククラスタは存在しないことから、生成部102は、クラスタリング処理を終了する。
【0056】
これにより、生成部102は、図9に示すように、ブロック1-1~ブロック3-2の6つのブロックを、ブロック1-1、ブロック2-1及びブロック3-1が属するブロッククラスタ1及びブロック1-2、ブロック2-2及びブロック3-2が属するブロッククラスタ2の2つのブロッククラスタに分類することになる。図6に戻り説明を続ける。
【0057】
ステップS13で、生成部102は、ステップS12の処理手順で分類された各ブロッククラスタについて、同一のブロッククラスタに属する全てのブロックに対して、シーケンスアライメントを適用することで、各ブロッククラスタに対応するテンプレートを抽出する。ここで、シーケンスアライメントとは、複数の系列間における類似した部分列を特定する手法である。シーケンスアライメントを実現するアルゴリズムとしては、例えば、Needleman-Wunschアルゴリズムが知られている。Needleman-Wunschアルゴリズムを利用することで、2つのテキストデータの各々に含まれる単語列のうち、共通部分(マッチ)及び非共通部分(ミスマッチ又はギャップのいずれか)を抽出することができる。
【0058】
Needleman-Wunschアルゴリズムは、2つの異なる単語列に、ギャップと呼ばれる特殊文字を挿入しながら、単語列間の類似度を最大化することで、共通部分及び非共通部分を抽出する手法である。マッチとは、2つの単語列を先頭から数えて同一の位置に存在する単語が一致していることを意味する。ミスマッチとは、2つの単語列を先頭から数えて同一の位置に存在する単語が一致していないことを意味する。また、ギャップとは、2つの単語列を先頭から数えて同一の位置において、2つの単語例のいずれか一方に特殊文字(ギャップ)が存在することを意味する。
【0059】
例えば、特殊文字(ギャップ)を挿入して類似度を最大化した後の2つの単語列が、「5 packets transmitted. 5 packets bounced. 0 packets received.」及び「5 packets transmitted. GAP GAP GAP 5 packets received.」であると仮定する。この場合、最初の3つの単語(「5」、「packets」、「transmitted」)は2つの単語列で同一であるためマッチと判定される。次の3つの単語は、一方の単語列が特殊文字(GAP)であるためギャップと判定される。次の1つの単語(一方は「0」で他方は「5」)は2つの単語列で同一ではないためミスマッチと判定される。残りの2つの単語(「packets」、「transmitted」)は、2つの単語列で同一であるためマッチと判定される。
【0060】
そこで、生成部102は、同一のブロッククラスタに属する2つのブロックに含まれる単語列について、Needleman-Wunschアルゴリズムを利用することで共通部分と非共通部分(ミスマッチ又はギャップのいずれか)に分類する。また、生成部102は、非共通部分に分類された単語列を、数値のみから構成される「数値パラメータ」と、数値を含まない文字のみからなる「単語パラメータ」と、数値及び文字の両方を含む「その他パラメータ」とに分類する。更に、生成部102は、共通部分に該当する単語と数値パラメータを示す符号と単語パラメータを示す符号とその他パラメータを示す符号とを並べることで、2つのブロックに対応するテンプレートを生成する。
【0061】
同一のブロッククラスタに3つ以上のブロックが含まれる場合、生成部102は、総当たりでテンプレートを生成する。また、生成部102は、全てのブロックの組み合わせにおいて共通部分として分類された部分のみを、ブロッククラスタに対応するテンプレートの共通部分とし、それ以外の部分については数値パラメータ、単語パラメータ又はその他パラメータのいずれかに分類する。なお、数値パラメータは、数字のみで表現されるパラメータ(例えば、50や1111など)を意味し、単語パラメータは、文字列のみで表現されるパラメータ(例えば、pingやpacketなど)を意味し、その他パラメータは、数字及び文字列の組み合わせで表現されるパラメータ(例えば、TunGrp04-0035など)を意味する。
【0062】
例えば、生成部102は、全てのブロックの組み合わせのうち、少なくとも一部のブロックの組み合わせにおいて非共通部分に分類された部分(すなわち、全てのブロックの組み合わせにおいて非共通部分に分類された部分、若しくは、一部のブロックの組み合わせにおいて共通部分に分類され、かつ、その他のブロックの組み合わせにおいて非共通部分に分類された部分を意味しており、以下同様)が、全てのブロックの組み合わせにおいて数値のみで構成される場合、当該部分を数値パラメータに分類するようにしてもよい。
【0063】
また、生成部102は、全てのブロックの組み合わせのうち、少なくとも一部のブロックの組み合わせにおいて非共通部分に分類された部分が、全てのブロックの組み合わせにおいて単語のみで構成される場合、当該部分を単語パラメータに分類するようにしてもよい。
【0064】
また、生成部102は、全てのブロックの組み合わせのうち、少なくとも一部のブロックの組み合わせにおいて非共通部分に分類された部分が、一部のブロックの組み合わせにおいて単語で構成され、かつ、その他のブロックの組み合わせにおいて非共通部分に分類された部分が数字で構成される場合、当該部分を単語パラメータに分類するようにしてもよい。
【0065】
また、生成部102は、全てのブロックの組み合わせのうち、少なくとも一部のブロックの組み合わせにおいて非共通部分に分類された部分が、一部のブロックの組み合わせにおいて単語及び数字で構成される場合、当該部分をその他パラメータに分類するようにしてもよい。
【0066】
図10は、pingコマンドのテンプレートを抽出する処理手順の一例を説明するための図である。図10のブロッククラスタ1及びブロッククラスタ2は、それぞれ、図9に示すブロッククラスタ1及びブロッククラスタ2に対応する。なお、生成部102は、コマンドログにおいて、空白又はコロンで区切られた範囲の文字を1つの単語とみなすようにしてもよい。また、コロンやイコールなどの符号そのものについても、1つの単語とみなすようにしてもよい。
【0067】
まず、生成部102は、ブロッククラスタ1のテンプレートを抽出する。生成部102は、ブロック1-1及びブロック2-1に対し、Needleman-Wunschアルゴリズムを利用することで、共通部分と数値パラメータと単語パラメータとその他パラメータとに分類する。例えば、「Ping」、「56」、「data」、「byte」、「64byte」、「from」、「icmp_seq」、「=」、「1」、「ttl」、「=」、「225」、「time」、「=」、「ms.」等が存在する部分が共通部分として分類され、「1.41」及び「13.3」等が存在する部分が数値パラメータとして分類される。
【0068】
続いて、生成部102は、ブロック2-1及びブロック3-1に対し、Needleman-Wunschアルゴリズムを利用することで、共通部分と数値パラメータと単語パラメータとその他パラメータとに分類する。例えば、「Ping」、「56」、「data」、「byte」、「64byte」、「from」、「icmp_seq」、「=」、「1」、「ttl」、「=」、「225」、「time」、「=」、「ms.」等が存在する部分が共通部分として分類され、「13.3」及び「3.8」等が存在する部分が数値パラメータとして分類される。
【0069】
続いて、生成部102は、ブロック1-1及びブロック3-1に対し、Needleman-Wunschアルゴリズムを利用することで、共通部分と数値パラメータと単語パラメータとその他パラメータとに分類する。例えば、「Ping」、「56」、「data」、「byte」、「64byte」、「from」、「icmp_seq」、「=」、「1」、「ttl」、「=」、「225」、「time」、「=」、「ms.」等が存在する部分が共通部分として分類され、「1.41」及び「3.8」等が存在する部分が数値パラメータとして分類される。
【0070】
生成部102は、ブロック1-1及びブロック2-1の組み合わせ、ブロック2-1及びブロック3-1の組み合わせ、ブロック1-1及びブロック3-1の組み合わせの全てにおいて共通部分として分類された部分、すなわち、「Ping」、「56」、「data」、「byte」、「64byte」、「from」、「icmp_seq」、「=」、「1」、「ttl」、「=」、「225」、「time」、「=」、「ms.」等が存在する部分を、ブロッククラスタ1の共通部分として分類する。また、生成部102は、ブロック1-1及びブロック2-1の組み合わせ、ブロック2-1及びブロック3-1の組み合わせ、ブロック1-1及びブロック3-1の組み合わせの全てにおいて非共通部分として分類され、かつ、数字のみで構成される部分、すなわち、「1.41」、「13.3」及び「3.8」が存在する部分、並びに、「1.66」、「13.3」及び「4.1」が存在する部分については、数値パラメータとして分類する。
【0071】
続いて、生成部102は、共通部分として分類した単語、数値パラメータとして分類した部分を並べることで、ブロッククラスタ1のテンプレートを生成する。生成されたブロッククラスタ1のテンプレートを、図10のTB1に示す。なお、図10及び以下に示す図において、「***」は数値パラメータに該当する部分を意味し、「###」は単語パラメータに該当する部分を意味し、「@@@」はその他パラメータに該当する部分を意味する。
【0072】
生成部102は、同様の処理手順で、ブロッククラスタ2のテンプレートを生成する。生成されたブロッククラスタ2のテンプレートを、図10のTB2に示す。
【0073】
図11は、コマンドXのテンプレートを抽出する処理手順の他の例を説明するための図である。図11の例では、「lag-109」が存在する部分はブロック2及びブロック3で共通であるが、ブロック1では「lag-106」である。従って、生成部102は、テンプレートにおいて、「lag-106」及び「lag-109」の部分をその他パラメータに分類する。また、「quiq」の部分は、ブロック1及びブロック2に存在するが、ブロック3には存在しない(すなわち、ブロック3ではギャップに相当する)。従って、生成部102は、テンプレートにおいて、「quiq」の部分を単語パラメータに分類する。また、「Admin State:」の後の部分は、ブロック1では「Up」であるが、ブロック2及びブロック3では「Down」である。従って、生成部102は、テンプレートにおいて、「Admin State:」の後の「Up」又は「Down」の部分を単語パラメータに分類する。また、「OpenState:」の後の部分は、ブロック1では「Down」であるが、ブロック2及びブロック3では「Up」である。従って、生成部102は、テンプレートにおいて、「OpenState:」の後の「Down」又は「Up」の部分を単語パラメータに分類する。生成されたコマンドXのブロッククラスタのテンプレートを図11の下段に示す。図6に戻り説明を続ける。
【0074】
ステップS14で、生成部102は、テンプレートを用いて、コマンドログの特徴ベクトルを生成する。本実施形態では、生成部102は、コマンドログを構成する単語列から、テンプレートにおける数値パラメータ及び単語パラメータに該当する部分の数値又は文字列を抽出し、抽出した数値又は文字列から生成される値を並べることで、コマンドログの特徴ベクトルを生成する。
【0075】
ここで、特徴ベクトルを生成するコマンドログのうち、テンプレートの数値パラメータに該当する部分の数値については、コマンドログの値をそのまま特徴ベクトルの要素にしてもよい。例えば、コマンドログのうちテンプレートの数値パラメータに該当する部分に1.41の数値が存在する場合、1.41をそのまま特徴ベクトルの要素にしてもよい。
【0076】
若しくは、生成部102は、当該コマンドログの値を、テンプレート生成に用いた複数のコマンドログにおける、テンプレートの数値パラメータに該当する部分の数値の平均値と標準偏差を用いて標準化した値を、特徴ベクトルの要素にしてもよい。例えば、特徴ベクトルを生成する対象のコマンドログのうちテンプレートの1番目の数値パラメータに該当する部分に「1.41」の数値が存在し、かつ、当該テンプレート生成に用いた3つのコマンドログにおいて当該テンプレートの1番目の数値パラメータに該当する部分の数値は、「1.41」、「13.3」及び「3.8」であったとする。「1.41」、「13.3」及び「3.8」の平均値は6.17であり、標準偏差は5.14である。また、Xを標準化した値は、(X-平均値)÷標準偏差で計算することができる。従って、生成部102は、「1.41」を標準化した値である「-0.93」を特徴ベクトルの要素にしてもよい。すなわち、生成部102は、特徴ベクトルを生成する対象のコマンドログにテンプレートを適用することで抽出した1以上の単語のうち、数値パラメータに対応する単語について、該単語で示される数値を標準化した後の数値に基づいて、特徴ベクトルを生成するようにしてもよい。これにより、コマンドログの値の範囲が異なる場合であっても、各値を平等に特徴量として扱うことが可能になる。
【0077】
また、単語パラメータについては、テンプレート生成に用いた複数のコマンドログにおける、テンプレートの単語パラメータに該当する部分の単語のうち、予め指定された単語が出現する数を、特徴ベクトルの要素にしてもよい。予め指定された単語は、例えば、任意の単語辞書に掲載されている単語であってもよい。例えば、図11の例において、テンプレート生成に用いた複数のコマンドログにおいてテンプレートの単語パラメータに該当する部分の単語は、「quiq」、「UP」及び「Down」である。また、これら3つのうち、任意の単語辞書に掲載されている単語は、「UP」及び「Down」の2つであるものと仮定する。また、特徴ベクトルを生成するコマンドログにおいて、テンプレートの単語パラメータに該当する部分の単語のうち「Up」が出現する数が3であり、「Down」が出現する数が1であったと仮定する。この場合、3及び1を、特徴ベクトルの要素にしてもよい。すなわち、生成部102は、特徴ベクトルを生成する対象のコマンドログにテンプレートを適用することで抽出した1以上の単語のうち単語パラメータに対応する単語の中に含まれる、予め指定された単語の数に基づいて、特徴ベクトルを生成するようにしてもよい。コマンドログには、装置名を含む固有名詞又は記号など、単体では意味をなさない単語が多く含まれることから、故障解析等に有効と考えられる単語に絞って特徴ベクトルを生成することが可能になる。
【0078】
図12は、特徴ベクトルの構成例その1を説明するための図である。図12は、pingコマンドに対応する特徴ベクトルの構成例を示す。これまでに説明したように、pingコマンドのコマンドログは、ブロッククラスタ1及びブロッククラスタ2に分類され、ブロッククラスタ1及びブロッククラスタ2のそれぞれについて、テンプレートが生成される。そこで、生成部102は、ブロッククラスタ1のテンプレートのうち1番目~5番目の数値パラメータを、それぞれ、特徴ベクトルの1番目~5番目の要素に割り当てるとともに、ブロッククラスタ2のテンプレートのうち1番目~4番目の数値パラメータを、それぞれ、特徴ベクトルの6番目~9番目の要素に割り当てるようにしてもよい。
【0079】
図13は、特徴ベクトルの構成例その2を説明するための図である。図13は、コマンドXに対応する特徴ベクトルの構成例を示す。ここで、ブロッククラスタXのテンプレートを生成する際に用いた複数のコマンドログにおいて、ブロッククラスタXのテンプレートのうち2か所の単語パラメータ部分には、単語辞書に掲載されいる単語として「Up」及び「Down」が存在していたものとする。この場合、生成部102は、ブロッククラスタXのテンプレートのうち1番目の数値パラメータを、特徴ベクトルの1番目の要素に割り当てる。また、生成部102は、ブロッククラスタXのテンプレートに含まれる2つの単語パラメータに対応する特徴ベクトルの要素として、「UP」の数及び「Down」の数を、それぞれ特徴ベクトルの2番目及び3番目の要素に割り当てる。
【0080】
図14は、特徴ベクトルの具体例その1を示す図である。図14は、pingコマンドのコマンドログXについて、図12に示す方法で特徴ベクトルを生成した場合の例を示している。なお、図14の例では、コマンドログのうちテンプレートの数値パラメータに該当する部分の値をそのまま特徴ベクトルの要素にしているが、これに代えて、標準化後の値を特徴ベクトルに要素にしてもよい。
【0081】
図15は、特徴ベクトルの具体例その2を示す図である。図15は、pingコマンドのコマンドログYについて、図12に示す方法で特徴ベクトルを生成した場合の例を示している。なお、図15に示すコマンドログは、図14と異なり、ブロッククラスタ2のテンプレートに該当する部分が存在せず、欠損している。この場合、生成部102は、欠損部分に対応する特徴ベクトルの要素には、ゼロを設定するようにしてもよい。
【0082】
図16は、特徴ベクトルの具体例その3を示す図である。図16は、コマンドXのコマンドログについて、図13に示す方法で特徴ベクトルを生成した場合の例を示している。
【0083】
なお、上述したように、監視装置10は、特徴ベクトルを用いてモデルを学習させる処理、及び、学習済みモデルを用いて通信装置40の動作状態を推定する処理を行う。従って、コマンドログから生成する特徴ベクトルの次元数及び各要素の意味を定めておく必要がある。そこで、生成部102は、これまでに説明した処理手順により生成した特徴ベクトルについて、コマンドごとに、特徴ベクトルに含まれる各要素とテンプレートとの対応関係及び各要素の生成方法を定義する情報(以下、「特徴ベクトル定義データ」と言う。)を生成して記憶部100に格納しておくようにしてもよい。なお、各要素の生成方法には、例えば、数値パラメータを標準化した値を要素に格納することを指示する情報、及び/又は、単語パラメータのうち何の単語の数をどの位置の要素に格納するのかを指示する情報等が含まれる。
【0084】
例えば、生成部102は、図12に示す構成の特徴ベクトルを生成した場合、コマンドログのうち、ブロッククラスタ1のテンプレートの1番目~5番目の数値パラメータに該当する値が、それぞれ、特徴ベクトルの1番目~5番目の要素に対応することと、コマンドログのうち、ブロッククラスタ2のテンプレートの1番目~4番目の数値パラメータに該当する値が、それぞれ、特徴ベクトルの6番目~9番目の要素に対応することを示す特徴ベクトル定義データを生成する。なお、生成部102は、標準化した値を特徴ベクトルの要素とする場合、ブロッククラスタ1のテンプレートのうち1番目~9番目の各数値パラメータを特徴ベクトルの要素に変換する際に用いた偏差値及び平均値を、数値パラメータごとに、特徴ベクトル定義データに含めておく。
【0085】
また、例えば、生成部102は、図13に示す構成の特徴ベクトルを生成した場合、コマンドログのうち、テンプレートの1番目の数値パラメータに該当する値が、特徴ベクトルの1番目に対応することと、コマンドログのうち、テンプレートの単語パラメータの部分に該当する単語における「UP」の数及び「Down」の数を、それぞれ特徴ベクトルの2番目及び3番目の要素に割り当てることを示す特徴ベクトル定義データを生成する。
【0086】
(モデルの学習)
学習処理部103は、複数のコマンドログの各々の特徴ベクトルと通信装置40の動作状態を示す情報とを含む教師データを用いてモデルを学習させることで、特徴ベクトルを入力すると通信装置40の動作状態を出力するモデルを生成する。学習処理部103は、コマンド種別ごとに、異なるモデルを生成するようにしてもよい。例えば、学習処理部103は、pingコマンド用のモデル、show interfaceコマンド用のモデルのように、コマンド種別ごとにモデルを生成するようにしてもよい。モデルに用いるアルゴリズムは特に限定されないが、例えば、ニューラルネットワーク、サポートベクターマシン、決定木、ランダムフォレスト、勾配ブースティング決定木などを利用することとしてもよい。
【0087】
通信装置40の動作状態を示す情報は、例えば、通信装置40の動作状態を2種類表現可能なフラグ(例えば、正常の場合は0、異常の場合は1など)であってもよいし、通信装置40の状態を3種類以上表現可能なフラグ(例えば、両系との正常の場合は0、片系が異常である場合は1、両系が異常の場合は2など)であってもよい。なお、教師データは、オペレータが、過去に監視業務を行った際のログデータに対して通信装置40の動作状態を付与することで生成されたものであってもよい。
【0088】
(通信装置の動作状態の推定)
図17は、通信装置40の動作状態を推定する処理手順の一例を示すフローチャートである。なお、以下の説明では、特徴ベクトルを入力すると通信装置40の動作状態を出力することが可能な学習済モデルが、予め生成済みであるものとする。
【0089】
ステップS20で、取得部101は、通信装置40から出力されるコマンドログ(第2のコマンドログ)を取得する。当該コマンドログは、例えば、通信装置40の監視業務を行うために、オペレータ又は監視装置10が通信装置40に投入した装置コマンドに対する応答として出力されたものであってもよい。
【0090】
ステップS21で、生成部102は、ステップS20で取得したコマンドログ(第2のコマンドログ)の各々に対してブロッククラスタごとのテンプレートを適用することで、当該コマンドログに含まれる単語列の中から、テンプレートで示されるパラメータ部分に対応する1以上の単語(1以上の第2の単語)を抽出し、抽出した当該1以上の単語に基づいて、コマンドログ(第2のコマンドログ)の特徴ベクトルを生成する。
【0091】
例えば、ステップS20の処理手順において、通信装置40にpingコマンドを投入することで、図7のコマンドログ3に示すコマンドログが取得されたものとする。また、pingコマンドのテンプレートは、図10に示すように、ブロッククラスタ1のテンプレート及びブロッククラスタ2のテンプレートの2つであるものとする。この場合、生成部102は、コマンドログに含まれる単語列に、ブロッククラスタ1のテンプレートを当てはめることで、ブロッククラスタ1のテンプレートにおけるパラメータ部分に該当する1以上の単語(数値)を抽出する。同様に、生成部102は、コマンドログに含まれる単語列に、ブロッククラスタ2のテンプレートを当てはめることで、ブロッククラスタ2のテンプレートにおけるパラメータ部分に該当する1以上の単語(数値)を抽出する。
【0092】
続いて、生成部102は、ブロッククラスタ1のテンプレートを用いて抽出した1以上の単語(数値)と、ブロッククラスタ2のテンプレートを用いて抽出した1以上の単語(数値)とを、pingコマンドの特徴ベクトル定義データで定義された順に並べることで、特徴ベクトルを生成する。なお、pingコマンドの特徴ベクトル定義データに、数値を標準化すべきことが指定されている場合、生成部102は、抽出した単語(数値)の標準化を行い、標準化後の数値を並べることで特徴ベクトルを生成する。
【0093】
ステップS22で、推定部104は、ステップS21の処理手順で生成された特徴ベクトルを学習済モデルに入力することで、通信装置40の動作状態を推定する。例えば、ステップS20の処理手順で取得したコマンドログがpingコマンドである場合、推定部104は、pingコマンドに対応する学習済モデルに、ステップS21の処理手順で生成した特徴ベクトルを入力する。また、推定部104は、当該学習済モデルから出力される値に基づいて、通信装置40の動作状態を推定する。推定部104は、推定した通信装置40の動作状態を、端末20の画面に出力するようにしてもよい。
【0094】
<まとめ>
以上説明した実施形態によれば、監視装置10は、装置コマンドのコマンドログを分析することで、コマンドログにおける共通部分及びパラメータ部分を示すテンプレートを抽出するようにした。また、監視装置10は、更に、コマンドログのうちパラメータ部分に基づいて特徴ベクトルを生成するようにした。これにより、通信装置から得られるコマンドログの分析を効率化することが可能になる。また、監視装置10は、生成した特徴ベクトルを教師データとして学習させた学習済モデルを用いることで、通信装置40のコマンドログから通信装置40の動作状態を推定するようにした。これにより、迅速かつ効率的な監視業務を実現することが可能になる。また、本実施形態に係る技術は、持続可能な開発目標(SDGs)の目標9「産業と技術革新の基盤をつくろう」の達成に貢献することができる。
【0095】
以上説明した実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。実施形態で説明したフローチャート、シーケンス、実施形態が備える各要素並びにその配置、材料、条件、形状及びサイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、異なる実施形態で示した構成同士を部分的に置換し又は組み合わせることが可能である。
【符号の説明】
【0096】
1…監視システム、10…監視装置、11…プロセッサ、12…記憶装置、13…通信IF、14…入力デバイス、15…出力デバイス、20…端末、30…ネットワーク、40…通信装置、100…記憶部、100a…コマンドログDB、100b…学習済モデル、100c…単語辞書DB、101…取得部、102…生成部、103…学習処理部、104…推定部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17