Cryostat を使用した JFR レコーディングの管理
概要
はじめに
Red Hat build of Cryostat は、JDK Flight Recorder (JFR) のコンテナーネイティブ実装です。これを使用すると、OpenShift Container Platform クラスターで実行されるワークロードで Java 仮想マシン (JVM) のパフォーマンスを安全にモニターできます。Cryostat 2.4 を使用すると、Web コンソールまたは HTTP API を使用して、コンテナー化されたアプリケーション内の JVM の JFR データを起動、停止、取得、アーカイブ、インポート、およびエクスポートできます。
ユースケースに応じて、Cryostat が提供するビルトインツールを使用して、Red Hat OpenShift クラスターに直接レコーディングを保存して分析したり、外部のモニタリングアプリケーションにレコーディングをエクスポートして、レコーディングしたデータをより詳細に分析したりできます。
Red Hat build of Cryostat は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 セキュリティーオプション
Cryostat のセキュリティー設定を行うと、Cryostat インスタンスをより適切に保護できます。
アプリケーションは、JMX 認証ヘッダーを含む API リクエストを Cryostat に送信できます。その後、Cryostat はアプリケーションに接続できるように、認証チャレンジに合格する必要があります。Cryostat とターゲット JVM アプリケーションの間の接続を確立している間、Red Hat build of Cryostat Operator は認証情報をメモリー内に保存します。
Cryostat は、ターゲット JVM アプリケーションの認証情報を暗号化し、Red Hat OpenShift の永続ボリューム要求 (PVC) に格納されているデータベースに保存できます。Cryostat は、認証情報をデータベースに追加する HTTP リクエストと、その認証情報を使用してターゲットアプリケーションに接続する JMX 接続で SSL/TLS をサポートします。また、Cryostat は、ユーザーによって提供されたパスフレーズまたは Red Hat build of Cryostat Operator によって生成されたパスフレーズを使用して、データベース内の認証情報を暗号化します。
1.1. SSL 証明書のアップロード
Cryostat Web コンソールの Recordings または Events タブから SSL エラーメッセージを受け取った場合は、ターゲット JVM の SSL 証明書をアップロードする必要があります。そうしない場合、JFR レコーディング作成ツールなどの Cryostat ツールにアクセスできません。
前提条件
- Cryostat インスタンスの認証情報を入力した。
- Dashboard パネルからターゲット JVM を作成した。
- ターゲット JVM の SSL 証明書をダウンロードした。
手順
Cryostat インスタンスの Recordings メニューまたは Events メニューに移動します。
注記以降の手順では、例として Recordings メニューを使用しますが、Events メニューでも同様の手順を実行できます。
Recordings パネルで、ドロップダウンリストからターゲット JVM を選択します。ターゲット JVM に信頼できる SSL 証明書が含まれていない場合、次の例のようにプロンプトが表示されます。
図1.1 SSL エラーメッセージ
Security ボタンをクリックします。Cryostat Web コンソールでウィンドウが開き、Security ダイアログボックスが表示されます。
図1.2 Security ダイアログボックス
Upload ボタンをクリックします。Cryostat Web コンソールで Upload SSL certificate ウィンドウが開きます。
図1.3 Upload SSL certificate ウィンドウ
Browse ボタンをクリックして、ローカルシステムの SSL 証明書を見つけます。
重要SSL 証明書は、
binary
またはbase64
のいずれかの形式を使用して、DER でエンコードされている必要があります。Cryostat は、.der
および.cer
ファイル拡張子をサポートします。- Cryostat インスタンスを再起動します。
- Cryostat インスタンスの Recordings メニューに移動します。
- Web コンソールに Authentication Required というメッセージが表示された場合は、認証情報を入力します。一部のターゲット JVM では、監査目的でデータにアクセスする前に認証が必要です。
関連情報
1.2. 認証情報の保存および管理
ターゲット JVM アプリケーションに対して Java Management Extensions (JMX) 認証または HTTP 認証を有効にすると、Cryostat がアプリケーションの JFR レコーディングにアクセスできるように、認証情報の入力を求められます。
Cryostat Web コンソールで Recordings または Events メニュー項目をクリックすると、コンソールで Authentication Required ウィンドウが開きます。ターゲット JVM アプリケーションのユーザー名およびパスワードを入力する必要があります。その後、レコーディングを表示したり、アプリケーションで追加のレコーディング操作を実行したりできます。
図1.4 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.5 Store Credentials ウィンドウの例
Match Expression フィールドに、一致式の詳細を指定します。
注記疑問符アイコンを選択すると、Match Expression Hint スニペットに推奨の構文が表示されます。
Save をクリックします。Store Credentials ウィンドウにテーブルエントリーが表示され、ターゲット JVM の Match Expression が示されます。
図1.6 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) レコーディングの作成時に、以下のいずれかのデフォルトイベントテンプレートを選択できます。
- 一定期間、または明示的に停止されるまで、ターゲット Java 仮想マシン (JVM) の基本的なデータを収集する継続テンプレート。
- 一定期間、または明示的に停止されるまで、ターゲット Java 仮想マシン (JVM) の詳細なデータを収集するプロファイリングテンプレート。
どちらかのデフォルトイベントテンプレートを使用して、ターゲット JVM のパフォーマンスをモニターするための JFR レコーディングを迅速に作成できます。どちらのイベントテンプレートも、必要に応じて後で編集できます。たとえば、デフォルトイベントテンプレートにはアプリケーション固有のカスタムイベントが含まれないため、これらのカスタムイベントをカスタムテンプレートに追加する必要があります。
Cryostat は ALL
meta-template もサポートします。これを使用すると、JFR はターゲット JVM のすべてのイベントタイプをモニターできます。各イベントタイプにはデフォルト値があります。ALL
meta-template には XML 定義が含まれないため、ALL
meta-template の XML ファイルをダウンロードすることはできません。
前提条件
- Installed Operators オプションを使用して、Cryostat 2.4 を 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/TLS 証明書が有効な場合は、プロンプトが表示されたら証明書を追加する必要があります。
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 をクリックします。
関連情報
- JDK Flight Recorder (JFR) レコーディングの作成 (Cryostat を使用した JFR レコーディングの作成) を参照してください。
- SSL 証明書のアップロード (Cryostat を使用した JFR レコーディングの管理) を参照してください。
- JDK Flight Recorder (JFR) レコーディングのアーカイブ (Cryostat を使用した JFR レコーディングの管理) を参照してください。
- 自動化ルールの有効化または無効化 (Cryostat での自動化ルールの使用) を参照してください。
第4章 統合アプリケーション
Cryostat は、JFR レコーディングに基づくデータの分析方法を強化できる特定のアプリケーションと統合されています。
4.1. Grafana での JFR レコーディングの表示
Cryostat 2.4 は Grafana アプリケーションと統合されているため、Grafana で JFR レコーディングデータをプロットできます。プロットデータを期間ごとに区切って表示し、ターゲット JVM アプリケーションのパフォーマンスを正確に分析できます。
前提条件
- Cryostat インスタンスの認証情報を入力した。
- JFR レコーディングを作成した。JDK Flight Recorder (JFR) レコーディングの作成 (Cryostat を使用した JFR レコーディングの作成) を参照してください。
手順
- Cryostat インスタンスの Recordings メニューまたは Archives メニューに移動します。
- 必要に応じて、Active Recordings タブまたは Archived Recordings タブをクリックします。
JFR レコーディングを見つけ、オーバーフローメニューを選択します。
図4.1 JFR レコーディングの例で利用可能なオーバーフローメニュー項目
- オーバーフローメニューから View in Grafana オプションをクリックします。新しい Web ブラウザーウィンドウで Grafana アプリケーションが開きます。
- Grafana ダッシュボードのサインインアイコンをクリックします。
ターミナルで以下のコマンドを実行し、認証情報を確認します。
<cryostat_name>=$(kubectl get cryostat -o jsonpath='{$.items[0].metadata.name}') oc get secret $<cryostat_name>-grafana-basic -o jsonpath='{$.data.GF_SECURITY_ADMIN_USER}' | base64 -d oc get secret $<cryostat_name>-grafana-basic -o jsonpath='{$.data.GF_SECURITY_ADMIN_PASSWORD}' | base64 -d
また、Red Hat OpenShift の Cryostat details ページにある Grafana Secret カスタムリソース (CR) から認証情報を見つけることもできます。
図4.2 OpenShift における Cryostat details ページの Grafana Secret CR
- Grafana Web コンソールのログインページに認証情報を入力します。ダッシュボードウィンドウが開き、JFR レコーディングのデータがさまざまな時系列プロットで表示されます。
オプション: プロットの時系列セグメントを選択して、プロットを操作します。画面上のデータが拡大され、その期間のデータのみが表示されます。
図4.3 プロットグラフありの Grafana ダッシュボード例
改訂日時: 2024-01-02