JP2016018227A - 作業ログ編集方法、情報処理装置、およびプログラム - Google Patents
作業ログ編集方法、情報処理装置、およびプログラム Download PDFInfo
- Publication number
- JP2016018227A JP2016018227A JP2014138320A JP2014138320A JP2016018227A JP 2016018227 A JP2016018227 A JP 2016018227A JP 2014138320 A JP2014138320 A JP 2014138320A JP 2014138320 A JP2014138320 A JP 2014138320A JP 2016018227 A JP2016018227 A JP 2016018227A
- Authority
- JP
- Japan
- Prior art keywords
- file
- log
- editing
- difference
- input
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/194—Calculation of difference between files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3438—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment monitoring of user actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
【課題】作業手順の作成時にファイルの編集操作を再利用できるようにする。
【解決手段】情報処理装置2の記憶部2aは、管理対象装置1に対して実施された作業における少なくとも1つの操作のログ5と、編集ソフトウェア1aを用いて編集されたファイル4の、編集前後の差分を示す差分情報2aとを取得する。演算部2bは、ログ5から、ファイル4の編集に用いられた編集ソフトウェア1aの起動操作を示す第1のログを抽出する。そして演算部2bは、第1のログを、差分情報に示された差分をファイル4に反映させる操作を示す第2のログに置き換える。
【選択図】図1
【解決手段】情報処理装置2の記憶部2aは、管理対象装置1に対して実施された作業における少なくとも1つの操作のログ5と、編集ソフトウェア1aを用いて編集されたファイル4の、編集前後の差分を示す差分情報2aとを取得する。演算部2bは、ログ5から、ファイル4の編集に用いられた編集ソフトウェア1aの起動操作を示す第1のログを抽出する。そして演算部2bは、第1のログを、差分情報に示された差分をファイル4に反映させる操作を示す第2のログに置き換える。
【選択図】図1
Description
本発明は、作業ログ編集方法、情報処理装置、およびプログラムに関する。
ICT(Information and Communication Technology)システムなどのシステムの運用管理では、OS(Operating System)やミドルウェアのインストール、バージョンアップなどにより、システムの構成を変更することがある。システムの構成を変更する場合、例えばシステムの起動・停止、システムの設定値変更、ソフトウェア更新などの作業が行われる。このとき、作業が発生するたびに、作業手順を管理者が一から考えていたのでは、作業効率が悪く、間違いも起こりやすい。
そこで、既にある作業手順を流用して、操作対象のシステムに合わせた作業手順を作成することが考えられている。例えば運用者が行った操作内容を取得し、この操作内容を基に、運用業務の実施時における運用対象システムに対する操作の手順と、操作の内容を案内するガイドフローを作成する技術が考えられている。またログDBからログを収集するログ収集と、オペレーション登録DBからオペレーション設定情報を収集するオペレーション設定情報収集と、収集したログ及びオペレーション設定情報の分析と、リモートオペレーションの最適化処理を行う技術が考えられている。さらに、システムの構成変更内容に応じた構成変更の作業手順が示された手順情報の集合に基づいて、変更対象のシステムに合わせた固有情報が設定された手順情報を出力する技術もある。これにより、システムの構成変更作業の効率化を促進させることができる。
しかし、運用業務において実施された操作に、エディタのようなアプリケーションソフトウェアを用いたファイルの編集操作が含まれる場合、編集操作の内容を取得することができない。そのため編集操作を自動で再現することができず、既にある作業手順を流用して新たな作業手順を作成する際に、ファイルの編集操作を再利用した作業手順を作成することができない。
1つの側面では、本件は、作業手順の作成時にファイルの編集操作を再利用できるようにすることを目的とする。
1つの案では、コンピュータが、管理対象装置に対して実施された作業における少なくとも1つの操作のログと、編集ソフトウェアを用いて編集されたファイルの、編集前後の差分を示す差分情報とを取得し、ログから、ファイルの編集に用いられた編集ソフトウェアの起動操作を示す第1のログを抽出し、第1のログを、差分情報に示された差分をファイルに反映させる操作を示す第2のログに置き換える、作業ログ編集方法が提供される。
1態様によれば、作業手順の作成時にファイルの編集操作が再利用可能となる。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るシステムの構成例を示す図である。第1の実施の形態に係るシステムは、管理対象装置1と情報処理装置2とを有する。管理対象装置1は、例えば1以上のコンピュータを有するコンピュータシステムである。情報処理装置2も、例えば1以上のコンピュータを有するコンピュータシステムである。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るシステムの構成例を示す図である。第1の実施の形態に係るシステムは、管理対象装置1と情報処理装置2とを有する。管理対象装置1は、例えば1以上のコンピュータを有するコンピュータシステムである。情報処理装置2も、例えば1以上のコンピュータを有するコンピュータシステムである。
管理対象装置1は、編集ソフトウェア(編集SW)1aの実行を検出し、編集SW1aを利用したファイル4の編集における編集前後で差分を示す差分情報を生成する。差分情報は、例えば差分ファイル4bに含められる。管理対象装置1は、差分情報を含む差分ファイル4bを情報処理装置2に送信する。
また管理対象装置1は、管理対象装置1に対して実施された作業における少なくとも1つの操作のログを取得し、作業に関する一連の操作のログをまとめた作業ログ5を、情報処理装置2に送信する。実施された作業には、編集SW1aの起動操作も含まれる。
編集SW1aの実行の検出のために、管理対象装置1は、例えば入力装置による入力の有無を監視する。そして管理対象装置1は、起動されたソフトウェアの実行中に入力装置からの入力がある場合、そのソフトウェアを編集SW1aとして検出する。
情報処理装置2は、記憶部2aと演算部2bとを有する。記憶部2aは、管理対象装置1から取得した作業ログ5と差分ファイル4bとを記憶する。
演算部2bは、作業ログ5から、ファイル4の編集に用いられた編集SW1aの起動操作を示す第1のログを抽出する。そして演算部2bは、第1のログを、差分ファイル4b内の差分情報に示された差分をファイル4に反映させる操作を示す第2のログに置き換える。例えば差分情報に、文字列「ddd」が追加されていると示されている場合、第1のログが、ファイル4に文字列「ddd」を追加する操作を示す第2のログに置き換えられる。
演算部2bは、作業ログ5から、ファイル4の編集に用いられた編集SW1aの起動操作を示す第1のログを抽出する。そして演算部2bは、第1のログを、差分ファイル4b内の差分情報に示された差分をファイル4に反映させる操作を示す第2のログに置き換える。例えば差分情報に、文字列「ddd」が追加されていると示されている場合、第1のログが、ファイル4に文字列「ddd」を追加する操作を示す第2のログに置き換えられる。
また演算部2bは、第1のログから編集SWの起動操作を示すグラフ6を生成し、そのグラフ6の置き換えを行ってもよい。例えばグラフ6は、事前条件のノードと編集SWの起動操作のノードと事後条件のノードとを有する。グラフ6の事前条件は、編集SW1aを実行する装置に期待される状態を示している。グラフ6の事前条件のノードには、例えば編集SWの実行ファイルを有していることを示すノードや、編集対象のファイル4を有していることを示すノードが含まれる。グラフ6の事後条件は、編集SW1aを実行した装置に期待される状態を示している。グラフ6の事後条件のノードには、例えば編集済みのファイル4aを有していることを示すノードが含まれる。
グラフ6は、例えば、事前条件のノードと差分の反映処理の実行操作のノードと事後条件のノードとを有するグラフ7に置き換えられる。グラフ7の事前条件は、差分の反映処理を実行する装置に期待される状態を示している。例えばグラフ7の事前条件のノードには、差分を反映させる差分適用コマンドの実行プログラムを有していることを示すノード、ファイル4を有していることを示すノード、差分ファイル4bを有していることを示すノードが含まれる。グラフ7の事後条件は、差分の反映処理を実行した装置に期待される状態を示している。グラフ7の事後条件のノードには、例えば編集済みのファイル4aを有していることを示すノードが含まれる。
このようなシステムによれば、管理対象装置1において、ファイル4の編集操作を含む作業が行われると、その作業に関する作業ログ5が取得され、情報処理装置2に送信される。また管理対象装置1では、編集前のファイル4と編集後のファイル4aとの差分を示す差分情報が生成される。差分情報は、例えば差分ファイル4bとして情報処理装置2に送信される。
情報処理装置2では、作業ログ5から、編集SW1aの起動操作に関する第1のログが抽出される。そして抽出された第1のログが、差分ファイル4b内の差分情報に示された差分をファイル4に反映させる操作を示す第2のログに置き換えられる。例えば第1のログに基づいて作成されたグラフ6が、第2のログに基づいて作成されたグラフ7に置き換えられる。
情報処理装置2は、例えば作業ログ5に含まれる操作ごとのログそれぞれについて、同様にグラフを作成すれば、事前条件と事後条件との適合性を判定することで、複数の操作を組み合わせた作業手順を作成することができる。なお作業手順の作成方法については、後述する(図4、図5参照)。作業手順を作成する際、置き換え前のグラフ6は、編集SW1aを用いた作業者の入力による編集内容が反映されておらず、作業手順の作成の際に利用することができない。他方、置き換え後のグラフ7は、作業者からの入力に代えて用意された差分ファイル4bを反映させる操作が示されており、作業手順の作成の際に利用することができる。すなわちグラフ7に示された差分適用操作は、作業者からの入力なしに、自動実行できる。その結果、ファイルの編集操作を再利用した作業手順が作成可能となる。
なお、演算部2bは、例えば情報処理装置2が有するプロセッサにより実現することができる。また、記憶部2aは、例えば情報処理装置2が有するメモリにより実現することができる。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、多数のサーバから作業ログを収集して、特定のサーバに対する作業手順を自動生成できるようにしたものである。この作業手順の生成に際し、編集操作に関するログは、編集内容を自動で反映させることができる操作のログに書き換えられる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、多数のサーバから作業ログを収集して、特定のサーバに対する作業手順を自動生成できるようにしたものである。この作業手順の生成に際し、編集操作に関するログは、編集内容を自動で反映させることができる操作のログに書き換えられる。
図2は、第2の実施の形態のシステム構成例を示す図である。第2の実施の形態では、図1に示した第1の実施の形態の情報処理装置2の一例として、管理サーバ100が設けられている。管理サーバ100には、ネットワーク20を介して複数のサーバ41〜44が接続されている。複数のサーバ41〜44は、それぞれサーバ、ストレージ装置、ネットワークスイッチなどを含んでいる。
またネットワーク20には、複数の作業者51〜54それぞれが使用する端末装置31〜34が接続されている。サーバ41〜44は、それぞれ別個の作業者が管理している。またサーバ41〜44は、それぞれ1以上のサーバで構成されている。
図2の例では、作業者51は、端末装置31を使用してサーバ41を管理する。また作業者52は、端末装置32を使用してサーバ42を管理する。また作業者53は、端末装置33を使用してサーバ43を管理する。また作業者54は、端末装置34を使用してサーバ44を管理する。
管理サーバ100は、作業者51〜54によるサーバ41〜44の運用管理を支援するコンピュータである。管理サーバ100は、作業者51〜54による端末装置31〜34を介したサーバ41〜44に対する操作内容をサーバ41〜44から取得し、作業ログとして保持する。また管理サーバ100は、保持している作業ログに基づいて、作業内容に応じた操作手順を示すグラフを生成する。さらに管理サーバ100は、作業者51〜54による端末装置31〜34からの手順要求に応じて、手順要求を操作する作業者が使用するサーバに適合する操作手順を生成し、手順要求を出力した端末装置に応答する。
管理サーバ100は、多様な操作手順を生成可能とするため、沢山の作業者の手順の作業ログを操作単位に細切れにし、各操作の動作条件を明らかにしておき、操作をつなぎあわせて操作手順を生成する。
図3は、本実施の形態に用いる管理サーバのハードウェアの一構成例を示す図である。管理サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOSのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、管理サーバ100の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した装置も、図3に示した管理サーバ100と同様のハードウェアにより実現することができる。
管理サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。管理サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理サーバ100に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また管理サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
次に、サーバ41〜44に対して実施された作業の作業ログに基づいて、特定のサーバの作業手順を生成する処理の概要を説明する。
管理サーバ100は、サーバ41〜44から作業ログを収集する。管理サーバ100は、例えば作業ログに示される一連の操作を、1つの操作ごとに分割する。管理サーバ100は、操作ログに基づいて、各操作の事前条件と事後条件とを判断する。
管理サーバ100は、サーバ41〜44から作業ログを収集する。管理サーバ100は、例えば作業ログに示される一連の操作を、1つの操作ごとに分割する。管理サーバ100は、操作ログに基づいて、各操作の事前条件と事後条件とを判断する。
事前条件は、操作に応じた処理を実行するシステムに期待される状態である。事後条件は、操作に応じた処理を実行したシステムに期待される状態である。以下、単に「条件」といった場合、事前条件と事後条件とを包含するものとする。
事前条件は、例えば操作に応じて実行される処理ごとに存在する。事前条件としては、例えば「操作に応じた処理の実行時に読み込むファイルをシステムが有している。」という条件がある。この場合、操作に応じた処理の実行時に読み込むファイルのリストが事前条件内に定義される。
事後条件は、例えば操作に応じた処理ごとに存在する。事後条件としては、例えば「操作に応じた処理の実行により生成されたファイルをシステムが有している。」という条件がある。この場合、操作に応じた処理の実行により生成されたファイルのリストが事後条件内に定義される。
操作ごとの事前条件と事後条件とを判断した管理サーバ100は、例えば各操作に事前条件と事後条件とを関連付けた条件定義情報を生成する。例えば複数の操作それぞれを、その操作の事後条件を事前条件とする操作に関連付ける。例えば管理サーバ100は、条件に基づいてグラフを作成する。グラフは、複数の操作それぞれを遷移元とし、遷移元の操作の事後条件を事前条件とする操作を遷移先とし、遷移元の操作から遷移先の操作への遷移を定義したものである。ある操作から別の操作への遷移は、グラフ上では、例えば事前条件または事後条件を示す条件を経由した遷移として定義される。
図4は、関連づけ処理の一例を示す図である。図4の例では、4つの操作がある。この場合、操作ごとのグラフ61〜64を作成することができる。グラフ61〜64は、ノードとエッジとの組み合わせで表される。ノードは、操作または条件を示す要素である。エッジは、ノード間を結ぶ矢印であり、ノード間の関係を示す。
図4の例では、操作を矩形のノードで示し、条件を楕円のノードで示している。操作を示すノードの中には、その操作の操作IDが示されている。条件を示すノードの中には、その条件の条件IDが示されている。操作のノードの左側には、事前条件のノードが配置されており、操作のノードの右側には事後条件のノードが配置されている。操作のノードに対し、その操作の事前条件と事後条件とのノードとが、エッジで接続されている。事前条件のノードと操作のノードとを接続するエッジは、矢印が操作のノードを指している。事後条件のノードと操作のノードとを接続するエッジは、矢印が事後条件のノードを指している。
操作ごとのグラフ61〜64のうち、同じ操作または同じ条件があれば、その操作または条件が1つのノードにまとめられる。同じ操作または条件をまとめることで、操作ごとのグラフ61〜64は、1つのグラフ65に統合される。グラフ65では、操作ID「操作1」の操作と操作ID「操作2」の操作との事前条件である条件ID「条件12」のノードが、1つのノードにまとめられている。また操作ID「操作1」の操作の事後条件である条件ID「条件13」のノードと、操作ID「操作3」の操作の事前条件である条件ID「条件13」のノードとが、1つのノードにまとめられている。また操作ID「操作2」の操作の事後条件である条件ID「条件22」のノードと、操作ID「操作4」の操作の事前条件である条件ID「条件22」のノードとが、1つのノードにまとめられている。
このように統合されたグラフ65を用いて、操作対象のサーバに操作を行う際に、手順探索を行うことができる。
図5は、手順探索の一例を示す図である。図5の例では、図4に示したようなグラフ65から手順探索を行うものとする。そして探索条件として、初期条件66として条件ID「条件11」、「条件12」の条件が与えられ、目標条件67として条件ID「条件31」の条件が与えられたものとする。初期条件66は、操作対象のサーバが満たしている条件である。目標条件67は、操作対象のサーバが、操作後に満たすことが期待される条件である。すなわち、操作対象のサーバが目標条件67を満たすようにするための作業手順が探索される。
図5は、手順探索の一例を示す図である。図5の例では、図4に示したようなグラフ65から手順探索を行うものとする。そして探索条件として、初期条件66として条件ID「条件11」、「条件12」の条件が与えられ、目標条件67として条件ID「条件31」の条件が与えられたものとする。初期条件66は、操作対象のサーバが満たしている条件である。目標条件67は、操作対象のサーバが、操作後に満たすことが期待される条件である。すなわち、操作対象のサーバが目標条件67を満たすようにするための作業手順が探索される。
探索条件が入力されると、グラフ65から目標条件が探索される。グラフ65には、目標条件67に対応する条件(条件ID「条件31」)が存在する。
次に目標条件67に対応する条件から、グラフ65上を初期条件66まで遡れるかどうかが探索される。グラフ65では、初期条件66に対応する条件(条件ID「条件11」、「条件12」)が存在する。そして初期条件66に対応する条件のノードと、目標条件67に対応する条件のノードとの間は、操作ID「操作1」、条件ID「条件13」、操作ID「操作3」の各ノードを介して接続されている。そこで、探索によって抽出された経路上のノードとエッジとが抽出され、サブグラフ68が生成される。
次に目標条件67に対応する条件から、グラフ65上を初期条件66まで遡れるかどうかが探索される。グラフ65では、初期条件66に対応する条件(条件ID「条件11」、「条件12」)が存在する。そして初期条件66に対応する条件のノードと、目標条件67に対応する条件のノードとの間は、操作ID「操作1」、条件ID「条件13」、操作ID「操作3」の各ノードを介して接続されている。そこで、探索によって抽出された経路上のノードとエッジとが抽出され、サブグラフ68が生成される。
なおサブグラフ68中の操作の事前条件は、初期条件もしくはその操作より前に実行可能な操作の事後条件になっていなければならない。例えばグラフ65上を、条件ID「条件31」のノードから遡るとき、操作ID「操作4」、条件ID「条件22」、操作ID「操作2」、条件ID「条件12」の各ノードを辿る経路もある。しかし、この経路の上の操作ID「操作2」の操作の事前条件である条件ID「条件21」が、初期条件として満たされておらず、実行可能な操作の事後条件でもない。そのため条件ID「条件21」のノードは選択することができず、このノードを経由する経路は、探索の対象から除外される。
なお図5の例では、簡単のために目標条件を1つとしたが、目標条件が複数ある場合、管理サーバ100は、目標条件ごとに手順探索を行う。そして管理サーバ100は、目標条件ごとのサブグラフを、同じ操作または条件をまとめることで統合する。
手順探索部160は、生成されたサブグラフ68が、操作対象のサーバに対する操作手順69を表している。手順実行部170は、サブグラフ68に基づいて、スクリプトを生成する。例えば手順実行部170は、抽出したサブグラフ68に含まれる操作を、初期条件に近い操作ほど前に実行されるように並べる。すなわち、手順実行部170は、ある操作Aにおいて、その事前条件Bを事後条件とするような操作Cがある場合は、その操作Cを先に実行するように、操作を並べる。このような操作の配置方法として、例えばトポロジカルソートなどの方法がある。
このようにして操作を並べたスクリプトが生成される。図5の例では、操作ID「操作1」の操作の次に、操作ID「操作3」の操作を実行する手順を記述したスクリプトが生成される。
このように、管理サーバ100は、過去に行った作業における操作手順を、操作ごとに分割して再利用した操作手順を生成する。すなわち、細かな手順(操作)の粒度で再利用できる。これにより、過去の作業全体のような大きな纏まりの手順から探索条件に合致する事例が見つけ出せない場合であっても、個別の操作の組み合わせにより、探索条件に合致する操作手順を生成することができる。その結果、操作手順を生成できる場面が増え、過去の手順の再利用率が向上する。そして、作業の工数が削減される。
ところで、システムの構築作業や運用作業には、設定ファイルの編集といった、ファイルの作成・修正を伴う編集操作が含まれることがある。このような編集操作は、例えばエディタのような編集SWを用いて実行される。編集SWに対する作業者の手動操作は、作業ログに含まれない。そのため作業ログのみを用いて、操作対象のサーバに適用する作業手順を自動生成しようとすると、 作業者の手動でのファイル編集操作を再利用できない。
例えば、作業ログに、“edit aaa.conf”という操作があったとする。ここで“edit”は、エディタの起動命令である。“aaa.conf”は編集対象のファイル名である。この操作の文字列からは、編集内容(どのような編集を行ったのか)は判らない。すなわち、編集内容は、作業者のエディタへの入力次第であり、エディタへの入力については作業ログに含まれない。そのため、編集内容を判断することができない。なおエディタへの入力内容を取得できたとしても、その入力に応じてどのような編集が実行されるかは、エディタ次第である。エディタのソフトウェアは多数存在し、すべてのエディタについて、入力に応じた挙動を解析して編集内容を判断できるようにするのは困難である。
このように、作業手順の中にエディタのようなソフトウェアによるファイルの編集操作が含まれる場合、作業ログには編集操作の内容が含まれないため、実施された編集操作を再利用できない。
なお、編集操作が実施された場合、編集した内容が重要なのであって、エディタなどの編集SWはひとつの編集手段に過ぎない。操作ログだけで実施された手順を解析すると、あるエディタを用いた“edit aaa.conf”という操作と、他のエディタを用いた“edit2 aaa.conf”操作は、別の操作として認識される。現実には多種多様なエディタが存在し、エディタ種別ごとに別操作と認識すると、エディタのための余計な入出力ファイルが事前条件・事後条件となり、グラフが巨大化する。また、エディタのインストール手順など、本来不要な依存関係が発生しうる。その結果、グラフがさらに大きくなり、手順探索により処理時間の長期化や、使用するメモリ容量の肥大化を招く。また、本来不要な操作を含んだ手順を探索することとなり、探索処理を長期化させる要因ともなる。
そこで、第2の実施の形態では、手動でのファイル編集操作を含んだ操作手順の自動作成を可能にするため、手作業によるファイルの変更内容を明確化し、編集内容を、自動化可能な操作の記述に書き換える。以下、手作業によるファイルの変更内容を明確化するための書き換え処理を、正規化と呼ぶ。
正規化の処理は、大別すると以下の3つの処理に分けられる。
1.ファイル編集操作の検知処理
サーバ41〜44は、作業者の手動でのファイル編集操作を、「どんな操作がエディタであるかといった辞書」を予め持たずに検知する。例えばサーバ41〜44は、ある操作の開始から終了までの間、作業者からの入力があるかどうかを監視する。そしてサーバ41〜44は、作業者からの入力が1度でもあれば、その操作は「エディタによる編集」と判断する。
1.ファイル編集操作の検知処理
サーバ41〜44は、作業者の手動でのファイル編集操作を、「どんな操作がエディタであるかといった辞書」を予め持たずに検知する。例えばサーバ41〜44は、ある操作の開始から終了までの間、作業者からの入力があるかどうかを監視する。そしてサーバ41〜44は、作業者からの入力が1度でもあれば、その操作は「エディタによる編集」と判断する。
2.ファイルの編集前後の差分作成処理
サーバ41〜44は、編集対象のファイルに対し、編集前後の差分を作成する。例えばサーバ41〜44は、編集操作の検知処理により「エディタによる編集」の操作を検知した場合、ファイルの編集前後で差分を取得する。例えばlinux(登録商標)にはdiffというファイルの差分を示す差分情報を取得するコマンドがあり、このようなコマンドを実行することで差分を取得することができる。なお差分を取得するために、編集前のファイルのコピーが作成される。差分の取得方法としては、ファイルのコピータイミングが異なる2つの方法が考えられる。
サーバ41〜44は、編集対象のファイルに対し、編集前後の差分を作成する。例えばサーバ41〜44は、編集操作の検知処理により「エディタによる編集」の操作を検知した場合、ファイルの編集前後で差分を取得する。例えばlinux(登録商標)にはdiffというファイルの差分を示す差分情報を取得するコマンドがあり、このようなコマンドを実行することで差分を取得することができる。なお差分を取得するために、編集前のファイルのコピーが作成される。差分の取得方法としては、ファイルのコピータイミングが異なる2つの方法が考えられる。
<差分取得方法1>サーバ41〜44は、操作による出力ファイル(例: aaa.conf)への書き込み前に、編集前のファイルのコピー(例: aaa.conf.bak)を作成し、編集後のファイル(aaa.conf)との差分を取得する。これは、例えば以下のコマンドで実現できる。
diff -c aaa.conf.bak aaa.conf > aaa.conf.diff
<差分取得方法2>サーバ41〜44は、読み込んだファイルすべてのコピーを取得しておき、その操作終了時にコピーのファイルすべてについて、上記同様に差分を取得する(差分のないものは破棄)。
diff -c aaa.conf.bak aaa.conf > aaa.conf.diff
<差分取得方法2>サーバ41〜44は、読み込んだファイルすべてのコピーを取得しておき、その操作終了時にコピーのファイルすべてについて、上記同様に差分を取得する(差分のないものは破棄)。
第2の実施の形態では、差分取得方法1が適用されるものとする。なお差分取得方法2は、後述する第3の実施の形態に適用される。
3.ログの正規化処理
管理サーバ100は、編集の差分を元に、編集操作のログを、編集操作が自動化された操作のログに正規化する例えば管理サーバ100は、編集操作のログにおける操作および入出力ファイルを、以下に置き換える。
3.ログの正規化処理
管理サーバ100は、編集の差分を元に、編集操作のログを、編集操作が自動化された操作のログに正規化する例えば管理サーバ100は、編集操作のログにおける操作および入出力ファイルを、以下に置き換える。
<入力ファイル>
管理サーバ100は、編集前の元ファイル、差分、および元ファイルと差分とから編集後ファイルを作るコマンドの実行プログラムを、入力ファイルとする。なおコマンドの実行プログラムは、OSの内部コマンドで実行できる場合、OS内のコマンドを実行するプログラムモジュールが、入力ファイルとなる。例えば以下のような入力ファイルが定義される。
aaa.conf(元ファイル)、aaa.conf.diff(差分)、patch(コマンド)
<出力ファイル>
管理サーバ100は、編集後のファイルを出力ファイルとする。例えば以下のような出力ファイルが定義される。
aaa.conf(編集後ファイル)
<操作>
管理サーバ100は、コマンド名や差分ファイル名などからなる操作文字列を、操作とする。例えば以下のような操作が定義される。
patch aaa.conf aaa.conf.diff
このような置き換えが、操作やその入出力ファイルを記録したログや、そこから抽出したグラフなどに対して行われる。第2の実施の形態では、管理サーバ100は、ログの記述を書き換える。なおグラフを置き換える例については、後述する第3の実施の形態に示す。
管理サーバ100は、編集前の元ファイル、差分、および元ファイルと差分とから編集後ファイルを作るコマンドの実行プログラムを、入力ファイルとする。なおコマンドの実行プログラムは、OSの内部コマンドで実行できる場合、OS内のコマンドを実行するプログラムモジュールが、入力ファイルとなる。例えば以下のような入力ファイルが定義される。
aaa.conf(元ファイル)、aaa.conf.diff(差分)、patch(コマンド)
<出力ファイル>
管理サーバ100は、編集後のファイルを出力ファイルとする。例えば以下のような出力ファイルが定義される。
aaa.conf(編集後ファイル)
<操作>
管理サーバ100は、コマンド名や差分ファイル名などからなる操作文字列を、操作とする。例えば以下のような操作が定義される。
patch aaa.conf aaa.conf.diff
このような置き換えが、操作やその入出力ファイルを記録したログや、そこから抽出したグラフなどに対して行われる。第2の実施の形態では、管理サーバ100は、ログの記述を書き換える。なおグラフを置き換える例については、後述する第3の実施の形態に示す。
以上が、ログを正規化するための概略の処理である。
なおファイル編集操作の検知処理は、処理の効率化のために実施される。ある操作が、手作業による編集操作であるかどうかを識別できないと、すべての操作について、ファイルの差分を取得することになる。すべての操作について、利用したファイルの差分情報を取得すると、処理量や保存用メモリ量が増大するとともに、グラフのサイズが大きくなる。グラフが大きくなると、探索時間や必要メモリ量は増える。そこで第2の実施の形態では、手作業のファイル編集についてのみ、ファイルの差分情報を取得することで、処理の効率化を図る。
なおファイル編集操作の検知処理は、処理の効率化のために実施される。ある操作が、手作業による編集操作であるかどうかを識別できないと、すべての操作について、ファイルの差分を取得することになる。すべての操作について、利用したファイルの差分情報を取得すると、処理量や保存用メモリ量が増大するとともに、グラフのサイズが大きくなる。グラフが大きくなると、探索時間や必要メモリ量は増える。そこで第2の実施の形態では、手作業のファイル編集についてのみ、ファイルの差分情報を取得することで、処理の効率化を図る。
手作業のファイル編集かどうかの識別には、例えば、どんな操作(コマンド)がエディタであるかという辞書(エディタの辞書)を用いることが考えられる。具体的にはサーバ41〜44において、[“edit”, “edit2”, … ] といったエディタの起動コマンドの辞書を持っておき、操作の文字列にそれらが含まれていれば、手作業とみなす。この場合、“edit aaa.conf”という操作は手作業を含む操作と判断され、“service tomcat start”という操作波は、手作業を含まない操作と判断される。ただし、このような手法を用いた場合、辞書にない未知のエディタで編集されたときに対処できない。
そこでサーバ41〜44は、ある操作の開始から終了までの間、作業者からの入力があるかどうかを監視する。そしてサーバ41〜44は、作業者からの入力が1度でもあれば、その操作は「エディタによる編集」とみなす。これにより、作業者の手動でのファイル編集操作を、「どんな操作がエディタであるかといった辞書」を予め持たずに検知できる。
次に編集操作を含めた作業を再利用した操作手順を生成するための、各サーバ41〜44と管理サーバ100との機能について説明する。
図6は、各装置の機能を示すブロック図である。管理対象となる各サーバ41〜44は、情報取得部41a,42a,43a,44aを有する。情報取得部41a,42a,43a,44aは、作業ログと、編集操作により編集されたファイルの差分情報を取得する。情報取得部41a,42a,43a,44aは、取得した差分情報を、管理サーバ100に送信する。
図6は、各装置の機能を示すブロック図である。管理対象となる各サーバ41〜44は、情報取得部41a,42a,43a,44aを有する。情報取得部41a,42a,43a,44aは、作業ログと、編集操作により編集されたファイルの差分情報を取得する。情報取得部41a,42a,43a,44aは、取得した差分情報を、管理サーバ100に送信する。
管理サーバ100は、記憶部110、ユーザインタフェース(UI)120、情報収集部130、正規化部140、グラフ作成部150、手順探索部160、および手順実行部170を有する。
記憶部110は、ログDB111、差分ファイルDB112、正規化情報DB113、およびグラフDB114を記憶する。例えばメモリ102またはHDD103の記憶領域の一部が、記憶部110として使用される。ログDB111には、サーバ41〜44から収集された操作ログが格納される。差分ファイルDB112には、サーバ41〜44から収集された差分ファイルが格納される。差分ファイルは、編集操作により編集されたファイルの差分情報を含むファイルである。正規化情報DB113には、操作ログに記録された操作のうち、正規化の対象となる編集操作に関する情報が格納される。グラフDB114には、生成されたグラフが格納される。
UI120は、作業者からの入力を受け付ける。例えばUI120は、操作対象のサーバに対する操作手順を探索する際の探索条件の入力を受け付ける。探索条件が入力された場合、UI120は、その探索条件を手順探索部160に送信する。またUI120は、作業者からの入力に応じて実行した処理の結果を、モニタ21に表示する。
情報収集部130は、サーバ41〜44から操作ログ、差分ファイル、正規化情報などの情報を収集する。情報収集部130は、収集した情報を記憶部110に格納する。例えば情報収集部130は、操作ログを操作ログDB111に格納し、差分ファイルを差分ファイルDB112に格納し、正規化情報を正規化情報DB113に格納する。
正規化部140は、ログDB111に格納された操作ログのうち、ファイルの編集操作に関するログを、ファイルの操作内容が明確になるように正規化する。正規化部140は、正規化した操作で、ログDB111を更新する。
グラフ作成部150は、編集操作を正規化した後のログDB111に基づいて、グラフを作成する。グラフの作成方法は、図4に示す通りである。グラフ作成部150は、作成したグラフを、グラフDB114に格納する。
手順探索部160は、作成されたグラフから手順を探索する。例えば手順探索部160は、UI120から探索条件を取得すると、グラフDB114内のグラフを参照し、取得した探索条件に合致した手順を探索する。手順の探索方法は、図5に示す通りである。手順探索部160は、探索した手順を、手順実行部170に送信する。
手順実行部170は、取得した手順に従って、操作対象のサーバに対する操作を実行する。
なお、図6に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図6に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
なお、図6に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図6に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
図7は、第2の実施の形態の作業手順再利用の処理手順の一例を示すシーケンス図である。図7の例では、サーバ41〜44に対して実施された操作を利用して、サーバ44に実施する作業の作業手順を作成し、サーバ44に自動で作業を実施する場合を示している。
サーバ41〜43は、作業が実施されると、情報取得部41a,42a,43aが正規化情報と差分ファイルとを作成し、作業ログ・正規化情報・差分ファイルを管理サーバに送信する(ステップS101〜S103)。管理サーバ100では、情報収集部130が、作業ログ・正規化情報・差分ファイルを受信し、記憶部110に格納する(ステップS104〜S106)。
管理サーバ100の正規化部140は、正規化情報に基づいて、編集操作の操作内容を正規化する(ステップS107)。次にグラフ作成部150は、図4に示したように、作業ログに示されている各操作のグラフを作成し、それらのグラフを統合する(ステップS108)。そしてグラフ作成部150は、作成したグラフをグラフDB114に格納する。
管理サーバ100の手順探索部160は、図5に示すように、グラフDB114に格納されたグラフに基づいて、サーバ44に適用可能な作業手順を作成する(ステップS109)。この際、差分ファイルは、サーバ44に存在しているものとして、作業手順が作成される。そして管理サーバ100の手順実行部170は、差分ファイルをサーバ44に送信すると共に、作成された作業手順に従って、サーバ44に対する遠隔操作を行う(ステップS110)。サーバ44では、管理サーバ100からの操作に応じた処理が実行される(ステップS111)。
以上のような手順で、サーバ41〜43に対して実施された作業手順内の操作を再利用して、サーバ44に対する作業を自動で実施できる。なお、サーバ44において作業が実際された場合にも、その作業に応じて、作業ログなどの情報が管理サーバ100に送信される。またサーバ41〜43において作業を実施する場合に、管理サーバ100で作業ログに基づいて作業手順を生成し、遠隔操作によりサーバ41〜43に作業を実施することもできる。
次に、サーバ41における作業ログ・正規化情報・差分ファイルの送信処理について詳細に説明する。
図6に示したシステムでは、作業者は管理サーバ100を経由して、操作対象のサーバ41にアクセスする。このときサーバ41は、作業者による操作内容や、それによるファイルアクセスなどを監視する。
図6に示したシステムでは、作業者は管理サーバ100を経由して、操作対象のサーバ41にアクセスする。このときサーバ41は、作業者による操作内容や、それによるファイルアクセスなどを監視する。
監視の手段としては、例えばlinux(登録商標)ならばstraceというツールがある。straceを用いればシステムコールを監視できる。そこで、操作対象のサーバにおいて、操作を行うプロセスのopen/read/writeなどのシステムコールを監視することで、ファイル操作や標準入出力・エラー出力に関するログを取得することができる。1回の操作の範囲は、例えば、writeシステムコールの監視により、プロンプト文字列の出力から次の出力までの間として捕捉できる。
図8は、プロンプト文字列を含むログ出力例を示す図である。ログ71には、例えばPID(process id)、時刻、システムコール実行内容が含まれる。PIDは、操作を行うプロセスの識別子である。時刻は、システムコールを検知した時刻である。そして個々の操作の間には、プロンプトの文字列を含む情報が出力される。図8の例では、「操作1」の後のログにおける“3463”がPIDであり、“04:34:30.486563”が時刻であり、その後に続く文字列がシステムコールの内容である。図8に示すログ71は、writeシステムコールを監視することで取得されたログである。このログ71のシステムコール実行内容のうちの、“[root@localhost 〜]#”がプロンプトの文字列である。このプロンプトの文字列の出現をもって、新たな操作の開始と判断することができる。
ファイルの編集を行う操作の場合、操作の開始から終了の間に、作業者からの入力がある。そこで、1操作ごとに、作業者による入力が監視される。
作業者による入力は、例えばsendmsgシステムコールを監視することで、取得できる。
作業者による入力は、例えばsendmsgシステムコールを監視することで、取得できる。
図9は、作業者の入力に応じたログの例を示す図である。例えば入力文字列72に示すように、作業者がプロンプトで”edit aaa.conf”と入力したものとする。この場合、例えば「3461 11:22:08.752738 sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(2)=[{"\37\0\0\0d\4\1\0\0\0\0\0\0\0\0\0", 16}, {"emacs aaa.conf\0", 15}], msg_controllen=0, msg_flags=0}, 0) = 31」というログ73が取得できる。
なお、ログ73に示される操作文字列は、正規化によって書き換えられる可能性がある。そこでサーバ41は、sendmsgシステムコールの行を「操作の行」として、例えばメモリに一時的に記録する。そしてサーバ41は、「作業者からの入力」と判明した場合に、ログ73に示されている行をログDB111に保存する。
操作中には、ファイルの入出力が行われる。入力されるファイルは、その操作を実行するための事前条件となる。出力されるファイルは、その操作を実行するための事後条件となる。入出力されるファイルを示す情報は、例えば操作中のopenシステムコールを監視することで、ログとして取得できる。
図10は、入出力ファイルに関するログの例を示す図である。openシステムコールの監視により取得したログ74には、システムコール実行内容に“open”の文字列が含まれる。図10に示すログ74の1行目は“/etc/ld.so.cache”ファイルをO_RDONLYモードで開くことを示している。2行目は、“aaa.conf”ファイルをO_WRONLY|O_CREAT|O_TRUNCモードで開くことを示している。3行目は、“.aaa.conf.swp”ファイルをO_RDWR|O_CREAT|O_EXCLモードで開くことを示している。
操作中の入力・出力ファイルは、正規化によって置き換えられる可能性がある。そこでサーバ41は、入出力ファイルを示すログ74を、例えばメモリに一時的に記録する。そしてサーバ41は、「作業者からの入力」と判明した場合に、入出力ファイルを示すログをログDB111に保存する。
入出力ファイルを示すログ74に示されるモードの意味は、以下の通りである。
・O_RDONLY:読み込みのみとしてファイルを開く。
・O_WRONLY:書き込みのみとしてファイルを開く。
・O_CREAT:ファイルが存在しなかった場合は作成(create)する。
・O_TRUNC:ファイルが既に存在し、O_RDWR またはO_WRONLYの場合、長さ0に切り詰め(truncate)られる。
・O_RDWR:読み書きするものとしてファイルを開く。
・O_EXCL:O_CREATと一緒に使用された場合、排他(exclusive)を試みる。すなわち、ファイルが既に存在した場合はエラーとなる。
・O_RDONLY:読み込みのみとしてファイルを開く。
・O_WRONLY:書き込みのみとしてファイルを開く。
・O_CREAT:ファイルが存在しなかった場合は作成(create)する。
・O_TRUNC:ファイルが既に存在し、O_RDWR またはO_WRONLYの場合、長さ0に切り詰め(truncate)られる。
・O_RDWR:読み書きするものとしてファイルを開く。
・O_EXCL:O_CREATと一緒に使用された場合、排他(exclusive)を試みる。すなわち、ファイルが既に存在した場合はエラーとなる。
これらのモードのうち、O_RDONLY、O_WRONLY、O_RDWRに着目して、入力・出力ファイルが分類される。分類は、以下のように行う。
・モードにO_RDONLYがあれば、操作対象のファイルを入力ファイルに分類。
・モードにO_WRONLYがあれば、操作対象のファイルを出力ファイルに分類。
・モードにO_RDWRがあれば、操作対象のファイルを入力ファイルかつ出力ファイルに分類。
・モードにO_RDONLYがあれば、操作対象のファイルを入力ファイルに分類。
・モードにO_WRONLYがあれば、操作対象のファイルを出力ファイルに分類。
・モードにO_RDWRがあれば、操作対象のファイルを入力ファイルかつ出力ファイルに分類。
この判断方法を用いるとき、サーバ41は、openシステムコールが現れた場合、ファイルごとに、入力、出力、またはその両方の属性を持たせ、入出力ファイルリストに記録する。
図11は、入出力ファイルリストの一例を示す図である。入出力ファイルリスト75には、操作対象のファイルのファイル名に対応づけて、属性が設定されている。入力ファイルに分類されたファイルの属性は「入力」である。出力ファイルに分類されたファイルの属性は「出力」である。入力ファイルかつ出力ファイルに分類されたファイルの属性は「入力、出力」である。
ファイルの編集操作が行われる場合、操作中に作業者が操作する入力装置からの入力がある。そこでサーバ41は、操作中の作業者が操作する入力装置からの入力の有無を判定する。例えばサーバ41は、1操作ごとに、開始から終了までの間、作業者が操作する入力装置からの入力の有無を監視する。例えばサーバ41は、readシステムコールを監視することで、作業者からの入力の有無を判断する。
なおlinux(登録商標)では、操作に対応するプロセスに対し、作業者からの入力は標準入力として渡される。このとき、仮想的な端末(tty)を利用して作業者からの入力を受け付ける場合と、ttyを利用せずに作業者からの入力を受け付ける場合とがある。それぞれの場合について、以下のようにして作業者からの入力を観測することができる。
ttyを利用する場合、サーバ41は、/dev/ttyがopenされ、それに対するリードがあるかどうかを監視する。サーバ41は、/dev/ttyに対するリードがある場合、作業者からの入力があると判断する。例えば、/dev/ttyをO_RDWRまたはO_RDONLYでopenし、そのファイルのファイルディスクリプタ=3に対するリードがある場合、作業者からの入力があると判断できる。
図12は、tty利用時の作業者の入力を表すシステムコールのログを示す図である。tty利用時の作業者の入力を示すシステムコールのログ76では、1行目が、ttyに対応するファイルがopenされたことを示し、2行目が、そのファイルから文字“a”をリードしたことを示している。サーバ41は、ファイルへの操作中に、ログ76に示すようなシステムコールを検出すると、ファイルに対する作業者からの入力があったものと判断する。
それに対し、ttyを利用しない場合、作業者からの入力があっても、/dev/ttyをO_RDWRまたはO_RDONLYでopenしていないか、openしても、openしたファイルに対するリードがない。この場合、サーバ41は、リードのシステムコールを監視することで、例えば、作業者からの入力が、read(0, “入力文字”, …)といった形で観測できる。
図13は、ttyを利用しない場合の作業者の入力を表すシステムコールのログを示す図である。ttyを利用しない場合の作業者の入力を示すシステムコールのログ77において、read(0, “入力文字”, …)における“0”はファイルディスクリプタ番号を示している。ファイルディスクリプタ番号“0”は、標準入力を表している。また、続く“a”といった文字列が入力文字列で、文末の“1”は文字列長を表す。従って、ログ77の1行目は、文字“a”が入力されたことを示し、2行目は、ENTERキーが入力されたことを示している。
なお、read(0,…)で得られる標準入力には、作業者からの入力だけでなく、リダイレクトによるファイル内容の入力などの場合もある。そこでサーバ41は、「作業者からの入力」なのかどうかの判定を行う。例えば、以下のように判定できる。
作業者からの入力がある場合、通常、入力文字列を端末装置へフィードバック(エコーバック)するという特徴がある。エコーバックしなければ、作業者は自らの入力が正しいか分からないためである。そこでサーバ41は、エコーバックの有無を監視する。例えばサーバ41は、標準入力のreadシステムコールで得られた文字列が、その後すぐに(次の標準入力のリードまでに)標準出力に対するwriteシステムコールで出力されていれば、「作業者からの入力あり」と判定する。
これにより、予め用意したエディタ名の辞書を用いて判定する場合よりも、汎用的な方法で、ファイル編集を行う操作を判断することができる。操作中に作業者からの入力があったと判定した場合、サーバ41は、現在操作中のファイルに対して作業者からの入力があったことをメモリなどに記録する。
サーバ41は、作業者からの入力があった場合、ファイルの編集内容を編集前後の差分として取得するため、ファイルのコピーを作成する。編集前後の差分を取得するためのファイルのコピー方法としては、以下の2つの方法が考えられる。
・ファイルに対する書き込みを監視し、書き込み時にシステムコールをフックして、そのファイルのコピーを作成する方法(第1のコピー方法)。
・操作内でライトのopenがあるたびにファイルをコピーする方法(第2のコピー方法)。
・ファイルに対する書き込みを監視し、書き込み時にシステムコールをフックして、そのファイルのコピーを作成する方法(第1のコピー方法)。
・操作内でライトのopenがあるたびにファイルをコピーする方法(第2のコピー方法)。
第2の実施の形態には、第1のコピー方法を適用するものとする。なお第2のコピー方法については、後述する第3の実施の形態に適用される。
ファイルのコピーを作成したサーバ41は、ファイルへの操作が終了後、コピーしておいたファイルと操作後のファイルとを比較し、差分を示す差分ファイルを作成する。
ファイルのコピーを作成したサーバ41は、ファイルへの操作が終了後、コピーしておいたファイルと操作後のファイルとを比較し、差分を示す差分ファイルを作成する。
図14は、ファイルのコピー方法の例を示す図である。プロセス201が、ファイルが書き込みの起きうるモードでファイル202をオープンすると、そのファイル202が監視対象となる。そしてプロセス201からファイルへの書き込みのシステムコールが発行されると、そのシステムコールがフックされ、ファイル202のコピーが生成される。コピーにより生成されたファイル203は、例えばHDDに格納される。その後、ファイル202への書き込みが実行される。
例えばエディタがファイルを開くとき、サーバ41は、openシステムコールを監視し、openされたファイルが書き込みの起きうるファイルなら、そのファイルを監視ファイルリストに追加する。例えばopenシステムコールのモードに、O_WRONLYまたはO_RDWRが含まれる場合、openされるファイルは書き込みの起きうるファイルである。
図15は、書き込みの起きうるファイルのopenを表すシステムコールのログの例を示す図である。図15に示すログ78は、O_WRONLYのモードを含め、ファイルをopenしている。従って、書き込みが行われる可能性がある。
書き込みが行われる可能性があるファイルのopenであれば、サーバ41は、そのファイルを監視ファイルリストに登録し、書き込みの監視対象とする。
図16は、監視ファイルリストの一例を示す図である。監視ファイルリスト79には、PIDに対応づけて、監視対象のファイルのファイルパスとファイルディスクリプタが設定されている。なおファイルパスには、ファイルのディレクトリ構造上の位置と、ファイル名とが含まれる。
図16は、監視ファイルリストの一例を示す図である。監視ファイルリスト79には、PIDに対応づけて、監視対象のファイルのファイルパスとファイルディスクリプタが設定されている。なおファイルパスには、ファイルのディレクトリ構造上の位置と、ファイル名とが含まれる。
サーバ41は、監視対象ファイルリストに登録されているファイルに対する書き込みを監視する。例えばエディタによるファイルへの書き込みが起きた時、サーバ41では、内部的にwriteシステムコールが発行される。サーバ41は、このwriteシステムコールをフックする。サーバ41は、フック後に、writeシステムコールのログを記録する。
図17は、writeシステムコールのログの例を示す図である。例えばログ80に示すようなwriteシステムコールのファイルディスクリプタが監視ファイルリストに登録されていれば、そのシステムコールがログ80の採取前にフックされる。
システムコールのフックは、例えばカーネルモジュールで行われる。サーバ41は、writeシステムコールをフックすると、例えば以下の処理を行う。
監視ファイルリスト79に該当エントリがあれば、そのファイルのコピーを作成する。
例えばサーバ41は、以下のコマンドを実行する。
cp <監視ファイルリストのファイルパス> <コピーを置くディレクトリ><PID><監視ファイルリストのファイルパス>.bak
コピーを置くディレクトリを/tmpとすると、例えば“cp /etc/aaa.conf /tmp/3826/etc/aaa.conf.bak”というコマンドが実行される。
監視ファイルリスト79に該当エントリがあれば、そのファイルのコピーを作成する。
例えばサーバ41は、以下のコマンドを実行する。
cp <監視ファイルリストのファイルパス> <コピーを置くディレクトリ><PID><監視ファイルリストのファイルパス>.bak
コピーを置くディレクトリを/tmpとすると、例えば“cp /etc/aaa.conf /tmp/3826/etc/aaa.conf.bak”というコマンドが実行される。
サーバ41は、コピーしたファイルの情報とその位置を、コピーファイル情報としてメモリ内に記録する。
図18は、コピーファイル情報の一例を示す図である。コピーファイル情報81には、操作を行っているプロセスのPIDに対応づけて、コピー元のファイルのファイルパスと、コピーされたファイルのファイルパス(コピー位置)とが設定されている。
図18は、コピーファイル情報の一例を示す図である。コピーファイル情報81には、操作を行っているプロセスのPIDに対応づけて、コピー元のファイルのファイルパスと、コピーされたファイルのファイルパス(コピー位置)とが設定されている。
サーバ41は、システムコールのフックの処理では、監視ファイルリスト79における対応するエントリの有無によらず、最後には元々のwriteシステムコールを呼び出す。またサーバ41は、closeシステムコールを監視し、監視対象のファイルが閉じられたら、監視ファイルリスト79から、閉じられたファイルとファイルディスクリプタの値が同じエントリを削除する。
図19は、closeシステムコールのログの例を示す図である。closeシステムコールのログ82に示すように、closeシステムコールには、閉じるファイルのファイルディスクリプタが示されている。そこでサーバ41は、closeシステムコールに示されるファイルディスクリプタの値を、監視ファイルリスト79から検索する。サーバ41は、該当するエントリがある場合、そのエントリを監視ファイルリスト79から削除する。
またサーバ41は、1つの操作が終了すると、監視ファイルリスト79を破棄する。このようにして、ファイルへの書き込み時に、編集前のファイルのコピーを作成することができる。第1のコピー方法では、ファイルへの書き込みが発生した時点で、書き込みの実行前にファイルのコピーを行うため、無駄なファイルのコピーを行わずにすみ、処理の効率化が図れる。
編集操作前のファイルのコピーを作成しておくことで、編集操作後に、編集前後のファイルを比較して、差分を判断することができる。そして差分を示す差分ファイルが作成される。
図20は、差分ファイルの作成例を示す図である。サーバ41は、個々の操作が終了すると、操作中に作業者からの入力があった場合に、コピー先のファイル203と元のファイル202との差分を取得する。例えばサーバ41は、コピーファイル情報81のエントリごとに、ファイルパスとコピー位置を取得する。次にサーバ41は、以下のコマンドを実行する。
diff -c <コピーファイル情報のコピー位置> <コピーファイル情報のファイルパス> > <差分ファイルの識別子>.diff
コピーファイル情報のコピー位置が「/tmp/3826/etc/aaa.conf.bak」であり、コピーファイル情報のファイルパスが「/etc/aaa.conf」であり、差分ファイル205の識別子が「aaa.conf」の場合、以下のようなコマンドになる。
diff -c /tmp/3826/etc/aaa.conf.bak /etc/aaa.conf > aaa.conf.diff
これにより、図20のような差分ファイル205が作成される。なお差分ファイル205のファイル識別子は、差分ファイルDB112に格納したときに一意に識別できるように、所定の規則に従って決定する。差分ファイル205のファイル名を一意にする方法として、例えば<コピーファイル情報のコピー位置>文字列からsha1などのダイジェストを作り、<差分ファイルの識別子>とすることができる。
ファイルパスのファイル名: /tmp/3826/etc/aaa.conf.bak の場合、以下のようなコマンドで差分ファイル205の識別子を作成できる。
$ echo "/tmp/3826/etc/aaa.conf.bak" | sha1sum -t
このコマンドの結果、例えば「ef149b1b55f8bbc797240862dccfa0b881016710」という値が得られる。この値を差分ファイル205の識別子とすると、差分ファイル205のファイル名は「ef149b1b55f8bbc797240862dccfa0b881016710.diff」となる。なお、第2の実施の形態の説明では、簡単のために、差分ファイル205のファイル名を「aaa.conf.diff」とする。
diff -c <コピーファイル情報のコピー位置> <コピーファイル情報のファイルパス> > <差分ファイルの識別子>.diff
コピーファイル情報のコピー位置が「/tmp/3826/etc/aaa.conf.bak」であり、コピーファイル情報のファイルパスが「/etc/aaa.conf」であり、差分ファイル205の識別子が「aaa.conf」の場合、以下のようなコマンドになる。
diff -c /tmp/3826/etc/aaa.conf.bak /etc/aaa.conf > aaa.conf.diff
これにより、図20のような差分ファイル205が作成される。なお差分ファイル205のファイル識別子は、差分ファイルDB112に格納したときに一意に識別できるように、所定の規則に従って決定する。差分ファイル205のファイル名を一意にする方法として、例えば<コピーファイル情報のコピー位置>文字列からsha1などのダイジェストを作り、<差分ファイルの識別子>とすることができる。
ファイルパスのファイル名: /tmp/3826/etc/aaa.conf.bak の場合、以下のようなコマンドで差分ファイル205の識別子を作成できる。
$ echo "/tmp/3826/etc/aaa.conf.bak" | sha1sum -t
このコマンドの結果、例えば「ef149b1b55f8bbc797240862dccfa0b881016710」という値が得られる。この値を差分ファイル205の識別子とすると、差分ファイル205のファイル名は「ef149b1b55f8bbc797240862dccfa0b881016710.diff」となる。なお、第2の実施の形態の説明では、簡単のために、差分ファイル205のファイル名を「aaa.conf.diff」とする。
作成された差分ファイル205には、例えば編集後のファイルの内容が含まれている。そして差分ファイル205内の編集後のファイルの内容のうち、編集によって追加された行に「+」の記号が示されている。また差分ファイル205内には、比較されたファイル202,203のファイル名や更新日時などが含まれる。
編集前後のファイルの差分がある場合(例えば差分ファイルサイズが0でない場合)、ファイルの編集操作中に作業者からの入力があったと判断できる。
差分ファイルを作成すると、サーバ41は、それまでの作業のログと共に、差分ファイルを管理サーバ100に送信する。サーバ41は、差分ファイル送信後に、その差分ファイルに対応するコピーファイル情報を破棄すると共に、差分ファイル作成用にコピーしたファイルを削除する。
差分ファイルを作成すると、サーバ41は、それまでの作業のログと共に、差分ファイルを管理サーバ100に送信する。サーバ41は、差分ファイル送信後に、その差分ファイルに対応するコピーファイル情報を破棄すると共に、差分ファイル作成用にコピーしたファイルを削除する。
このようにして、サーバ41から管理サーバ100へ、各種情報を送信することができる。以下、これらの情報の作成と送信の手順について詳細に説明する。
図21は、作業ログ・正規化情報・差分ファイル送信処理の手順の一例を示すフローチャートである。
図21は、作業ログ・正規化情報・差分ファイル送信処理の手順の一例を示すフローチャートである。
[ステップS121]サーバ41は、作業者からの入力の有無を示す変数「edit-flag」に、0を設定する。
[ステップS122]サーバ41は、システムコールを監視する。監視により得られたシステムコールは、ログとしてメモリまたはHDDに記録される。
[ステップS122]サーバ41は、システムコールを監視する。監視により得られたシステムコールは、ログとしてメモリまたはHDDに記録される。
[ステップS123]サーバ41は、発生したシステムコールにプロンプトを示す文字列があるか否かを判断する(図8参照)。サーバ41は、プロンプトを示す文字列があれば、1つの操作が終了したと判断する。この場合、処理がステップS132に進められる。プロンプトを示す文字列がなければ、処理がステップS124に進められる。
[ステップS124]サーバ41は、発生したシステムコールが、ファイルの編集操作か否かを判断する(図9参照)。ファイルの編集操作であれば、処理がステップS125に進められる。ファイルの操作でなければ、処理がステップS126に進められる。
[ステップS125]サーバ41は、編集操作を示すログの行を、「操作の行」としてメモリなどに記録する。
[ステップS126]サーバ41は、発生したシステムコールが、ファイルの入出力処理を示しているか否かを判断する(図10参照)。ファイルの入出力処理であれば、処理がステップS127に進められる。ファイルの入出力処理でなければ、処理がステップS128に進められる。
[ステップS126]サーバ41は、発生したシステムコールが、ファイルの入出力処理を示しているか否かを判断する(図10参照)。ファイルの入出力処理であれば、処理がステップS127に進められる。ファイルの入出力処理でなければ、処理がステップS128に進められる。
[ステップS127]サーバ41は、入出力ファイルリストや監視ファイルリストへのファイル情報記録処理を行う。この処理の詳細は後述する(図22参照)。
[ステップS128]サーバ41は、発生したシステムコールが、作業者からの入力を示しているか否かを判断する(図12、図13参照)。作業者からの入力であれば、処理がステップS129に進められる。作業者からの入力でなければ、処理がステップS130に進められる。
[ステップS128]サーバ41は、発生したシステムコールが、作業者からの入力を示しているか否かを判断する(図12、図13参照)。作業者からの入力であれば、処理がステップS129に進められる。作業者からの入力でなければ、処理がステップS130に進められる。
[ステップS129]サーバ41は、変数「edit-flag」に1を設定する。
[ステップS130]サーバ41は、ファイルが閉じられ、かつ閉じられたファイルが監視ファイルリストに存在するか否かを判断する。監視ファイルリストに存在するファイルが閉じられた場合、処理がステップS131に進められる。監視ファイルリストに存在するファイルが閉じられたのでなければ、処理がステップS122に進められる。
[ステップS130]サーバ41は、ファイルが閉じられ、かつ閉じられたファイルが監視ファイルリストに存在するか否かを判断する。監視ファイルリストに存在するファイルが閉じられた場合、処理がステップS131に進められる。監視ファイルリストに存在するファイルが閉じられたのでなければ、処理がステップS122に進められる。
[ステップS131]サーバ41は、監視ファイルリストから閉じられたファイルを削除する。その後、処理がステップS122に進められる。
[ステップS132]サーバ41は、プロンプトの文字列を含むシステムコールが発生した場合、情報保存処理を行う。この処理の詳細は後述する(図23参照)。
[ステップS132]サーバ41は、プロンプトの文字列を含むシステムコールが発生した場合、情報保存処理を行う。この処理の詳細は後述する(図23参照)。
[ステップS133]サーバ41は、全操作が終了したか否かを判断する。例えばサーバ41は、管理サーバ100からサーバ41への操作のための通信接続が切断された場合、全操作が終了したもの判断する。全操作が終了した場合、処理を終了する。全操作が終了していなければ、処理がステップS122に進められる。
次に、ファイル情報記録処理(ステップS127)の詳細について説明する。
図22は、ファイル情報記録処理の手順の一例を示すフローチャートである。
[ステップS141]サーバ41は、入出力ファイルリスト75(図11参照)に、入出力対象のファイルのファイル名と属性とを記録する。
図22は、ファイル情報記録処理の手順の一例を示すフローチャートである。
[ステップS141]サーバ41は、入出力ファイルリスト75(図11参照)に、入出力対象のファイルのファイル名と属性とを記録する。
[ステップS142]サーバ41は、入出力対象のファイルが、書き込みが起こりうるファイル(出力の属性を有するファイル)か否かを判断する。書き込みが起こりうるファイルであれば、処理がステップS143に進められる。書き込みが起こりうるファイルでなければ、リスト作成処理が終了する。
[ステップS143]サーバ41は、監視ファイルリスト79(図16)に、入出力対象のファイルの情報(PID、ファイルパス。ファイルディスクリプタ)を記録する。
このようにして、入出力の対象となるファイルに関する情報が、入出力ファイルリスト75と監視ファイルリスト79に記録される。
このようにして、入出力の対象となるファイルに関する情報が、入出力ファイルリスト75と監視ファイルリスト79に記録される。
次に情報保存処理(ステップS132)の詳細について説明する。
図23は、情報保存処理の手順の一例を示すフローチャートである。
[ステップS151]サーバ41は、コピーファイル情報81(図18参照)に基づいて、元のファイルと、そのファイルを編集前にコピーしたファイルとの差分を示す差分ファイル(図20参照)を作成する。そしてサーバ41は、差分ファイルを管理サーバ100に送信する。すると管理サーバ100において、差分ファイルが差分ファイルDB112に格納される。
図23は、情報保存処理の手順の一例を示すフローチャートである。
[ステップS151]サーバ41は、コピーファイル情報81(図18参照)に基づいて、元のファイルと、そのファイルを編集前にコピーしたファイルとの差分を示す差分ファイル(図20参照)を作成する。そしてサーバ41は、差分ファイルを管理サーバ100に送信する。すると管理サーバ100において、差分ファイルが差分ファイルDB112に格納される。
[ステップS152]サーバ41は、変数「edit-flag」に0を設定する。
[ステップS153]サーバ41は、正規化情報を生成し、管理サーバ100に送信する。すると管理サーバ100において、正規化情報が、正規化情報DB113に格納される。
[ステップS153]サーバ41は、正規化情報を生成し、管理サーバ100に送信する。すると管理サーバ100において、正規化情報が、正規化情報DB113に格納される。
[ステップS154]サーバ41は、コピーファイル情報81とコピーされたファイルとを破棄する。
[ステップS155]サーバ41は、監視ファイルリスト79を破棄する。
[ステップS155]サーバ41は、監視ファイルリスト79を破棄する。
[ステップS156]サーバ41は、未送信の作業ログを管理サーバ100に送信する。すると管理サーバ100において、作業ログが、作業ログDB111に格納される。
次に、書き込みのフック処理の詳細について説明する。
次に、書き込みのフック処理の詳細について説明する。
図24は、フック処理の順の一例を示すフローチャートである。この処理は、例えばシステムコールを検出するごとに実行される。
[ステップS161]サーバ41は、発生したシステムコールが、ファイルへの書き込みか否かを判断する(図17参照)。ファイルへの書き込みであれば、処理がステップS162に進められる。ファイルへの書き込みでなければ、処理が終了する。
[ステップS161]サーバ41は、発生したシステムコールが、ファイルへの書き込みか否かを判断する(図17参照)。ファイルへの書き込みであれば、処理がステップS162に進められる。ファイルへの書き込みでなければ、処理が終了する。
[ステップS162]サーバ41は、変数「edit-flag」の値が1か否かを判断する。値が1であれば、処理がステップS163に進められる。値が1でなければ、処理が終了する。
[ステップS163]サーバ41は、書き込み先のファイルが監視対象として監視ファイルリスト79に登録されているか否かを判断する。監視対象であれば、処理がステップS164に進められる。監視対象でなければ、処理が終了する。
[ステップS164]ファイルへの書き込みであり、かつ変数「edit-flag」の値が1の場合、サーバ41は、書き込み先のファイルのコピーを作成する。
[ステップS165]サーバ41は、コピーファイル情報81(図18参照)に、コピー元のファイルと、コピー先のファイルとの情報を、対応づけて記録する。
[ステップS165]サーバ41は、コピーファイル情報81(図18参照)に、コピー元のファイルと、コピー先のファイルとの情報を、対応づけて記録する。
フック処理が完了後、システムコールの本来の書き込み処理が実行される。このようにして、システムコールのフックにより、書き込みが発生する可能性のあるファイルへの書き込みのシステムコールが発生すると、書き込みが実行される前に、編集前のファイルがコピーされる。
以上の処理により、サーバ41から管理サーバ100に、作業ログ、差分ファイル、正規化情報が送信される。同様の処理が他のサーバ42〜44でも実行される。管理サーバ100では、情報収集部130が、サーバ41〜44から送信された情報を取得する。そして情報収集部130は、受信したログをログDB111に格納し、差分ファイルを差分ファイルDB112に格納し、正規化情報を正規化情報DB113に格納する。
図25は、ログDB内の作業ログの一例を示す図である。ログDB111には、サーバ41それぞれから受信した作業ログ111a,111b,・・・が格納されている。
図26は、差分ファイルDB内の差分ファイルの一例を示す図である。差分ファイルDB112には、サーバ41から取得した差分ファイル205,205a,・・・が格納されている。なお差分ファイルは、対応する編集操作を含む作業順を、いずれかのサーバで再利用する際には、そのサーバに配布される。
図26は、差分ファイルDB内の差分ファイルの一例を示す図である。差分ファイルDB112には、サーバ41から取得した差分ファイル205,205a,・・・が格納されている。なお差分ファイルは、対応する編集操作を含む作業順を、いずれかのサーバで再利用する際には、そのサーバに配布される。
管理サーバ100は、差分ファイルを受信すると、差分に応じた正規化情報を正規化情報DB113に登録する。
図27は、正規化情報DB内の正規化情報の一例を示す図である。正規化情報DB113には、正規化情報ごとに、ID、操作の行、入出力ファイルリスト、ファイルパス、および差分ファイル名が設定されている。IDは、正規化情報の識別子である。操作の行は、編集作業による操作を示す作業ログ内の行の記載である。入出力ファイルリストは、編集操作における入力ファイルと出力ファイルとのリストである。ファイルパスは、編集操作により編集されたファイルのファイルパスである。差分ファイル名は、編集操作により編集されたファイルの編集前後における差分を示す差分ファイルのファイル名である。
図27は、正規化情報DB内の正規化情報の一例を示す図である。正規化情報DB113には、正規化情報ごとに、ID、操作の行、入出力ファイルリスト、ファイルパス、および差分ファイル名が設定されている。IDは、正規化情報の識別子である。操作の行は、編集作業による操作を示す作業ログ内の行の記載である。入出力ファイルリストは、編集操作における入力ファイルと出力ファイルとのリストである。ファイルパスは、編集操作により編集されたファイルのファイルパスである。差分ファイル名は、編集操作により編集されたファイルの編集前後における差分を示す差分ファイルのファイル名である。
管理サーバ100の正規化部140は、編集操作に関する正規化情報や差分ファイルを用いて、ログの正規化を行う。例えば正規化部140は、個々の編集操作の情報が記憶部110に格納されるごとに、その編集操作のログの正規化を行う。また編集操作を含む一連の作業終了ごとに、編集操作のログを正規化してもよい。
正規化部140は、作業者の手入力による編集操作のログを、自動化された操作のログに正規化するため、操作や出力ファイルの情報を置き換える。
<操作>
編集操作は、例えばエディタなどの起動コマンドや、作業者の入力としてログに記述されている。そこで正規化部140は、ログ内の例えばエディタの実行ファイルの起動や作業者の入力を示す記述を、差分ファイルに示される差分を元のファイルに統合する処理の実行を示す記述に置き換える。置き換え後は、例えばコマンド名/元のファイル名/差分ファイル名などからなる正規化された操作文字列となる。コマンド名が“patch”、元のファイル名が“aaa.conf”、差分ファイル名が“aaa.conf.diff”の場合、操作を示す記述が、以下のような記述に置き換えられる。
“patch aaa.conf aaa.conf.diff"
<入力ファイル>
エディタでの編集操作では、エディタの実行ファイル、エディタの環境設定ファイル、編集対象のファイルなどが入力ファイルとしてログに記録されている。正規化後は、編集前のファイル、差分ファイル、差分ファイルと元ファイルから編集後ファイルを作るコマンドの実行ファイル、およびこのコマンドに必要な入力ファイル群が、入力ファイルとなる。例えば、aaa.conf(元のファイル)、aaa.conf.diff(差分ファイル)、patch(コマンドの実行ファイル)、/etc/ld.so.cache、/lib64/libselinux.so.1、/lib64/libc.so.6, …(コマンドに必要な入力ファイル群)などが入力ファイルとなる。
<操作>
編集操作は、例えばエディタなどの起動コマンドや、作業者の入力としてログに記述されている。そこで正規化部140は、ログ内の例えばエディタの実行ファイルの起動や作業者の入力を示す記述を、差分ファイルに示される差分を元のファイルに統合する処理の実行を示す記述に置き換える。置き換え後は、例えばコマンド名/元のファイル名/差分ファイル名などからなる正規化された操作文字列となる。コマンド名が“patch”、元のファイル名が“aaa.conf”、差分ファイル名が“aaa.conf.diff”の場合、操作を示す記述が、以下のような記述に置き換えられる。
“patch aaa.conf aaa.conf.diff"
<入力ファイル>
エディタでの編集操作では、エディタの実行ファイル、エディタの環境設定ファイル、編集対象のファイルなどが入力ファイルとしてログに記録されている。正規化後は、編集前のファイル、差分ファイル、差分ファイルと元ファイルから編集後ファイルを作るコマンドの実行ファイル、およびこのコマンドに必要な入力ファイル群が、入力ファイルとなる。例えば、aaa.conf(元のファイル)、aaa.conf.diff(差分ファイル)、patch(コマンドの実行ファイル)、/etc/ld.so.cache、/lib64/libselinux.so.1、/lib64/libc.so.6, …(コマンドに必要な入力ファイル群)などが入力ファイルとなる。
<出力ファイル>
出力ファイルは、編集後のファイルである。例えば元のファイルが、ファイル名そのままで更新される場合、元のファイルと同じファイル名“aaa.conf”が出力ファイルとなる。
出力ファイルは、編集後のファイルである。例えば元のファイルが、ファイル名そのままで更新される場合、元のファイルと同じファイル名“aaa.conf”が出力ファイルとなる。
ここで編集操作を再利用するためには、ログに基づいて生成したグラフが、正規化されたログに従っていればよい。そのため操作内容の正規化方法としては、格納してあるログファイルを書き換えてグラフを作成する方法と、ログに基づいて生成したグラフを書き換える方法とが考えられる。以下、2つの書き換え方法について説明する。
<ログファイルを直接書き換える方法>
図4に示したように、ログからは、事前条件・事後条件・操作のグラフを作成することができる。編集操作のログを、正規化した内容に書き直せば、そのログから正規化したグラフを作成することができる。
図4に示したように、ログからは、事前条件・事後条件・操作のグラフを作成することができる。編集操作のログを、正規化した内容に書き直せば、そのログから正規化したグラフを作成することができる。
ログを書き換える位置は、大別すると、操作に関する記述部分と、入出力ファイルに関する記述部分である。例えば、操作に関する記述部分は、sendmsgシステムコールの記述であり、入出力ファイルに関する記述部分は、openシステムコールで操作されるファイルの記述である。
例えば正規化部140は、正規化情報DB113のエントリを選択する。次に正規化部140は、選択したエントリの、操作の行、ファイルパス、差分ファイル名を取り出す。正規化部140は、選択したエントリの「操作の行」と合致する箇所を、ログDB111の中から検索する。正規化部140は、合致する箇所を含むこの1操作の範囲を決定する。1操作の範囲は、例えばプロント文字列を含むwriteシステムコールに挟まれた範囲である(図8参照)。そして正規化部140は、操作の範囲において、操作および入出力ファイルに関する記述を書き換える。
図28は、操作に関する記述の書き換え例を示す図である。正規化部140は、ログDB111内の作業ログ111aから、正規化情報の操作の行に合致するログを検出すると、そのログの操作の文字列“emacs aaa.conf”を、“patch ファイルパス 差分ファイル名”といった正規化された操作文字列で置き換える。図28の例では、“patch /etc/aaa.conf aaa.conf.diff”に置き換えられている。
図29は、入力ファイルに関する記述の書き換え例を示す図である。正規化部140は、作業ログ111aの編集操作の範囲内のログのopenシステムコールの行をすべて削除する。削除後の操作の範囲の末尾の直前に、以下の入力ファイルの記述を挿入する。
例えば入力対象のファイルごとに、以下のファイルをopenする記述が追加される。なおopen時のモードは、入力の属性を有するモード(例えばO_RDONLY)である。入力対象のファイルは、編集前のファイル、差分ファイル、差分ファイルと元ファイルから編集後ファイルを作るコマンドの実行ファイル、およびコマンドの実行に必要な入力ファイル群である。例えば、aaa.conf(元ファイル)、aaa.conf.diff(差分ファイル)、/usr/bin/patch(コマンド)、/etc/ld.so.cache, /lib64/libselinux.so.1, /lib64/libc.so.6, …(コマンドに必要な入力ファイル群)が、入力対象のファイルである。
挿入する記述の書式は、「PID 時刻 open(“ファイル名”, O_RDONLY)= 3」という書式である。例えば「3461 11:22:25.741764 open(“/etc/aaa.conf”, O_RDONLY) = 3」という記述が挿入される。このとき正規化部140は、挿入する記述のPIDには、例えば操作のPIDを流用する。図29の例では、PIDは「3461」である。また正規化部140は、時刻として、例えば、操作の範囲の末尾の行の時刻を流用する。図25に示した作業ログ111aであれば、「3461 11:22:25.741764 write(2, “[root@cumulus-test 〜]# ”, 23) = 23」という行の時刻「11:22:25.741764」が、挿入する行の時刻として流用される。
出力ファイルに関しては、例えば出力ファイルに関する記述が挿入される。
図30は、出力ファイルに関する記述の挿入例を示す図である。作業ログ111a内の書き換え対象の操作の範囲に、出力ファイルに関する記述が追加される。例えば出力ファイルである編集後のファイルが“/etc/aaa.conf”であれば、そのファイルを“O_WRONLY|O_CREAT|O_TRUNC”モードでopenするシステムコールのログを示す記述が挿入される。このとき、PIDや時刻の流用元は、入力ファイルに関して挿入する記述と同様である。
図30は、出力ファイルに関する記述の挿入例を示す図である。作業ログ111a内の書き換え対象の操作の範囲に、出力ファイルに関する記述が追加される。例えば出力ファイルである編集後のファイルが“/etc/aaa.conf”であれば、そのファイルを“O_WRONLY|O_CREAT|O_TRUNC”モードでopenするシステムコールのログを示す記述が挿入される。このとき、PIDや時刻の流用元は、入力ファイルに関して挿入する記述と同様である。
このようにして、作業ログ111a内の編集操作に関する記述の正規化が行われる。
図31は、正規化後の作業ログの例を示す図である。作業ログ111aに対して、操作に関する記述91と入力ファイルに関する記述92との書き換えを行い、出力ファイルに関する記述93を挿入することで、作業ログ111aが正規化される。
図31は、正規化後の作業ログの例を示す図である。作業ログ111aに対して、操作に関する記述91と入力ファイルに関する記述92との書き換えを行い、出力ファイルに関する記述93を挿入することで、作業ログ111aが正規化される。
このように、作業ログが正規化されることで、作業ログ内の作業者の入力に応じた編集操作の記述が、自動実行可能な記述に書き直される。正規化後の作業ログを用いて、各サーバ41で実施された作業を再現すれば、編集操作を含む作業を再現することができる。
次に正規化処理の手順について説明する。
図32は、正規化処理の手順の一例を示す図である。
[ステップS171]正規化部140は、正規化情報DB113のエントリ(正規化情報)ごとに、ステップS172〜S177の処理を実行する。
図32は、正規化処理の手順の一例を示す図である。
[ステップS171]正規化部140は、正規化情報DB113のエントリ(正規化情報)ごとに、ステップS172〜S177の処理を実行する。
[ステップS172]正規化部140は、正規化情報に対応する作業ログを、ログDB111から取得する。
[ステップS173]正規化部140は、正規化情報に示される操作の行の、作業ログ内での位置を特定する。
[ステップS173]正規化部140は、正規化情報に示される操作の行の、作業ログ内での位置を特定する。
[ステップS174]正規化部140は、操作の範囲を決定する。
[ステップS175]正規化部140は、操作の範囲の末尾の行から、PIDと時刻とを取得する。
[ステップS175]正規化部140は、操作の範囲の末尾の行から、PIDと時刻とを取得する。
[ステップS176]正規化部140は、操作の範囲内のログの記述を書き換える。
[ステップS177]正規化部140は、ログの書き換えを行った作業ログを、ログDB111に上書きで保存する。
[ステップS177]正規化部140は、ログの書き換えを行った作業ログを、ログDB111に上書きで保存する。
[ステップS178]正規化部140は、すべての正規化情報についてステップS172〜S177の処理が完了したら、正規化処理を終了する。
このようにして、手作業によるファイルの編集内容が、作業ログ内で明確化される。その結果、手作業によるファイル編集操作を含めて、手順を再利用可能となる。編集操作が再利用できることで、構築時や運用における利用者の工数を削減できる。
このようにして、手作業によるファイルの編集内容が、作業ログ内で明確化される。その結果、手作業によるファイル編集操作を含めて、手順を再利用可能となる。編集操作が再利用できることで、構築時や運用における利用者の工数を削減できる。
また、自動化された操作に正規化することで、使用したエディタなどの編集方法を問わず、同じ編集内容を一つの操作で表現でき、グラフのサイズを小さくできる。その結果、処理時間や必要なリソースを削減できる。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、操作ごとのグラフを作成した後に、グラフを書き換えることで正規化をするものである。なお第3の実施の形態では、システムコールのフックを行わず、書き込みされる可能性のあるファイル(O_RDWR, O_WRONLY)がopenされると、そのときにコピーを作成する。
次に第3の実施の形態について説明する。第3の実施の形態は、操作ごとのグラフを作成した後に、グラフを書き換えることで正規化をするものである。なお第3の実施の形態では、システムコールのフックを行わず、書き込みされる可能性のあるファイル(O_RDWR, O_WRONLY)がopenされると、そのときにコピーを作成する。
以下、第2の実施の形態との相違点を中心に、第3の実施の形態について説明する。なお、第3の実施の形態のシステム構成は、図2、図3に示した第2の実施の形態の構成と同様である。また第3の実施の形態の機能は、図6に示した第2の実施の形態の要素と同様である。
図33は、第3の実施の形態の作業手順再利用の処理手順の一例を示すフローチャートである。
サーバ41〜43は、作業が実施されると、情報取得部41a,42a,43aが正規化情報と差分ファイルとを作成し、作業ログ・正規化情報・差分ファイルを管理サーバに送信する(ステップS201〜S203)。管理サーバ100では、情報収集部130が、作業ログ・正規化情報・差分ファイルを受信し、記憶部110に格納する(ステップS204〜S206)。
サーバ41〜43は、作業が実施されると、情報取得部41a,42a,43aが正規化情報と差分ファイルとを作成し、作業ログ・正規化情報・差分ファイルを管理サーバに送信する(ステップS201〜S203)。管理サーバ100では、情報収集部130が、作業ログ・正規化情報・差分ファイルを受信し、記憶部110に格納する(ステップS204〜S206)。
管理サーバ100のグラフ作成部150は、図4に示したように、作業ログに示されている各操作のグラフを作成する(ステップS207)。次に正規化部140は、編集操作に対応するグラフを、編集内容を再現できるように正規化する(ステップS208)。次に正規化部140は、操作ごとのグラフを統合する(ステップS209)。そしてグラフ作成部150は、作成したグラフをグラフDB114に格納する。
管理サーバ100の手順探索部160は、図5に示すように、グラフDB114に格納されたグラフに基づいて、サーバ44に適用可能な作業手順を作成する(ステップS210)。そして管理サーバ100の手順実行部170は、作成された作業手順に従って、サーバ44に対する遠隔操作を行う(ステップS211)。サーバ44では、管理サーバ100からの操作に応じた処理が実行される(ステップS212)。
以上のような手順で、サーバ41〜43に対して実施された作業手順内の操作を再利用して、サーバ44に対する作業を自動で実施できる。なお、サーバ44において作業が実施された場合にも、その作業に応じて、作業ログなどの情報が管理サーバ100に送信される。またサーバ41〜43において作業を実施する場合に、管理サーバ100で作業ログに基づいて作業手順を生成し、遠隔操作によりサーバ41〜43に作業を実施することもできる。
次に、サーバ41における作業ログ・正規化情報・差分ファイルの送信処理について詳細に説明する。
第2の実施の形態では、ファイルに対する書き込みが監視され、書き込み時のシステムコールのフックにより、ファイルのコピーが作成されるが、第3の実施の形態では、システムコールのフックをせずにファイルがコピーされる。フックを用いない場合、書き込みを止めるわけではないので、書き込みが起こってからコピーしていては遅い。そこでサーバ41は、ファイルがopenされるたびに、そのファイルのコピーを作成する。
第2の実施の形態では、ファイルに対する書き込みが監視され、書き込み時のシステムコールのフックにより、ファイルのコピーが作成されるが、第3の実施の形態では、システムコールのフックをせずにファイルがコピーされる。フックを用いない場合、書き込みを止めるわけではないので、書き込みが起こってからコピーしていては遅い。そこでサーバ41は、ファイルがopenされるたびに、そのファイルのコピーを作成する。
例えばサーバ41は、書き込みされる可能性のあるファイル(O_RDWR, O_WRONLY)について、コピーを作成する。書き込みされる可能性のあるファイルは、入出力ファイルリスト75で出力属性のあるファイルである。サーバ41は、ファイルをコピーすると、コピー先のファイルの情報とその位置を、コピーファイル情報として、メモリに記録する。
図34は、第2のコピー方法によるコピー例を示す図である。例えばプロセス201がO_WRONLYのモードでファイル202をopenした場合、ファイル202がコピーされ、コピーしたファイル203がHDDに格納される。そしてプロセス201のPID、ファイル202のファイルパス、およびファイル203のファイルパス(コピー位置)の組が、コピーファイル情報81(図18参照)に設定される。
他方、プロセス201がO_RDONLYモードでファイル204をopenした場合、ファイル204はコピーされず、コピーファイル情報81への情報の登録も行われない。
このように、書き込みの可能性があるファイルをすべてコピーすることで、システムの信頼性維持などの理由で、システムコールをフックすることが困難な場合であっても、ファイルのコピーを作成することができる。
このように、書き込みの可能性があるファイルをすべてコピーすることで、システムの信頼性維持などの理由で、システムコールをフックすることが困難な場合であっても、ファイルのコピーを作成することができる。
以下、第3の実施の形態における、サーバ41による情報の作成と送信の手順について詳細に説明する。
図35は、作業ログ・正規化情報・差分ファイル送信処理の手順の一例を示すフローチャートである。
図35は、作業ログ・正規化情報・差分ファイル送信処理の手順の一例を示すフローチャートである。
[ステップS221]サーバ41は、システムコールを監視する。監視により得られたシステムコールは、ログとしてメモリまたはHDDに記録される。
[ステップS222]サーバ41は、発生したシステムコールにプロンプトを示す文字列があるか否かを判断する(図8参照)。プロンプトを示す文字列があれば、処理がステップS227に進められる。プロンプトを示す文字列がなければ、処理がステップS223に進められる。
[ステップS222]サーバ41は、発生したシステムコールにプロンプトを示す文字列があるか否かを判断する(図8参照)。プロンプトを示す文字列があれば、処理がステップS227に進められる。プロンプトを示す文字列がなければ、処理がステップS223に進められる。
[ステップS223]サーバ41は、発生したシステムコールが、ファイルの編集操作か否かを判断する(図9参照)。ファイルの編集操作であれば、処理がステップS224に進められる。ファイルの操作でなければ、処理がステップS225に進められる。
[ステップS224]サーバ41は、編集操作を示すログの行を、「操作の行」としてメモリなどに記録する。
[ステップS225]サーバ41は、発生したシステムコールが、ファイルの入出力処理を示しているか否かを判断する(図10参照)。ファイルの入出力処理であれば、処理がステップS226に進められる。ファイルの入出力処理でなければ、処理がステップS221に進められる。
[ステップS225]サーバ41は、発生したシステムコールが、ファイルの入出力処理を示しているか否かを判断する(図10参照)。ファイルの入出力処理であれば、処理がステップS226に進められる。ファイルの入出力処理でなければ、処理がステップS221に進められる。
[ステップS226]サーバ41は、入出力ファイルリストや監視ファイルリストへのファイル情報記録処理を行う。この処理の詳細は後述する(図36参照)。その後、処理がステップS221に進められる。
[ステップS227]サーバ41は、プロンプトの文字列を含むシステムコールが発生した場合、情報保存処理を行う。この処理の詳細は後述する(図37参照)。
[ステップS228]サーバ41は、全操作が終了したか否かを判断する。全操作が終了した場合、処理を終了する。全操作が終了していなければ、処理がステップS221に進められる。
[ステップS228]サーバ41は、全操作が終了したか否かを判断する。全操作が終了した場合、処理を終了する。全操作が終了していなければ、処理がステップS221に進められる。
次に、ファイル情報記録処理(ステップS226)の詳細について説明する。
図36は、ファイル情報記録処理の手順の一例を示すフローチャートである。
[ステップS231]サーバ41は、入出力ファイルリスト75(図11参照)に、入出力対象のファイルのファイル名と属性とを記録する。
図36は、ファイル情報記録処理の手順の一例を示すフローチャートである。
[ステップS231]サーバ41は、入出力ファイルリスト75(図11参照)に、入出力対象のファイルのファイル名と属性とを記録する。
[ステップS232]サーバ41は、入出力対象のファイルが、書き込みが起こりうるファイル(出力の属性を有するファイル)か否かを判断する。書き込みが起こりうるファイルであれば、処理がステップS233に進められる。書き込みが起こりうるファイルでなければ、リスト作成処理が終了する。
[ステップS233]サーバ41は、入出力対象のファイルのコピーを作成する。
[ステップS234]サーバ41は、監視ファイルリスト79(図16)に、入出力対象のファイルの情報(PID、ファイルパス。ファイルディスクリプタ)を記録する。
[ステップS234]サーバ41は、監視ファイルリスト79(図16)に、入出力対象のファイルの情報(PID、ファイルパス。ファイルディスクリプタ)を記録する。
このようにして、入出力の対象となるファイルに関する情報が、入出力ファイルリスト75と監視ファイルリスト79に記録される。
次に情報保存処理(ステップS227)の詳細について説明する。
次に情報保存処理(ステップS227)の詳細について説明する。
図37は、情報保存処理の手順の一例を示すフローチャートである。
[ステップS241]サーバ41は、コピーファイル情報81(図18参照)に基づいて、元のファイルと、そのファイルを編集前にコピーしたファイルとの差分を示す差分ファイル(図20参照)を作成する。そしてサーバ41は、差分ファイルを管理サーバ100に送信する。すると管理サーバ100において、差分ファイルが差分ファイルDB112に格納される。
[ステップS241]サーバ41は、コピーファイル情報81(図18参照)に基づいて、元のファイルと、そのファイルを編集前にコピーしたファイルとの差分を示す差分ファイル(図20参照)を作成する。そしてサーバ41は、差分ファイルを管理サーバ100に送信する。すると管理サーバ100において、差分ファイルが差分ファイルDB112に格納される。
[ステップS242]サーバ41は、正規化情報を生成し、管理サーバ100に送信する。すると管理サーバ100において、正規化情報が、正規化情報DB113に格納される。
[ステップS243]サーバ41は、コピーファイル情報81とコピーされたファイルとを破棄する。
[ステップS244]サーバ41は、未送信の作業ログを管理サーバ100に送信する。すると管理サーバ100において、作業ログが、作業ログDB111に格納される。
[ステップS244]サーバ41は、未送信の作業ログを管理サーバ100に送信する。すると管理サーバ100において、作業ログが、作業ログDB111に格納される。
以上の処理により、サーバ41から管理サーバ100に、作業ログ、差分ファイル、正規化情報が送信される。
次に、第3の実施の形態における正規化処理について説明する。第3の実施の形態では、グラフを書き換えることで正規化が行われる。
次に、第3の実施の形態における正規化処理について説明する。第3の実施の形態では、グラフを書き換えることで正規化が行われる。
図4に示したように、作業ログに基づいて、操作の事前条件と事後条件とを定義したグラフ61〜64を作成し、条件の適合性によってグラフ61〜64を統合して、グラフ65を作成することができる。そして図5に示したように、グラフ65を用いて、初期条件66を満たすサーバを作業対象としたときに、そのサーバが目標条件67を満たすようにするための操作手順69を作成することができる。
このようにグラフ61〜65を介して、いずれかのサーバに適用する作業手順を作成する場合、作業ログ内の編集操作を、編集操作に対応するグラフを作成する際に正規化することができる。
図38は、編集操作のログから作成したグラフの例を示す図である。グラフでは、操作を示すノード304の左に事前条件のノード301〜303が接続され、右に事後条件を示すノード305が接続されている。事前条件は、入出力ファイルリストのうち、入力の属性を有するファイルを有しているという条件であり、それらのファイルに対応するノード301〜303が、操作を示すノード304に接続される。事後条件は、入出力ファイルリストのうち、出力の属性を有するファイルを有しているという条件であり、それらのファイルに対応するノード305が、操作を示すノード304に接続される。このようなグラフは、グラフ作成部150により作成され、グラフDB114に格納される。
正規化部140は、正規化情報DB113のエントリごとに、以下の処理を行う。
正規化部140は、まず正規化の対象となるグラフを選択する。例えば正規化部140は、正規化情報DB113内のエントリを選択し、そのエントリの操作の行における操作の文字と、入出力ファイルリストを取得する。図27の正規化情報DB113のID「1」のエントリであれば、操作の文字として“edit aaa.conf”が取得され、入出力ファイルリストとして“{“/usr/share/emacs/site-lisp/default.el”:“入力”,“/etc/aaa.conf”:“出力”, … }”が取得される。次に正規化部140は、正規化情報DB113内の選択したエントリに対応するグラフを、置き換え対象として選択する。
正規化部140は、まず正規化の対象となるグラフを選択する。例えば正規化部140は、正規化情報DB113内のエントリを選択し、そのエントリの操作の行における操作の文字と、入出力ファイルリストを取得する。図27の正規化情報DB113のID「1」のエントリであれば、操作の文字として“edit aaa.conf”が取得され、入出力ファイルリストとして“{“/usr/share/emacs/site-lisp/default.el”:“入力”,“/etc/aaa.conf”:“出力”, … }”が取得される。次に正規化部140は、正規化情報DB113内の選択したエントリに対応するグラフを、置き換え対象として選択する。
正規化部140は、選択したエントリから、ファイルパス(例えば/etc/aaa.conf)と差分ファイル名(例えばaaa.conf.diff)とを取得する。
正規化部140は、選択したグラフの事前条件のノードをすべて削除する。次に正規化部140は、グラフの事前条件として、編集前の元ファイル、差分ファイル、差分ファイルと元ファイルから編集後ファイルを作るコマンドの実行ファイル、およびコマンドの実行に使用する入力ファイル群に対応するノードを追加する。
正規化部140は、選択したグラフの事前条件のノードをすべて削除する。次に正規化部140は、グラフの事前条件として、編集前の元ファイル、差分ファイル、差分ファイルと元ファイルから編集後ファイルを作るコマンドの実行ファイル、およびコマンドの実行に使用する入力ファイル群に対応するノードを追加する。
正規化部140は、選択したグラフの事後条件のノードをすべて削除する。次に正規化部140は、グラフの事後条件として、編集後のファイルとしてのファイルパスに対応するノードを追加する。
正規化部140は、操作を示すノードを、“patch ファイルパス 差分ファイル名”といった正規化された操作文字列によるコマンド入力操作を示すノードに置き換える。
図39は、正規化後のグラフの例を示す図である。図39の例では、事前条件としてノード311〜314が設定されている。ノード311は、差分ファイルと元ファイルから編集後ファイルを作るコマンドの実行ファイル“patch”を示している。ノード312は、コマンドの実行に使用する入力ファイル群(/etc/ld.so.cache, /lib64/libselinux.so.1, /lib64/libc.so.6, …)を示している。ノード313は、元ファイル“/etc/aaa.conf”を示している。ノード314は、差分ファイル“aaa.conf.diff”を示している。操作を示すノード315は、“patch aaa.conf aaa.conf.diff”というコマンドの入力操作を示している。事後条件を示すノード316は、編集後のファイル“/etc/aaa.conf”を示している。
図39は、正規化後のグラフの例を示す図である。図39の例では、事前条件としてノード311〜314が設定されている。ノード311は、差分ファイルと元ファイルから編集後ファイルを作るコマンドの実行ファイル“patch”を示している。ノード312は、コマンドの実行に使用する入力ファイル群(/etc/ld.so.cache, /lib64/libselinux.so.1, /lib64/libc.so.6, …)を示している。ノード313は、元ファイル“/etc/aaa.conf”を示している。ノード314は、差分ファイル“aaa.conf.diff”を示している。操作を示すノード315は、“patch aaa.conf aaa.conf.diff”というコマンドの入力操作を示している。事後条件を示すノード316は、編集後のファイル“/etc/aaa.conf”を示している。
図40は、正規化処理の手順の一例を示す図である。
[ステップS251]正規化部140は、正規化情報DB113のエントリ(正規化情報)ごとに、ステップS252〜S254の処理を実行する。
[ステップS251]正規化部140は、正規化情報DB113のエントリ(正規化情報)ごとに、ステップS252〜S254の処理を実行する。
[ステップS252]正規化部140は、編集操作に対応するグラフを、書き換え対象として選択する。
[ステップS253]正規化部140は、選択したグラフについて、作業者の入力に応じた編集操作が自動化されるように書き換える(図38、図39参照)。
[ステップS253]正規化部140は、選択したグラフについて、作業者の入力に応じた編集操作が自動化されるように書き換える(図38、図39参照)。
[ステップS254]正規化部140は、グラフDB114内の書き換え対象のグラフを、ステップS253での書き換え後のグラフに置き換える。
[ステップS255]正規化部140は、すべての正規化情報についてステップS252〜S254の処理が完了したら、正規化処理を終了する。
[ステップS255]正規化部140は、すべての正規化情報についてステップS252〜S254の処理が完了したら、正規化処理を終了する。
このようにして、ログを書き換えずに、グラフの書き換えによって、編集操作の正規化を行うことができる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 管理対象装置
1a 編集ソフトウェア(編集SW)
2 情報処理装置
2a 記憶部
2b 演算部
4 ファイル(編集前)
4a ファイル(編集後)
4b 差分ファイル
5 作業ログ
6,7 グラフ
1a 編集ソフトウェア(編集SW)
2 情報処理装置
2a 記憶部
2b 演算部
4 ファイル(編集前)
4a ファイル(編集後)
4b 差分ファイル
5 作業ログ
6,7 グラフ
Claims (10)
- コンピュータが、
管理対象装置に対して実施された作業における少なくとも1つの操作のログと、編集ソフトウェアを用いて編集されたファイルの、編集前後の差分を示す差分情報とを取得し、
前記ログから、前記ファイルの編集に用いられた前記編集ソフトウェアの起動操作を示す第1のログを抽出し、
前記第1のログを、前記差分情報に示された差分を前記ファイルに反映させる操作を示す第2のログに置き換える、
作業ログ編集方法。 - 前記管理対象装置が、
前記編集ソフトウェアの実行を検出し、
前記編集ソフトウェアを利用した前記ファイルの編集における編集前後で差分を示す前記差分情報を生成する、
ことを特徴とする請求項1記載の作業ログ編集方法。 - 前記編集ソフトウェアの実行の検出では、入力装置による入力の有無を監視し、起動されたソフトウェアの実行中に前記入力装置からの入力がある場合、該ソフトウェアを前記編集ソフトウェアとして検出する、
ことを特徴とする請求項2記載の作業ログ編集方法。 - 前記編集ソフトウェアの実行の検出では、前記編集ソフトウェアを実行しているプロセスに文字列が入力された後、該プロセスから該文字列がエコーバックとして出力された場合に、前記入力装置からの入力が行われたと判断する、
ことを特徴とする請求項3記載の作業ログ編集方法。 - 前記差分情報の生成では、編集前の前記ファイルをコピーしてコピーファイルを作成し、編集後の前記ファイルと前記コピーファイルとを比較することで、前記差分情報を生成する、
ことを特徴とする請求項2乃至4のいずれかに記載の作業ログ編集方法。 - 前記コピーファイルの作成では、前記ファイルへの最初の書き込みを検知したときに、書き込みの実行前に前記コピーファイルを作成する、
ことを特徴とする請求項5記載の作業ログ編集方法。 - 前記第1のログの前記第2のログへの置き換えでは、前記編集ソフトウェアの起動命令を、差分の反映処理の実行命令に置き換え、前記編集ソフトウェアの実行に使用される第1の入力ファイルの指定を、差分の反映処理の実行に使用される第2の入力ファイルの指定に置き換える、
ことを特徴とする請求項1乃至6のいずれかに記載の作業ログ編集方法。 - 前記第1のログの前記第2のログへの置き換えでは、前記編集ソフトウェアを実行する第1の装置に期待される状態を示す事前条件のノードと、前記編集ソフトウェアの起動操作のノードと、前記編集ソフトウェアを実行した前記第1の装置に期待される状態を示す事後条件のノードとを接続した第1のグラフを、差分の反映処理を実行する第2の装置に期待される状態を示す事前条件のノードと、差分の反映処理の実行操作のノードと、差分の反映処理を実行した前記第2の装置に期待される状態を示す事後条件のノードとを接続した第2のグラフに置き換える、
ことを特徴とする請求項1乃至7のいずれかに記載の作業ログ編集方法。 - 管理対象装置に対して実施された作業における少なくとも1つの操作のログと、編集ソフトウェアを用いて編集されたファイルの、編集前後の差分を示す差分情報とを記憶する記憶部と、
前記ログから、前記ファイルの編集に用いられた前記編集ソフトウェアの起動操作を示す第1のログを抽出し、前記第1のログを、前記差分情報に示された差分を前記ファイルに反映させる操作を示す第2のログに置き換える演算部と、
を有する情報処理装置。 - コンピュータに、
管理対象装置に対して実施された作業における少なくとも1つの操作のログと、編集ソフトウェアを用いて編集されたファイルの、編集前後の差分を示す差分情報とを取得し、
前記ログから、前記ファイルの編集に用いられた前記編集ソフトウェアの起動操作を示す第1のログを抽出し、
前記第1のログを、前記差分情報に示された差分を前記ファイルに反映させる操作を示す第2のログに置き換える、
処理を実行させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014138320A JP2016018227A (ja) | 2014-07-04 | 2014-07-04 | 作業ログ編集方法、情報処理装置、およびプログラム |
US14/741,541 US20160004710A1 (en) | 2014-07-04 | 2015-06-17 | Work log editing method and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014138320A JP2016018227A (ja) | 2014-07-04 | 2014-07-04 | 作業ログ編集方法、情報処理装置、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016018227A true JP2016018227A (ja) | 2016-02-01 |
Family
ID=55017127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014138320A Withdrawn JP2016018227A (ja) | 2014-07-04 | 2014-07-04 | 作業ログ編集方法、情報処理装置、およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20160004710A1 (ja) |
JP (1) | JP2016018227A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11503005B2 (en) * | 2018-11-09 | 2022-11-15 | Ge Aviation Systems Limited | Tool verification system and method of verifying an unqualified component |
CN110399352B (zh) * | 2019-06-18 | 2023-05-30 | 平安科技(深圳)有限公司 | 处理svn日志文件的方法、装置、设备及存储介质 |
US11392585B2 (en) | 2019-09-26 | 2022-07-19 | Palantir Technologies Inc. | Functions for path traversals from seed input to output |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671757B1 (en) * | 2000-01-26 | 2003-12-30 | Fusionone, Inc. | Data transfer and synchronization system |
US7606881B2 (en) * | 2002-04-25 | 2009-10-20 | Oracle International Corporation | System and method for synchronization of version annotated objects |
US7890469B1 (en) * | 2002-12-30 | 2011-02-15 | Symantec Operating Corporation | File change log |
US8276096B2 (en) * | 2004-04-02 | 2012-09-25 | International Business Machines Corporation | Multicast file viewing and editing |
US7757269B1 (en) * | 2006-02-02 | 2010-07-13 | Mcafee, Inc. | Enforcing alignment of approved changes and deployed changes in the software change life-cycle |
US9015127B2 (en) * | 2006-12-27 | 2015-04-21 | Oracle America, Inc. | File archiving system and method |
JP4324976B2 (ja) * | 2007-08-17 | 2009-09-02 | 日本電気株式会社 | ファイル差分管理装置、ファイル差分管理方法、及びファイル差分管理プログラム |
US8234317B1 (en) * | 2008-08-06 | 2012-07-31 | Netapp, Inc. | Auto-committing files to immutable status based on a change log of file system activity |
GB2464948A (en) * | 2008-10-29 | 2010-05-05 | Quolos Limited | Online collaboration |
US8332909B2 (en) * | 2008-12-16 | 2012-12-11 | Microsoft Corporation | Automated software restriction policy rule generation |
US8578327B2 (en) * | 2009-11-24 | 2013-11-05 | Verizon Patent Licensing Inc. | Targeted to targetless application converter |
JP5644543B2 (ja) * | 2011-01-26 | 2014-12-24 | 富士通株式会社 | アクセス制御データ編集支援プログラム、アクセス制御データ編集支援装置、及びアクセス制御データ編集支援方法 |
CN104239312B (zh) * | 2013-06-11 | 2019-03-15 | 富泰华工业(深圳)有限公司 | 文件管理系统及方法 |
US10025808B2 (en) * | 2014-03-19 | 2018-07-17 | Red Hat, Inc. | Compacting change logs using file content location identifiers |
-
2014
- 2014-07-04 JP JP2014138320A patent/JP2016018227A/ja not_active Withdrawn
-
2015
- 2015-06-17 US US14/741,541 patent/US20160004710A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20160004710A1 (en) | 2016-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9632916B2 (en) | Method and apparatus to semantically connect independent build and test processes | |
US10621212B2 (en) | Language tag management on international data storage | |
US10133568B2 (en) | Embedding code anchors in software documentation | |
US8489941B2 (en) | Automatic documentation of ticket execution | |
WO2016000541A1 (zh) | 垃圾文件自动识别的方法和装置 | |
US20160124795A1 (en) | Evaluation method and apparatus | |
US10705829B2 (en) | Software discovery using exclusion | |
US20180060047A1 (en) | Analysis of source code for deployment | |
US9256509B1 (en) | Computing environment analyzer | |
JP6256115B2 (ja) | 操作探索プログラム、操作探索方法、および操作探索装置 | |
WO2023160327A1 (en) | Container image management | |
JP2008204405A (ja) | ソフトウェアのリグレッションテストシステム、リグレッションテストプログラムおよびリグレッションテスト方法 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN115576600A (zh) | 基于代码变更的差异处理方法、装置、终端及存储介质 | |
JP2016018227A (ja) | 作業ログ編集方法、情報処理装置、およびプログラム | |
EP2575037A1 (en) | Generation apparatus, generation method and computer readable information recording medium | |
CN114003269A (zh) | 组件处理方法、装置、电子设备及存储介质 | |
US20170109331A1 (en) | Managing changes to a document in a revision control system | |
JP2016076071A (ja) | ログ管理装置,ログ管理プログラム,及びログ管理方法 | |
US9317273B2 (en) | Information processing apparatus and information processing method | |
WO2022214200A1 (en) | Method and network element for pre-upgrade use case validation | |
CN113326193A (zh) | 一种小程序测试方法及装置 | |
US11513884B2 (en) | Information processing apparatus, control method, and program for flexibly managing event history | |
JP2009265962A (ja) | 操作ログ情報管理システム | |
CN117648198B (zh) | 应用适配方法及装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170406 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20171113 |