第3章 JMC Agent プラグイン
JMC Agent プラグインを使用して、JMC Agent 実装を Cryostat に追加できます。次に、JMC Agent を使用して、カスタム JFR イベントを実行中のターゲット JVM アプリケーションに追加できます。この操作では、JVM アプリケーションを再起動する必要はありません。
関連情報
3.1. JMC Agent プラグインを使用したカスタムイベントの追加
Cryostat を JMC Agent と組み合わせて使用すると、実行中の JVM アプリケーションで問題を診断する必要がある場合に詳細情報を提供できます。
JMC Agent JAR ファイルは、ターゲット JVM アプリケーションと同じ Red Hat OpenShift コンテナーに存在する必要があります。そうしないと、Cryostat はアプリケーションで JMC Agent 機能を使用することはできません。
Cryostat Web コンソールから、プローブテンプレートをアップロードしてから、これらのテンプレートを JVM アプリケーションに挿入することができます。これらのテンプレートプローブは、必要に応じて後で削除できます。プローブテンプレートは、Cryostat が処理できる一連のオブジェクトを記述し、Cryostat が JVM アプリケーションで一連の JMC Agent 操作を完了できるようにします。
JMC Agent でターゲット JVM アプリケーションを起動すると、Cryostat は、アプリケーションが JMC Agent で実行されているかどうかを自動的に検出します。
RHEL の場合、JMC パッケージは CodeReady Linux Builder (CRB) (Builder とも呼ばれる) リポジトリーによって提供されます。RHEL に JMC をインストールできるように、RHEL で CRB リポジトリーを有効にする必要があります。CRB パッケージは製品化された RHEL パッケージとして Source Red Hat Package Manager (SRPM) でビルドされるため、CRB パッケージは定期的に更新を受け取ります。JDK Mission Control (JMC) のダウンロードおよびインストール (Red Hat build of Cryostat での JDK Flight Recorder の使用) を参照してください。
前提条件
-
jmc
パッケージをダウンロードしてインストールしている。 - Adoptium Agent JAR ファイルをダウンロードしている。adoptium/jmc-build (GitHub) を参照してください。
-
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
フラグを使用して、Java アプリケーションを起動している。./<your_application> --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
はその例です。 - Java アプリケーションの JMC Agent を起動している。JDK Mission Control (JMC) エージェントの開始 (Red Hat build of Cryostat での JDK Flight Recorder の使用) を参照してください。
手順
Cryostat Web コンソールから、Events メニューに移動します。JMC Agent が Cryostat インスタンスに正常に追加された場合は、Event Templates ペインの下に Probe Templates ペインが開きます。
図3.1 Cryostat Web コンソールのプローブテンプレートタブ
注記Web コンソールで Authentication Required ダイアログボックスが開く場合があります。プロンプトが表示されたら、Authentication Required ダイアログボックスに Username と Password を入力し、Save をクリックして、JMX 認証情報をターゲット JVM に提供します。
希望するテキストエディターを使用して XML 設定ファイルを作成します。Cryostat がアプリケーションで実行するイベントなどの JFR イベント情報でファイルを設定します。
以下の例は、JFR イベント情報を含むカスタムプローブテンプレート XML ファイルを示しています。このファイルを Cryostat にアップロードすると、Cryostat は Cryostat Agent Plugin Demo Event と呼ばれるカスタム JFR イベントをアプリケーションに追加できます。Cryostat は、JMC Agent の
retrieveEventProbes
メソッドが呼び出されると JFR イベントを開始します。<jfragent> <!-- Global configuration options --> <config> <classprefix>__JFREvent</classprefix> <allowtostring>true</allowtostring>\ <allowconverter>true</allowconverter> </config> <events> <event id="cryostat.demo.jfr.event9"> <label>Cryostat Agent Plugin Demo Event</label> <description>Event for the agent plugin demo</description> <path>io/cryostat/demo/events</path> <stacktrace>true</stacktrace> <class>io.cryostat.core.agent.AgentJMXHelper</class> <method> <name>retrieveEventProbes</name> <descriptor>()Ljava/lang/String;</descriptor> </method> <location>WRAP</location> </event> </events> </jfragent>
Upload ボタンをクリックして、カスタムイベントテンプレートを Cryostat に追加します。Cryostat Web コンソールで Create Custom Probe Template が開きます。
図3.2 Cryostat Web コンソールの Create Custom Probe Template ウィンドウ
ヒントアップロードしたファイルをこの Template XML フィールドから削除する場合は、Clear ボタンをクリックします。
- Browse ボタンをクリックして XML ファイルを見つけます。
- ファイルをアップロードしたら、Submit をクリックします。カスタムプローブテンプレートファイルが Probe Templates テーブルで開きます。
- プローブテンプレートの横にあるオーバーフローメニューをクリックします。
- Insert Probes をクリックします。プローブは Probe Templates タブの下に表示され、Live Configuration タブの下のテーブルに表示されます。
- オプション: Live Configuration タブに移動し、アクティブなプローブごとに、Name、Class などの情報を表示できます。
- オプション: Live Configuration タブから、Remove All Probes をクリックして、表に記載されているプローブを削除できます。
検証
- Events メニューから、Event Types タブをクリックします。
-
XML 設定の名前付き JFR イベントがテーブルに一覧表示されていることを確認します。この手順で使用されている例では、
Cryostat Agent Plugin Demo Event
が表に表示されます。
関連情報
改訂日時: 2024-01-02