[全体システム]
図1は、本実施の形態の全体システムを示す図である。なお、以下の図の説明において、同じ要素については同一の符号を付して、一度した説明を省略する。
情報処理システムSYSは、例えばクラウドシステムであり、インターネットなどの大規模ネットワーク(図示しない)に接続し、利用者に各種情報処理を提供する。情報処理システムSYSは、例えば、データセンタなどに設置されている。
情報処理システムSYSは、第1のユーザ端末USR1〜第j(jは2以上の整数)のユーザ端末USRjと、第1の管理装置MG1〜第k(kは2以上の整数)の管理装置MGkとを有する。さらに、情報処理システムSYSは、分析装置ANと、第1のサーバSVR1〜第m(mは2以上の整数)のサーバSVRmとを有する。なお、図1の点線は、ユーザ端末、管理装置、サーバの省略を示す。
第1のユーザ端末USR1〜第jのユーザ端末USRj、第1の管理装置MG1〜第kの管理装置MGk、分析装置AN、第1のサーバSVR1〜第mのサーバSVRmは、太線で示すネットワークNを介して相互に接続される。
第1の管理装置MG1〜第kの管理装置MGkは、情報処理システムSYSを管理する装置である。第1の管理装置MG1〜第kの管理装置MGkは、例えば、第1のサーバSVR1〜第mのサーバSVRmが順次出力する処理の結果を示す結果ログを取得する。なお、ログは、記録とも呼ばれる。第1の管理装置MG1〜第kの管理装置MGkは、サーバで発生した異常を示す異常ログが取得した結果ログに含まれる場合、異常の発生を情報処理システムSYSの管理者(以下、管理者と適宜記す)に通知する。
分析装置ANは、自動化部品を作成する。さらに、分析装置ANは、コマンドログ(命令履歴とも呼ぶ)と、データを含むファイルに対する処理の履歴を示すファイル履歴とを参照して、特定のソフトウェアに対するコマンドを識別する処理を実行する。特定のソフトウェアに対するコマンド(以下、特定コマンドと適宜記す)は、特定のソフトウェアに対し処理の実行を命令するコマンドである。この処理は、例えば、データ処理の実行指示など各種処理を含む。特定のソフトウェアは、例えば、各種開発ソフト、計算ソフト、データ分析ソフト、情報処理システムの監視ソフトである。なお、分析装置ANは、命令履歴分析装置とも呼ばれる。
コマンドログは、実行されたコマンドの内容、時間情報を含む。コマンドログに含まれる時間情報は、コマンドが実行された時間を含む。ファイル履歴は、ファイルのファイルパス、時間情報を含む。ファイル履歴に含まれる時間情報は、ファイルが作成された時間や、ファイルの内容が変更された時間を含む。
第1のユーザ端末USR1〜第jのユーザ端末USRjは、管理者の操作により、ターミナルソフトを利用して、サーバや管理装置が実行するオペレーティングシステムやアプリケーションに各種命令を行う。このサーバは、第1のサーバSVR1〜第mのサーバSVRmであり、この管理装置は、第1の管理装置MG1〜第kの管理装置MGkである。他にも、第1のユーザ端末USR1〜第jのユーザ端末USRjは、管理者の操作により、分析装置ANが実行するオペレーティングシステムやアプリケーションに各種命令を行う。
第1のサーバSVR1〜第mのサーバSVRmは、利用者に各種情報処理を提供する情報処理装置である。この利用者は、情報処理システムSYSがクラウドシステムの場合、このクラウドシステムの利用者である。第1のサーバSVR1〜第mのサーバSVRmは、例えば、仮想計算機(virtual machine)を実行し、各種情報処理を提供する。
[自動化部品]
運用管理作業を自動化する技術の一例として、複数のコマンドを含む自動化部品を利用する技術がある。自動化部品は、例えばテキスト形式で記述されたファイル(スクリプトファイル、バッチファイルとも呼ばれる)である。運用管理作業を自動化する目的は、例えば第1、第2の目的である。第1の目的は、同一作業をできるだけ自動化して運用管理作業の工数を削減するためである。第2の目的は手作業を減らして作業ミスを軽減するためである。
[自動化部品の選択]
管理者は、分析装置ANに記憶された自動化部品の中から、特定のソフトウェアに対する運用管理作業の自動化を行う自動化部品を選択する。この場合、管理者は、自動化部品の中のコマンドを自ら分析する。管理者は、この分析において、特定のソフトウェアに対するコマンドを自ら識別する。そして、管理者は、特定のソフトウェアに対する運用管理作業の自動化を行う自動化部品を選択する。
管理者は、選択した自動化部品を再利用したり、カスタマイズして、運用管理作業の効率化を図る。しかし、管理者は、多数の自動化部品がある場合、かかる分析を行い、特定のソフトウェアに対する運用管理作業の自動化を行う自動化部品を選択することは困難である。特に、自動化部品の中に、他の自動化部品を呼び出すコマンドが含まれている場合(いわゆる、ファイルのネスト)、管理者は、所望の自動化部品を選択することが困難である。
そこで、本実施の形態の分析装置ANは、コマンドログと、ファイル履歴とを参照して、コマンドログの中から特定のソフトウェアに対するコマンドを特定する。そして、分析装置ANは、特定したコマンドにタグを設定し、コマンドの識別を容易にする。
管理者は、このタグにより、特定のソフトウェアに対するコマンドを容易に識別することができる。さらに、管理者は、特定のソフトウェアに対するコマンドを含む自動化部品を容易に識別することができる。
[ユーザ端末]
図2は、図1のユーザ端末の構成を示すブロック図である。図2のユーザ端末USRは、第1のユーザ端末USR1〜第jのユーザ端末USRjである。
ユーザ端末USRは、バスBに接続された、CPU101と、ストレージ装置102と、RAM103と、ROM104と、通信装置105と、外部接続インターフェイス装置106とを有する。なお、CPUは"Central Processing Unit"の略語、RAMは"Random Access Memory"の略語、ROMは、"Read Only Memory"の略語である。以下、ストレージ装置102をストレージ102と適宜記す。
CPU101は、ユーザ端末USRを制御する中央演算処理装置である。ストレージ102は、大容量のデータを記憶可能な記憶装置であり、例えばハードディスクドライブ(HDD:Hard Disk Drive)や、ソリッドステートドライブ(SSD:Solid State Drive)などの大容量記憶装置である。ストレージ102は、後記する、ターミナルソフトTS、汎用ソフトWS、オペレーティングシステムOSの実行ファイル(プログラム)や、コマンドログを記憶する。
RAM103は、CPU101が実行する処理や、ターミナルソフトTS、汎用ソフトWSが実行する各ステップにおいて生成されたデータなどを一時的に記憶する。RAM103は、例えばDRAM(Dynamic Random Access Memory)などの半導体メモリである。
CPU101は、ユーザ端末USRの起動時に、ストレージ102からターミナルソフトTS、汎用ソフトWS、オペレーティングシステムOSの実行ファイルを読み出し、RAM103に展開する。図3では、CPU101がターミナルソフトTS、汎用ソフトWS、オペレーティングシステムOSをRAM103に展開している状態を模式的に示している。
ターミナルソフトTSは、各種コマンドを入力する処理や、各種コマンドの実行による実行結果を表示出力するソフトである。ターミナルソフトTSは、入力されたコマンドの内容や、コマンドの実行時間や、コマンドの実行結果をコマンドログとしてストレージ102に記憶する。ターミナルソフトTSは、例えば"TERA TERM"や、"PuTTY"などのソフトウェアである。
汎用ソフトWSは、情報の検索処理など様々な汎用的な情報処理を行う。オペレーティングシステムOSは、例えばUNIX(登録商標)、Windows(登録商標)などのオペレーティングシステムである。
ROM104は、各種設定情報を記憶する。通信装置105は、例えばNIC(Network Interface Card)を有し、LANケーブルを介してネットワークNに接続し通信する。
外部接続インターフェイス装置106は、外部の各種装置と接続するためのインターフェイスとして機能する装置である。外部接続インターフェイス装置106は、例えば、カードスロットや、USB(Universal Serial Bus)のポートを有する。
外部接続インターフェイス装置106は、入力装置INP1、表示装置DSP1と接続する。
入力装置INP1は、ユーザ端末USRに操作情報を入力する装置である。入力装置INP1は、例えば、キーボードや、マウスである。表示装置DSP1は、ユーザ端末USRが出力する画像、文字などの各種情報を表示する装置である。表示装置DSP1は、例えば、液晶ディスプレイである。
[サーバ]
図3は、図1のサーバの構成を示すブロック図である。図3のサーバSVRは、第1のサーバSVR1〜第mのサーバSVRmである。
サーバSVRは、バスBに接続された、CPU201と、ストレージ装置202と、RAM203と、ROM204と、通信装置205と、外部接続インターフェイス装置206とを有する。以下、ストレージ装置202をストレージ202と適宜記す。
CPU201は、サーバSVRを制御する中央演算処理装置である。ストレージ202は、大容量のデータを記憶可能な記憶装置であり、例えばハードディスクドライブや、ソリッドステートドライブなどの大容量記憶装置である。ストレージ202は、後記する情報処理ソフトPS、履歴管理ソフトHS、オペレーティングシステムOSの実行ファイル(プログラム)や、各種ファイルを記憶する。
RAM203は、CPU201が実行する処理や、情報処理ソフトPS、ファイル履歴管理ソフトHS、オペレーティングシステムOSが実行する各ステップにおいて生成されたデータなどを一時的に記憶する。なお、以下、ファイル履歴管理ソフトHSを履歴管理ソフトHSと適宜記す。RAM203は、例えばDRAMなどの半導体メモリである。
CPU201は、サーバSVRの起動時に、ストレージ202から情報処理ソフトPS、管理ソフトHS、オペレーティングシステムOSの実行ファイルを読み出し、RAM203に展開する。図3では、CPU201が情報処理ソフトPS、履歴管理ソフトHS、オペレーティングシステムOSをRAM203に展開している状態を模式的に示している。
情報処理ソフトPSは、各種情報処理を実行するソフトである。情報処理ソフトPSは、例えば仮想化ソフトや、仮想化ソフトにより動作している仮想マシンや、各種アプリケーションなど様々なソフトである。
履歴管理ソフトHSは、情報処理ソフトPSの実行により作成、更新、削除されたファイルの履歴を管理するソフトである。なお、ファイルは、ストレージ202に記憶されている。履歴管理ソフトHSは、例えばCVS(Concurrent Versions System)などのファイル履歴を管理するソフトである。
ROM204は、各種設定情報を記憶する。通信装置205は、例えばNICを有し、LANケーブルを介してネットワークNに接続し通信する。外部接続インターフェイス装置206は、外部の各種装置と接続するためのインターフェイスとして機能する装置である。外部接続インターフェイス装置206は、例えば、カードスロットや、USBのポートを有する。
なお、図1の第1の管理装置MG1〜第kの管理装置MGkも、サーバSVRと同様のハードウェア構成を有する。第1の管理装置MG1〜第kの管理装置MGkの場合、情報処理ソフトPSは、第1のサーバSVR1〜第mのサーバSVRの運用管理作業を行うための各種処理を実行するソフトである。
[分析装置]
図4は、図1の分析装置のハードウェア構成を示すブロック図である。分析装置ANは、情報処理装置であって、バスBに接続された、CPU301と、ストレージ装置(記憶部)302と、RAM303と、ROM304と、通信装置305と、外部接続インターフェイス装置306とを有する。以下、ストレージ装置(記憶部)302をストレージ302と適宜記す。
CPU301は、分析装置ANを制御する中央演算処理装置である。ストレージ302は、大容量のデータを記憶可能な記憶装置であり、例えばハードディスクドライブや、ソリッドステートドライブなどの大容量記憶装置である。ストレージ302は、コマンドログの分析を行う分析ソフトANSや、オペレーティングシステムOSの実行ファイル(プログラム)や、各種データを記憶する。
RAM303は、CPU301が実行する処理や、分析ソフトANS、オペレーティングシステムOSが実行する各ステップにおいて生成されたデータなどを一時的に記憶する。RAM303は、例えばDRAMなどの半導体メモリである。
CPU301は、分析装置ANの起動時に、ストレージ302から分析ソフトANS、オペレーティングシステムOSの実行ファイルを読み出し、RAM303に展開する。図4では、CPU301が分析ソフトANS、オペレーティングシステムOSをRAM303に展開している状態を模式的に示している。なお、この実行ファイルを外部記憶媒体MD1に記憶してもよい。
ROM304は、各種設定情報を記憶する。通信装置305は、例えばNICを有し、LANケーブルを介してネットワークNに接続し通信する。
外部接続インターフェイス装置306は、外部記憶媒体MD1や、外部の各種装置と接続するためのインターフェイスとして機能する装置である。外部接続インターフェイス装置306は、例えば、カードスロットや、USBのポートを有する。
外部記憶媒体MD1は、USBメモリなどの可搬型の不揮発性メモリである。なお、外部接続インターフェイス装置306を介して、記憶媒体に記憶されたデータを読み取る記憶媒体読み取り装置(図示しない)と接続する構成としても良い。この記憶媒体(記録媒体とも呼ばれる)は、例えば、CD-ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)などの可搬型記憶媒体である。
図5は、図4の分析ソフトANのソフトウェア構成と図4のストレージ302の記憶領域の一部を示すブロック図である。図5は、図4の分析ソフトANSの詳細な構成を示し、図4のストレージ302の記憶領域の一部の構成を模式的に示している。図5において、実線の矢印は、各部との間の例えば処理の流れを模式的に示す。また、破線の矢印は、図5における各部と各領域との間のデータの流れの一部を模式的に示している。
分析ソフトANSは、コマンドログ取得部31と、ファイル履歴取得部32と、コマンドログ分析部33と、汎用コマンド抽出部34と、共通作業コマンド抽出部35と、履歴紐付け部(抽出部)36とを有する。なお、履歴紐付け部(抽出部)36を履歴紐付け部36と適宜記す。分析装置ANSは、さらに、紐付け履歴分析部37と、キーワード解析部(選択部)38と、タグ付け部(設定部)39と、検索部40とを有する。なお、キーワード解析部(選択部)38をキーワード解析部38、タグ付け部(設定部)39をタグ付け部39と適宜記す。
コマンドログ取得部31は、サーバSVR、ユーザ端末USRなどからコマンドログを取得する。ファイル履歴取得部32は、サーバSVRなどから、ファイルに対する処理の履歴を示すファイル履歴を取得する。コマンドログ分析部33は、取得されたコマンドログを分析し、自動化部品を作成する。汎用コマンド抽出部34は、複数のコマンドログの中から、コマンドの出現頻度に基づき、汎用的なコマンドの内容を含む汎用コマンドを抽出する。共通作業コマンド抽出部35は、複数の自動化部品の中から、コマンドの出現頻度に基づき、2つ以上の自動化部品に共通するコマンドの内容を含む共通コマンド(以下、共通作業コマンドと適宜記す)を抽出する。
履歴紐付け部36は、特定コマンドと、特定コマンドに対応するファイル履歴とを紐付けてストレージ302に記憶する。なお、特定コマンドに対応するファイル履歴の説明については、後記するファイル履歴の選択で説明する。紐付け履歴分析部37は、紐付けたファイル履歴を分析し、特定コマンドのファイルパスを抽出する。
キーワード解析部38は、ファイルパスのキーワード解析を行い、このファイルパスに含まれる単語の中から特徴語を選択する。タグ付け部39は、特定コマンドに特徴語をタグとして設定する。検索部40は、検索指示信号を受信すると、検索指示信号に含まれる検索対象語(換言すれば、特徴語)が設定されている特定コマンドを検索する。
ストレージ302は、コマンドログ記憶領域R1と、ファイル履歴記憶領域R2と、汎用コマンド記憶領域R3と、共通作業コマンド記憶領域R4と、紐付け履歴記憶領域R5と、選択パス記憶領域R6と、自動化部品記憶領域R7とを有する。なお、各領域(R1〜R7)を点線で示す。
コマンドログ記憶領域R1は、コマンドログを記憶する領域である。ファイル履歴記憶領域R2は、ファイル履歴を記憶する領域である。汎用コマンド記憶領域R3は、汎用コマンドを記憶する領域である。共通作業コマンド記憶領域R4は、共通作業コマンドを記憶する領域である。
紐付け履歴記憶領域R5は、特定コマンドとファイル履歴とを対応付けて記憶する領域である。選択パス記憶領域R6は、特定コマンドと、この特定コマンドのファイルパスとを対応付けて記憶する領域である。自動化部品記憶領域R7は、自動化部品を記憶する領域である。
なお、各部(31〜40)は、各領域(R1〜R7)にアクセス可能である。また、ストレージ302における各領域(R1〜R7)に記憶するデータを、ストレージサーバなどの他の記憶装置に記憶してもよい。
[分析装置ANにおける処理の概略]
分析装置ANにおける処理の概略について説明する。以下、第1のユーザ端末USR1〜第jのユーザ端末USRj、第1の管理装置MG1〜第kの管理装置MGk、第1のサーバSVR1〜第mのサーバSVRmを総称して単に処理装置と記す。処理装置が、入力されたコマンドを実行すると、このコマンドの実行により、ストレージにファイルを作成し記憶したり、ストレージに記憶されたファイルの内容を更新したり、ストレージに記憶されたファイルを削除する。以下、ファイルの作成、ファイルの内容の更新、ファイルの削除の何れかの処理をファイルの変更と適宜記す。
(ファイルパス)
ファイルの記憶場所は、ストレージにおける、このファイルの記憶位置を示す文字列(ファイルパスとも呼ぶ)により識別可能である。ファイルのファイルパスは、フォルダの階層構造で示され、最下層のフォルダにこのファイルが記憶されている。そして、ファイルパスは、ファイルの名前と、このファイルが格納されるフォルダの名前とを含む。ファイルパスは、更に、2つのフォルダの名前を区切る記号と、フォルダの名前とファイルの名前とを区切る記号とを含む。
この記号は、例えば、"/"(スラッシュ)や、"\"(バックスラッシュ))である。例えば、ファイルパス"var/opt/ミドルA/service.conf"は、フォルダ名"var"、フォルダ名"opt"、フォルダ名"ミドルA"、ファイル名"service"を示している。ファイル名"service"のファイルは、フォルダ名"ミドルA"のフォルダ内に記憶されている。なお、"."ドット以下の文字列(例えば、"conf")は、拡張子と呼ばれる。
一般に、特定のソフトウェアに関連するファイルは、この特定のソフトウェアに関連する名前のフォルダの下に記憶されていることが多い。また、設定ファイルなどのファイル名にも、特定のソフトウェアの名前などが含まれていることが多い。
分析装置ANは、特定のソフトウェアに対する特定コマンドを抽出し、この特定コマンドに対応するファイル履歴のファイルパスの中から、特定のソフトウェアに関連する単語を特徴語として選択する。そして、分析装置ANは、特定コマンドと、この特定コマンドの特徴語とを対応付けて記憶する。
(分析装置ANにおける処理の流れ)
図6、図7を参照して本実施の形態における分析装置ANが実行する処理の流れを説明する。図6は、図1の分析装置ANの処理の流れを模式的に説明する図である。図7は、図1の分析装置ANの処理の流れを説明するフロー図である。なお、以下の図の説明において、"Ss"(小文字のsは、1以上の整数)は、ステップSsを示す。
ステップS1:コマンドログ取得部31は、他の端末、他の装置において実行されたコマンドのコマンドログを、この他の端末、他の装置から取得する。コマンドログ取得部31は、図6の例では、第1のコマンドログ群CL1〜第n(nは2以上の整数)のコマンドログ群CLnを取得する。コマンドログ群は、複数のコマンドログを含む。コマンドログ取得部31は、取得したコマンドログを図5のコマンドログ記憶領域R1に記憶する。他の端末は、例えば、図1の第1のユーザ端末USR1〜第jのユーザ端末USRjである。他の装置は、例えば、図1の第1の管理装置MG1〜第kの管理装置MGk、図1の第1のサーバSVR1〜第mのサーバSVRmである。なお、S1の詳細については、図8、図9で説明する。
ステップS2:ファイル履歴取得部32は、他の装置(S1参照)から、ファイルのファイル履歴を取得する。ファイル履歴取得部32は、図6の例では、第1のファイル履歴群FH1〜第p(pは2以上の整数)のファイル履歴群FHpを取得する。ファイル履歴取得部32は、取得したファイル履歴をファイル履歴記憶領域R2に記憶する。なお、S3の詳細については、図10、図11で説明する。
なお、各端末、各サーバ、各装置で動作しているオペレーティングシステムが異なれば、一般的に、同じ内容を実行するコマンドでも、オペレーティングシステム毎にコマンドが異なる。そこで、各端末、各サーバ、各装置で動作しているオペレーティングシステムが異なる場合には、分析装置ANは、オペレーティングシステムが同じ各端末、各サーバ、各装置から、コマンドログ、ファイル履歴を取得し、S3以下の処理を実行する。以下の説明では、各端末、各サーバ、各装置で動作しているオペレーティングシステムは同じであるとする。
ステップS3:コマンドログ分析部33は、取得されたコマンドログを分析し、自動化部品を作成する。自動化部品は、コマンドログに含まれるコマンドであって、所定の処理を自動的に実行する一連のコマンドを含む。コマンドログ分析部33は、作成した自動化部品を自動化部品記憶領域R7に記憶する。コマンドログ分析部33は、図6の例では、自動化部品AP1を作成する。なお、S3の詳細については、図12で説明する。
ステップS4:汎用コマンド抽出部34は、取得したコマンドログの中から、コマンドの出現頻度に基づき、汎用的なコマンドの内容を含む汎用コマンドを抽出し、抽出した汎用コマンドを汎用コマンド記憶領域R3に記憶する。なお、S4の詳細については、図15、図16で説明する。
ステップS5:共通作業コマンド抽出部35は、自動化部品記憶領域R7から自動化部品を取得し、取得した複数の自動化部品の中から、コマンドの出現頻度に基づき、2つ以上の自動化部品に共通するコマンドの内容を含む共通コマンドを抽出する。そして、共通作業コマンド抽出部35は、抽出した共通コマンド(以下、共通作業コマンドと適宜記す)を共通作業コマンド記憶領域R4に記憶する。なお、S5の詳細については、図17、図18で説明する。
ステップS6:履歴紐付け部36は、実行されたコマンドの内容に基づき、コマンドログの中から、特定のソフトウェアに対する特定コマンドを抽出する。履歴紐付け部36は、抽出した特定コマンドのコマンドログに含まれるこの特定コマンドの時間情報と、ファイル履歴に含まれる時間情報とに基づき、抽出した特定コマンドに対応するファイル履歴を抽出する。
そして、履歴紐付け部36は、この特定コマンドと、この特定コマンドに対応するファイル履歴とを対応付けて(換言すれば、紐付けて)紐付け履歴記憶領域R5に記憶する。履歴紐付け部36は、特定コマンドの抽出において、自動化部品の中のコマンドから、抽出した汎用コマンドと抽出した共通作業コマンドとを除外したコマンドを、特定コマンドとして抽出する。この自動化部品の中のコマンドは、S1で抽出されたコマンドログのコマンドの一部が含まれている。なお、S6の詳細については、図19、図20で説明する。図6の例では、特定コマンドは、コマンドB、コマンドC(図6の吹き出し"特定コマンド参照")である。また、図6の例では、この紐付けを点線で示している。コマンドB、コマンドCは、特定のソフトウェアに対して処理の実行を命令する特定コマンドである。以下、コマンドB、コマンドCをそれぞれ特定コマンドB、特定コマンドCと適宜記す。
ステップS7:紐付け履歴分析部37は、紐付けたファイル履歴を分析し、紐付けたファイル履歴の中から重複するファイル履歴を抽出する。さらに、紐付け履歴分析部37は、紐付けたファイル履歴の中からファイルパスを抽出する。図6の例では、紐付け履歴分析部37は、ファイルパスFP1〜FP3を抽出する。なお、S7の詳細については、図21、図22で説明する。
ステップS8:キーワード解析部38は、S7で抽出されたファイルパスのキーワード解析を行い、このファイルパスに含まれる単語の中から特徴語を選択する。キーワード解析部38は、図6の例では、特徴語として"ミドルA"(タグTG参照)を選択する。なお、S8の詳細については、図23、図24で説明する。
ステップS9:タグ付け部39は、S6で抽出された特定コマンドと、S8で選択された特徴語とを対応付けて記憶する。具体的には、タグ付け部39は、S6で抽出された特定コマンドを含む自動化部品に、特徴語をタグとして設定する。図6の例では、特定コマンドは、コマンドB、コマンドCであり、自動化部品は自動化部品AP1であり、設定するタグはタグTGである。なお、S9の詳細については、図25、図26で説明する。
[コマンドログの取得]
次に、図8、図9を参照して、図6、図7のコマンドログの取得(S1)について説明する。管理者は、図2のユーザ端末USRの入力装置INP1を操作し、ターミナルソフトTSを介して、図1の第1の管理装置MG1〜第kの管理装置MGk、図1の第1のサーバSVR1〜第mのサーバSVRmにアクセスする。
例えば、管理者は、サーバSVRに対する運用管理の作業を行うためのコマンドをターミナルソフトTSに入力する。ターミナルソフトTSは、サーバSVRにコマンドを送信し、コマンドログ(図8参照)をストレージ102にコマンドログとして記憶する。
サーバSVRの情報処理ソフトPSは、コマンドを受信し、受信したコマンドに対応する処理を実行する。なお、情報処理ソフトPSは、処理の結果(以下、処理結果と適宜記す)をユーザ端末USRのターミナルソフトTSに送信する。ターミナルソフトTSは、処理結果を受信し、表示装置DSP1に表示する。なお、ターミナルソフトTSは、処理結果をストレージ102にコマンドログとして記憶する。
(コマンドログの作成と記憶)
図8は、コマンドログを示す図である。コマンドログは、コマンドの実行時間、実行したコマンドの内容を含む。さらに、コマンドログは、処理結果の時間、処理結果の内容を含む。なお、処理結果の時間は、例えば処理の終了時間や、処理結果をターミナルソフトTSが受信した時間である。なお、時間に、年月日日時秒を含めてもよい。
図8において、コマンドログ群CLは、5つのコマンドログを含む。このコマンドログにおいて、図面左から1番目の"[]"で示す括弧内文字列は、コマンドの実行時間、処理結果の時間を示す。例えば、第1のコマンドログCML1の"[Mon Nov 18 18:48:42.435 2013] "は、コマンドの実行時間を示す。"[Mon Nov 18 18:48:42.435 2013] "は、2013年、11月(Nov)18日の月曜日(Mon)の"18:48:42.435"(18時48分42.435秒)を示す。
そして、図面左から2番目の"[]"で示す括弧内文字列は、現在のディレクトリのファイルパスを示す。この現在のディレクトリのファイルパスは、例えば絶対パスである。例えば、第1のコマンドログCML1の[root@server1 ~]は、現在のディレクトリのファイルパスが、第1のサーバSVR1のルートフォルダであることを示す。
図面左から2番目の"[]"以降の文字列は、実行したコマンドの内容や、処理結果の内容を示す。
第1のコマンドログCML1のコマンド"cd /var/log"は、ディレクトリ"/var/log"に移動するコマンドである。第2のコマンドログCML2のコマンド"ls | grep messages"は、"log"フォルダにあるファイルの中で、文字列" messages "を含むファイルの検索を実行するコマンドである。第3のコマンドログCML3は、前記した検索結果であり、" messages"ファイルが検索されたことを示す。第4のコマンドログCML4は、前記した検索結果であり、" messages-20131117"ファイルが検索されたことを示す。第5のコマンドログCML5のコマンド"cp messages messages-20131118"は、以下の内容のコマンドである。すなわち、このコマンドは、" messages"ファイルをコピーした、ファイル名" messages-20131118"を有するファイルの作成を実行するコマンドである。
ユーザ端末USRのターミナルソフトTSは、前記したコマンドログを作成し、ストレージ102に記憶する。なお、ユーザ端末USRのオペレーティングシステムOSが、UNIX(登録商標)の場合、コマンドが入力された後、"script"コマンドを実行するように事前に管理者が設定する。すると、ユーザ端末USRのオペレーティングシステムOSは、入力されたコマンドのログや、その処理結果のログをストレージ102に記憶する。
(コマンドログの取得と記憶)
分析装置ANのコマンドログ取得部31は、第1のユーザ端末USR1〜第jのユーザ端末USRjにコマンドログの送信を要求する。第1のユーザ端末USR1〜第jのユーザ端末USRjの汎用ソフトWSは、この要求に応答して、ストレージ102に記憶されたコマンドログを分析装置ANに送信する。分析装置ANのコマンドログ取得部31は、コマンドログを受信し、受信したコマンドログに、このコマンドログを識別する識別子を割り振る。コマンドログ取得部31は、受信したコマンドログと、受信したコマンドログの識別子とを対応付けてコマンドログ記憶領域R1に記憶する。
コマンドログの取得方法としては、他にも様々な方法がある。例えば、第1のサーバSVR1〜第mのサーバSVRmのオペレーティングシステムOSがUNIX(登録商標)の場合を想定する。この場合、分析装置ANのコマンドログ取得部31は、第1のサーバSVR1〜第mのサーバSVRmにコマンドログを表示する"history"コマンドを送信する。第1のサーバSVR1〜第mのサーバSVRmのオペレーティングシステムOSは、このコマンドを受信すると、このコマンドに応答して、コマンドログを分析装置ANのコマンドログ取得部31に送信する。コマンドログ取得部31は、コマンドログを受信し、コマンドログ記憶領域R1に記憶する。
図6の例では、第1のコマンドログ群CL1は、コマンドログ"00:00:00 cd 〜"、コマンドログ"00:00:30 ls 〜"、コマンドログ"00:01:00 ソフトY stop"、コマンドログ"00:02:00 コマンドB"を含む。さらに、第1のコマンドログ群CL1は、コマンドログ"00:03:30 コマンドC"、コマンドログ"00:05:00 ソフトY start"を含む。
コマンドログ"00:00:00 cd 〜"は、引数"〜"にディレクトリを移動するコマンドを時間"00:00:00"に実行したことを示す。コマンドログ"00:00:30 ls 〜"は、引数"〜"に合致するファイルをカレントフォルダから検索し表示するコマンドを時間"00:00:30"に実行したことを示す。コマンドログ"00:01:00 ソフトY stop"は、ソフトYの実行停止を指示するコマンドを時間"00:01:00"に実行したことを示す。
コマンドログ"00:02:00 コマンドB"は、コマンドBを"00:02:00"に実行したことを示す。コマンドログ"00:03:30 コマンドC"は、コマンドCを"00:03:30"に実行したことを示す。コマンドログ"00:05:00 ソフトY start"は、ソフトYの実行開始を指示するコマンドを時間"00:05:00"に実行したことを示す。
なお、図6のコマンドログの時間は、図面のスペースの都合上、年月日を省略している。そして、図6のコマンドログは、図面のスペースの都合上、現在のディレクトリのファイルパス(図8参照)を省略している。
図9は、図5のコマンドログ記憶領域R1に記憶されたコマンドログを示すテーブルである。コマンドログテーブルT1は、コマンドログID欄と、実行時間欄と、コマンド欄とを有する。なお、IDは、識別子(identifier)を示す。コマンドログID欄は、コマンドログ取得部31が取得したコマンドログの識別子を記憶する。実行時間欄は、コマンドログ取得部31が取得したコマンドログに含まれる実行時間を記憶する。コマンド欄は、コマンドログ取得部31が取得したコマンドログに含まれる実行されたコマンドの内容(以下、コマンドの内容をコマンドと適宜記す)を記憶する。
図8の例では、コマンドログ取得部31は、第1のコマンドログCML1を取得した場合、第1のコマンドログCML1の識別子"19001"をコマンドログID欄に記憶する。そして、コマンドログ取得部31は、第1のコマンドログCML1の実行時間"Mon Nov 18 18:48:42.435 2013 "を実行時間欄に記憶する。そして、コマンドログ取得部31は、第1のコマンドログCML1のコマンド"cd /var/log"をコマンド欄に記憶する。
コマンドログID"20001"〜"20006"で特定されるコマンドログは、図6の第1のコマンドログ群CL1に含まれるコマンドログに相当する。なお、以下のテーブルの説明において、"…"は省略を示す。分析装置ANは、コマンドログの取得が終了すると、ファイル履歴の取得(S2)を実行する。
[ファイル履歴の取得]
次に、図10、図11を参照して、図6、図7のファイル履歴の取得(S2)について説明する。サーバSVRの情報処理ソフトPSは、ユーザ端末USRから送信されたコマンドを受信し、受信したコマンドに対応する処理を実行する。サーバSVRの情報処理ソフトPSは、この処理の実行により、サーバSVRのストレージ202に新たに作成したファイルを記憶したり、記憶されているファイルの内容を更新したり、削除する。
(ファイル履歴の作成と記憶)
ファイル履歴管理ソフトHSは、情報処理ソフトPSの実行により作成、更新、削除されたファイルのファイル履歴を作成し、このファイル履歴をストレージ202に記憶する。ファイルのファイル履歴は、ファイルが作成、更新、削除された日時や、作成、更新、削除されたファイルのファイルパスを含む。以下、ファイルが作成、更新、削除された日時をファイルのタイムスタンプと適宜記す。なお、時間に、年月日日時秒を含めてもよい。
例えば、サーバSVRの情報処理ソフトPSは、2013年、11月18日の月曜日の18時48分35秒に、ストレージ202のファイルパス"/var/log"で示されるフォルダに記憶されたファイル(ファイル名"messages")を更新する。すると、サーバSVRのファイル履歴管理ソフトHSは、このファイルの更新履歴を、履歴情報"[Mon Nov 18 18:52:35 2013] /var/log/messages"として、ストレージ202に記憶する。
このファイルのファイル履歴は、ファイルのタイムスタンプ"[Mon Nov 18 18:52:35 2013]"、ファイルパス"/var/log/messages"を含む。
なお、第1の管理装置MG1〜第kの管理装置MGkも同様に、ファイルのファイル履歴を作成する。
図10は、ファイルのファイル履歴を示す図である。ファイル履歴群FHは、第1のファイル履歴FHS1〜第3のファイル履歴FHS1を含む。第1のファイル履歴FHS1の説明については前記したので、省略する。
第2のファイル履歴FHS2は、ファイルのタイムスタンプ"[Mon Nov 18 00:05:02 2013]"、ファイルパス"/var/log/ messages-20131117"を含む。第3のファイル履歴FHS3は、ファイルのタイムスタンプ"[ Mon Nov 18 18:51:12 2013]"、ファイルパス"/var/log/ messages-20131118"を含む。
(ファイル履歴の取得と記憶)
分析装置ANのファイル履歴取得部32は、第1のサーバSVR1〜第mのサーバSVRmにファイル履歴の送信を要求する。第1のサーバSVR1〜第mのサーバSVRmのファイル履歴管理ソフトHSは、この要求に応答して、ストレージ202に記憶されたファイル履歴を分析装置ANに送信する。分析装置ANのファイル履歴取得部32は、ファイル履歴を受信し、受信したファイル履歴に、このファイル履歴を識別する識別子を割り振る。ファイル履歴取得部32は、受信したファイル履歴と、受信したファイル履歴の識別子とを対応付けてファイル履歴記憶領域R2に記憶する。
ファイル履歴の取得方法としては、他にも様々な方法がある。例えば、第1のサーバSVR1〜第mのサーバSVRmのオペレーティングシステムOSがUNIX(登録商標)の場合を想定する。この場合、分析装置ANのファイル履歴取得部32は、第1のサーバSVR1〜第mのサーバSVRmに、ファイルのファイルパスやファイルのタイムスタンプを取得できるコマンド(例えば"ls"コマンド)を送信する。
第1のサーバSVR1〜第mのサーバSVRmのオペレーティングシステムOSは、このコマンドを受信すると、このコマンドに応答して、ファイルのタイムスタンプ、ファイルパスを分析装置ANのファイル履歴取得部32に送信する。ファイル履歴取得部32は、ファイル履歴を受信し、ファイル履歴記憶領域R2に記憶する。
図6の例では、第1のファイル履歴群FH1は、第1〜第3のファイル履歴を含む。第1のファイル履歴"00:02:01 /var/opt/ミドルA/service.conf"は、ファイルのタイムスタンプ"[00:02:01]"、ファイルパス"/var/opt/ミドルA/service.conf "を含む。
第2のファイル履歴"00:03:31 /var/log/ミドルA/access.log"は、ファイルのタイムスタンプ"[00:03:31]"、ファイルパス"/var/log/ミドルA/ access.log"を含む。第3のファイル履歴"00:03:32 /var/log/ミドルA/ access1.log"は、ファイルのタイムスタンプ"[00:03:32]"、ファイルパス"/var/log/ミドルA/access1.log"を含む。
なお、図6のファイル履歴のタイムスタンプは、図面のスペースの都合上、年月日を省略している。
分析装置ANのファイル履歴取得部32は、第1の管理装置MG1〜第kの管理装置MGkにもファイル履歴の送信を要求してもよい。第1の管理装置MG1〜第kの管理装置MGkは、この送信要求に応答して、ファイル履歴を分析装置ANのファイル履歴取得部32に送信する。
図11は、図5のファイル履歴記憶領域R2に記憶されたファイル履歴を示すテーブルである。
ファイル履歴テーブルT2は、ファイル履歴ID欄と、タイムスタンプ欄と、ファイルパス欄とを有する。ファイル履歴ID欄は、取得されたファイル履歴の識別子を記憶する。タイムスタンプ欄は、取得されたファイル履歴のタイムスタンプを記憶する。ファイルパス欄は、取得されたファイル履歴のファイルパスを記憶する。
図10の例では、ファイル履歴取得部32は、第1のファイル履歴FHS1を取得した場合、第1のファイル履歴FHS1の識別子"500012"をファイル履歴ID欄に記憶する。そして、ファイル履歴取得部32は、第1のファイル履歴FHS1のタイムスタンプ"[Mon Nov 18 18:52:35 2013"をタイムスタンプ欄に記憶する。ファイル履歴取得部32は、第1のファイル履歴FHS1のファイルパス"var/log/messages "をファイルパス欄に記憶する。
ファイル履歴ID"600001"〜"600003"で識別されるファイル履歴は、図6の第1のファイル履歴群FH1に含まれるファイル履歴に相当する。分析装置ANは、ファイル履歴の取得が終了すると、自動化部品の作成(S3)を実行する。
[自動化部品の作成]
次に、図6、図7の自動化部品の作成(S3)について説明する。コマンドログ分析部33は、コマンドログ記憶領域R1(図5参照)に記憶されている全てのコマンドログにアクセスし、コマンドログの分析を行い、自動化部品を作成する。
ある運用管理作業が行われる場合、コマンドが順次実行され、順次実行されるコマンドには一定のパターンがあることに着目する。コマンドログ分析部33は、一定のパターンを抽出し、この一定のパターンに含まれる複数のコマンドを自動化部品として作成する。換言すれば、コマンドログ分析部33は、あるコマンドの後にはこのコマンドを実行する必要があるという経験則を抽出し、この経験則に基づき自動化部品を作成する。
具体的には、コマンドログ分析部33は、所定の条件を満たす一連のコマンド列を検出する。この所定の条件は、以下の第1、第2の条件を満たす条件である。第1の条件は、全てのコマンドログのコマンドにおいて、あるコマンドが開始の基準となる基準コマンドの後に実行される確率(以下、実行確率と適宜記す)が所定の百分率(パーセント)以上であることである。第2の条件は、第1の条件を満たす一連のコマンド列における各コマンドの実行回数が所定の回数以上であることである。
なお、この実行確率を確率αと適宜記し、所定の百分率をX%と適宜記し、所定の回数をY回と適宜記す。この確率αは、あるコマンドの実行回数を基準コマンドの実行回数で除算した値に100を乗算した値である。ここで、基準コマンドの実行確率は100%である。
そして、コマンドログ分析部33は、検出した一連のコマンド列において、X%以上であり、かつX%に最も近い実行確率のコマンドを選択する。コマンドログ分析部33は、検出した一連のコマンド列において、基準コマンドから、選択したコマンドの次に実行されるコマンドまでのコマンドを含むコマンド群を特定する。
コマンドログ分析部33は、アクセスしたコマンドログの中から、同じコマンド群を所定の個数以上検出した場合、この特定したコマンド群を自動化部品とする。以下、所定の個数をZ個と適宜記し、特定したコマンド群に含まれるコマンドの数を数γと適宜記す。さらに、コマンドログ分析部33は、この特定したコマンド群に含まれるコマンドの数γが所定の数以上の場合に、特定したコマンド群を自動化部品としてもよい。
(自動化部品の作成の具体例)
図12を参照して、自動化部品の作成の具体例について説明する。図12は、自動化部品の作成を説明する図である。図12に示したように、第1のコマンドCM1の実行後に、第2のコマンドCM2が実行され、第1、第2のコマンド(CM1、CM2)の実行後に、第3のコマンドCM3が実行されるとする。さらに、第1〜第3のコマンド(CM1〜CM3)の実行後、第4のコマンドCM4が実行されるとする。この一連のコマンド(CM1〜CM4)が実行されている状態を図3では、ブロック間の矢印で示している。
コマンドログ分析部33は、アクセスしたコマンドログに含まれるコマンドの実行時間を参照することにより、各コマンドが実行された順序を特定する。例えば、第1のコマンドCM1の実行時間がT1、第2のコマンドCM2の実行時間がT2で、実行時間T2が実行時間T1よりも後の場合を想定(第1の想定)する。第1の想定の場合、コマンドログ分析部33は、実行時間T2は実行時間T1の後なので、第2のコマンドCM2は第1のコマンドCM1の実行後に実行されたと判定する。なお、実行時間T2が実行時間T1よりも後の場合で、かつ、両コマンドの実行時間の差(T2-T1)が所定の時間以内の場合に、コマンドログ分析部33は、第2のコマンドCM2は第1のコマンドCM1の実行後に実行されたと判定してもよい。
次に、第1のコマンドCM1が4回実行され、第1のコマンドCM1が実行された後、第2のコマンドCM2は、3回実行され、さらに、第2のコマンドCM2が実行された後、第3のコマンドCM3が2回実行されたと想定(第2の想定)する。
第2の想定において、第1のコマンドCM1を基準コマンドとする。基準コマンドCM1の実行確率は100%((10/10)×100%)とする(図12の"実行確率100%"参照)。
第2のコマンドCM2は、第1のコマンドCM1が4回実行された後、3回実行されている。そのため、第2のコマンドCM2が基準コマンドCM1の後に実行される確率αは、75%((3/4)×100%)である(図12の"実行確率75%"参照)。
そして、第2の想定において、第3のコマンドCM3は、第1のコマンドCM1が4回実行された後、2回実行されている。そのため、第3のコマンドCM3が基準コマンドCM1の後に実行される確率αは、50%((2/4)×100%)である(図12の"実行確率50%"参照)。ここで前記したX%を70%、Y回を2回とする。
以上より、コマンドログ分析部33は、一連のコマンド列を第1、第2のコマンド(CM1、CM2)と検出する。ここで、コマンドログ分析部33は、検出した一連のコマンド列において、70%以上であり、かつ70%に最も近い確率の第2のコマンドCM2を選択する。
コマンドログ分析部33は、基準コマンドCM1から、選択した第2のコマンドCM2の次に実行される第3のコマンドCM3までのコマンドを含むコマンド群を特定する。図12の例では、コマンドログ分析部33は、第1のコマンドCM1〜第3のコマンドCM3を特定する。ここで、前記したZ個を2個とする。
コマンドログ分析部33は、アクセスしたコマンドログの中から、特定したコマンド群(CM1〜CM3)を10個検出したとする。この10個は、2個(Z個)以上なので、コマンドログ分析部33は、特定した第1のコマンドCM1〜第3のコマンドCM3を自動化部品として作成する(図12の一点鎖線枠参照)。
ここで、コマンドログ分析部33は、コマンドログの中から、コマンド列を正規表現で抽出する。換言すれば、コマンドログ分析部33は、現在のディレクトリのファイルパス(図8参照)を除外するため、現在のディレクトリのファイルパスを示す可能性が高い記号内の文字列を除外する。なお、この記号内の文字列は、大括弧"[]"で示される括弧内の文字列である。また、コマンドログ分析部33は、複数のコマンドのオプションや引数が一致する場合に、これら複数のコマンドを同じコマンドと見なし、実行回数をカウントする。
なお、以上で説明した自動化部品の作成手法は例示であり、様々なソフト(例えば、"Chef"、"Capistrano")により自動化部品の作成が可能である。また、管理者や開発者が、自動化部品を手動で作成してもよい。
コマンドログ分析部33は、取得した複数のコマンドログに対して、図12で説明した処理を実行して、自動化部品を作成する。コマンドログ分析部33は、作成した自動化部品を自動化部品記憶領域R7に記憶する。図6の例では、コマンドログ分析部33は、第1のコマンドログ群CL1のコマンドを自動化部品AP1として作成する。
図13、図14は、図5の自動化部品記憶領域R7に記憶された自動化部品を示す第1、第2のテーブルである。
図13の自動化部品テーブルT3は、自動化部品ID欄と、自動化部品コマンドログID欄とを有する。自動化部品ID欄は、作成された自動化部品の識別子を記憶する。自動化部品コマンドログID欄は、自動化部品ID欄の識別子で識別される自動化部品に含まれるコマンドの識別子を記憶する。
コマンドログ分析部33は、自動化部品を作成した場合、この自動化部品に、この自動化部品を識別する識別子を割り振り、自動化部品ID欄に記憶する。そして、コマンドログ分析部33は、自動化部品に含まれるコマンドのコマンドログを識別する識別子を作成し、自動化部品コマンドログID欄に記憶する。自動化部品に含まれるコマンドのコマンドログを識別する識別子は、既に割り振られたコマンドログの識別子と一対一で対応する識別子である。
コマンドログ分析部33は、例えば、図6の自動化部品AP1を作成した場合、この自動化部品AP1の識別子"160"を自動化部品ID欄に記憶する。コマンドログ分析部33は、自動化部品AP1に含まれるコマンドのコマンドログID"2001"〜"2006"(図9のコマンドログID欄参照)に一対一で対応する識別子"3001"〜"3006"を作成する。コマンドログ分析部33は、作成した識別子"3001"〜"3006"を自動化部品コマンドログID欄に記憶する。
図14の自動化部品コマンドログテーブルT4は、図13の自動化部品コマンドログIDにより識別されるコマンドログの識別子を記憶するテーブルである。コマンドログの識別子は、図9のコマンドログID欄に記憶されたコマンドログIDである。
自動化部品コマンドログテーブルT4は、自動化部品コマンドログID欄と、コマンドログID欄と、コマンド欄とを有する。自動化部品コマンドログID欄は、図13の自動化部品コマンドログID欄に記憶された識別子を記憶する。コマンドログIDは、自動化部品コマンドログID欄に記憶された識別子と一対一で対応する、図9のコマンドログID欄に記憶されたコマンドログIDを記憶する欄である。
コマンド欄は、コマンドログID欄に記憶されたコマンドログに含まれるコマンドを記憶する欄である。
例えば、第1のコマンドログ群CL1が自動化部品AP1として作成された場合を想定する。この場合、コマンドログ分析部33は、図14のコマンドログID欄に第1のコマンドログ群CL1に含まれるコマンドのコマンドログを識別するコマンドログID"20001"〜"20006"(図9のコマンドログID欄参照)を記憶する。コマンドログ分析部33は、コマンドログID"20001"〜"20006"に一対一で対応する識別子"3001"〜"3006"を、それぞれ、図14の自動化部品コマンドログID欄に記憶する。
コマンドログ分析部33は、コマンドログID"20001"〜"20006"で識別されるコマンドログに含まれるコマンドを、それぞれ、図14のコマンド欄に記憶する。
以上説明した処理により、コマンドログ分析部33は、作成した自動化部品を図13、図14で示すテーブル形式で図5の自動化部品記憶領域R7に記憶に記憶する。分析装置ANは、自動化部品の作成が終了すると、汎用コマンドの抽出(S4)を実行する。
[汎用コマンドの抽出]
次に、図15、図16を参照して、図6、図7の汎用コマンドの抽出(S4)について説明する。図15は、図6、図7の汎用コマンドの抽出処理のフロー図である。
ステップS41: 汎用コマンド抽出部34は、コマンドログ記憶領域R1(図5参照)に記憶されている全てのコマンドログにアクセスする。そして、汎用コマンド抽出部34は、全てのコマンドログに含まれるコマンドのオプションや引数を除外した、除外コマンドを作成し、ストレージ302に記憶する。
汎用コマンド抽出部34は、図9の例では、コマンド" cd /var/log"から引数"/var/log "を除外した除外コマンド"cd"を作成する。他にも、汎用コマンド抽出部34は、図9の例では、コマンド"ls | grep messages"から引数| grep messages "を除外した除外コマンド"ls"を作成する。
汎用コマンド抽出部34は、S41の処理をループLP41s〜ループLP41eで示すように、取得された全てのコマンドログに対して実行する。汎用コマンド抽出部34は、取得した全てのコマンドログに対してS41の処理を実行すると、S42に移る。
ステップS42:汎用コマンド抽出部34は、除外コマンドが汎用コマンドか否か判定する。除外コマンドが汎用コマンドの場合(S42/YES)、S44に移る。一方、除外コマンドが汎用コマンドでない場合(S42/NO)、汎用コマンド抽出部34は、判定していない除外コマンドに対して、判定処理(S42)を実行する。
ステップS43:汎用コマンド抽出部34は、汎用コマンドと判定した除外コマンドを、汎用コマンドとして抽出し、汎用コマンド記憶領域R3(図5参照)に記憶する。
汎用コマンド抽出部34は、S42以下の処理を、ループLP42s〜ループLP42eで示すように、全ての除外コマンドに対して実行する。
汎用コマンド抽出部34は、例えば、取得されたコマンドログにおけるコマンドの出現頻度が第1の出現頻度以上のコマンドを汎用コマンドとして抽出し汎用コマンド記憶領域R3(図5参照)に記憶する。第1の出現頻度は、例えば、後記する第1の出現回数、第1の出現比率である。
汎用コマンドを抽出する方法、換言すれば、除外コマンドが汎用コマンドか判定(S42)する方法は、例えば4つの方法がある。汎用コマンド抽出部34は、下記の4つの方法の何れかの方法を実行して、汎用コマンドを抽出する。
第1の方法は、S41の処理後に、ストレージ302に記憶した各除外コマンドの出現回数をカウントする。第1の方法は、このカウントした除外コマンドの出現回数が、第1の出現回数(例えば、10回)以上の場合、この除外コマンドを汎用コマンドと判定する方法である。図9の例では、除外コマンド"ls"の出現回数が、第1の出現回数以上の場合、この除外コマンド"ls"を汎用コマンドと判定する。
第2の方法は、全ての除外コマンドの数に対する、前記カウントした除外コマンドの出現回数の比率(出現比率とも呼ぶ)が、第1の出現比率(例えば、0.2)以上の場合、この除外コマンドを汎用コマンドと判定する方法である。例えば、全ての除外コマンドの数が"100"であり、前記カウントした除外コマンド(例えば、図9の"ls")の出現回数が"30"回とする。この場合、この除外コマンドの出現比率は、0.3(30/100)であるので、この出現比率は、第1の出現比率"0.2"以上である。従って、汎用コマンド抽出部34は、この除外コマンド"ls"を汎用コマンドと判定する。
第3の方法は、tf-idf(term frequency-inverse document frequency)法を利用する方法である。第3の方法は、tf-idf法を利用して、除外コマンドの文字列がどのくらい特徴的であるかを識別する指標を演算し、除外コマンドの文字列が特徴的でないと判定できる指標を演算すると、この除外コマンドを汎用コマンドと判定する。
第4の方法は、汎用コマンドとして一般に利用されるコマンドの文字列(例えば、"cd"、"ls"、"dir"、"ping")などを分析装置ANのストレージ302に対象コマンドして記憶し、除外コマンドと対象コマンドとを比較する方法である。第4の方法は、除外コマンドと対象コマンドとが一致する場合、この除外コマンドを汎用コマンドと判定する。
図16は、図5の汎用コマンド記憶領域R3に記憶された汎用コマンドを示すテーブルである。
汎用コマンドテーブルT5は、汎用コマンド欄を有する。汎用コマンド抽出部34は、汎用コマンドを汎用コマンドテーブルT5の汎用コマンド欄に記憶する(図15のS43)。
汎用コマンドテーブルT5では、汎用コマンド欄における各行に汎用コマンド(例えば、図16の"cd"、"ls"など)が記憶されている。分析装置ANは、汎用コマンドの記憶が終了すると、共通作業コマンドの抽出(S5)を実行する。
[共通作業コマンドの抽出]
次に、図17、図18を参照して、図6、図7の共通作業コマンドの抽出(S5)について説明する。図17は、図6、図7の共通作業コマンドの抽出処理のフロー図である。
ステップS51: 共通作業コマンド抽出部35は、ストレージ302に記憶された全ての自動化部品に含まれる全てのコマンド中からS4で抽出した汎用コマンドを除外する。以下、ストレージ302に記憶された全ての自動化部品に含まれる全てのコマンド中からS4で抽出した汎用コマンドを除外した残りのコマンドを共通作業候補コマンドと適宜記す。
具体的には、共通作業コマンド抽出部35は、自動化部品記憶領域R7に記憶されている図14の自動化部品コマンドログテーブルT4のコマンド欄に記憶されたコマンドを取得する。そして、共通作業コマンド抽出部35は、取得したコマンドの中から、S4で抽出した汎用コマンドを含まないコマンドを特定する。この特定したコマンドが、共通作業候補コマンドである。
共通作業コマンド抽出部35は、ループLP51s〜ループLP51eで示すように、ストレージ302に記憶された全ての自動化部品に対して、S51の処理を実行する。共通作業コマンド抽出部35は、ストレージ302に記憶された全ての自動化部品に対して、S51の処理を実行すると、S52に移る。なお、S51の処理を省略し、全ての自動化部品のコマンドに対してS52以下の処理を実行してもよい。この処理の省略を行う場合、全ての自動化部品のコマンドが共通作業候補コマンドとして説明する。
ステップS52:共通作業コマンド抽出部35は、共通作業候補コマンドが共通作業コマンドか否か判定する。共通作業候補コマンドが共通作業コマンドの場合(S52/YES)、S53に移る。一方、共通作業候補コマンドが共通作業コマンドでない場合(S52/NO)、共通作業コマンド抽出部35は、判定していない共通作業候補コマンドに対して、判定処理(S52)を実行する。
ステップS53:共通作業コマンド抽出部35は、共通作業コマンドと判定した共通作業候補コマンドを、共通作業コマンドとして抽出し、共通作業コマンド記憶領域R4(図5参照)に記憶する。
共通作業コマンド抽出部35は、S52以下の処理を、ループLP52s〜ループLP52eで示すように、全ての共通作業候補コマンドに対して実行する。
すなわち、共通作業コマンド抽出部35は、例えば、自動化部品記憶領域R7から取得した自動化部品におけるコマンドの出現頻度が第2の出現頻度以上のコマンドを共通作業コマンドとして抽出し共通作業コマンド記憶領域R4に記憶する。第2の出現頻度は、例えば、後記する第2の出現回数、第2の出現比率である。
共通作業コマンドを抽出する方法、換言すれば、共通作業候補コマンドが共通作業コマンドか判定する方法は、例えば4つの方法がある。共通作業コマンド抽出部35は、下記の4つの方法の何れかの方法を実行して、共通作業コマンドを抽出する。
第1の方法は、ストレージ302に記憶した全ての自動化部品の中から、汎用コマンドを除外(S51)した後に、共通作業候補コマンドの出現回数をカウントする。第1の方法は、このカウントした共通作業候補コマンドの出現回数が、第2の出現回数(例えば、10回)以上の場合、この共通作業候補コマンドを共通作業コマンドと判定する方法である。図6の例では、共通作業候補コマンド"ソフト Y stop"の出現回数が、第2の出現回数以上の場合、この共通作業候補コマンド"ソフト Y stop"を共通作業コマンドと判定する。
第2の方法は、全ての共通作業候補コマンドの数に対する、前記カウントした共通作業候補コマンドの出現回数の出現比率が、第2の出現比率以上の場合、この共通作業候補コマンドを共通作業コマンドと判定する方法である。第2の出現比率は、例えば0.2である。
例えば、全ての共通作業候補コマンドの数が"100"であり、前記カウントした共通作業候補コマンド(例えば、図6の"ソフト Y stop")の出現回数が"30"回とする。この場合、この共通作業候補コマンドの出現比率は、0.3(30/100)であるので、この出現比率は、第2の出現比率"0.2"以上である。従って、共通作業コマンド抽出部35は、この共通作業候補コマンド"ソフト Y stop"を共通作業コマンドと判定する。
第3の方法は、tf-idf法を利用する方法である。第3の方法は、tf-idf法を利用して、共通作業候補コマンドの文字列がどのくらい特徴的であるかを識別する指標を演算する。そして、第3の方法は、共通作業候補コマンドの文字列が特徴的でないと判定できる指標を演算すると、この共通作業候補コマンドを共通作業コマンドと判定する。
第4の方法は、共通作業コマンドとして一般に利用されるコマンドの文字列(例えば、"star"、"stop"、"restar")などを分析装置ANのストレージ302に対象コマンドして予め記憶する。そして、第4の方法は、共通作業候補コマンドと対象コマンドとを比較する。第4の方法は、共通作業候補コマンドに対象コマンドが含まれている場合、この共通作業候補コマンドを共通作業コマンドと判定する。
図18は、図5の共通作業コマンド記憶領域R4に記憶された共通作業コマンドを示すテーブルである。
共通作業コマンドテーブルT6は、共通作業コマンド欄を有する。共通作業コマンド抽出部35は、共通作業コマンドを共通作業コマンドテーブルT6の共通作業コマンド欄に記憶する(図17のS53)。
共通作業コマンドテーブルT6では、共通作業コマンド欄における各行に共通作業コマンド(例えば、図18の"/etc/init.d/httpd start"、"/etc/init.d/httpd start"など)が記憶されている。分析装置ANは、共通作業コマンドの記憶が終了すると、特定コマンドとファイル履歴との対応付け(S6)を実行する。
[特定コマンドの対応付け]
次に、図19、図20を参照して、図6、図7の特定コマンドとファイル履歴との対応付け(S6)について説明する。図19は、特定コマンドとファイル履歴との対応付けを模式的に説明する図である。図19は、図6における、第1のコマンドログ群CL1と、第1のファイル履歴群FH1とを示している。ここで、第1のコマンドログ群CL1に含まれるコマンドログのコマンドにより自動化部品AP1(図6参照)が作成されている。
(特定コマンドの抽出)
履歴紐付け部36は、全自動化部品に含まれる全コマンドの中から、汎用コマンド(図7のS4参照)および共通作業コマンド(図7のS5参照)を除外したコマンドを特定コマンドとして抽出する。汎用コマンドは、出現回数が多く様々な処理に実行されるコマンドであり、特定のソフトウェアに対するコマンドではないと見なすことができる。また、共通作業コマンドは、各自動化部品において共通する作業を実行するコマンドであり、特定のソフトウェアに対するコマンドではないと見なすことができる。従って、全自動化部品に含まれる全コマンドの中から、これら汎用コマンド、共通作業コマンドを除外して、除外したコマンドを特定コマンドと見なす。この除外により、特定コマンドを高精度に抽出する。
図19の例で、特定コマンドの抽出を説明する。履歴紐付け部36は、自動化部品AP1に含まれる全コマンドの中から汎用コマンドを除外する。この汎用コマンドのログを破線の四角枠で示す。また、この除外を図19の破線の吹き出しで示す。履歴紐付け部36は、自動化部品AP1に含まれる全コマンドの中から共通作業コマンドを除外する。この共通作業コマンドのログを点線の四角枠で示す。また、この除外を図19の点線の吹き出しで示す。
履歴紐付け部36は、自動化部品AP1に含まれるコマンドの中から汎用コマンドおよび共通作業コマンドを除外したコマンドを抽出する。この抽出したコマンド(コマンドB、コマンドC)が特定コマンドである。この特定コマンドのログを長破線の四角枠で示す。次に、履歴紐付け部36は、自動化部品AP1に含まれるコマンドの実行時間を取得する。
(コマンドの実行時間の取得)
図9、図13、図14を参照して、前記したコマンドの実行時間を取得する処理について説明する。履歴紐付け部36は、図13の自動化部品テーブルT3を参照し、自動化部品IDと対応付けて記憶されている自動化部品コマンドログIDを特定する。例えば、履歴紐付け部36は、自動化部品AP1の場合(自動化部品AP1の自動化部品IDは"160")、自動化部品コマンドログID"3001"〜"3006"を特定する。
次いで、履歴紐付け部36は、図14の自動化部品コマンドログテーブルT4を参照し、特定した自動化部品コマンドログID"3001"〜"3006"と対応付けて記憶されているコマンドログID"20001"〜"20006"を特定する。
次いで、履歴紐付け部36は、図9のコマンドログテーブルT1を参照して、特定したコマンドログID"20001"〜"20006"と対応付けて記憶されているコマンドの実行時間を取得する。
(ファイル履歴の選択)
履歴紐付け部36は、コマンドログの時間情報に基づき、抽出した特定コマンドの次に実行される次のコマンドのコマンドログを抽出する。そして、履歴紐付け部36は、取得したファイル履歴の中から、特定コマンドのコマンドログの時間情報に含まれる第1の時間と、次のコマンドのコマンドログの時間情報に含まれる第2の時間との間の時間を含むファイル履歴を選択する。そして、履歴紐付け部36は、選択したファイル履歴と、抽出した特定コマンドとを対応付けて図5の紐付け履歴記憶領域R5に記憶する。この選択されたファイル履歴が、特定コマンドに対応するファイル履歴である。
具体的には、履歴紐付け部36は、自動化部品に含まれる全コマンドにおいて、特定コマンドが実行された時間から、この特定コマンドの次のコマンドが実行された時間までの間の時間範囲にあるファイルスタンプを含むファイル履歴を選択する。履歴紐付け部36は、特定コマンドと、特定コマンドに対応するファイル履歴(すなわち、選択したファイル履歴)とを対応付けて図5の紐付け履歴記憶領域R5に記憶する。以下の例では、履歴紐付け部36は、特定コマンドのコマンドログと、特定コマンドに対応するファイル履歴とを対応付けて図5の紐付け履歴記憶領域R5に記憶している。
ここで、ファイル履歴は、図11のファイル履歴テーブルT2に記憶されている。従って、履歴紐付け部36は、図11のファイル履歴テーブルT2のタイムスタンプ欄を参照すれば、前記したファイル履歴の選択を実行できる。
図19の例では、ファイル履歴FHb("00:02:01 /var/opt/ミドルA/service.conf")のタイムスタンプは"00:02:01"である。従って、図19の例では、特定コマンドBが実行された時間"00:02:00"と、次のコマンド(コマンドC)が実行された時間"00:03:30"との間の時間をファイルスタンプとして含むファイル履歴は、ファイル履歴FHbである。なお、ファイル履歴FHbは、図11に示すファイル履歴ID"600001"で特定されるファイル履歴である。
従って、履歴紐付け部36は、特定コマンドBのコマンドログと、特定コマンドBに対応するファイル履歴FHbとを対応付けて紐付け履歴記憶領域R5に記憶する。この対応付けを符号LNK1の破線で示す。
さらに、図19の例では、ファイル履歴FHc1("00:03:31 /var/log/ミドルA/access.log")のタイムスタンプは"00:03:31"である。そして、ファイル履歴FHc2("00:03:32 /var/log/ミドルA/access1.log")のタイムスタンプは"00:03:32"である。
従って、図19の例では、特定コマンドCが実行された時間"00:03:30"と、次のコマンド(ソフトY start)が実行された時間"00:05:00"との間の時間をファイルスタンプとして含むファイル履歴は、ファイル履歴FHc1、FHc2である。
2つのファイル履歴の中で、ファイル履歴FHc1は、図11に示すファイル履歴ID"600002"で特定されるファイル履歴である。ファイル履歴FHc2は、図11に示すファイル履歴ID"600003"で特定されるファイル履歴である。
従って、履歴紐付け部36は、特定コマンドCのコマンドログと、特定コマンドCに対応するファイル履歴(FHc1、FHc2)とを対応付けて紐付け履歴記憶領域R5に記憶する。特定コマンドCのコマンドログと、特定コマンドCに対応するファイル履歴FHc1との対応付けを符号LNK2の破線で示す。特定コマンドCのコマンドログと、特定コマンドCに対応するファイル履歴FHc2との対応付けを符号LNK3の破線で示す。
(対応付け)
図20は、特定コマンドのコマンドログと、ファイル履歴との対応付けを記憶したテーブルである。図20の紐付けテーブルT7は、コマンドログID欄と、ファイル履歴ID欄とを有する。
履歴紐付け部36は、特定コマンドのコマンドログのコマンドログIDをコマンドログID欄に記憶する。そして、履歴紐付け部36は、この特定コマンドのコマンドログと、この特定コマンドに対応するファイル履歴のファイル履歴IDをファイル履歴ID欄に記憶する。
図19の例の場合、履歴紐付け部36は、特定コマンドBのコマンドログID"20004"を図20のコマンドログID欄に記憶する。履歴紐付け部36は、特定コマンドBに対応するファイル履歴FHbのファイル履歴ID"600001"を図20のファイル履歴ID欄に記憶する。さらに、履歴紐付け部36は、特定コマンドCのコマンドログID"20005"を図20のコマンドログID欄に記憶する。履歴紐付け部36は、特定コマンドCに対応するファイル履歴(FHc1、FHc2)のファイル履歴ID"600002","600003"を図20のファイル履歴ID欄に記憶する。
履歴紐付け部36は、全ての自動化部品について、特定コマンドとファイル履歴との紐付け(S6)を実行する。分析装置ANは、この紐付けが終了すると、ファイル履歴の抽出(S7)処理を実行する。
[重複するファイル履歴の抽出]
次に、図21、図22を参照して、図6、図7の重複するファイル履歴の抽出(S7)について説明する。管理者が、第1のユーザ端末USR1(図1参照)を利用して第1のサーバSV1〜第mのサーバSVRm(図1参照)にインストールされているソフトウェアに同一処理を実行した場合を想定する。すると、第1のサーバSV1〜第mのサーバSVRmにおいて、同一の特定コマンドが実行されることにより、ファイルが変更される。
前記の想定では、第1のサーバSV1〜第mのサーバSVRmの各々の情報処理ソフトPSが同一の特定コマンドを実行する。そして、第1のサーバSV1〜第mのサーバSVRmの各々のファイル履歴管理ソフトHSが、ファイルのファイル履歴を作成する。
その結果、分析装置ANは、同一の特定コマンドの実行により変更された複数のファイルのファイル履歴を取得する。そして、分析装置ANの履歴紐付け部36は、特定コマンドと、同内容の複数のファイル履歴とを対応付けて記憶することになる。
(重複するファイル履歴)
図21は、特定コマンドと、複数のファイル履歴とが対応付けて記憶されている状態を模式的に示した図である。図21のコマンドB、コマンドCは、特定コマンドであり、コマンドBの次にコマンドCが実行されたことを実線矢印で示している。
図21では、特定コマンドBと、4つのファイル履歴FHbとが対応付けられている(一点鎖線参照)状態を示す。ファイル履歴FHbは、"00:02:01 /var/opt/ミドルA/service.conf"である。なお、4つのファイル履歴FHbには、それぞれ異なる識別子が割り振られている。
また、図21では、特定コマンドCと、特定コマンドCに対応する2つのファイル履歴FHc1とが対応付けられている(一点鎖線参照)状態を示す。なお、2つのファイル履歴FHc1には、それぞれ異なる識別子が割り振られている。また、特定コマンドCと、特定コマンドCに対応する1つのファイル履歴FHc2とが対応付けられている(一点鎖線参照)状態を示す。また、特定コマンドCと、特定コマンドCに対応する1つのファイル履歴FHc3とが対応付けられている(一点鎖線参照)状態を示す。なお、ファイル履歴FHc3は、"00:03:31 /var/log/ミドルA/access.log"、"00:03:32 /var/log/ミドルA/access1.log"である。
ここで、複数のファイル履歴の内容が完全に一致しなくても、ファイル履歴に含まれるファイルパスが一致していれば、かかるファイル履歴を同じファイル履歴とする。これは、特徴語の選択処理(S8)において、特徴語はファイルパスの単語から選択されるからである。このように、特定コマンドに複数の同じファイル履歴が対応付けて記憶されることは無駄(不要)である。
そこで、紐付け履歴分析部37は、同じファイル履歴(重複するファイル履歴とも呼ぶ)を1つのファイル履歴に纏める。そして、紐付け履歴分析部37は、1つに纏めたファイル履歴からファイルパスを抽出する。ここで、紐付け履歴分析部37は、重複していないファイル履歴については、この重複していないファイル履歴からファイパスを抽出する。
そして、紐付け履歴分析部37は、特定コマンドと、特定コマンドに対応するファイル履歴のファイルパスとを対応付けて選択パス記憶領域R6(図5参照)に記憶する。以下の説明において、コマンドに対応するファイル履歴のファイルパスをコマンドのファイルパスと適宜記す。例えば、特定コマンドBに対応するファイル履歴FHbのファイルパスを特定コマンドBのファイルパスと記す。
(ファイルパスの抽出方法)
次に、ファイルパスの抽出方法について説明する。第1の方法は、1つの特定コマンドに対応する全てのファイル履歴に含まれている同じファイルパスを抽出する方法である。
図21の例では、紐付け履歴分析部37は、第1の方法を実行して、以下のファイルパスを抽出する。紐付け履歴分析部37は、特定コマンドBに対応する全てのファイル履歴FHbの中から、同じファイルパス"/var/opt/ミドルA/service.conf"を抽出する。図6の例では、このファイルパスを符号FP1で示す。
第2の方法は、1つの特定コマンドに対応する全てのファイル履歴において、所定の出現数以上のファイルパスまたは所定の出現比率以上のファイルパスを抽出する方法である。ファイルパスの出現比率は、1つの特定コマンドに対応する全てのファイル履歴において、あるファイルパスの出現数と全てのファイルパスの数との比率である。なお、所定の出現数、所定の出現比率は、管理者により実験的に適宜定められる。
図21の例では、特定コマンドCに対応する全てのファイル履歴(FHc1、FHc2、FHc3)において、ファイルパスの全出現数は5である。このファイルパスは、"/var/log/ミドルA/access.log"、"/var/log/ミドルA/access1.log"である。図6の例では、ファイルパス"/var/log/ミドルA/access.log"を符号FP2で示す。また、図6の例では、ファイルパス"/var/log/ミドルA/access1.log"を符号FP3で示す。
そして、この全てのファイル履歴(FHc1、FHc2、FHc3)において、ファイルパス"/var/log/ミドルA/access.log"の出現数は3、ファイルパス"/var/log/ミドルA/access1.log"の出現数は2である。
従って、ファイルパス"/var/log/ミドルA/access.log"の出現比率は0.6(3/5)であり、ファイルパス"/var/log/ミドルA/access1.log"の出現比率は0.4(2/5)である。
紐付け履歴分析部37は、以上説明したように、ファイルパスの出現数や、ファイルパスの出現比率を計算する。ここで、前記した所定の出現数を"2"、所定の出現比率を"0.2"と想定する。この想定では、紐付け履歴分析部37は、第2の方法を実行して、特定コマンドCに対応する全てのファイル履歴(FHc1、FHc2、FHc3)の中から、2つのファイルパスを抽出する。1つ目のファイルパスは、"/var/log/ミドルA/access.log"であり、2つ目のファイルパスは、"/var/log/ミドルA/access1.log"である。
紐付け履歴分析部37は、重複するファイル履歴がない場合や、特定コマンドに対応してファイル履歴が記憶されていない場合、前記した重複するファイル履歴の抽出処理を実行しない。紐付け履歴分析部37は、特定コマンドと、この特定コマンドのファイルパスとを対応付けて図5の選択パス記憶領域R6にテーブル形式で記憶する。
(ファイルパステーブル)
図22は、図5の選択パス記憶領域R6に記憶された、特定コマンドと、特定コマンドのファイルパスとを示すテーブルである。ファイルパステーブルT8は、自動化部品コマンドログID欄と、ファイルパス欄とを有する。自動化部品コマンドログID欄は、自動化部品に含まれるコマンドのコマンドログの識別子を記憶する。ファイルパス欄は、自動化部品コマンドログID欄に記憶された識別子で識別される特定コマンドのコマンドログに含まれるこの特定コマンドのファイルパスを記憶する。
紐付け履歴分析部37は、コマンドの自動化部品コマンドログIDを自動化部品コマンドログID欄に記憶し、このコマンドのファイルパスをファイルパス欄に記憶する。
図21の例では、特定コマンドBのファイルパスは、"/var/opt/ミドルA/service.conf"である。また、特定コマンドCのファイルパスは、"/var/log/ミドルA/access.log"と、"/var/log/ミドルA/access1.log"とである。そして、特定コマンドBの自動化部品コマンドログIDは、図14の自動化部品コマンドログテーブルT4によれば、"3004"である。また、特定コマンドCの自動化部品コマンドログIDは、図14の自動化部品コマンドログテーブルT4によれば、"3005"である。
従って、紐付け履歴分析部37は、図22のファイルパステーブルT8に示すように、特定コマンドBの自動化部品コマンドログID"3004"と対応付けて、ファイルパス"/var/opt/ミドルA/service.conf"を記憶する。さらに、紐付け履歴分析部37は、図22に示すように、特定コマンドCの自動化部品コマンドログID"3005"と対応付けて、2つのファイルパスを記憶する。2つのファイルパスは、"/var/log/ミドルA/access.log"と、"/var/log/ミドルA/access1.log"とである。なお、図22のファイルパステーブルT8の文字列"NULL"は、コマンドについて、そのファイルパスがない状態を示している。
分析装置ANは、ファイルパスの記憶処理が終了すると、このファイルパスの中から特徴語の選択を行う(S8)。
[特徴語の選択]
次に、図23、図24を参照して、図6、図7の特徴語の選択(S8)について説明する。キーワード解析部38は、特定コマンドの複数のファイルパスを解析する。なお、通常、ファイル履歴の数は多数なので、1つの特定コマンドに対して複数のファイルパスが記憶されることがある。キーワード解析部38は、この解析において、複数のファイルパスにおける、このファイルパスに含まれる各単語の出現頻度を計算し、各単語の出現頻度に基づき、ファイルパスの各単語の中から特徴語を選択する。
図23は、図6、図7の特徴語の選択処理のフロー図である。
ステップS81:キーワード解析部38は、自動化部品に含まれる特定コマンドのファイルパスを記号("/"(スラッシュ)、"."(ドット))単位で分割する。そして、キーワード解析部38は、記号を除外した、フォルダの名前とファイルの名前を単語として抽出する。
ステップS82:キーワード解析部38は、各単語の出現回数をカウントする。
キーワード解析部38は、S81、S82の処理を、ループLP81s〜ループLP81e、ループLP82s〜ループLP82eに示すように全自動化部品の各々に含まれる特定コマンドの各々に実行する。
具体的には、キーワード解析部38は、図22のファイルパステーブルT8のファイルパス欄に記憶された各ファイルパスを"/"(スラッシュ)、"."(ドット)単位で分割し、各ファイパスを単語に分ける(S81)。そして、キーワード解析部38は、全ての単語の出現回数をカウントする(S82)。
キーワード解析部38は、各自動化部品に対してS81、S82の処理を実行し、全自動化部品に対するS81、S82の処理が終了すると、S83に移る。
ステップS83:キーワード解析部38は、各自動化部品に含まれる各特定コマンドに含まれる各単語の評価値を計算する。キーワード解析部38、例えば、単語の出現頻度が大きくなるほど評価値が大きくなるように単語の評価値を計算する。キーワード解析部38は、例えば、ある単語の出現回数を全ての単語の出現回数の総数で除算した除算値を評価値とする。他にも、キーワード解析部38は、単語の出現回数を評価値としてもよい。
ステップS84:キーワード解析部38は、評価値に基づき、ファイルパスの特徴語を選択し、選択した特徴語をストレージ302に記憶する。キーワード解析部38は、ファイルパスに含まれる単語の出現頻度が大きくなるほど評価値が大きくなるように単語の評価値を計算する場合、評価値が最も小さい単語を、このファイルパスの特徴語として選択する。
キーワード解析部38は、S83、S84の処理を、ループLP83s〜ループLP83e、ループLP84s〜ループLP84eに示すように全自動化部品の各々に含まれる特定コマンドの各々に実行する。
具体的には、キーワード解析部38は、図22のファイルパステーブルT8のファイルパス欄に記憶された各ファイルパスの各単語の評価値を計算し、この各単語の評価値に基づき、ファイルパスの特徴語を選択する(S84)。
(特徴語の選択の具体例)
図24は、特徴語の選択を模式的に示した図である。図24のコマンドB、コマンドCは、特定コマンドであり、コマンドBの次にコマンドCが実行されたことを実線矢印で示している。コマンドBと、コマンドBのファイルパスFP1("/var/opt/ミドルA/service.conf")との対応を一点鎖線の矢印で示す。コマンドCと、コマンドCのファイルパスFP2("/var/log/ミドルA/ access.log")との対応を破線の矢印で示す。
キーワード解析部38は、ファイルパスFP1(/var/opt/ミドルA/service.conf")を単語に分け(S81)、各単語の出現回数をカウントする。この単語は、"var"、"opt"、"ミドルA"、"service"、"conf"である。キーワード解析部38は、ファイルパスFP2("/var/log/ミドルA/ access.log")を単語に分け(S81)、各単語の出現回数をカウントする(S82)。この単語は、"var"、" log "、"ミドルA"、" access "、" log "である。図24において各単語を一点鎖線の四角枠の中に示す。
なお、キーワード解析部38は、他の特定コマンドのファイルパスについても、S81、S82の処理を実行している。
キーワード解析部38は、各単語の評価値を計算する(S83)。各単語の評価値を、四角枠内の括弧内の数値に示す。例えば、単語"var"の評価値は"132"である。キーワード解析部38は、各ファイルパスにおいて、ファイルパスの評価値が最も低い単語をこのファイルパスの特徴語として選択する(S84)。
図24の例では、ファイルパスFP1において、単語"ミドルA"の評価値が最も低い。従って、キーワード解析部38は、ファイルパスFP1の特徴語を"ミドルA"と決定する。また、図24の例では、ファイルパスFP2において、単語"ミドルA"の評価値が最も低い。従って、キーワード解析部38は、ファイルパスFP2の特徴語を"ミドルA"と決定する。
なお、特徴語の選択方法としては、様々な方法を利用できる。例えば、キーワード解析部38は、図22のファイルパステーブルT8のファイルパス欄に記憶された各ファイルパスを"/"(スラッシュ)、"."(ドット)単位で分割し、各ファイパスを単語に分ける(S81)。キーワード解析部38は、tf-idf法を利用して、1つの自動化部品に含まれる特定コマンドのファイルパスに含まれる各単語がどのくらい特徴的であるかを識別する指標を演算する。そして、キーワード解析部38は、各単語が特徴的であると判定できる指標を演算すると、この単語を特徴語として選択する。
他にも、管理者が、非特徴語をストレージ302に予め記憶する。この非特徴語は、フォルダ名として一般的に利用される単語("opt"、"log"など)や、ファイル名として一般的に利用される単語("uninstall"、"install"など)である。他にも、この非特徴語は、ファイルの拡張子として一般的に利用される単語("ini"、"bin"、"exe")である。キーワード解析部38は、ファイルパスの単語(S81参照)の中から、ストレージ302に記憶された非特徴語を除外し、残った単語の何れか1を特徴語と選択してもよい。
他にも、管理者が、特定のソフトウェアを識別する名称(例えば、製品名)をストレージ302に予め記憶する。キーワード解析部38は、ファイルパスの単語(S81参照)の中に、ストレージ302に記憶された名称がある場合、この名称を特徴語と選択してもよい。
分析装置ANは、全てのファイルパスについて特徴語の選択が終了すると、自動化部品に特徴語をタグとして設定する処理(S9)を実行する。
[タグの設定]
次に、図25、図26を参照して、図6、図7の自動化部品に特徴語をタグとして設定する処理(S9)について説明する。
タグ付け部39は、特定コマンドと、この特定コマンドの特徴語とを対応付けて図5の自動化部品記憶領域R7にテーブル形式で記憶する。特定コマンドの特徴語は、この特定コマンドのファイルパスの特徴語である。
(特徴語テーブル)
図25は、図5の自動化部品記憶領域R7に記憶された、特定コマンドと、特定コマンドの特徴語とを示す第1のテーブルである。特徴語テーブルT9は、図14の自動化部品コマンドログテーブルT4において図面右側の列に、特徴語欄を追加したテーブルである。
タグ付け部39は、特徴語テーブルT9において、特定コマンドの自動化部品コマンドログIDが記憶された行と、特徴語欄とが交わるセルに、この特定コマンドの特徴語を記憶する。
図24の例では、特定コマンドBの特徴語は"ミドルA"である。また、特定コマンドBの自動化部品コマンドログIDは、図14の自動化部品コマンドログテーブルT4によれば、"3004"である。従って、タグ付け部39は、自動化部品コマンドログID"3004"と、特徴語欄とが交わるセルに、特定コマンドBの特徴語"ミドルA"を記憶する。
図24の例では、特定コマンドCの特徴語は"ミドルA"である。また、特定コマンドCの自動化部品コマンドログIDは、図14の自動化部品コマンドログテーブルT4によれば、"3005"である。従って、タグ付け部39は、自動化部品コマンドログID"3005"と、特徴語欄とが交わるセルに、特定コマンドCの特徴語"ミドルA"を記憶する。
なお、文字列"NULL"は、特徴語がないことを示す。例えば、コマンド"ソフト Y Stop"は、共通作業コマンドであり、共通作業コマンドに対応してファイルパスが記憶されていない。従って、コマンド"ソフト Y Stop"の特徴語はなく、タグ付け部39は、コマンド"ソフト Y Stop"の特徴語欄に文字列"NULL"を記憶する。
(2つの特徴語)
1つの自動化部品に2つ以上の特定コマンドが含まれる場合、各特定コマンドの特徴語が異なることがある。例えば、図22のファイルパステーブルT8において、コマンドCのファイルパス"/var/log/ミドルA/access.log"および"/var/log/ミドルA/access1.log"の"ミドルA"が"ミドルB"の場合を想定する。
この想定では、キーワード解析部38が、図23の特徴語の選択処理を実行すると、コマンドCの特徴語として"ミドルB"を選択する場合がある。
図26は、図5の自動化部品記憶領域R7に記憶された、特定コマンドと、特定コマンドの特徴語とを示す第2のテーブルである。タグ付け部39は、前記した選択がなされると、特徴語テーブルT10において、コマンドCの自動化部品コマンドログIDである"3005"と、特徴語欄とが交わるセルに、特定コマンドCの特徴語"ミドルB"を記憶する。
そして、タグ付け部39は、1つの自動化部品において、異なる特徴語が含まれている場合、特徴語の含有率を計算し、各特徴語と対応付けて含有率を記憶する。含有率は、1つの自動化部品のある特徴語の数を、この1つの自動化部品の全特徴語の総数で除算した値である。このように、タグ付け部39は、特徴語の含有率に応じて、この特徴語に重み付け係数を設定する。なお、1つの自動化部品において、同じ特徴語のみが含まれている場合、この特徴語の含有率は"1.0"である。
図26の例では、自動化部品AP1(図6の第1のコマンドログ群CL1のコマンド)の全特徴語の総数は"2"("ミドルA"、ミドル"B")である。また、自動化部品AP1の特徴語"ミドルA"の数は"1"、自動化部品AP1の特徴語"ミドルB"の数は"1"である。従って、タグ付け部39は、特徴語"ミドルA"の含有率を"0.5"(1/2)と計算し、特徴語"ミドルB"の含有率を"0.5"(1/2)と計算する。
タグ付け部39は、図26の特徴語テーブルT10の特徴語欄に、特徴語と特徴語の含有率とを対応付けて記憶する。タグ付け部39は、例えば、特徴語テーブルT10に示すように、特徴語"ミドルA"の含有率を"0.5"を「ミドルA(0.5)」と記憶し、特徴語"ミドルB"の含有率を"0.5"を「ミドルB(0.5)」と記憶する。
[自動化部品の検索]
次に、図27を参照して、自動化部品の検索について説明する。図27は、自動化部品の検索を説明する図である。管理者は、図2のユーザ端末USRの入力装置INP1を操作し、検索指示を汎用ソフトWS1に行う。この検索指示は、所望のソフトウェアに対する運用管理作業の自動化を行う自動化部品を検索する指示である。
(検索指示)
汎用ソフトWS1は、この検索指示に応答して、検索指示画面を表示装置DSP1に表示する。図27(A)は、検索指示画面の一例である。検索指示画面DP1は、検索ボックスBXと検索ボタンBTとを含む。管理者は、検索指示画面DP1の検索ボックスBXに、所望のソフトウェアの名前を、入力装置INP1を介して入力し、検索ボタンBTをクリックする。図27(A)の例では、検索ボックスBXに所望のソフトウェアの名前"ミドルA"を入力する。
汎用ソフトWS1は、このクリックに応答して、検索ボックスBXに入力された名前"ミドルA"を含む検索指示信号を分析装置ANに送信する。所望のソフトウェアの名前は、換言すれば特徴語である。
(自動化部品の検索)
分析装置ANの検索部40は、検索指示信号を受信すると、受信した検索指示信号に応答して、検索指示信号の特徴語と対応付けて記憶されている特定コマンドをユーザ端末USRに送信する。ここで、検索部40は、検索指示信号を受信すると、受信した検索指示に応答して、検索指示の特徴語と対応付けて記憶されている特定コマンドを含む自動化部品をユーザ端末USRに送信してもよい。
具体的には、検索部40は、検索指示信号を受信すると、検索指示信号に含まれる名前"ミドルA"を特徴語として設定された特定コマンドを図5の自動化部品記憶領域R7の中から検索する。さらに、検索部40は、この検索した特定コマンドを含む自動化部品を図5の自動化部品記憶領域R7の中から検索する。自動化部品記憶領域R7に、例えば、図25の特徴語テーブルT9が記憶されているとする。
検索部40は、図25の特徴語テーブルT9の中から特徴語"ミドルA"と対応付けて記憶されている自動化部品コマンドログID"3004"、"3005"を検索する。検索部40は、図13の自動化部品テーブルT3の中から、この自動化部品コマンドログID"3004"、"3005"を含むセルを特定し、このセルに含まれる全ての自動化部品コマンドログIDを取得する。全ての自動化部品コマンドログIDは"3001"〜"3006"である。
検索部40は、図25の特徴語テーブルT9の中から、動化部品コマンドログID"3001"〜"3006"に対応して記憶されている6つのコマンドを取得する。この取得した6つのコマンドを含む自動化部品が、自動化部品AP1である。自動化部品AP1は、名前"ミドルA"のソフトウェア(所望のソフトウェア)に対する運用管理作業の自動化を行う自動化部品である。検索部40は、さらに、図25の特徴語テーブルT9の中から、特徴語"ミドルA"と対応付けて記憶されている特定コマンドも取得する。
なお、分析装置ANは、自動化部品AP1以外に、自動化部品AP2を作成し(図7のS3)、自動化部品AP2の特徴語として"ミドルA"、"ミドルB"を選択(図7のS8)している。この"ミドルA"、"ミドルB"の含有率は、それぞれ"0.5"である。さらに、分析装置ANは、自動化部品AP3を作成し(図7のS3)、自動化部品AP3の特徴語として"ミドルC"、"ミドルA"を選択(図7のS8)している。この"ミドルC"、"ミドルA"の含有率は、それぞれ"0.8"、"0.2"である。
(検索結果の表示)
分析装置ANは、検索結果をユーザ端末USRに送信(出力)する。ユーザ端末USRは、表示装置DSP1に検索結果を表示する。この検索結果は、前記の例では、自動化部品AP1〜AP3、さらに、自動化部品AP1〜AP3の特定コマンド、特定コマンドの特徴語、特徴語の含有率である。なお、自動化部品AP1〜AP3に含まれるコマンドも検索結果に含まれている。
図27(B)は、分析装置ANの検索部40が検索した自動化部品を表示する検索結果画面の一例である。ユーザ端末USRは、表示装置DSP1に検索結果画面DP2を表示する。
図27(B)において、自動化部品AP1と自動化部品AP1のタグTG1が表示されている。タグTG1は、自動化部品AP1のタグ("ミドルA" "1.0")を示す。タグに含まれる数値は、特徴語の含有率(図26参照)である。なお、自動化部品AP1の特徴語は"ミドルA"だけであるので、含有率は"1.0"である。
図27(B)において、自動化部品AP2と自動化部品AP2のタグTG2a、TG2bが表示されている。タグTG2aは、自動化部品AP2のタグ("ミドルA" "0.5")を示す。タグTG2bは、自動化部品AP2のタグ("ミドルB" "0.5")を示す。
図27(B)において、自動化部品AP3と自動化部品AP3のタグTG3a、TG3bが表示されている。タグTG3aは、自動化部品AP3のタグ("ミドルC" "0.8")を示す。タグTG3bは、自動化部品AP3のタグ("ミドルA" "0.2")を示す。
図27で説明したように、管理者は、検索結果画面DP2を見れば、所望のソフトウェアに対する運用管理作業の自動化を行う自動化部品を容易に識別することができる。さらに、管理者は、この自動化部品に含まれる特定コマンドの特徴語も取得できるので、所望のソフトウェアに対するコマンドを容易に識別できる。特に、管理者は、図25の特徴語テーブルT9や、図26の特徴語テーブルT10を分析装置ANから取得すれば、特徴語が設定されている特定コマンドを一覧して把握できる。
特に、自動化部品がソフトウェアにより自動的に作成される場合、多数の自動化部品が作成される。そして、ソフトウェアのアルゴリズムによっては正確に動作しない自動化部品が作成されることもある。管理者が、このような多数の自動化部品を一つ一つ分析して、所望のソフトウェアに対する運用管理作業の自動化を行う自動化部品を識別することは困難である。
また、管理者(以下、管理者Xと記す)が手動で自動化部品を作成した場合であっても、他の管理者(以下、管理者Yと記す)は、自ら自動化部品を作成していないので、管理者Xが作成した自動化部品の内容がわからない。そのため、自動化部品を一つ一つ分析して、所望のソフトウェアに対する運用管理作業の自動化を行う自動化部品を識別する必要がある。
しかし、本実施の形態によれば、特定のソフトウェアに対する運用管理作業の自動化を行う自動化部品の特定コマンドに、この特定のソフトウェアを示す特徴語をタグとして設定している。そのため、例えば管理者は、所望のソフトウェアに対する運用管理作業の自動化を行う自動化部品を容易に識別できる。その結果、管理者は、この自動化部品をカスタマイズして、所望のソフトウェアに対する運用管理作業の更なる自動化を実現するための作業工数を削減できる。
以上の実施の形態をまとめると、次の付記のとおりである。
(付記1)
コンピュータに、
実行された命令の命令履歴と、ファイルに対する処理の履歴を示すファイル履歴とを取得し、
実行された前記命令の内容に基づき、前記命令履歴の中から、特定のソフトウェアに対する特定命令を抽出し、
抽出した前記特定命令の命令履歴に含まれる当該特定命令の時間情報と、前記ファイル履歴に含まれる時間情報とに基づき、抽出した前記特定命令と、当該特定命令に対応する前記ファイル履歴とを対応付けて記憶し、
抽出した前記特定命令に対応付けて記憶された前記ファイル履歴に含まれる、ファイルの記憶位置を示す文字列の中から特徴語を選択し、
抽出した前記特定命令と、選択した前記特徴語とを対応付けて記憶する
処理を実行させることを特徴とする命令履歴分析プログラム。
(付記2)
前記特定命令の抽出において、
取得した前記命令履歴の中から、命令の出現頻度に基づき、汎用的な命令の内容を含む汎用命令を抽出し、
前記命令履歴に含まれる命令であって、所定の処理を自動的に実行する一連の命令を含む自動化部品を取得し、取得した複数の自動化部品の中から、命令の出現頻度に基づき、2つ以上の自動化部品に共通する命令の内容を含む共通命令を抽出し、
前記自動化部品の中から、抽出した前記汎用命令と抽出した前記共通命令とを除外した命令を、前記特定命令として抽出する
処理を前記コンピュータに実行させることを特徴とする付記1に記載の命令履歴分析プログラム。
(付記3)
前記汎用命令の抽出において、
取得した前記命令履歴における前記命令の出現頻度が第1の出現頻度以上の命令を抽出し記憶する、
処理を前記コンピュータに実行させることを特徴とする付記2に記載の命令履歴分析プログラム。
(付記4)
前記共通命令の抽出において、
取得した前記自動化部品における前記命令の出現頻度が第2の出現頻度以上の命令を抽出し記憶する
処理を前記コンピュータに実行させることを特徴とする付記3に記載の命令履歴分析プログラム。
(付記5)
前記命令履歴に含まれる時間情報は、前記命令が実行された時間を含み、
前記ファイル履歴に含まれる時間情報は、前記ファイルが変更された時間を含み、
前記特定命令と、当該特定命令に対応する前記ファイル履歴とを対応付ける記憶において、
前記命令履歴の時間情報に基づき、抽出した前記特定命令の次に実行される次の命令の命令履歴を抽出し、
取得した前記ファイル履歴の中から、前記特定命令の命令履歴の時間情報に含まれる第1の時間と、前記次の命令の命令履歴の時間情報に含まれる第2の時間との間の時間を含むファイル履歴を選択し、選択した前記ファイル履歴と、抽出した前記特定命令とを対応付けて記憶する
処理を前記コンピュータに実行させることを特徴とする付記2に記載の命令履歴分析プログラム。
(付記6)
前記ファイルのファイル履歴に含まれる前記文字列は、当該ファイルの名前と、当該ファイルが格納されるフォルダの名前とを含み、
前記特徴語の選択において、
前記自動化部品に含まれる特定命令と対応付けて記憶されている前記ファイル履歴の前記文字列における、当該文字列に含まれる各単語の出現頻度を計算し、各単語の出現頻度に基づき、前記文字列の各単語の中から前記特徴語を選択する
処理を前記コンピュータに実行させることを特徴とする付記5に記載の命令履歴分析プログラム。
(付記7)
前記文字列は、更に、前記フォルダの名前を区切る記号と、前記フォルダの名前と前記ファイルの名前とを区切る記号とを含み、
前記特徴語の選択において、前記記号を除外した、フォルダの名前とファイルの名前を前記単語として抽出する
処理を前記コンピュータに実行させることを特徴とする付記6に記載の命令履歴分析プログラム。
(付記8)
前記特徴語を含む検索指示を受信し、
受信した前記検索指示に応答して、前記検索指示の特徴語と対応付けて記憶されている前記特定命令を出力する
処理を前記コンピュータに実行させることを特徴とする付記1に記載の命令履歴分析プログラム。
(付記9)
前記特徴語を含む検索指示を受信し、
受信した前記検索指示に応答して、前記検索指示の特徴語と対応付けて記憶されている前記特定命令を含む前記自動化部品を出力する
処理を前記コンピュータに実行させることを特徴とする付記2に記載の命令履歴分析プログラム。
(付記10)
実行された命令の命令履歴と、ファイルに対する処理の履歴を示すファイル履歴とを記憶する記憶部と、
実行された前記命令の内容に基づき、前記命令履歴の中から、特定のソフトウェアに対する特定命令を抽出し、抽出した前記特定命令の命令履歴に含まれる当該特定命令の時間情報と、前記ファイル履歴に含まれる時間情報とに基づき、抽出した前記特定命令と、当該特定命令に対応する前記ファイル履歴とを対応付けて前記記憶部に記憶する抽出部と、
抽出した前記特定命令に対応付けて記憶された前記ファイル履歴に含まれる、ファイルの記憶位置を示す文字列の中から特徴語を選択する選択部と、
抽出した前記特定命令と、選択した前記特徴語とを対応付けて前記記憶部に記憶する設定部とを有することを特徴とする命令履歴分析装置。
(付記11)
情報処理装置で実行される命令履歴分析方法であって、
前記情報処理装置は、
実行された命令の命令履歴と、ファイルに対する処理の履歴を示すファイル履歴とを取得し、
実行された前記命令の内容に基づき、前記命令履歴の中から、特定のソフトウェアに対する特定命令を抽出し、
抽出した前記特定命令の命令履歴に含まれる当該特定命令の時間情報と、前記ファイル履歴に含まれる時間情報とに基づき、抽出した前記特定命令と、当該特定命令に対応する前記ファイル履歴とを対応付けて記憶し、
抽出した前記特定命令に対応付けて記憶された前記ファイル履歴に含まれる、ファイルの記憶位置を示す文字列の中から特徴語を選択し、
抽出した前記特定命令と、選択した前記特徴語とを対応付けて記憶する
ことを特徴とする命令履歴分析方法。