管理ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

監査情報およびログ情報の操作

この章では、AquaLogic Data Services Platform が備える監査フレームワーク、パフォーマンス プロファイリング、およびロギング機能について説明します。 内容は以下のとおりです。

データ サービスのモニタについては、「アプリケーションのモニタ」を参照してください。

 


監査

監査フレームワーク システムは、AquaLogic Data Services Platform アプリケーションにおける通常の XQuery 演算によって補助的な実行時データを収集するのに使用されます。 この情報は、セキュリティ監査、パフォーマンス プロファイリングなどの目的に使用できます。

監査データ構造

データ構造は、順序指定のない監査プロパティの集合を含む、監査レコードのシーケンスで構成されています。 各監査レコードには、通常は階層的な名前を使用して識別される、特定タイプのプロパティが含まれます。 各監査レコードは、AquaLogic Data Services Platform によって実行される処理に対応しています。 たとえば、リレーショナル データ ソースへのアクセスにより、監査プロパティ sql、datasource、returnedRows、evaluationTime、parameters、message、および exception を含む「evaluation/wrappers/relational」タイプのレコードが生成される場合があります。

任意の個別プロパティを、収集対象としてコンフィグレーションできます。 各プロパティには、どのプロパティを収集するかに関する全体的なしきい値のコンフィグレーションに使用できる、独立した固有の重大度が設定されます。 例外発生時など、ある特定の場合には、一部のプロパティが、収集対象としてコンフィグレーションされていなくてもレコードに追加されることがあります。 通常、この情報は、失敗したデータ ソースまたは更新処理のための識別子となります。

その一方で、収集対象としてコンフィグレーションされたプロパティを、必ずしも収集する必要はありません。 その理由としては、以下のいずれかが考えられます。

収集されるデータ構造の要素は、以下の処理のために個別にコンフィグレーションできます。

注意 : 監査は、エンジンが呼び出されて監査オプションが有効化されていると生じます。 タイムスタンプなどの収集されたデータにより、特定のクエリ演算と監査情報を照合できます。

AquaLogic Data Services Console を使用して、グローバル監査の重大度の設定や、対象となる特定のプロパティの監査設定のオーバーライドなど、アプリケーション監査のコンフィグレーションを行います。

[監査] タブ (図 9-1) により、AquaLogic Data Services Platform XQuery エンジン解析、更新、デプロイメント、および再コンフィグレーション イベント監査に含めるプロパティを選択できるページが開かれます。 監査は、パラメータや例外など、クエリの個々の局面について、有効化または無効化できます。 また、本質的に監査プロセスのすべての局面に適用される、いくつかのグローバル監査オプションもあります。

注意 : デフォルトでは、監査レポート生成ユーティリティは無効化されています。 初めてレポートを生成する際には、その前に後続の節で説明する監査設定を指定する必要があります。 監査が有効化されていると、監査レベルおよび監査されているプロパティの数に応じて、パフォーマンスに影響が及ぶことがあります。
図 9-1 監査オプション

監査オプション

グローバルな監査プロパティの設定

表 9-1 で、使用可能なグローバル監査オプションについて説明します。 AquaLogic Data Services Platform Console でそれぞれのチェック ボックスをクリックし、必要な監査オプションを選択および実装します。

表 9-1 AquaLogic Data Services Platform グローバル監査オプション
オプション
説明
[監査を有効化]
監査をアクティブにするかどうかを決定する。

注意 : 監査が有効化されていると、監査レベルおよび追跡されている項目の数に応じて、パフォーマンスにある程度の影響が及ぶことがある。

[監査クエリ]
クエリ評価中に、監査をアクティブにするかどうかを決定する。
[管理アクションの監査]
アプリケーションのデプロイメント、コンフィグレーション変更など、管理操作中に監査をアクティブにするかどうかを決定する。
[監査の更新]
更新操作中に、監査をアクティブにするかどうかを決定する。
[重大度]
監査プロセスによって取り込まれた情報のレベルを決定する。 詳細については「監査の重大度」を参照。
[監査イベントを非同期に送信する]
イベントを同期的に処理するか、非同期的に処理するかを決定する。
[監査イベントのロギングを有効化]
監査情報を、アプリケーション サーバ ログ ファイルに含めるかどうかを決定する。

注意 : このオプション (ロギング) を有効化する場合は、確実に [全般] タブの [ロギング] の値を、[Info] または [Debug] に設定する。 それ以外の値にすると、ログ ファイルはまったく情報を受け付けなくなる。

個別の監査プロパティの設定

このセクションは、どのプロパティをどのレベルまで監査するかを決定するのに役立ちます。 [すべてのプロパティを構成] 行から全般的な監査設定を反映できます。詳細については、表 9-2 に示しています。 また、個々のプロパティ レベルで監査設定を行うこともできます。詳細については、表 9-3 に示しています。

表 9-2 すべての監査プロパティのコンフィグレーション
オプション
説明
[クライアントに戻ることを許可する]
このチェック ボックスをクリックすると、プロパティ固有の監査情報は確実にクライアント API に返される。
[監査あり]
このドロップダウン リストには、すべてのプロパティに対する全般的なオプションが 3 つある。 このオプションとは、[At Default Level]、[Always]、および [Never] である。 [At Default Level] を選択すると、個々のプロパティすべてのレベルが、あらかじめ決定されたデフォルトのレベルに設定される。
各レベルの詳細については、表 9-3 を参照。

注意 : 個々の監査プロパティ設定を指定および適用後は、個々のプロパティに対して加えるすべての変更が、そのプロパティのみに対する初期設定をオーバーライドする。

表 9-3 に、個々のプロパティのそれぞれに対して設定できる監査レベルを示します。 この表に示すレベルはどれも、すべてのプロパティに適用できるわけではありません。 通常、各プロパティには、選択できるレベルが 3 つしかありません。

表 9-3 個々の監査プロパティの設定
レベル
説明
[Always]
この設定では、プロパティの監査情報は常に収集される。
[Never]
この設定では、プロパティの監査情報は常に無視される。
[At Info Level]
この設定では、グローバルしきい値レベルが [Information] 以下の場合に、監査情報が収集される。
[At Warning Level]
この設定では、グローバルしきい値レベルが [Warning] 以下の場合に、監査情報が収集される。
[At Failure Level]
この設定では、グローバルしきい値レベルが [Failure] 以下の場合に、監査情報が収集される。
[At Debug Level]
この設定では、グローバルしきい値レベルが [Debug] の場合に、監査情報が収集される。

個々のプロパティはすべて、対応する監査レベル生成処理に応じて、全体的な 4 つのタイプ (admin、common、query および update) に分類されます。

admin 監査プロパティ

このセクションの監査情報は、コンフィグレーション、アプリケーションのデプロイメントなど、管理タスクを実行中に交換される情報に関するものです。 監査中に収集されるのは、AquaLogic Data Services Console でアプリケーションに加えられた変更のみです。

表 9-4 admin プロパティ
プロパティ
説明
configuration
   notification
デプロイされたアクセス制御リソースの通知を記録する。 次に例を示す。
notification: jmx.attribute.change
property: MAXNUMBEROFQUERYPLANCACHED
value: 101
   plancacheflushed
クエリ プランがフラッシュされた場合に通知する。 次に例を示す。
plancacheflushed: true
   property
AquaLogic Data Services Platform Console で変更されたプロパティのすべてのインスタンスを記録する。 次に例を示す。
notification: jmx.attribute.change
   value
新しい値のインスタンスを記録する。次に例を示す。
value:
deployment
   application
デプロイされたアプリケーションの名前を記録する。 次に例を示す。
application: RTLApp

common 監査プロパティ

このセクションの監査情報は、全般的なトランザクション関連情報についてのものです。 イベントの種類、アプリケーション名、ユーザ ID、ユーザ アクセス権、日付、時間など、イベントに関する全般的な情報を含みます。

表 9-5 common プロパティ
プロパティ
説明
application
   name
デプロイされたアプリケーションの名前を記録する。 次に例を示す。
name: RTLApp
   eventkind
イベントまたは処理の種類を記録する。クエリ、更新などが考えられる。 次に例を示す。
eventkind: evaluation
   principals
ユーザが所属するグループを記録する。 次に例を示す。
principals:
   weblogic
   Administrators
   IntegrationAdministrators
   PortalSystemAdministrators
   user
ユーザ ID を記録する。次に例を示す。
user: weblogic
   server
アプリケーション サーバのユニークな ID を記録する。次に例を示す。
server: cgServer
   exception
例外メッセージが発生した場合に、それを記録する。 次に例を示す。
exception:
ld:DataServices/ApparelDB/CUSTOMER_ORDER_LINE_ITEM.ds, line 77, column 7: {err}FORG0005: expected exactly one item, got 0 items
   transactionid
イベントまたは操作についてのユニークなトランザクション ID を記録する。
security
   access
     resourcetype
データ サービス、アプリケーション、送信など、使用されるリソースの種類を記録する。 次に例を示す。
resourcetype: function
     resource
リソース識別子に対する要求を記録する。 次に例を示す。
resource: <ld type="function"><app>RTLApp</app><ds>ld:DataServices/CustomerDB/ADDRESS.ds</ds><res>{ld:DataServices/CustomerDB/ADDRESS}ADDRESS:0</res></ld>
     decision
アプリケーションに対するセキュリティ アクセス設定を記録する。次に例を示す。
decision: PERMIT
sql
   invocation
time
JDBC ドライバのサーバ サイドの next () メソッドに対する呼び出しの日付と時間を記録する。
duration
結果の次のブロックを計算するために必要な継続期間または時間をミリ秒単位で記録する。
blocksize
返されるシリアライズされたデータ ブロックのサイズを、バイト単位で記録する。
time
   duration
監査イベントを完了させるのにかかる時間を、ミリ秒単位で記録する。 監査の開始から完了までの時間差を計算する。 次に例を示す。
duration:
   timestamp
監査イベントが開始された時間を記録する。次に例を示す。
timestamp: Tue Feb 14 09:21:02 IST 2006

query 監査プロパティ

このセクションの監査情報は、クエリ評価中に収集されるすべての情報に関するものです。 この情報には、クエリ自体、クエリの結果、実行時間、および問い合わせを受けるデータ ソースの詳細が含まれます。

注意 : ストリーミング API を使用している場合、または RequestConfig.OUTPUT_FILENAME 機能を使用している場合、クエリ結果は非常に大きくなると想定されるため、監査されません。 つまり、監査プロバイダにディスパッチされる AuditEvent と、クライアントに返される DataServiceAudit には、管理プロパティのクエリ/サービス/結果に関する値が含まれません。

表 9-6 query プロパティ
プロパティ
説明
adhoc
   query
実行されたクエリを記録する。
   result
クエリ実行後に得られた結果を記録する。
variablenames
クエリに渡された変数の名前を記録する。
   variables
クエリに渡された外部パラメータまたは変数を記録する。
cache
   data
     forcedrefresh
ブール値で、TRUE はデータが現在のデータ ソースからのものであることを示し、FALSE はキャッシュからのものであることを示す。
     functionid
関数の名前を記録する。
     remainttl
クエリ キャッシュが更新されるまでの残り時間を秒単位で示す。
     retrieved
データがクエリ キャッシュから取得されたものであるかどうかを示す。
   queryplan

注意 : queryplan 監査プロパティは、関数が Workshop のテスト ビューから実行された場合には、収集されない。 これは、関数キャッシュが、テスト ビューで実行された関数に対しては利用されないからである。

     found
クエリ プラン キャッシュが見つかったかどうかを示す。
     inserted
クエリ プラン キャッシュが挿入されたかどうかを示す。
failover
   exception
フェイルオーバ発生時に、その原因となった例外を記録する。
   function
fn:bea:timeoutfn:bea:fail-over のいずれかであり得る関数名を記録する。 例えば、次のように指定します。
function: {http://www.bea.com/xquery/xquery-fncts}timeout-with-lbl
   label
ユーザ定義のラベルがある場合は、それを記録する。 次に例を示す。
label: lab
   sourcecolumn
関数呼び出しのソース カラムを記録する。 次に例を示す。
sourcecolumn:
   sourcefile
関数呼び出しのソース ファイルを記録する。 次に例を示す。
sourcefile: [ad-hoc]
   sourceline
関数呼び出しのソース行を記録する。 次に例を示す。
sourceline:
   timeout
超過されたタイムアウトが適用される場合は、それを記録する。 次に例を示す。
timeout:
function
注意 : function 監査プロパティは、監査対象としてデータ サービスの個々の関数が選択されている場合にのみ収集される。 詳細については、「関数を監査する」を参照。
   name
監査される関数の名前を記録する。 次に例を示す。
name: {ld:DataServices/CustomerDB/CUSTOMER}getCustomer
   parameters
監査される関数を通じて渡されるパラメータを記録する。 次に例を示す。
parameters: CUSTOMER1
   result
監査される関数を実行した後の結果を記録する。 次に例を示す。
result: <ns0:CUSTOMER
performance
   compiletime
クエリのコンパイル時間を、ミリ秒単位で記録する。 次に例を示す。
compiletime:
   evaltime
クエリの評価時間を、ミリ秒単位で記録する。 次に例を示す。
evaltime:
service
   dataservice
データ サービスの名前を記録する。次に例を示す。
dataservice: ld:DataServices/RTLServices/ApplOrder.ds
   function
データ サービスの関数名を記録する。次に例を示す。
function: getCustomer
   parameters
クエリを通じて渡されるパラメータを記録する。次に例を示す。
parameters:
   1
   foo
   query
データ サービスに対して実行されるクエリのテキスト全文を記録する。次に例を示す。
query:
   import schema namespace t1 = "urn:retailerType" at "ld:DataServices/RTLServices/schemas/ApplOrder.xsd";
   declare namespace ns0="ld:DataServices/RTLServices/ApplOrder";
   result
実行されたクエリの結果を記録する。次に例を示す。
ORDER_10_0
CUSTOMER0
2001-10-01
GROUND
wrappers
   file
     exception
呼び出された関数が、File データ ソースを通じて作成されたデータ サービスに属するものである場合に、例外が発生したらそれを記録する。 次に例を示す。
exception: com.bea.ld.wrappers.df.exceptions.DFException: {bea-err}DF0004: [ld:DataServices/Demo/Valuation.csv]: Expected end of line at (row:2, column:3).
     name
ユニークな関数名を記録する。 次に例を示す。
name: ld:DataServices/Demo/Valuation.csv
     time
クエリにかかる時間を、ミリ秒単位で記録する。 次に例を示す。
time:
   java
     exception
呼び出された関数が、Java クラスを通じて作成されたデータ サービスに属するものである場合に、例外が発生したらそれを記録する。 次に例を示す。
exception: {ld:DataServices/Demo/Java/Physical/PRODUCTS}getFirstProduct:0, line 4, column 5: {bea-err}JFW0401: Class or Method not found exception : {ld:DataServices/Demo/Java/Physical/PRODUCTS}getFirstProduct
     name
サービスの名前を記録する。 これは、例外プロパティが追加された場合には必ず記録される。 次に例を示す。
name: public static int Demo.Java.JavaSource4West.echoInt(int)
     parameters
サービスに渡される外部パラメータを記録する。 次に例を示す。
parameters:
     result
実行されたクエリの結果を記録する。 次に例を示す。
result:
     time
クエリの実行にかかる時間を、ミリ秒単位で記録する。 次に例を示す。
time:
   procedure
     datasource
データ ソースの名前を記録する。次に例を示す。
datasource: newDS
     exception
呼び出された関数が、ストアド プロシージャを通じて作成されたデータ サービスに属するものである場合に、例外が発生したらそれを記録する。 次に例を示す。
exception: weblogic.xml.query.exceptions.XQueryDynException:
{err}XP0021: "-ss": can not cast to {http://www.w3.org/2001/XMLSchema}decimal}
     name
プロシージャ識別子を記録する。 これは、例外プロパティが追加された場合には必ず記録される。 次に例を示す。
name: WIRELESS.SIDEEFFECT_REG_PACKAGE.READ2
     parameters
データ サービス メソッドに渡される外部パラメータを記録する。 次に例を示す。
parameters: s 2.2 22.0 ss
     rows
プロシージャの実行後に返される行数を記録する。次に例を示す。
rows:
     time
プロシージャの実行にかかる時間を、ミリ秒単位で記録する。 次に例を示す。
time:
   relational
     exception
リレーショナル データベースのクエリ例外が発生した場合は、それを記録する。 次に例を示す。
exception: com.bea.ld.wrappers.rdb.exceptions.RDBWrapperException:...
     parameters
データ サービス メソッドに渡される外部パラメータを記録する。次に例を示す。
parameters:
   ORDER_10_0
   ORDER_10_1
     rows
リレーショナル データベースから返される行数を記録する。次に例を示す。
rows:
     source
データベース ソース名を記録する。 これは、例外プロパティが追加された場合には必ず記録される。 次に例を示す。
source: cgDataSource1
     sql
クエリに使用される SQL 文を記録する。次に例を示す。
sql:
   SELECT '1' AS c15, t2."LINE_ID" AS c16, t2.
   FROM "RTLAPPLOMS"."CUSTOMER_ORDER_LINE_ITEM" t2
   WHERE ((? = t2."ORDER_ID") OR (? = t2."ORDER_ID")
     time
クエリの実行に消費した時間を、ミリ秒単位で記録する。 次に例を示す。
time:
   ws
     exception
呼び出された関数が、Web サービスを通じて作成されたデータ サービスに属するものである場合に、例外が発生したらそれを記録する。 次に例を示す。
exception: {bea-err}WSW0101: Unable to create Call : {ld:DataServices/ElectronicsWS/getCustomerOrderResponse}getCustomerOrder
     operation
実行されるデータ サービス メソッドを記録する。 次に例を示す。
operation: getCustomerOrder
     parameters
データ サービス メソッドに渡されるパラメータを記録する。 次に例を示す。
parameters: <ns0:getCustomerOrder xmlns:ns0="http://www.openuri.org/">
     result
クエリ実行後に返される結果を記録する。 次に例を示す。
result: <ns:getCustomerOrderResponse xmlns:ns="http://www.openuri.org/">
<CustOrders xmlns="http://temp.openuri.org/SampleApp/CustOrder.xsd">
<ORDER>
<ORDER_ID>ORDER_1_0</ORDER_ID>
<CUSTOMER_ID>CUSTOMER1</CUSTOMER_ID>
     time
クエリの実行に消費した時間を、ミリ秒単位で記録する。 次に例を示す。
time:
     wsdl
Web サービスの説明を記録する。 次に例を示す。
wsdl: http://localhost:7001/ElWS/cntrls/ElDBTest.jws?WSDL

関数を監査する

デフォルトでは、すべての直接呼び出された関数に対する監査は、アプリケーションの [監査] タブにおける query/service レコードから有効化できます。 しかし、監査対象を特定の関数のみに制限する場合は、query/service レコードのすべてのプロパティを [Never] に設定し、その後、下に示すように [監査を有効化] チェック ボックスを選択して個々の関数に対する監査を有効化します。

監査オプション

ある関数に対する監査が有効になっていると、その関数に対するすべての外部呼出しが監査されます。 [間接呼び出しの監査を有効化] チェック ボックスが選択されていると、他のデータ サービスから発生した呼び出しもまた、すべて監査されます。

注意 : 間接呼び出しの監査を有効化すると、その関数に対するクエリの最適化が無効になり、パフォーマンスが低下することがあります。

update 監査プロパティ

このセクションの監査情報は、更新関数の実行に関するすべての情報についてのものです。 ソースの更新にかかる時間、更新がいつ開始されたのか、ユニークなトランザクション ID などに関する情報を含みます。

表 9-7 update プロパティ
プロパティ
説明
extension
   id
更新されているソースの ID を記録する。
   time
更新にかかった時間をミリ秒単位で記録する。
relational
   exception
更新例外があれば、それを記録する。
   parameters
リレーショナル データベースの更新中に渡されたパラメータを記録する。
   rowsModified
正常に完了した際に、リレーショナル データベース内の更新された行数を記録する。
   source
データ ソース名を記録する。 これは、例外プロパティが追加された場合には必ず記録される。
   sql
リレーショナル データベースの更新中に使用される SQL 文を記録する。
   time
リレーショナル データベースの更新にかかった時間をミリ秒単位で記録する。
service
   dataservice
更新に使用されるデータ サービスを記録する。
   sdoCount
更新のために送信された最上位 SDO の数を記録する。
   time
更新にかかった実行時間の合計をミリ秒単位で記録する。

表 9-8 AquaLogic Data Services Platform のレコードおよびプロパティ監査オプション
オプション
説明
監査レベル
どの監査プロパティも、以下の監査レベルのいずれか 1 つに設定される。
  • [Always]。 この設定は、デフォルトの監査レベルをオーバーライドするが、グローバルな有効化/無効化の設定はオーバーライドしない。
  • [Default]。 グローバルなデフォルトの重大度設定に準拠する。
  • [Never]。 グローバルなデフォルトの重大度設定を無視する。 一部のエラーおよび失敗の場合には、プロパティ動作の監査が、監査レベルの設定に反して報告されたり無視されたりすることがある。
戻ることを許可する
特定のプロパティが、クライアント アプリケーションに戻ることを許可されるかどうかを決定する。
説明
プロパティの簡単な説明を提供する。

監査の重大度

重大度は、WebLogic Server セキュリティで提供されているものと類似しています。 WebLogic Server の詳細については、下記の「メッセージの重大度」を参照してください。


http://edocs.beasys.co.jp/e-docs/wls/docs81/ConsoleHelp/logging.html#1037756 

表 9-9 AquaLogic Data Services Platform 監査の重大度
レベル
説明
[Debug]
これは多くの場合、「詳細な」設定として言及される。 監査レポートに追加できるすべての監査プロパティが収集される。
[Information]
Information 以上の条件のプロパティが、監査レポート用に収集される。
[Warning]
Warning 以上の条件のプロパティが、監査レポート用に収集される。
[Failure]
Error 以上の条件のプロパティが、監査レポート用に収集される。

監査情報の取得

収集された監査情報は、次の方法で記録できます。

監査プロパティの値は、String、Integer、java.util.Date、Boolean、または String [ ] 型の Java オブジェクトとして表されます。

WebLogic Server セキュリティ フレームワーク

各監査イベントは、weblogic.security.spi.AuditEvent インタフェースのインスタンスとして、WebLogic Server セキュリティ フレームワークに送信されます。表 9-10 で、各イベントについて説明します。

表 9-10 WebLogic Server の監査イベント
getEventType()
イベントの種類を返す。この場合は、DSPaudit
getFailureException()
例外が発生した場合に、その種類を返す。
getSeverity()
イベントの重大度を返す。
toString()
XML 形式の表現で監査イベントの詳細を返す。

コンフィグレーションに応じて、各イベントは WebLogic Server 監査 API に非同期に送信し、AquaLogic Data Services Platform アプリケーションによってバッファできます。

weblogic.security.spi.AuditEvent インタフェースは、ld.server.audit.DSPAuditEvent インタフェースにおいて実装され、この ld.server.audit.DSPAuditEvent インタフェースがリスト形式ですべての情報を収集します。このリストでは各エントリが com.bea.dsp.DSPAuditEvent のインスタンスです。

DSPAuditEvent は、表 9-11 で説明するインタフェースを追加します。

表 9-11 AquaLogic Data Services Platform AuditEvent API
getAllRecords()
com.bea.ld.DSPAuditRecord のリストとしてすべてのレコードを返す。
getRecords(String recordType)
com.bea.ld.DSPAuditRecord のリストとして特定の種類のレコードを返す。
getProperty(String propertyId)
複数のレコード間にわたる、特定プロパティのすべての値を返す。
getApplication()
AquaLogic Data Services Platform アプリケーション識別子を返す。
getUser()
アプリケーション サーバ ユーザのユーザ名を返す。
getTimeStamp()
イベントが作成された時間を返す。
getEventKind()
イベントの種類 (EVALUATION_EVENTCONFIGURATION_EVENT、または UPDATE_EVENT) を返す。
getVersion()
イベントのバージョンを返す。たとえば、ALDSP 2.1 の場合は 2.1

com.bea.ld.DSPAuditRecord には、表 9-12 に示すインタフェースがあります。

表 9-12 DSP AuditRecord API
getRecordType()
レコードの種類を返す。たとえば、common/time/duration。
getAuditProperties()
レコード内のすべてのプロパティを返す。 String 識別子から Object 値にマップする。

この API の使い方を示す、サンプル セキュリティ サービス監査プロバイダが用意されています。

AquaLogic Data Services Platform クライアント API

com.bea.ld.DataServiceAudit クライアント サイド インスタンスを、com.bea.dsp.RequestConfig クラスの一部として使用し、クライアント API から監査情報を収集できます。 このクラスは、監査情報を収集し、処理が正常に行われた場合に、それを返します。 何らかの理由で処理が失敗した場合には、com.bea.ld.QueryException クラスを使用して、送出された例外の一部として情報を収集できます。

注意 : ストリーミング API を使用する場合、監査は返された XMLInputStream の close( ) メソッドが呼び出されるまで完了しません。 つまり、close( ) メソッドが呼び出されるまでは、サーバによって AuditEvent が監査プロバイダにディスパッチされず、RequestConfig.getDataServiceAudit() メソッドは null を返します。

以下に、監査情報を取得するために実行する必要がある 4 つの手順を、コード例と共に示します。

RequestConfig クラスを初期化する

次のコード例に示すように、RequestConfig クラスを初期化する必要があります。

RequestConfig requestCfg = new RequestConfig();
requestCfg.enableFeature(RequestConfig.RETURN_DATA_SERVICE_AUDIT);
requestCfg.enableFeature(RequestConfig.RETURN_AUDIT_PROPERTIES);
requestCfg.setStringArrayAttribute(RequestConfig.RETURN_AUDIT_PROPERTIES, new String[]
{"query/service/dataservice"});

RequestConfig オブジェクトを渡す

呼び出される処理に RequestConfig オブジェクトを渡す必要があります。 次のコード例では、呼び出される処理として getCustomer を使用しています。

CUSTOMERDocument [] custDocRoot1 = (CUSTOMERDocument [])custDS.invoke("getCustomer", params, requestCfg);

監査データをフィルタ処理する

データをフィルタ処理して、安全でないアクセスがそのデータに対して行われないようにします。 Data Services Platform Console でのコンフィグレーションにおいて、クライアントに戻ることを許可されている監査プロパティのみが、クライアント アプリケーションに返されます。

データ サービスの監査を取得する

次のコード例に示すように、RequestConfig オブジェクトからデータ サービスの監査を取得する必要があります。

DataServiceAudit query = requestCfg.retrieveDataServiceAudit(); 
監査プロパティを取得する

RequestConfig.RETURN_AUDIT_PROPERTIES は、監査プロパティの文字列識別子の配列です。 この要求属性を設定すると、指定されたプロパティは、Administration Console からは収集対象としてコンフィグレーションされていなくても、この特定の評価に関しては、収集されます。 これらは、許可されている場合のみ返されます。 RETURN_DATA_SERVICE_AUDIT 要求属性が有効化されていなければ、これらのプロパティのみが返されます。

RequestConfig.RETURN_DATA_SERVICE_AUDIT は、返されるすべての収集対象である監査情報 (クライアント アプリケーションに戻ることが許可されているもの) をコンフィグレーションします。

AquaLogic Data Services Platform のパフォーマンス プロファイリング

パフォーマンス プロファイリングにより、リレーショナル データベースに選択監査情報を格納できます。 AquaLogic Data Services Platform 監査プロバイダでサポートされるリレーショナル データベースは、Oracle、DB2、PointBase、Sybase、および MS SQL です。

監査イベントに関する情報は、テーブル内のレコードとして格納されます。 テーブルは、サーバ上で実行中の AquaLogic Data Services Platform アプリケーション、またはクラスタ内の共有サーバ上で実行中のアプリケーションのための監査イベントの記録に使用できます。

WebLogic Administration Console を使用して、パフォーマンス プロファイリング用に AquaLogic Data Services Platform 監査プロバイダをデプロイし、AquaLogic Data Services Platform Profiler MBean を使用してそれをコンフィグレーションできます。 デプロイメント時に設定する必要のあるコンフィグレーション パラメータについては、表 9-13 で説明します。

表 9-13 パフォーマンス プロファイリング用のコンフィグレーション パラメータ
パラメータ
説明
[Data Source]
JDBC データ ソースの名前。
[Table]
クエリ実行情報をログに記録する、JDBC データ ソース内のテーブルの名前。
[Source Table]
ソース アクセス情報をログに記録する、JDBC データ ソース内のテーブルの名前。
[Summary Table]
集約された情報 (概要) をログに記録する、JDBC データ ソース内のテーブルの名前。
[Event Buffer]
内部イベントバッファのサイズ。 プロファイラがイベントの処理を開始する前に、バッファに格納されるイベント数を決定する。
[Collect Execution Aggregate]
個々のクエリ実行の集約 (関数による) をメモリに格納する。最終的には、それをデータベースに書き込む。
[Aggregate Group Size]
集約がデータベースに書き込まれる前に、プロファイラによって処理されるイベント数。 デフォルト値は 10。
[Collect Execution Detail]
クエリの実行ごとに、クエリ内のソース アクセスの集約を含む行を、データベースに書き込む。 アプリケーション開発環境において有用である。
[Collect Source Detail]
クエリ内のすべてのソース アクセスについて、データベースに行を書き込む。 このパラメータを有効にするには、[Collect Execution Detail] をコンフィグレーションする必要がある。

パフォーマンス プロファイラを作成する

この節では、パフォーマンス プロファイラの作成に必要な手順を示します。

  1. 以下の監査プロパティを格納するテーブルを作成します。
    • common/time/timestamp
    • query/service/function
    • query/performance/evaltime
    • common/application/user
    • common/application/name
    • common/application/server
    • 上記のプロパティに加えて、以下も格納する必要があります。

    • 監査イベント例外に関する情報 (存在する場合)。
    • 監査イベント重大度。種類は I (Information)、W (Warning)、S (Success)、E (Error)、F (Failure)。
  2. JAR ファイルへのポインタを含むように CLASSPATH を変更します。
  3. WebLogic Server を起動します。
  4. 監査ページで、必要に応じてデータベース テーブルをコンフィグレーションします。
  5. WebLogic Administration Console の [セキュリティ プロバイダ] ページで、AquaLogic Data Services Platform 監査プロバイダをコンフィグレーションします。 詳細については、表 9-13 パフォーマンス プロファイリング用のコンフィグレーション パラメータを参照してください。
  6. WebLogic Server を再起動します。
  7. データ サービス アプリケーションを実行し、適用可能なデータベース ビジュアライザを使用して結果を表示します。
サンプル パフォーマンス プロファイラを使用する

AquaLogic Data Services Platform のインストール先のルート ディレクトリに、AquaLogic Data Services Platform 監査プロバイダのサンプル ファイル profiler.zip があります。 この zip ファイルには、次のファイルが格納されています。

 


サーバ ログのモニタ

サーバ ログ ファイルには、クエリをコンパイルおよび実行するのにかかった時間に関する情報が含まれます。 ログは、下記の場所にあります。

<BeaHome>\user_projects\domains\<domainName>\<serverName>\<server>.log 

WebLogic Server ログの詳細については、下記にある「WebLogic Server ログの表示」を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs81/logging/viewing.html

[全般] アプリケーション コンフィグレーション ページを使用して、アプリケーションごとに、ログのレベルをコンフィグレーションできます。 詳細については、「アプリケーションの全般的な設定」を参照してください。 ログ レベルには、次のものがあります。

開発モードのすべてのサーバに対して、デフォルトでデバッグ ロギングが発生します。 クライアント アプリケーションは、WebLogic Logger 機能を通じて、サーバ ログに寄与することができます。 詳細については、『WebLogic Server ロギング サービスの使い方』を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs81/logging/use_log.html

クエリ文字列は、AquaLogic Data Services Platform Console でログ レベルが Information に設定されており、WebLogic Administration Console がデバッグ メッセージを stdout にロギングするように設定されている場合に、サーバ ログ内に Debug レベルのログ メッセージとして反映されます。

 


WebLogic ドメインのモニタ

WebLogic Server Administration Console を使用すると、WebLogic (サーバ、JDBC 接続プール、JCA、HTTP、JTA サブシステム、JNDI、エンタープライズ Java Beans (EJB) などのリソース) がデプロイされているドメインの状態とパフォーマンスをモニタできます。

ドメイン ログは、次のディレクトリに格納されています。

<BeaHome>\user_projects\domains\<domainName>\<domainName>.log 

詳細については、『WebLogic Server のコンフィグレーションと管理』の「WebLogic Server ドメインのモニタ」を参照してください。

 


他のモニタ ツールの使用

OptimizeIt や JProbe プロファイラなどのパフォーマンス モニタ ツールを使用すると、高い CPU 使用率または共有リソース競合率を引き起こす AquaLogic Data Services Platform アプリケーション内の「ホット スポット」を発見できます。

詳細については、「WebLogic Server アプリケーションのチューニング」を参照してください。 パフォーマンス モニタ リソースのリストについては、『WebLogic Server パフォーマンス チューニング ガイド』の「関連情報 : パフォーマンス ツールと情報」を参照してください。


  ページの先頭       前  次