アダプタ構成ファイルの作成
アダプタ構成ファイルの作成
次にアダプタ構成ファイルを作成します。アダプタ構成ファイルとは、ログを共通基本イベントに変換(マッピング)する規則を記述するファイルです。 正規表現でログを分析・変換する"規則ベースアダプタ"とJavaクラスを使用する"スタティックアダプタ"の2種類が存在します。
規則ベースアダプタは比較的単純な構造のログの分析に使用するのに対し、スタティックアダプタは複雑な構造のログの分析に使用します。今回はスタティックアダプタを作成します。
スタティックアダプタを作成するには、「File→New→Other...→Generic Log Adapter→Generic Log Adapter File」を選択して「Next>」をクリックします。
「Generic Log Adapter File」画面が開いたら、ファイルの格納先/ファイル名/XMLエンコードを指定します。今回は格納先を"MyAdapter"フォルダ、ファイル名 を"static.adapter"、XMLエンコードを"UTF-8"と指定します。指定して「Next>」をクリックすると「Template log file」画面が開きますので、ここでは変換対象と同じ形式を持つログファイルを指定してください。
「Finish」をクリックするとアダプタ構成ファイルがMyAdapter下に作成され、「Generic Log Adapter」ビューへ画面を切替えるか聞かれますので「Yes」をクリックしてください。今後アダプタ構成ファイルを編集する際はこの 「Generic Log Adapter」ビューを使用します。
アダプタ構成ファイルは「Contexts」と「Configuration」の2つのノードから成ります。各ノードには複数のコンポーネントが含 まれますが、今回作成するスタティックアダプタはすべてのコンポーネントを使用するわけではないので、不必要なコンポーネントは削除します。
「Contexts → Contexts Basic Context Implementation」ノードからは「Component Regular Expression Extractor」「Component Generic Parser」「Component CBE Formatter」を右クリックから削除します。残った「Component OS File Sensor」の「Name」と「Description」を任意に指定します。今回は両方とも"JMS Message Log Parser Sensor"と指定します。同様に「Component Logging Agent Outputter」の「Name」と「Description」には"Log Import Outputter"と指定します。
「Configuration → Context Instance」ノードからは「Extractor」「Parser」「Formatter」を右クリックから削除します。残った「Sensor A single file sensor」の「Description」を任意に変更します。今回は"JMS Message Log Parser Sensor"としました。「Outputter」の「Description」は"Log Import Outputter"とします。
次に「Configuration→Context Instance」を選択します。右側の「Continuous operation」チェックボックスをオフにします。
以上の設定がすべて終了すると、アダプタ構成ファイルは図1のようになります。今回削除されたコンポーネントは後ほど作成するJavaクラスで代用されることになります。
次に変換規則を定義したJavaクラスを実装します。Javaクラスは「org.eclipse.hyades.logging.parser」パッケージの「Parser」クラスか「MonitoringParser」クラスを継承する必要があります。
ログ・ファイルが今以上に更新されない場合は「Parser」を、更新される場合は「MonitoringParser」を継承します。今回は更新されないログファイルを分析するので「Parser」クラスを使用します。
この「Parser」を使用するためには、META-INFフォルダのMANIFEST.MFファイルを編集します。
MANIFEST.MFファイルを開いて「Dependencies」タブをクリックし、左側の「Required Plug-ins」欄で「Add…」をクリックします。すると「Plug-in Selection」ウィンドウが開くので「org.eclipse.hyades.logging.parsers」を選択して「OK」をクリックしてください。これでJavaクラスを実装する準備が整いました。
プロジェクト作成時に"src/jMSMessageLogParser"というフォルダが作成されているので、「File →New→Class」を選択して、ここに変換用のJavaファイルを作成します。
「Name」には"JMSMessageLogParser"、「Superclass」に は"org.eclipse.hyades.logging.parsers.Parser"を指定します。抽象メソッドのparseNext()、 getName()、getVersion()を実装する必要があります。parseNext()で実際にログファイルを1行ずつ読み込んで共通基本イベントに設定します。変換処理の際に使用する主な変数やメソッドは以下の通りです。
- protected CommonBaseEvent[] messages
- 共通基本イベントオブジェクトの配列、読み込んだログファイルの情報を格納します。最終的にこのオブジェクトに格納された値がログ・ビューで表示されます。
- protected String curLine
- 読み込んだログファイルの現在行が格納されます。
- protected String readALine()
- ログファイルの次の行を取得します。
実際に作成したJavaファイル
jmsmessagelogparser.zip (2.54KB)
Javaファイルを作成したら、アダプタ構成ファイルに登録します。まずはセンサー・コンポーネントの編集です。static.adapterを開 いて「Adapter→Configuration→JMS Message Log Parser Sensor」を選択し、右側の「Sensor type」を「StaticParserSensor」に設定します。
なお「Maximum blocking」は出力される共通基本イベントの数です。「Confidence buffer size」と「File footer size」はMonitoringParserを継承した場合に必要なので、今回は意識する必要はありません。
現在選択している「Sensor JMS Message Log Parser Sensor」を右クリックして「Add→Property」をクリックします。「Property Name」には"parserClassName"、「Property value」には"jMSMessageLogParser.JMSMessageLogParser"と指定します。
次に「Adapter→Contents→Context Basic Context Implementation →Component JMS Message Log arser Sensor」を選択し、右側の「Executable class」 に"org.eclipse.hyades.logging.parsers.adapter.sensors.StaticParserSensor"と指定します。
センサー・コンポーネントの次はアウトプッター・コンポーネントを編集します。「Adapter→Contexts→Context Basic Context Implementation→Component Log Import Outputter」を選択し、右側の「Executable class」 に"org.eclipse.hyades.logging.parsers.adapter.outputters.LogImportOutputter" を指定します。
変更が完了したら「Adapter→Configuration→Context Instance→Outputter」を選択し、「Outputter type」に"undeclared"を指定します。
