スクリプトプラグイン
Javaエージェントが提供するプラグインオプションを通じて、ユーザーが希望するコードをトレースデータに注入するか、メソッド実行前後に付加情報を追加する方法を提供します。メソッドの開始・終了時点で特定のコードを実行する場所を設定するオプションと、ユーザー定義型poolをモニタリングするためのクラス設定方法が含まれます。実際のプラグインの適用事例を通じて具体的な活用方法を提示し、モニタリングの柔軟性と細さを高める様々な設定例とAPIの使い方を案内します。
プラグインオプション
Javaエージェントプラグインは、メソッドの開始/終了部分に挿入して実行します。プラグインを適用する場所(クラス、メソッド)は、エージェントオプションで設定できます。
-
hook_trace_helper_start_patternsメソッ ドの開始部分にトレースプラグインを挿入するポイント(クラス、メソッド)を設定します。プラグインコードは、_
$WHATAP_HOME/plugin/TraceHelperStart.x_ファイルに記述してください。 -
hook_trace_helper_end_patternsメソッドの最後にトレースプラグインを挿入するポイント(クラス、メソッド)を設定します。プラグインコードは、_
$WHATAP_HOME/plugin/TraceHelperEnd.x_ファイルに記述してください。 -
hook_trace_helper_patternsメソッドの開始/終了の両方にトレースプラグインを挿入するポイント(クラス、メソッド)を設定します。プラグインコードは、
$WHATAP_HOME/plugin/TraceHelperStart.x, _$WHATAP_HOME/plugin/TraceHelperEnd.x_ファイルにそれぞれ記述してください。 -
custom_pool_classesユーザー定義プールをモニタリングするには、プール使用量の情報を含むクラスを設定します。プラグインコードは、_
$/WHATAP_HOME/plugin/CustomPool.x_に作成します。
プラグインの設定例
複数のクラスを設定する場合は、コンマ(,)を区切り文字として利用してください。パッケージ名の文字列の一部または全部を「*」に置き換えることができます。
-
パッケージとメソッド名を設定する場合
whatap.bytecode.instrument.PluginTestA.testA,whatap.bytecode.instrument.PluginTestB.testB -
パッケージとメソッド名を
*に置き換える場合*PluginTestA.testA,whatap.bytecode.instrument.PluginTestB.**.testA, *PluginTestB.testB -
全体を対象とする場合
*.* -
Custom Poolを設定する場合
Custom Poolは、識別子@パッケージ名の形に設定します。
例)Class名の前に
whatap_plugin_guideという識別子を設定します。識別子とクラスは@で区切ります。whatap_plugin_guide@com.ibm.ws.connectionpool.monitor.ConnectionPoolStats
プラグインコードの作成例
ほとんどの場合はオブジェクトを返すので、明示的な型変換処理が必要です。以下はプラグインコードの作成例です。
設定したメソッド開始時間をトレースに記録する
-
Javaエージェント
hook_trace_helper_patternsオプションに適用するメソッドをwhatap.confファイルに記述してください。$WHATAP_HOME/whatap.confhook_trace_helper_patterns=org.apache.catalina.connector.RequestFacade.* -
TraceHelperStart.xファイルにプラグインコードを作成します。
$WHATAP_HOME/plugin/TraceHelperStart.x// String prefixにクラス名、メソッド名を代入します。
String prefix = $point.class1 + "." + $point.method;
// WhaTapトレース属性名称を`prefix` + "st"にして現在の時間を設定します。
$ctx.setAttribute(prefix + "st", new Long(System.currentTimeMillis()));
// トレース情報に現在の時間を追加します。
$ctx.profile(prefix + " Start", new java.util.Date().toString());
トレース履歴にメソッドの開始時間を次のように表示します。
