| Oracle® Fusion Middleware Oracle WebLogic Server 診断フレームワークのコンフィグレーションと使い方 11g リリース 1 (10.3.1) B55523-01 |
|
![]() 戻る |
![]() 次へ |
WebLogic 診断フレームワークのインスツルメンテーション ライブラリには診断モニタと診断アクションが含まれています。以下の節では、これらのライブラリについて説明します。
インスツルメンテーション ライブラリの項目の使い方については、「インスツルメンテーションのコンフィグレーション」を参照してください。
診断モニタは、サーバ スコープのモニタとアプリケーション スコープのモニタに大別されます。サーバ スコープのモニタは WebLogic Server クラスのインスツルメントに使用できます。アプリケーション スコープのモニタはアプリケーション クラスのインスツルメントに使用します。DyeInjection モニタを除くすべてのモニタは代理モニタで、組み込みの診断アクションがありません。代わりに、モニタにアタッチされているアクションに委託して、診断アクティビティを実行します。
すべてのモニタには、それぞれのポイントカットがあらかじめコンフィグレーションされています。ただし、その作用を受ける実際の場所はインスツルメントされるクラスによって異なります。たとえば、Servlet_Before_Service モニタでは、さまざまなサーブレット実装のいろいろな場所にあるサーブレットまたは Java Server Page (JSP) サービス メソッドの入り口に診断コードが追加されます。
すべての代理モニタには、対応するアクションのみをアタッチできます。対応するかどうかはモニタの性質によって決まります。
次の表では、サーバ スコープ (WebLogic Server クラス) 内で使用できる診断モニタをリストして説明します。各モニタに対応する診断アクションについては、表の対応アクション タイプ カラムを参照してください。
表 B-1 サーバ スコープ内で使用する診断モニタ
| モニタ名 | モニタ タイプ | 対応アクション タイプ | ポイントカット |
|---|---|---|---|
|
Connector_Before_Inbound |
Before |
Stateless |
着信接続を処理するメソッドの入り口。 |
|
Connector_After_Inbound |
サーバ |
Stateless |
着信接続を処理するメソッドの出口。 |
|
Connector_Around_Inbound |
Around |
Around |
着信接続を処理するメソッドの入り口と出口。 |
|
Connector_Before_Outbound |
Before |
Stateless |
発信接続を処理するメソッドの入り口。 |
|
Connector_After_Outbound |
After |
Stateless |
発信接続を処理するメソッドの出口。 |
|
Connector_Around_Outbound |
Around |
Around |
発信接続を処理するメソッドの入り口と出口。 |
|
Connector_Before_Tx |
Before |
Stateless |
トランザクションの登録、登録解除、開始、ロールバック、コミットを行うメソッドの入り口。 |
|
Connector_After_Tx |
After |
Stateless |
トランザクションの登録、登録解除、開始、ロールバック、コミットを行うメソッドの出口。 |
|
Connector_Around_Tx |
Around |
Around |
トランザクションの登録、登録解除、開始、ロールバック、コミットを行うメソッドの入り口と出口。 |
|
Connector_Before_Work |
Before |
Stateless |
コネクタの作業項目のスケジューリング、開始、実行に関するメソッドの入り口。 |
|
Connector_After_Work |
After |
Stateless |
コネクタの作業項目のスケジューリング、開始、実行に関するメソッドの出口。 |
|
Connector_Around_Work |
Around |
Around |
コネクタの作業項目のスケジューリング、開始、実行に関するメソッドの入り口と出口。 |
|
DyeInjection |
Before |
組み込み |
要求がサーバに届く場所。 |
|
JDBC_Before_Commit_Internal |
Before |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_After_Commit_Internal |
After |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_Before_Connection_ Internal |
Before |
Stateless |
以下のメソッドの呼び出しの前。 Driver.connect DataSource.getConnection |
|
JDBC_After_Connection_Internal |
Before |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_Before_Rollback_Internal |
Before |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_After_Rollback_Internal |
After |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_Before_Start_Internal |
Before |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_After_Start_Internal |
After |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_Before_Statement_ Internal |
Before |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_After_Statement_ Internal |
After |
Stateless |
JDBC サブシステムの内部コード。 |
|
JDBC_After_Reserve_Connection_Internal |
After |
Stateless |
JDBC 接続が接続プールから控えられるとき。 |
|
JDBC_After_Release_Connection_Internal |
After |
Stateless |
JDBC 接続が接続接続プールに解放されますた後。 |
表 B-2 はアプリケーション スコープ (デプロイ済みアプリケーション) 内で使用できる診断モニタをリストします。各モニタに対応する診断アクションについては、表の対応アクション タイプ カラムを参照してください。
表 B-2 アプリケーション スコープ内で使用する診断モニタ
| モニタ名 | モニタ タイプ | 対応アクション タイプ | ポイントカット |
|---|---|---|---|
|
EJB_After_EntityEjbBusiness Methods |
After |
Stateless |
すべての EntityBean メソッドの出口。これは標準の EJB メソッドではない。 |
|
EJB_Around_EntityEjbBusinessMethods |
Around |
Around |
すべての EntityBean メソッドの入り口と出口。これは標準の EJB メソッドではない。 |
|
EJB_After_EntityEjbMethods |
After |
Stateless |
以下のメソッドの出口。 EnitityBean.setEntityContext EnitityBean.unsetEntityContext EnitityBean.ejbRemove EnitityBean.ejbActivate EnitityBean.ejbPassivate EnitityBean.ejbLoad EnitityBean.ejbStore |
|
EJB_Around_EntityEjbMethods |
Around |
Around |
以下のメソッドの出口。 EnitityBean.setEntityContext EnitityBean.unsetEntityContext EnitityBean.ejbRemove EnitityBean.ejbActivate EnitityBean.ejbPassivate EnitityBean.ejbLoad EnitityBean.ejbStore |
|
EJB_After_EntityEjbSemantic Methods |
After |
Stateless |
以下のメソッドの出口。 EnitityBean.set* EnitityBean.get* EnitityBean.ejbFind* EnitityBean.ejbHome* EnitityBean.ejbSelect* EnitityBean.ejbCreate* EnitityBean.ejbPostCreate* |
|
EJB_Around_EntityEjbSemanticMethods |
Around |
Around |
以下のメソッドの入り口と出口。 EnitityBean.set* EnitityBean.get* EnitityBean.ejbFind* EnitityBean.ejbHome* EnitityBean.ejbSelect* EnitityBean.ejbCreate* EnitityBean.ejbPostCreate* |
|
EJB_After_SessionEjbMethods |
After |
Stateless |
以下のメソッドの出口。 SessionBean.setSessionContext SessionBean.ejbRemove SessionBean.ejbActivate SessionBean.ejbPassivate |
|
EJB_Around_SessionEjbMethods |
Around |
Around |
以下のメソッドの入り口と出口。 SessionBean.setSessionContext SessionBean.ejbRemove SessionBean.ejbActivate SessionBean.ejbPassivate |
|
EJB_After_SessionEjbBusinessMethods |
After |
Stateless |
すべての SessionBean メソッドの出口。これは標準の EJB メソッドではない。 |
|
EJB_Around_SessionEjb BusinessMethods |
Around |
Around |
すべての SessionBean メソッドの入り口と出口。これは標準の EJB メソッドではない。 |
|
EJB_After_SessionEjbSemanticMethods |
After |
Stateless |
以下のメソッドの出口。 SessionBean.ejbCreateSessionBean.ejbPostCreate |
|
EJB_Around_SessionEjb SemanticMethods |
Around |
Around |
以下のメソッドの入り口と出口。 SessionBean.ejbCreate SessionBean.ejbPostCreate |
|
EJB_Before_EntityEjbBusinessMethods |
Before |
Stateless |
すべての EntityBean メソッドの出口。これは標準の EJB メソッドではない。 |
|
EJB_Before_EntityEjbMethods |
Before |
Stateless |
以下のメソッドの入り口。 EnitityBean.setEntityContext EnitityBean.unsetEntityContext EnitityBean.ejbRemove EnitityBean.ejbActivate EnitityBean.ejbPassivate EnitityBean.ejbLoad EnitityBean.ejbStore |
|
EJB_Before_EntityEjbSemanticMethods |
Before |
Stateless |
以下のメソッドの入り口。 EnitityBean.set* EnitityBean.get* EnitityBean.ejbFind* EnitityBean.ejbHome* EnitityBean.ejbSelect* EnitityBean.ejbCreate* EnitityBean.ejbPostCreate* |
|
EJB_Before_SessionEjb BusinessMethods |
Before |
Stateless |
すべての Entitybean メソッドの出口。これは標準の EJB メソッドではない。 |
|
EJB_Before_SessionEjbMethods |
Before |
Stateless |
以下のメソッドの入り口。 SessionBean.setSessionContext SessionBean.ejbRemove SessionBean.ejbActivate SessionBean.ejbPassivate |
|
EJB_Before_SessionEjb SemanticMethods |
Before |
Stateless |
以下のメソッドの入り口。 SessionBean.ejbCreate SessionBean.ejbPostCreate |
|
HttpSessionDebug |
Around |
組み込み |
getSession - 返された HTTP セッションを調べる 以下のメソッドの呼び出しの前後。 getAttribute setAttribute removeAttribute 調査点で、およそのセッションのサイズが計算され、生成されたイベントのペイロードとして格納される。このサイズはセッションをバイト配列にフラット化することで計算される。セッションをフラット化する際にエラーが発生した場合は、負のサイズが報告される。 |
|
JDBC_Before_CloseConnection |
Before |
Stateless |
以下のメソッドの呼び出しの前。 Connection.close |
|
JDBC_After_CloseConnection |
After |
Stateless |
以下のメソッドの呼び出しの後。 Connection.close |
|
JDBC_Around_CloseConnection |
Around |
Around |
以下のメソッドの呼び出しの前後。 Connection.close |
|
JDBC_Before_CommitRollback |
Before |
Stateless |
以下のメソッドの呼び出しの前。 Connection.commit Connection.rollback |
|
JDBC_After_CommitRollback |
After |
Stateless |
以下のメソッドの呼び出しの後。 Connection.commit Connection.rollback |
|
JDBC_Around_CommitRollback |
Around |
Around |
以下のメソッドの呼び出しの前後。 Connection.commit Connection.rollback |
|
JDBC_Before_Execute |
Before |
Stateless |
以下のメソッドの呼び出しの前。 Statement.execute* PreparedStatement.execute* |
|
JDBC_After_Execute |
After |
Stateless |
以下のメソッドの呼び出しの後。 Statement.execute* PreparedStatement.execute* |
|
JDBC_Around_Execute |
Around |
Around |
以下のメソッドの呼び出しの前後。 Statement.execute* PreparedStatement.execute* |
|
JDBC_Before_GetConnection |
Before |
Stateless |
以下のメソッドの呼び出しの前。 Driver.connect DataSource.getConnection |
|
JDBC_After_GetConnection |
After |
Stateless |
以下のメソッドの呼び出しの後。 Driver.connect DataSource.getConnection |
|
JDBC_Around_GetConnection |
Around |
Around |
以下のメソッドの呼び出しの前後。 Driver.connect DataSource.getConnection |
|
JDBC_Before_Statement |
Before |
Stateless |
以下のメソッドの呼び出しの前。 Connection.prepareStatement Connection.prepareCall Statement.addBatch RowSet.setCommand |
|
JDBC_After_Statement |
After |
Stateless |
以下のメソッドの呼び出しの後。 Connection.prepareStatement Connection.prepareCall Statement.addBatch RowSet.setCommand |
|
JDBC_Around_Statement |
Around |
Around |
以下のメソッドの呼び出しの前後。 Connection.prepareStatement Connection.prepareCall Statement.addBatch RowSet.setCommand |
|
JMS_Before_AsyncMessage Received |
Before |
Stateless |
以下のメソッドの入り口。 MessageListener.onMessage |
|
JMS_After_AsyncMessage Received |
After |
Stateless |
以下のメソッドの出口。 MessageListener.onMessage |
|
JMS_Around_AsyncMessage Received |
Around |
Around |
以下のメソッドの入り口と出口。 MessageListener.onMessage |
|
JMS_Before_MessageSent |
Before |
Stateless |
以下のメソッドの呼び出しの前。 QueSender send |
|
JMS_After_MessageSent |
After |
Stateless |
以下のメソッドの呼び出しの後。 QueSender send |
|
JMS_Around_MessageSent |
Around |
Around |
以下のメソッドの呼び出しの前後。 QueSender send |
|
JMS_Before_SyncMessage Received |
Before |
Stateless |
以下のメソッドの呼び出しの前。 MessageConsumer.receive* |
|
JMS_After_SyncMessage Received |
After |
Stateless |
以下のメソッドの呼び出しの後。 MessageConsumer.receive* |
|
JMS_Around_SyncMessage Received |
Around |
Around |
以下のメソッドの呼び出しの前後。 MessageConsumer.receive* |
|
JMS_Before_TopicPublished |
Before |
Stateless |
以下のメソッドの呼び出しの前。 TopicPublisher.publish |
|
JMS_After_TopicPublished |
After |
Stateless |
以下のメソッドの呼び出しの後。 TopicPublisher.publish |
|
JMS_Around_TopicPublished |
Around |
Around |
以下のメソッドの呼び出しの前後。 TopicPublisher.publish |
|
JNDI_Before_Lookup |
Before |
Stateless |
javax.naming.Context の lookup メソッドの呼び出しの前。 Context.lookup* |
|
JNDI_After_Lookup |
After |
Stateless |
javax.naming.Context の lookup メソッドの呼び出しの後。 Context.lookup* |
|
JNDI_Around_Lookup |
Around |
Around |
javax.naming.Context の lookup メソッドの呼び出しの前後。 Context.lookup* |
|
JTA_Before_Commit |
Before |
Stateless |
以下のメソッドの入り口。 UserTransaction.commit |
|
JTA_After_Commit |
After |
StatelessAdvice |
以下のメソッドの出口。 UserTransaction.commit |
|
JTA_Around_Commit |
Around |
Around |
以下のメソッドの入り口と出口。 UserTransaction.commit |
|
JTA_Before_Rollback |
Before |
Stateless |
以下のメソッドの入り口。 UserTransaction.rollback |
|
JTA_After_Rollback |
After |
StatelessAdvice |
以下のメソッドの出口。 UserTransaction.rollback |
|
JTA_Around_Rollback |
Around |
Around |
以下のメソッドの入り口と出口。 UserTransaction.rollback |
|
JTA_Before_Start |
Before |
Stateless |
以下のメソッドの入り口。 UserTransaction.begin |
|
JTA_After_Start |
After |
StatelessAdvice |
以下のメソッドの出口。 UserTransaction.begin |
|
JTA_Around_Start |
Around |
Around |
以下のメソッドの入り口と出口。 UserTransaction.begin |
|
MDB_Before_MessageReceived |
Before |
Stateless |
以下のメソッドの入り口。 MessageDrivenBean.onMessage |
|
MDB_After_MessageReceived |
After |
Stateless |
以下のメソッドの出口。 MessageDrivenBean.onMessage |
|
MDB_Around_MessageReceived |
Around |
Around |
以下のメソッドの入り口と出口。 MessageDrivenBean.onMessage |
|
MDB_Before_Remove |
Before |
Stateless |
以下のメソッドの入り口。 MessageDrivenBean.ejbRemove |
|
MDB_After_Remove |
After |
Stateless |
以下のメソッドの出口。 MessageDrivenBean.ejbRemove |
|
MDB_Around_Remove |
Around |
Around |
以下のメソッドの入り口と出口。 MessageDrivenBean.ejbRemove |
|
MDB_Before_SetMessageDriven Context |
Before |
Stateless |
以下のメソッドの入り口。 MessageDrivenBean.setMessage DrivenContext |
|
MDB_After_SetMessageDriven Context |
After |
Stateless |
以下のメソッドの出口。 MessageDrivenBean.setMessageDrivenContext |
|
MDB_Around_SetMessageDriven Context |
Around |
Around |
以下のメソッドの入り口と出口。 MessageDrivenBean.setMessageDrivenContext |
|
Servlet_Before_Service |
Before |
Stateless |
以下のサーブレットまたは JSP メソッドの入り口。 HttpJspPage._jspService Servlet.service HttpServlet.doGet HttpServlet.doPost Filter.doFilter |
|
Servlet_After_Service |
After |
Stateless |
以下のサーブレットまたは JSP メソッドの出口。 HttpJspPage._jspService Servlet.service HttpServlet.doGet HttpServlet.doPost Filter.doFilter |
|
Servlet_Around_Service |
Around |
Around |
以下のサーブレットまたは JSP メソッドの入り口と出口。 HttpJspPage._jspService Servlet.service HttpServlet.doGet HttpServlet.doPost Filter.doFilter |
|
Servlet_Before_Session |
Before |
Stateless |
以下のサーブレット メソッドの呼び出しの前。 HttpServletRequest.getSession HttpSession.setAttribute/ putValue HttpSession.getAttribute/ getValue HttpSession.removeAttribute/ removeValue HttpSession.invalidate |
|
Servlet_Around_Session |
Around |
Around |
以下のサーブレット メソッドの呼び出しの前後。 HttpServletRequest.getSession HttpSession.setAttribute/ putValue HttpSession.getAttribute/ getValue HttpSession.removeAttribute/ removeValue HttpSession.invalidate |
|
Servlet_After_Session |
After |
Stateless |
以下のサーブレット メソッドの呼び出しの後。 HttpServletRequest.getSession HttpSession.setAttribute/ putValue HttpSession.getAttribute/ getValue HttpSession.removeAttribute/ removeValue HttpSession.invalidate |
|
Servlet_Before_Tags |
Before |
Stateless |
以下の JSP メソッドの呼び出しの前。 Tag.doStartTag Tag.doEndTag |
|
Servlet_After_Tags |
After |
Stateless |
以下の JSP メソッドの呼び出しの後。 Tag.doStartTag Tag.doEndTag |
|
Servlet_Around_Tags |
Around |
Around |
以下の JSP メソッドの呼び出しの前後。 Tag.doStartTag Tag.doEndTag |
診断アクション ライブラリには、以下のアクションが含まれます。
これらの診断アクションは、上の 2 つの表で説明した代理モニタで使用できます。また、ユーザが定義してアプリケーション内で使用できるカスタム モニタと一緒に使用することもできます。各診断アクションは、対応モニタ タイプ カラムに示されている対応するモニタとのみ一緒に使用できます。いくつかの動作(たとえば、TraceElapsedTimeAction)がイベントペイロードを生成します。
このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。
TraceAction は、プログラムの実行中に作用場所に追跡イベントを生成します。以下の情報が生成されます。
タイムスタンプ
要求をユニークに特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子 (可能な場合)
ユーザ ID
アクション タイプ (つまり TraceAction)
ドメイン
サーバ名
インスツルメンテーション スコープ名 (たとえばアプリケーション名)
診断モニタ名
モジュール名
コード内でアクションを呼び出した場所、以下を含む。
クラス名
メソッド名
メソッド シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード (存在する場合)
このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。
DisplayArgumentsAction は、プログラムの実行中に作用場所にインスツルメンテーション イベントを生成し、メソッドの引数または戻り値をキャプチャします。
このアクションが実行されると、イベント アーカイブにディスパッチされるインスツルメンテーション イベントが発生します。インスツルメンテーション イベントが before モニタにアタッチされた場合は、ジョインポイントへの入力引数 (たとえばメソッド引数) がキャプチャされます。インスツルメンテーション イベントが after モニタにアタッチされた場合は、ジョインポイントからの戻り値がキャプチャされます。イベントは、以下の情報を保持します。
タイムスタンプ
要求をユニークに特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子 (可能な場合)
ユーザ ID
アクション タイプ (つまり DisplayArgumentsAction)
ドメイン
サーバ名
インスツルメンテーション スコープ名 (たとえばアプリケーション名)
診断モニタ名
モジュール名
コード内でアクションを呼び出した場所、以下を含む。
クラス名
メソッド名
メソッド シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード (存在する場合)
before モニタにアタッチされたときの入力引数 (存在する場合)
after モニタにアタッチされたときの戻り値 (存在する場合)
このアクションは Around アクションで、Around モニタ タイプに対応しています。
TraceElapsedTimeAction は 2 つのイベント (プログラム実行中の特定の場所の前と後) を生成します。
このアクションが実行されると、関連付けられたジョインポイントの実行前と実行後のタイムスタンプがキャプチャされます。そして、これらの差を計算することで経過時間が算出されます。このアクションでは、イベント アーカイブにディスパッチされるインスツルメンテーション イベントが生成されます。経過時間は、イベント ペイロードとして格納されます。イベントは、以下の情報を保持します。
タイムスタンプ
要求をユニークに特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子 (可能な場合)
ユーザ ID
アクション タイプ (つまり TraceElapsedTimeAction)
ドメイン
サーバ名
インスツルメンテーション スコープ名 (たとえばアプリケーション名)
診断モニタ名
モジュール名
コード内でアクションを呼び出した場所、以下を含む。
クラス名
メソッド名
メソッド シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード (存在する場合)
ジョインポイントの処理にかかった時間 (イベント ペイロードとして) (ナノ秒単位)
このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。
StackDumpAction は、プログラムの実行中に作用場所にインスツルメンテーション イベントを生成し、スタック ダンプをキャプチャします。
このアクションが実行されると、イベント アーカイブにディスパッチされるインスツルメンテーション イベントが生成されます。スタック トレースは、イベント ペイロードとしてキャプチャされます。イベントは、以下の情報を保持します。
タイムスタンプ
要求をユニークに特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子 (可能な場合)
ユーザ ID
アクション タイプ (つまり StackDumpAction)
ドメイン
サーバ名
インスツルメンテーション スコープ名 (たとえばアプリケーション名)
診断モニタ名
モジュール名
コード内でアクションを呼び出した場所、以下を含む。
クラス名
メソッド名
メソッド シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード (存在する場合)
スタック トレース (イベント ペイロードとして)
このアクションは Stateless アクションで、Before および After モニタ タイプに対応しています。
ThreadDumpAction は、プログラムの実行中に影響のある場所にインスツルメンテーション イベントを生成し、スレッド ダンプをキャプチャします (基底の VM のサポート対象となっている場合)。JDK 1.5 (Oracle JRockit および Sun) ではこのアクションをサポートします。
このアクションでは、イベント アーカイブにディスパッチされるインスツルメンテーション イベントが生成されます。このアクションは JRockit JVM でのみ使用できます。他の JVM の場合は無視されます。スレッド ダンプは、イベント ペイロードとしてキャプチャされます。イベントは、以下の情報を保持します。
タイムスタンプ
要求をユニークに特定する診断コンテキストからのコンテキスト識別子
トランザクション識別子 (可能な場合)
ユーザ ID
アクション タイプ (つまり ThreadDumpAction)
ドメイン
サーバ名
インスツルメンテーション スコープ名 (たとえばアプリケーション名)
診断モニタ名
モジュール名
コード内でアクションを呼び出した場所、以下を含む。
クラス名
メソッド名
メソッド シグネチャ
行番号
スレッド名
診断コンテキストによって保持されるペイロード (存在する場合)
スレッド ダンプ (イベント ペイロードとして)
このアクションは Around アクションで、Around モニタ タイプに対応しています。
実施のたびにイベントを永続化することなしに、MethodInvocationStatisticsAction はインメモリでのメソッド呼び出しの統計を計算します。そのため、収集された情報は InstrumentationRuntimeMBean を通じて利用可能になります。収集された情報は、ハーベスタ コンポーネントや監視と通知コンポーネントで使用できます。これによって、インスツルメンテーション システムからの要求情報と他の実行時 MBean からのメトリック情報を結合可能な監視ルールを作成することができます。
任意のスコープの WLDFInstrumentationRuntimeMBean インスタンスは、MethodInvocationStatisics 属性を使用して、コンフィグレーションされている診断 Around モニタにアタッチされている MethodInvocationStatisticsAction インスタンスから収集したデータをエクスポーズします。この属性が、以下のセマンティクスを持つネストされた構造を持つマップを返します。
MethodInvocationStatistics::= Map<className, MethodMap> MethodMap::= Map<methodName, MethodParamsSignatureMap> MethodParamsSignatureMap::= Map<MethodParamsSignature, MethodDataMap> MethodDataMap::= <MetricName, Statistic> MetricName:= min | max | avg | count | sum | sum_of_squares | std_deviation
エントリの最初のレベルのキーは、完全修飾クラス名です。次のレベルでは MethodMap というマップを生成しています。このマップのキーはメソッドの名前と別のネストされたマップ構造 MethodParamsSignatureMap の値です。MethodParamsSignatureMap は、メソッド入力引数シグネチャの文字列表現をキーとするエントリを持ち、別のマップ インスタンス MethodDataMap を返します。MethodDataMap は、サポートされているさまざまなメトリックの名前用の固定されたキー セットを持ちます。
MethodInvocationStatisticsAction インスタンスで集めたデータをハーベスタで収集するようにコンフィグレーションするには、WLDFHarvesterBean のインスタンスを次の指定とともにコンフィグレーションする必要があります。
Name=weblogic.management.runtime.WLDFInstrumentationRuntimeMBean
スコープはインスタンスのコンフィグレーションによって選択されます。
属性の指定では、ハーベスタで収集するデータを定義します。マップの一連の要素には、次の表記法でアクセスします。
MethodInvocationStatistics(className)(methodName)(methodParamSignature) (metricName)
各値の説明は次のとおりです。
className は、Java クラス名の完全修飾名。クラス名にはワイルドカード「*」を使用することができます。
methodName は任意のクラスから特定のメソッドを選択します。メソッド名にはワイルドカード「*」を使用することができます。
methodParamSignature はメソッドの入力引数の型をカンマ区切りのリストで表す文字列。シグネチャの指定では、引数名を除いた Java 型名のみを含めます。Java 言語と同様に、シグネチャ内のパラメータの順序には意味があります。
この要素ではワイルドカード「*」も使用できるため、メソッドの入力引数の型のリストを完全に指定する必要はありません。「*」は、methodParamSignature 式での指定箇所以降の位置で 0 個以上の引数の型に一致します。
また、「?」のワイルドカードも使用することができます。これは、パラメータの型の順序付けられたリスト内の任意の位置で単一の引数の型に一致します。
どちらのワイルドカードも式内の任意の場所に指定できます。「MethodInvocationStatistics の例」を参照してください。
metricName は、収集するために統計を示します。このキー内でワイルドカード「*」を使用すると、サポートされているすべてのメトリックを収集できます。
MethodInvocationStatistics の例
オーバーロードされた以下のメソッドを持つクラスを考えます。
package.com.foo;
public interface Bar {
public void doIt();
public void doIt(int a);
public void doit(int a, String s)
public void doIt(Stringa, int b);
public void doIt(String a, String b);
public void doIt(String[] a);
public void doNothing();
public void doNothing(com.foo.Baz);
}
次に、さまざまな統計データを収集する方法の例を示します。
MethodInvocationStatistics(com.foo.Bar)(*)(*)(*)
com.Foo.Bar のクラスにおけるすべてのメソッドのためにすべての統計を収集します。
MethodInvocationStatistics(com.foo.Bar)(doIt)()(*)
入力引数を持っていない doIt() メソッドのためにすべての統計を収集します。
MethodInvocationStatistics(com.foo.Bar)(doIt)(*)(*)
doIt() メソッドのためにすべての統計を収集します。
MethodInvocationStatistics(com.foo.Bar)(doIt)(int, *)(*)
doIt(int) と doIt(int、String) 方法のためにすべての統計を収集します。
MethodInvocationStatistics(com.foo.Bar)(doIt)(String[])(*)
doIt(String[]) メソッドのためにすべての統計を収集します。配列パラメータは、[] ペアーを型名に従って使用します。ハーベスタ に、スペースは重要ではありません。
MethodInvocationStatistics(com.foo.Bar)(doIt)(String, ?)(*)
2 つの入力パラメータを持ち、最初の引数の型が String である doIt メソッドのすべての統計データを収集します。例のクラスを使用して、これは doIt (ストリング、int) と doIt (ストリング、String)メソッドに合っています。
MethodInvocationStatistics(com.foo.Bar)(doNothing)(com.foo.Baz)(min|max)
doNothing() メソッドに対して、タイプ com.foo.Baz の単一入力パラメータで max と min 実行時間を収集します。
|
注意 : className にワイルドカードを使用すると、パフォーマンスに影響する場合があります。 |
監視ルールで MethodInvocationStatistics メトリックを使用するには、前の節で説明した同じ構文を使用できます。MetricName 要素をワイルドカード検索しない重要な監視ルールを作成できる、そして、特定のメソッドとして min、max、avg、count、sum、sum_of_squares、または std_deviation 変数を指定することができます。
JMX を使用してデータを収集する際に WLDFInstrumentationRuntimeMBean に対して getAttribute(“MethodInvocationStatistics”) メソッドを呼び出すと、サーバのパフォーマンスに影響する場合があります。これは、インスツルメントされたクラスによっては、ネストされたマップ構造に高価なシリアライゼーションを伴う大量のデータが含まれる場合があるためです。
JMX を使用してデータを収集する場合は、getMethodInvocationStatisticsData(String) メソッドを使用することをお勧めします。