Using Glowroot with Liferay
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

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 で 構成プラグイン に移動してプラグインを確認します。