Cryostat を使用した JFR レコーディングの管理
概要
はじめに
Red Hat build of Cryostat は、JDK Flight Recorder (JFR) のコンテナーネイティブ実装です。これを使用すると、OpenShift Container Platform クラスターで実行されるワークロードで Java 仮想マシン (JVM) のパフォーマンスを安全にモニターできます。Cryostat を使用すると、Web コンソールまたは HTTP API を使用して、コンテナー化されたアプリケーション内の JVM の JFR データを起動、停止、取得、アーカイブ、インポート、およびエクスポートできます。
ユースケースに応じて、Cryostat が提供するビルトインツールを使用して、Red Hat OpenShift クラスターに直接レコーディングを保存して分析したり、外部のモニタリングアプリケーションにレコーディングをエクスポートして、レコーディングしたデータをより詳細に分析したりできます。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 セキュリティーオプション
Cryostat のセキュリティー設定を行うと、Cryostat インスタンスをより適切に保護できます。
Cryostat は、ターゲット JVM アプリケーションの認証情報を暗号化し、Red Hat OpenShift の永続ボリューム要求 (PVC) に格納されているデータベースに保存できます。Cryostat は、認証情報をデータベースに追加する HTTP リクエストと、その認証情報を使用してターゲットアプリケーションに接続する JMX 接続で SSL/TLS をサポートします。また、Cryostat は、ユーザーによって提供されたパスフレーズまたは Red Hat build of Cryostat Operator によって生成されたパスフレーズを使用して、データベース内の認証情報を暗号化します。
Cryostat Operator を使用すると、これらの証明書をシークレットに追加し、このシークレットを含むように Cryostat カスタムリソース (CR) を設定することにより、特定のアプリケーションからの SSL/TLS 証明書を信頼するように Cryostat を設定できます。詳細は、Red Hat build of Cryostat Operator を使用した Cryostat の設定: TLS 証明書の設定 を参照してください。
Cryostat Web コンソールの Security メニューをクリックすると、ターゲット JVM にインポートされた SSL/TLS 証明書のリストを表示できます。
図1.1 ターゲット JVM でインポートされた SSL 証明書一覧の表示

1.1. 認証情報の保存および管理
ターゲット JVM アプリケーションに対して Java Management Extensions (JMX) 認証または HTTP 認証を有効にすると、Cryostat がアプリケーションの JFR レコーディングにアクセスできるように、認証情報の入力を求められます。
Cryostat Web コンソールで Recordings または Events メニュー項目をクリックすると、コンソールで Authentication Required ウィンドウが開きます。ターゲット JVM アプリケーションのユーザー名およびパスワードを入力する必要があります。その後、レコーディングを表示したり、アプリケーションで追加のレコーディング操作を実行したりできます。
図1.2 Cryostat Authentication Required ウィンドウの例

Cryostat は、Cryostat エージェントまたはターゲット JVM への接続に使用する認証情報を保存します。
ターゲット JVM アプリケーションを再起動する必要がある場合は、アプリケーションの JFR レコーディングデータが失われないように、次のいずれかのタスクを完了してください。
- Cryostat Web コンソールの Recordings メニュー項目をクリックし、JFR レコーディングをアーカイブします。
- Cryostat アーカイブのストレージの場所にスナップショットのレコーディングをコピーするように Cryostat をスケジュールする自動化されたルールを作成します。
自動化されたルールを作成して複数のターゲット JVM をモニターする場合は、各ターゲット JVM 接続に対して認証情報を保存して再利用するように Cryostat を設定できます。この設定を使用すると、Cryostat Web コンソールでアプリケーションの JFR レコーディングに再度アクセスするときに、認証情報を再入力する必要がなくなります。
前提条件
- ターゲット JVM アプリケーションの JMX または HTTP 認証を有効にした。
手順
- Security メニュー項目をクリックします。
Store Credentials ウィンドウで、Add ボタンをクリックします。Store Credentials ウィンドウが開きます。
図1.3 Store Credentials ウィンドウの例
Match Expression フィールドに、一致式の詳細を指定します。
注記疑問符アイコンを選択すると、Match Expression Hint スニペットに推奨の構文が表示されます。
Save をクリックします。Store Credentials ウィンドウにテーブルエントリーが表示され、ターゲット JVM の Match Expression が示されます。
図1.4 Store Credentials ペインのテーブルエントリーの例
重要セキュリティー上の理由から、テーブルエントリーにはユーザー名やパスワードは表示されません。
- オプション: ターゲット JVM の保存済み認証情報を削除する場合は、このターゲット JVM のテーブルエントリーの横にあるチェックボックスを選択してから、Delete をクリックします。
第2章 JFR レコーディングのアーカイブ
アクティブな JFR レコーディングをアーカイブして、JFR レコーディングからのデータ損失を防ぐことができます。アーカイブした JFR レコーディングは、ダウンロードまたはアップロードできるため、ニーズに合わせてレコーディングを分析できます。
アーカイブした JFR レコーディングは、Archives メニューの All Targets、All Archives、および Uploads の 3 つの見出しのいずれかの下に時系列で表示されます。JFR レコーディングに対して実行したアクションによっては、レコーディングが各テーブルの下に表示される場合があります。
2.1. JDK Flight Recorder (JFR) のレコーディングのアーカイブ
アクティブな JFR レコーディングをアーカイブして、JFR レコーディングからのデータ損失を防ぐことができます。Cryostat が古い JFR レコーディングデータを新しいデータに置き換えてストレージ容量を節約したり、ターゲット JVM が突然停止または再起動したりすると、データの損失が発生する可能性があります。
レコーディングのアーカイブを作成すると、Cryostat はアクティブな JFR レコーディングのデータをコピーし、そのデータを Cryostat インスタンスの永続ストレージの場所に保存します。Red Hat build of Cryostat Operator は、この永続ストレージの場所を Red Hat OpenShift クラスター内の関連付けられた永続ボリューム要求 (PVC) に構築します。
JFR レコーディングは、その設定に関係なくアーカイブできます。さらに、JFR レコーディングからスナップショットをアーカイブすることもできます。
前提条件
- Cryostat インスタンスの認証情報を入力した。
- ターゲット JVM レコーディングを作成し、認証情報を入力しており、Recordings メニューにアクセスできる。JDK Flight Recorder (JFR) レコーディングの作成 (Cryostat を使用した JFR レコーディングの作成) を参照してください。
手順
Active Recordings タブで、JFR レコーディングのチェックボックスを選択します。Archive ボタンは、Active Recordings ツールバーで有効になります。
図2.1 JFR レコーディング用のアーカイブボタン
Archive ボタンをクリックします。Cryostat は、JFR レコーディングのアーカイブを作成します。
選択したターゲット JVM に関連するその他のレコーディングとともに、Archived Recordings タブの下からアーカイブされたレコーディングを表示できます。
または、All Targets テーブルの下からアーカイブされたレコーディングを表示できます。
図2.2 All Targets テーブルの下にリストされたターゲット JVM アプリケーションの例
ヒントアーカイブされたレコーディングがないターゲット JVM エントリーを削除するには、Hide targets with zero recordings チェックボックスを選択します。
JVM ターゲットエントリーの横にある下矢印 (v) をクリックすると、フィルター機能にアクセスできます。この機能では、ラベルを編集してフィルターを強化したり、Delete ボタンをクリックしてフィルターを削除したりできます。
- All Targets テーブルから、確認する各ターゲット JVM アプリケーションの横にあるチェックボックスを選択します。テーブルには、アーカイブされた各レコーディングとそのソースの場所がリスト表示されます。
All Archives テーブルに移動します。このテーブルは All Targets テーブルに似ていますが、All Archives テーブルには、Cryostat が Cryostat 内でアーカイブしたファイルからのターゲット JVM アプリケーションがリスト表示されます。
注記アーカイブされたファイルに認識可能な JVM アプリケーションがない場合、そのファイルは引き続き All Archives テーブルにリストされますが、見出し
lost
の下のネストされたテーブル内で開きます。オプション: アーカイブされたレコーディングを削除するには、特定のアーカイブされた JFR レコーディング項目の横にあるチェックボックスを選択し、プロンプトが表示されたら Delete をクリックします。
図2.3 アーカイブされた JFR レコーディングの削除
注記Cryostat は、ターゲット JVM アプリケーションのアドレス、アクティブなレコーディングの名前、作成されたアーカイブ済みレコーディングのタイムスタンプに基づいて、アーカイブされたレコーディングに名前を割り当てます。
2.2. アクティブなレコーディングまたはアーカイブされたレコーディングのダウンロード
Cryostat を使用して、アクティブなレコーディングまたはアーカイブされたレコーディングをローカルシステムにダウンロードできます。
前提条件
- Cryostat インスタンスの認証情報を入力した。
- JFR レコーディングを作成した。JDK Flight Recorder (JFR) レコーディングの作成 (Cryostat を使用した JFR レコーディングの作成) を参照してください。
- オプション: SSL 証明書をアップロードしたか、認証情報をターゲット JVM に提供した。
- オプション: JFR レコーディングをアーカイブした。JDK Flight Recorder (JFR) レコーディングのアーカイブ (Cryostat を使用した JFR レコーディングの管理) を参照してください。
手順
Cryostat インスタンスの Recordings メニューまたは Archives メニューに移動します。
注記以降の手順では、例として Recordings メニューを使用しますが、Archives メニューでも同様の手順を実行できます。
- Active Record タブまたは Archived Recordings タブをクリックして、必要なレコーディングを決定します。
リストされた JFR レコーディングを見つけ、そのオーバーフローメニューを選択します。
図2.4 JFR レコーディングのオーバーフローメニューの表示
以下のいずれかのオプションを選択します。
- オーバーフローメニューから、Download Recording をクリックします。オペレーティングシステムの設定に応じて、ファイル保存ダイアログが開きます。JFR バイナリーファイルと JSON ファイルを任意の場所に保存します。
- All Targets テーブルから、リストされている JFR レコーディングのオーバーフローメニューを選択します。Download をクリックして、アーカイブされたファイルを、メタデータとラベル情報を含む JSON ファイルとともにローカルシステムに保存します。
オプション: ダウンロードしたファイルを Java Mission Control (JMC) デスクトップアプリケーションで表示します。
注記.jfr
ファイルをダウンロードせずに、Cryostat アプリケーションでレコーディングからのデータを表示する場合は、View in Grafana オプションをクリックします。
2.3. JFR レコーディングを Cryostat のアーカイブ場所にアップロードする
ローカルシステムから Cryostat のアーカイブ場所に、JFR レコーディングをアップロードできます。
Cryostat ストレージ領域を節約するために、JFR レコーディングをスケールダウンまたは削除している可能性があります。JFR レコーディングをダウンロードした場合は、インスタンスのスケールアップまたは再デプロイ時に Cryostat インスタンスにアップロードできます。
さらに、以前の Cryostat インスタンスから新しい Cryostat インスタンスにファイルをアップロードすることもできます。Cryostat 分析ツールは、新しい Cryostat インスタンスにアップロードされたレコーディングを使用します。
前提条件
- Cryostat インスタンスの認証情報を入力した。
- JFR レコーディングを作成した。JDK Flight Recorder (JFR) レコーディングの作成 (Cryostat を使用した JFR レコーディングの作成) を参照してください。
- アクティブなレコーディングまたはアーカイブされたレコーディングのダウンロード (Cryostat を使用した JFR レコーディングの管理) を参照してください。
手順
Cryostat インスタンスの Archives メニューに移動します。
図2.5 Cryostat Web コンソールの Archives メニュー
オプション: Uploads テーブルから、アップロードされたすべての JFR レコーディングを表示できます。Uploads テーブルには、All Targets テーブルやその他の出力など、他のテーブルと同様のフィルタリングメカニズムも組み込まれています。Archives メニューのフィルタリングメカニズムを使用して、認識可能なターゲット JVM アプリケーションを持たない可能性があるアーカイブファイルを見つけることもできます。
図2.6 Archives メニューの Uploads テーブル
アップロードアイコンをクリックします。Re-Upload Archived Recording ウィンドウが、Cryostat Web インターフェイスに表示されます。
図2.7 Re-Upload Archived Recording ウィンドウ
- JFR File フィールドで、Upload をクリックします。
拡張子が
.jfr
のファイルである JFR レコーディングファイルを探し、Submit をクリックします。注記または、
.jfr
ファイルを JFR File フィールドにドラッグアンドドロップすることもできます。
JFR レコーディングファイルが Uploads テーブルで開きます。
図2.8 Uploads テーブルにある JFR レコーディングの例

第3章 イベントテンプレート
Cryostat には、デフォルトのイベントテンプレートが含まれています。これを使用すると、ターゲット JVM のパフォーマンスをモニターするための JFR レコーディングをすばやく作成できます。
3.1. イベントテンプレートタイプ
JDK Flight Recorder (JFR) レコーディングの作成時に、以下のいずれかのデフォルトのイベントテンプレートを選択できます。
-
Continuous
テンプレートは、一定の期間または明示的に停止されるまで、基本的なターゲット Java 仮想マシン (JVM) データを収集します。 -
Profiling
テンプレートは、一定の期間または明示的に停止されるまで、詳細なターゲット JVM データを収集します。 -
Quarkus
テンプレートは、ターゲット JVM に登録されている Quarkus 固有のフレームワークレベルの Representational State Transfer (REST) イベントの JVM データを収集します。 -
Hibernate
テンプレートは、ターゲット JVM に登録されている Hibernate Object Relational Mapping (ORM) イベントの JVM データを収集します。
これらのデフォルトのイベントテンプレートのいずれかを使用すると、ターゲット JVM のパフォーマンスを監視するための JFR レコーディングをすばやく作成できます。
テンプレートタイプ間の次の違いを考慮してください。
-
Continuous
とProfiling
テンプレートは、Target
テンプレートタイプの一部として提供されます。デフォルトのテンプレートのコピーをダウンロードし、カスタムコピーを変更して Cryostat Web コンソールにアップロードすることで、後でこれらのイベントテンプレートのいずれかをニーズに合わせて編集できます。たとえば、これらのデフォルトのイベントテンプレートにはアプリケーション固有のカスタムイベントが含まれていないため、これらのカスタムイベントをカスタムテンプレートに追加する必要があります。 -
Hibernate
およびQuarkus
テンプレートは、Preset
テンプレートタイプの一部として提供されます。プリセットイベントテンプレートの目的は、Cryostat の作成者またはコミュニティーによって提案された JFR イベントテンプレートを提供し、一般的なアプリケーションフレームワークのサポートを可能にすることです。ランタイムに作成または削除できるカスタムイベントテンプレートとは異なり、プリセットイベントテンプレートは読み取り専用であり、エンドユーザーが直接変更または削除することはできません。 -
Cryostat は
ALL
meta-template もサポートします。これを使用すると、JFR はターゲット JVM のすべてのイベントタイプをモニターできます。各イベントタイプにはデフォルト値があります。ALL
meta-template には XML 定義が含まれないため、ALL
meta-template の XML ファイルをダウンロードすることはできません。
3.2. カスタムイベントテンプレートの使用
デフォルトのイベントテンプレートのいずれかのコピーをダウンロードし、そのカスタムコピーを変更して Cryostat Web コンソールにアップロードすることで、カスタムイベントテンプレートを作成できます。デフォルトのイベントテンプレートにはアプリケーション固有のカスタムイベントが含まれていないため、これらのカスタムイベントをカスタムテンプレートに追加できます。
前提条件
- Installed Operators オプションを使用して、Cryostat 4.0 を Red Hat OpenShift にインストールしている。
- Red Hat OpenShift プロジェクトに Cryostat インスタンスを作成している。
手順
- Cryostat インスタンスの Dashboard パネルで、ドロップダウンリストから Target JVM を選択します。
オプション: Topology パネルで、Add to view アイコンを選択してターゲット JVM を定義できます。アイコンを選択すると、カスタムターゲット接続 URL を定義するためのウィンドウが開きます。
- Connection URL フィールドに、JVM の Java Management Extension (JMX) エンドポイントの URL を入力します。
- オプション: Alias フィールドに、JMX Service URL のエイリアスを入力します。
Create をクリックします。
図3.1 Create Target ダイアログボックス
Cryostat Web コンソールのナビゲーションメニューから、Events をクリックします。Web コンソールで Authentication Required ダイアログが開く場合があります。プロンプトが表示されたら、Authentication Required ダイアログボックスに Username と Password を入力し、Save をクリックしてターゲット JVM に認証情報を提供します。
注記選択したターゲット JMX で、JMX 接続に対して SSL 証明書が有効な場合は、プロンプトが表示されたら証明書を追加する必要があります。
Cryostat は、ターゲット JVM アプリケーションの認証情報を暗号化し、Red Hat OpenShift の永続ボリューム要求 (PVC) に格納されているデータベースに保存できます。
- Event Templates タブで、イベントテンプレートリストを見つけ、そのオーバーフローメニューを選択します。
オーバーフローメニューから Download をクリックします。オペレーティングシステムの設定に応じて、ファイル保存ダイアログが開きます。ファイルを任意の場所に保存します。
図3.2 イベントテンプレートのオーバーフローメニューの例
デフォルトのファイルエディターでファイルを開き、必要に応じてファイルを編集します。設定の変更を保持するには、ファイルを保存する必要があります。
注記後の段階でファイルの特定に役立つ
description
およびprovider
属性に値を追加できます。Events メニューから Event Templates タブに移動し、Upload アイコンをクリックします。Cryostat Web コンソールで Create Custom Event Template 開きます。
図3.3 Create Custom Event Template ウィンドウ
- Upload をクリックし、デフォルトのファイルエディターを使用して、1 つ以上の設定済みイベントテンプレートファイルを Cryostat Web コンソールにアップロードします。ファイルを Template XML ウィンドウにドラッグアンドドロップすることもできます。
- Submit ボタンをクリックします。Cryostat Web コンソールで Event Templates タブが開き、カスタムイベントテンプレートが表示されます。
オプション: イベントテンプレートを作成すると、次のいずれかのオプションを選択し、テンプレートを使用して JFR レコーディングを作成できます。
- Automated Rules メニューから Create をクリックし、Template リストからイベントテンプレートを選択します。
- Events メニューから、リストされているイベントテンプレートを見つけ、オーバーフローメニューから Create Recording を選択します。
- Recordings メニューの Active Recordings タブで、Create をクリックします。
第4章 統合アプリケーション
Cryostat は、JFR レコーディングに基づくデータの分析方法を強化できる特定のアプリケーションと統合されています。
4.1. Grafana での JFR レコーディングの表示
Cryostat 4.0 は Grafana アプリケーションと統合されているため、JFR レコーディングデータを Grafana でプロットできます。プロットデータを期間ごとに区切って表示し、ターゲット JVM アプリケーションのパフォーマンスを正確に分析できます。
前提条件
- Cryostat インスタンスの認証情報を入力した。
- JFR レコーディングを作成した。Cryostat Web コンソールでの JFR レコーディングの作成 を参照してください。
手順
- Cryostat インスタンスの Recordings メニューまたは Archives メニューに移動します。
- 必要に応じて、Active Recordings タブまたは Archived Recordings タブをクリックします。
JFR レコーディングを見つけ、オーバーフローメニューを選択します。
図4.1 JFR レコーディングの例で利用可能なオーバーフローメニュー項目
- オーバーフローメニューから View in Grafana オプションをクリックします。新しい Web ブラウザーウィンドウで Grafana アプリケーションが開きます。
- プロンプトが表示されたら、Grafana Web コンソールのログインページで Red Hat OpenShift の認証情報を入力します。ダッシュボードウィンドウが開き、JFR レコーディングのデータがさまざまな時系列プロットで表示されます。
オプション: プロットの時系列セグメントを選択して、プロットを操作します。画面上のデータが拡大され、その期間のデータのみが表示されます。
図4.2 プロットグラフありの Grafana ダッシュボード例
改訂日時: 2025-03-21