Glowrootプラグインの開発
Liferay DXP 2023.Q4+/ポータル GA100+
Glowroot はさまざまな すぐに使用できるプラグインを提供します。 プラグイン API を使用して独自のものを構築することもできます。 Liferay 用の独自の Glowroot プラグインを開発するためのヒントをいくつか紹介します。 詳細については、 Glowroot インストルメンテーション を参照してください。
Glowroot FreeMarker プラグイン は、FreeMarker テンプレートを監視するために Liferay によって開発されたカスタム プラグインです。
モジュールファイルを追加する
プラグイン モジュールの bnd.bnd ファイルは、バンドル名、バンドル シンボリック名、およびバンドル バージョンを宣言します。
プラグイン モジュールの build.gradle ファイルは依存関係を宣言します。 次の構成もファイルに追加されます。
deployGlowroot {
finalizedBy deploy
}
liferay {
deployDir = file("${liferayHome}/glowroot/plugins")
}
GlowrootプラグインJSONファイルを追加する
モジュールの src/main/resources/META-INF/ フォルダー内の glowroot.plugin.json ファイルで、構成オプションを含むプラグインのプロパティが定義されています。 Liferay FreeMarker プラグインには、インストルメンテーション レベル (INFO、DEBUG、TRACE など) を設定するオプションがあります。
Javaクラスファイルを追加する
TemplatesAspect.java クラスには、次の注釈が含まれています。
@Shim: 対象のLiferayクラスとメソッドのインターフェースを作成します。 これは、Liferay クラスを依存関係として追加する代わりに使用されることに注意してください。@Pointcut: 追跡する Liferay クラスとメソッドを宣言します。@OnBefore: Liferay メソッドが実行される直前に実行される注釈とメソッド。 shim インターフェイスが利用されていることに注意してください。@OnReturn: Liferay メソッドの実行直後に実行される注釈とメソッド。@OnThrow: Liferay メソッドの実行後に例外が発生した場合に実行される注釈とメソッド。
詳細については、 org.glowroot.agent.plugin.api.weaving パッケージを参照してください。
その他の利用可能なインターフェース:
タイマーインターフェースは、ポイントカットで費やされた時間を返します。TraceEntryインターフェースは、ポイントカットでの遅いトランザクションまたはエラーの詳細を返します。トランザクションインターフェースは、ポイントカットでタイマー、スレッド プロファイル、およびトレース エントリをキャプチャするための集計を返します。
詳細については、 org.glowroot.agent.api パッケージを参照してください。
この TemplateAspect.java には、追跡する Liferay クラスごとに 1 つずつ、3 つの @Pointcut 宣言が含まれていることに注意してください。
このプラグイン モジュールには、UI のインストルメンテーション レベルの構成変更をリッスンする追加の TemplatesPluginProperties.java ファイルが含まれています。
カスタムプラグインのデプロイ
カスタム プラグインをデプロイするには、 $LIFERAY_HOME/glowroot/plugins フォルダーにドロップします。 必ずパッケージ com.liferay.glowroot.plugin.<plugin name>を使用してください。 新しいプラグインを作成するときに使用します。
注意: プラグインにカスタム パッケージが必要な場合は、 portal-ext.properties ファイル内の module.framework.properties.org.osgi.framework.bootdelegation プロパティで宣言してください。 例えば、
module.framework.properties.org.osgi.framework.bootdelegation=\
__redirected,\
com.liferay.expando.kernel.model,\
com.liferay.glowroot.plugin.*,\
com.liferay.portal.servlet.delegate,\
com.liferay.portal.servlet.delegate*,\
com.sun.ccpp,\
com.sun.ccpp.*,\
com.sun.crypto.*,\
com.sun.image.*,\
com.sun.imageio.plugins.*,\
com.sun.jmx.*,\
com.sun.jndi.*,\
com.sun.mail.*,\
com.sun.management.*,\
com.sun.media.*,\
com.sun.msv.*,\
com.sun.org.*,\
com.sun.tools.*,\
com.sun.xml.*,\
com.yourkit.*,\
jdk.*,\
org.glowroot.agent,\
org.glowroot.agent.*,\
sun.*,\
weblogic.jndi,\
weblogic.jndi.*
デプロイしたら、Glowroot で 構成 → プラグイン に移動してプラグインを確認します。