レベル: 中級 Abdi Salahshour (abdis@us.ibm.com), Senior Software Engineer, IBM Jane Fang (janefang@ca.ibm.com), Software Engineer, IBM Japan
2007年 11月 20日 今回は、Common Base Event と WSDM(Web Services Distributed Management)Event Format(WEF)間のマッピングを詳しく見てみましょう。これは、既にCommon Base Event フォーマットを採用していて、さらに WEF イベントに変換する必要があるというケースを想定したマッピングで、具体的にはCommon Base Event アダプターを WEF アダプターに変換します。
はじめに
最初にいくつか用語の説明をしましょう。ジェネリック・ログ・アダプター(GLA)は、ログ・イベントのフォーマットを独自仕様(ネイティブ・フォーマット)から Common Base Event 1.0.1 フォーマットに変換するツールです。IBM® のオートノミック・コンピューティング・ツールキットには、280 を超えるログをサポートする GLA の変換アダプターが含まれていて、ログ・アンド・トレース・アナライザー(問題判別ツール)で使用されています。Common Base Event フォーマットは2005年にOASIS(Organization for Advancement of Structured Information Standard)WSDM Technical Committee に提出され、WEF(WSDM Event Format)のベースとして採用されています。Common Base Event をさらに WEF イベントに変換する必要がある場合には、この記事で説明するCommon Base Event と WEF のマッピングや Common Base Event アダプターを WEF アダプターに変換する方法が役に立つでしょう。
イベントとは、プロセスの開始や進行、終了などのシステム動作全般を可視化したものです。もちろん局所的な状況にすぎないこともありますが、ハイレベルのシステム管理に必要な重要情報を提供する場合もあります。つまり、複雑なシステムが通信を行うためには、事象や状況の結果データをイベントで送信する必要があるといえます。
IT システムの稼動中に生成されたイベントを、共通フォーマットである Common Base Event を用いて表すことで、ロギングや管理、問題判別、オートノミック・コンピューティングおよび企業内のオンデマンド・ビジネス機能のサポートといった多様なコンポーネント間の通信効率を向上させることができます。Common Base Eventの目的は、イベントの正確さの保証、細部の修正、フォーマットの標準化によって堅牢で管理が容易なシステムの設計を支援することです。すなわち、高品質なイベント・データが、精度の高い企業システム管理を可能にするということです。
ジェネリック・ログ・アダプター(GLA)は、このような機能をJava™ ライブラリーのフレームワークとして提供しています。このライブラリーを呼び出すと、ログ・イベントをネイティブ・フォーマットから Common Base Event の変換、Common Base Event を WEF イベントへ変換またはその逆変換を実行できます。また、多くの主要なプロダクト・ログ用の独自アダプターとしても使用できます。
Common Base Event の定義では、基本的なメタデータの定義および要件を定義する以外に、以下の情報を公開するプロパティーの指定により、データの完全性を保証します。
- イベントを報告したコンポーネント
- 影響を受けるコンポーネント(報告したコンポーネントと同じになる場合もある)
- 発生した状況の一般的な説明
- 他のイベントとの相互関係を示すのに使用できるコンテンツ
2005 年 3 月、OASIS WSDM Technical Committee はMUWS 1.1(Web Services Distributed Management: Management Using Web Services)Part 1 と Part 2(参考文献を参照)の 二つの仕様を策定しました。WSDM Event Format も、ここに規定されています。WEF は IBMがOASISに申請したCommon Base Event をベースとしていて、実質的には Common Base Event のサブセットになっています。共通点としては、WEF は Common Base Event の重要な要素と構造(メタデータ、ソースと報告コンポーネントの情報、発生状況の種類を含む)を保持します。一方相違点としては、Common Base Event フォーマットはイベントの意味情報を豊富に提供することも可能ですが、WEFではいくつかの要素と属性が省かれています。またWEF には標準化された拡張ポイントが数多くあり、要素や属性の追加が可能です。
IBM オートノミック・コンピューティング・ツールキットに含まれるJavaライブラリーを使用すれば、WEF イベントの生成やWEF と Common Base Event の双方向の変換が可能になります。これはApache Muse WEF ライブラリー上で構築されていて、Common Base Event から WEF、あるいはその逆変換で情報が損失しないようになっています。
この記事では、GLA アダプターの動作やCommon Base Event フォーマット、WEF フォーマットについてある程度知識があることを前提としています。これらについての詳細な情報は、必要に応じて資料内で参照してください。
では次に、ライブラリーで提供される Common Base Event と WEF イベントのマッピングを調べてみましょう。
Common Base Event から WEF へのマッピング
WEF フォーマットは、Common Base Eventの中核となる必須要素を持っていて、表 1 に示すように 1 対 1 でマップされます。
表 1.WEF の Common Base Event 必須要素
| WSDM イベント・フォーマット | Common Base Event |
|---|
SourceComponent
|
sourceComponentId
|
ReporterComponent
|
reporterComponentId
|
Situation
|
situation
|
Common Base Event が提供する豊富な意味情報に対応するものとして、WEFでは表 2 に示すように、拡張ポイントを通じて製品固有の要素が導入されています。
表 2. 拡張 WEF
| WSDM Event Format | Common Base Event |
|---|
MsgCatalogInformation
|
msgDataElement
|
CorrelationProperties
|
sequenceNumber
repeatCount
elapsedTime
|
ComponentIdentification
|
ComponentIdentification
|
DeviceAddress
SNAAddress
HostAddress
GUIDAddress
WsaAddress
TCPAddress
OtherAddress
|
location
locationType
|
ExtendedContent
|
extendedDataElements
|
ExtendedContent は、その他のWEF に対応する要素がないものにも使用できます。
重要度
WEF の重要度属性は、表 3 に示すように 0 から 6 に分けられます。しかし、Common Base Event では、重要度の値の範囲は 0 から 70 になります。表 3 の 4列目は、Common Base Event の各重要度の値の範囲を示しています。
表 3. 重要度
| レベル | WEF 重要度 | CCommon Base Event の重要度 | Common Base Event の重要度の範囲 |
|---|
| 不明 | 0 | 0 | [0, 9] | | 情報 | 1 | 10 | [10, 29] | | 警告 | 2 | 30 | [30, 39] | | マイナー | 3 | 40 | [40, 44] | | メジャー | 4 | - | [45, 49] | | クリティカル | 5 | 50 | [50, 59] | | 致命的 | 6 | 60 | [60, 70] |
WEF イベントを Common Base Event に変換する場合、重要度は対応する Common Base Event 重要度(表3の2列目)に変換されますが、メジャーレベル(WEF重要度の 4)は値 45 に変換されます。
また、Common Base Event を WEF イベントに変換する場合、重要度の値(cbeSeverity)は対応する WEF の重要度の値に変換され、元の値(cbeSeverity)も ExtendedContent で維持されます。例えば、Common Base Event の重要度 55 は 5 に変換され、WEF イベントにExtendedContent 要素(リスト 1 に表示)が追加されます。
リスト 1. Common Base Event の重要度の WEF ExtendedContent への変換
<ExtendedContent extendedDataType="ExtendedDataElement"
instanceOf="ExtendedDataElement">
<ExtendedDataElement name="severity" type="string">
<values>55</values>
</ExtendedDataElement>
</ExtendedContent>
|
Situation
WEF イベントの situation 要素には、Common Base Event の situation 要素よりも多くの情報が格納されていて、Common Base Event のルートレベル属性であるmsg、priority、creationTime もここに含まれています。これらの要素/属性の詳細については、『OASIS Web Services Distributed Management: Management Using Web Services (MUWS 1.1) Part 1』(参考文献を参照)を参照してください。
WEF の situation category typeは、Common Base Event の situation typeとほぼ同じです。Common Base Event の一部の situation typeが持つ追加修飾子(situationQualifier)についても、WEF の situationの修飾子にマップされます(表4)。
表 4. Situation category
| WEF Situation CategoryType | CBE SituationType |
|---|
<operationDisposition>
<availabilityDisposition>
<processingDisposition>
<AvailabilitySituation/>
</processingDisposition>
</availabilityDisposition>
</operationDisposition>
|
AvailableSituation
@operationDisposition
@availabilityDisposition
@processingDisposition
|
ConfigureSituation
|
ConfigureSituation
|
<situationDisposition>
ConnectSituation
</situationDisposition>
|
ConnectSituation
@situationDisposition
|
CreateSituation
|
CreateSituation
|
<dependencyDisposition>
DependencySituation
</dependencyDisposition>
|
DependencySituation
@dependencyDisposition
|
DestroySituation
|
DestroySituation
|
<featureDisposition>
CapabilitySituation
</featureDisposition>
|
FeatureSituation
@featureDisposition
|
<reportCategory>
ReportSituation
</reportCategory>
|
ReportSituation
@reportCategory
|
<situationQualifier>
RequestSituation
</situationQualifier>
|
RequestSituation
@situationQualifier
|
<situationQualifier>
StartSituation
</situationQualifier>
|
StartSituation
@situationQualifier
|
<situationQualifier>
StopSituation
</situationQualifier>
|
StopSituation
@situationQualifier
|
OtherSituation
|
OtherSituation
|
WEF の situation には、MsgDataElement の属性と要素、msgCatalogTokens、msgId、msgIdType も含まれます。詳細については『Web Services Distributed Management: Management Using Web Services (MUWS 1.1) Part 1』を参照してください。
ReportTime
WEF イベントでは、ReportTime はオプションの属性です。ただし、wefReportTime の値を持っている場合は、GLA アダプターによって extendedDataElement に変換されます(リスト2)。
リスト 2. WEF ReportTime の Common Base Event への変換
<extendedDataElement name="ReportTime" type=”string”>
<values>wefReportTime<values>
</extendedDataElement>
|
WEF の any 要素
GLA は WEF イベントを Common Base Event フォーマットのイベントに変換するアダプターとしても使用できます。このアダプターは、もともとWEF フォーマットで生成されるログを、オートノミック・コンピューティングのログ・アンド・トレース・アナライザー(問題判別ツール)といったCommon Base Event を対象とする高度な分析ツールにかけるために利用する簡易ツールです。
WEF は 4 タイプの any 要素に対応する4つの拡張ポイントを提供しています。これらの any 要素は Common Base Event のExtendedDataElement要素に変換され、name属性がそのタイプ名になります。
表 5. WEF の any要素
| WEF の any要素 | Common Base Event の extendedDataElement の名称 |
|---|
ManagementEvent\any
|
ManagementEvent_any
|
SourceComponent\any
|
Component_any
|
ReporterComponent\any
|
Reporter_any
|
ComponentAddress\any
|
Source_Address_any
|
リスト 3 と 4 に、変換前後のWEF イベント(リスト 3)と Common Base Event イベント(リスト 4)を示しています。
リスト 3. WEF イベント
<muws1:ManagementEvent
xmlns:muws1="http://docs.oasis-open.org/wsdm/muws1-2.xsd"
ReportTime="2007-05-07T08:25:16-04:00">
<muws1:EventId>uuid:ADT-A04-ADT_A01</muws1:EventId>
<muws1:SourceComponent>
<muws1:ComponentAddress>
<wsa:EndpointReference
xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Address>
http://localhost:8080/axis2/services/HealthcareProviderService
</wsa:Address>
</wsa:EndpointReference>
</muws1:ComponentAddress>
</muws1:SourceComponent>
<muws2:Situation
xmlns:muws2="http://docs.oasis-open.org/wsdm/muws2-2.xsd">
<muws2:SituationCategory>
<muws2:ReportSituation />
</muws2:SituationCategory>
<muws2:SituationTime>
2007-05-07T08:25:16-04:00
</muws2:SituationTime>
</muws2:Situation>
<HL7V2>MSH|^~\\&|HealthcareProviderService^
http://hips.hl7.example^URI||||200705070825||
ADT^A04^ADT_A01PID|||1000||DOE^JOHN
</HL7V2>
</muws1:ManagementEvent>
|
リスト 4. 変換された Common Base Event
<CommonBaseEvent creationTime="2007-05-07T12:25:16.000Z"
globalInstanceId="ADT-A04-ADT_A01">
<extendedDataElements name="ExtendedDataElement_situation"
type="string">
<children name="ReportSituation" type="string">
<values>http://docs.oasis-open.org/wsdm/muws2-2.xsd</values>
<values>muws2</values>
</children>
</extendedDataElements>
<extendedDataElements name="ReportTime" type="string">
<values>1178540716000</values>
</extendedDataElements>
<extendedDataElements name="Source_Address_any">
<children name="wsa:EndpointReference" type="string">
<children name="uri" type="string">
<values>http://www.w3.org/2005/08/addressing</values>
</children>
<children name="wsa:Address" type="string">
<children name="uri" type="string">
<values>http://www.w3.org/2005/08/addressing</values>
</children>
<children name="Text" type="string">
<values>
http://localhost:8080/axis2/services/HealthcareProviderService
</values>
</children>
</children>
</children>
</extendedDataElements>
<extendedDataElements name="ManagementEvent_any">
<children name="HL7V2" type="string">
<children name="uri" type="string">
<values>http://www.ibm.com/AC/commonbaseevent1_0_1</values>
</children>
<children name="Text" type="string">
<values>
MSH|^~\&|HealthcareProviderService^
http://hips.hl7.example^URI||||200705070825||ADT^A04^ADT_A01PID|||1000||DOE^JOHN
</values>
</children>
</children>
</extendedDataElements>
<sourceComponentId/>
<situation categoryName="OtherSituation">
<situationType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="OtherSituation">
</situationType>
</situation>
</CommonBaseEvent>
|
逆にCommon Base Event が WEF フォーマット・イベントに変換される際には、表 4 の対応規則に当てはまらない Common Base Event のExtendedDataElement要素は全てWEF の ExtendedContent に配置されます。
GLA で WEF を使う
前提条件
ライブラリーを使用するには、GLA のフレームワーク以外に以下のJarファイルを ac-gla\lib ディレクトリー内の GLA インストール・パスに配置する必要があります。
表 6. ソフトウェアの前提条件
| プラグイン | Jar ファイル |
|---|
| Com.ibm.etools.logging.adapter_Version
| glacomponents.jar
IBMsecEvents.jar
jaxrpc.jar
snmp.jar | | Com.ibm.etools.logging.parser_Version
| logparsers.jar | | Com.ibm.etools.ac.event.wef_Version
| wef-layer1.jar
wef-layer2.jar | | org.apache.muse_Version
| muse-util-2.0.0-M1.jar
muse-util-qname-2.0.0-M1.jar
muse-util-xml-2.0.0-M1.jar
muse-wsdm-wef-api-2.0.0-M1.jar
muse-wsdm-wef-impl-2.0.0-M1.jar |
WEF イベントを生成するGLA アダプターの構成
GLA アダプターはアウトプッターをWEFアウトプッター(com.ibm.etools.logging.adapter.outputters.WEF11Outputter)に変更することで、Common Base Event の代わりに WEF イベントを出力できます。
Apache アクセス・ログを WEF ログに変換する場合を例にとってみましょう。GLA エディターを使用して Apache 1.3.26 アクセス・ログのスタティック・アダプターを構成する場合、次の手順を用います。
-
GLA エディターでアダプター・ファイルを開きます。Contexts > Basic Context Implementation に移動し、Common Base Event ファイル・アウトプッターの実行クラスを com.ibm.etools.logging.adapter.outputters.WEF11Outputter に置き換えます。
図 1. GLA エディターでスタティック・アダプターを開く
-
Configuration > Context Instance > Sensor に移動します。nameをdirectory、valueを Apache アクセス・ログ・ファイルがあるディレクトリーに設定したものと、nameをfileName、valueをログ・ファイルの名前に設定したものの2つのプロパティーを作ります。
-
図 2 のように、選択したアウトプッターのDisabled のチェックを外して、nameをdirectory、valueを出力ファイルを保存する場所(d:\tmp など)に設定したものと、nameをfileName、valueを出力ファイル名(myWef.log など)にしたものの2つのプロパティーを作ります。また、他の 2つのアウトプッターは Disabled をチェックして無効にします。
図 2. アウトプッターを構成する
アダプターをテストする場合、図 2 の Extractor Results ビューで Run をクリックします。出力ファイルの場所、この例では \tmp にmyWef.log が作成され、Apache アクセス・ログの各レコードが WEF イベントに変換されて保存されます。
まとめ
この記事では、IBM ライブラリーと Apache Muse WEF ライブラリーを使って、Common Base Event がどのように WEF イベントに変換されるのかを見てきました。既に Common Base Event フォーマットを採用していて、さらに WEF イベントに変換する必要があるユーザーに特に有用です。これを使えば、イベント分析ツールがWEF と Common Base Event のどちらを解析対象としているかに関わらず、さまざまな製品のログを対象にすることができます。
参考文献
著者について  | 
|  | Abdi Salahshour は IBM Autonomic Computing Technology and Development のシニア・ソフトウェア・エンジニアであり、問題判別のアーキテクトやMaster Inventor でもあります。現在は Plug and Manage アーキテクチャーのアーキテクトとして活躍しています。1982年に IBM に入社して以来、データベース診断ツールの設計開発からシステム管理自己修復アーキテクチャー、そして異種分散環境でのイネーブルメントまでさまざまな職務を経験してきました。彼は IBM Problem Determination Council のメンバーで、IBM Common Base Event 仕様の作成にも参加しています。また、Generic Log Adapter の主任設計者およびインプリメンターの一員、Log and Trace Analyzer for Java Desktop のアーキテクト兼設計者でもあります。 |
 | |  | Jane Fang はIBMトロント研究所のオートノミック・コンピューティングチームのソフトウェア・エンジニアです。3年以上オートノミック・コンピューティングのログ&トレースアナライザーと関連したテクノロジーに従事しており、WEF extension Java libraryの開発にも従事しています。 |
記事の評価
|