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 の JFR 作成オプション
Cryostat を使用すると、コンテナー化されたアプリケーションで JVM のパフォーマンスを監視する JDK Flight Recorder (JFR) レコーディングを作成できます。さらに、アクティブな JFR レコーディングのスナップショットを作成して、ターゲット JVM アプリケーションの特定の時点までの収集データをキャプチャーできます。
Cryostat は、JFR レコーディングを作成する次のさまざまな方法をすべてサポートしています。
- Cryostat Web コンソールを使用して、JMX またはエージェント HTTP 接続を使用しているターゲット JVM の JFR 記録を手動で作成できます。
- Cryostat サーバーは、JMX またはエージェント HTTP 接続経由でオンデマンドリクエストを送信し、自動化されたルールに基づいて JFR レコーディングを動的に開始できます。
- Cryostat エージェントは、エージェントハーベスター機能の一部として、指定されたイベントテンプレートに基づいて、エージェントの起動時に JFR 記録を自動的に開始できます。
- Red Hat build of Cryostat 2.4 以降では、Cryostat エージェントは MBean カスタムトリガーと特定のイベントテンプレートに基づいて JFR レコーディングを動的に開始できます。
このドキュメントの残りの部分では、Cryostat Web コンソールで JFR レコーディングを手動で作成する方法について説明します。
第2章 Cryostat Web コンソールでの JFR レコーディングの作成
コンテナー化されたアプリケーション内にある JVM のパフォーマンスを監視する JFR レコーディングを作成できます。JFR レコーディングの作成後は、JFR を起動して、ヒープおよび非ヒープのメモリー使用量など、JVM のリアルタイムデータをキャプチャーできます。
前提条件
- OperatorHub オプションを使用して、Cryostat 2.4 を Red Hat OpenShift にインストールしている。
- Red Hat OpenShift プロジェクトに Cryostat インスタンスを作成した。
Cryostat Web コンソールにログインしている。
- Red Hat OpenShift Web コンソールを使用して Cryostat アプリケーションの URL を取得できます。
手順
Cryostat Web コンソールの Dashboard パネルで、Target リストからターゲット JVM を選択します。
注記ターゲットアプリケーションの設定方法によっては、ターゲット JVM が JMX 接続またはエージェント HTTP 接続を使用している場合があります。ターゲットアプリケーションの設定の詳細は、Java アプリケーションの設定 を参照してください。
重要ターゲット JVM がエージェント HTTP 接続を使用しており、ターゲットアプリケーションが Cryostat エージェントをロードするように設定した場合は、
cryostat.agent.api.writes-enabled
プロパティーをtrue
に指定していることを確認してください。そうしないと、Cryostat エージェントは、JFR レコーディングの開始および停止のリクエストを受け入れることができません。図2.1 Cryostat インスタンスの Target JVM 選択例
オプション: Dashboard パネルで、ターゲット JVM を作成できます。Target リストから Create Target をクリックします。Create Custom Target ウィンドウが開きます。
- Connection URL フィールドに、JVM の Java Management Extension (JMX) エンドポイントの URL を入力します。
- オプション: 指定した Connection URL が有効かどうかをテストするには、Click to test をクリックし、サンプルノードイメージをテストします。Connection URL に問題がある場合は、問題の説明とトラブルシューティングのガイダンスを示すエラーメッセージが表示されます。
- オプション: Alias フィールドに、JMX Service URL のエイリアスを入力します。
Create をクリックします。
図2.2 Create Custom Target ウィンドウ
- Cryostat Web コンソールのナビゲーションメニューから、Recordings をクリックします。
オプション:ターゲット JVM の設定方法によっては、Web コンソールで Authentication Required ダイアログが開く場合があります。Authentication Required ダイアログボックスで Username および Password を入力します。Save をクリックして、認証情報をターゲット JVM に提供します。
図2.3 Cryostat Authentication Required ウィンドウの例
注記選択したターゲット JMX で、JMX 接続に対して Secure Socket Layer (SSL) 証明書が有効になっている場合は、プロンプトが表示されたらその証明書を追加する必要があります。
Cryostat は、ターゲット JVM アプリケーションのクレデンシャルを暗号化し、Red Hat OpenShift の永続ボリューム要求 (PVC) に格納されているデータベースに保存します。認証情報の保存および管理 (Cryostat を使用した JFR レコーディングの管理) を参照してください。
Active Recordings タブで、Create をクリックします。
図2.4 アクティブなレコーディングの作成例
Custom Flight Recording タブで、以下を行います。
- Name フィールドに、作成するレコーディングの名前を入力します。無効な形式で名前を入力すると、Web コンソールにエラーメッセージが表示されます。
Cryostat が既存のレコーディングを自動的に再起動するようにする場合は、Restart if recording already exists のチェックボックスを選択します。
注記すでに存在する名前を入力し、Restart if recording already exists を選択しないと、Create ボタンをクリックしても Cryostat はカスタムレコーディングの作成を拒否します。
- Duration フィールドで、指定された期間後にこのレコーディングを停止するか、停止せずに継続的に実行するかを選択します。レコーディングの停止後に Cryostat が新しい JFR レコーディングを自動的にアーカイブするようにするには、Archive on Stop をクリックします。
- Template フィールドで、レコーディングに使用するテンプレートを選択します。
次の例は、継続的な JVM モニタリングを示しています。これは、Continuous フィールドの上から Duration を選択することで有効にできます。この設定では、手動でレコーディングを停止するまでレコーディングが継続されます。また、この例では、Template フィールドで Profiling テンプレートが選択されています。これにより、トラブルシューティングを目的として、JFR レコーディングに追加の JVM 情報が提供されます。
図2.5 カスタムフライトレコーディングの作成例
その他のオプションにアクセスするには、次の展開可能なハイパーリンクをクリックします。
- Show advanced options: JFR レコーディングをカスタマイズするための追加オプションを選択できます。
- Show metadata options: カスタムラベルとメタデータを JFR レコーディングに追加できます。
Create をクリックして、JFR レコーディングを作成します。Active Recordings タブが開き、JFR レコーディングがリスト表示されます。
アクティブな JFR レコーディングが、コンテナー化されたアプリケーション内のターゲット JVM の場所でデータ収集を開始します。JFR レコーディングに固定期間を指定した場合、ターゲット JVM は設定された固定期間に達するとレコーディングを停止します。それ以外の場合は、手動でレコーディングを停止する必要があります。
オプション: Active Recording タブで、レコーディングを停止することもできます。
- JFR レコーディングの名前の横にあるチェックボックスを選択します。Cryostat Web コンソールで、Active Recordings タブのツールバーにある Stop ボタンが有効になります。
Stop をクリックします。JFR が
STOPPED
ステータスになり、ターゲット JVM のモニタリングが停止します。JFR はその後も Active Recording タブに表示されます。図2.6 アクティブなレコーディングの停止例
重要以下の状況が発生すると、JFR レコーディングのデータが失われる可能性があります。
- ターゲット JVM が失敗する
- ターゲット JVM が再起動する
- ターゲット JVM の Red Hat OpenShift デプロイメントがスケールダウンされる
JFR レコーディングをアーカイブして、JFR レコーディングのデータが失われないようにします。
関連情報
- SSL 証明書のアップロード (Cryostat を使用しが JFR レコーディングの管理) を参照してください。
- JDK Flight Recorder (JFR) レコーディングのアーカイブ (Cryostat を使用した JFR レコーディングの管理) を参照してください。
第3章 アクティブなレコーディングからのスナップショット作成
アクティブな JFR レコーディングのスナップショットを作成して、ターゲット JVM アプリケーションの特定の時点までの収集データをキャプチャーできます。スナップショットは、実行中の JFR レコーディングの特定の時間セグメントの開始点と終了点を持つチェックポイントマーカーのようなものです。
スナップショットは、ターゲット JVM アプリケーションのメモリーに保存されます。これはアーカイブとは異なり、Cryostat はアーカイブをクラウドストレージディスクに保存します。アーカイブは、JFR レコーディングのデータを保存するためのより永続的なソリューションです。
アクティブな JFR レコーディング間でさまざまな設定変更を試す場合は、レコーディングのスナップショットを作成するとよいでしょう。
JFR レコーディングのスナップショットを作成すると、Cryostat は snapshot -<snapshot_number>
という名前の新しいターゲット JVM を作成します。この場合、<snapshot_number>
は Cryostat がスナップショットに自動的に割り当てる番号です。
ターゲット JVM はスナップショットをアクティブなレコーディングとして認識します。Cryostat は、JFR スナップショットを STOPPED
状態に設定します。これは、JFR スナップショットがターゲット JVM に新しいデータをレコーディングしないことを意味します。JFR 設定によっては、アクティブな JFR レコーディングは、作成されたスナップショットの数にかかわらず、ターゲット JVM の監視を継続できます。
ターゲット JVM アプリケーションの継続的な監視用に設定した JFR レコーディングでは、JFR レコーディングデータの損失を回避するために、レコーディングのアーカイブを作成してください。
JFR レコーディングデータを保存するために通常のスナップショットを作成することを選択した場合、ターゲット JVM アプリケーションが、古いレコーディングデータを新しいレコーディングデータに置き換えて、データストレージ領域の一部を解放する場合があります。
前提条件
- Cryostat インスタンスの認証情報を入力した。
- ターゲット JVM レコーディングを作成し、認証情報を入力しており、Recordings メニューにアクセスできる。JDK Flight Recorder (JFR) レコーディングの作成 (Cryostat を使用した JFR レコーディングの作成) を参照してください。
手順
Active Records タブで、Create ボタンをクリックします。Web コンソールに新しいウィンドウが開きます。
図3.1 アクティブなレコーディングの作成例
Snapshot Recording タブをクリックします。
図3.2 スナップショットレコーディングの作成例
Create をクリックします。Active Recordings タブが開き、JFR スナップショットのレコーディングが一覧表示されます。次の例は、
snapshot-3
という名前の JFR スナップショットのレコーディングを示しています。図3.3 完成したスナップショットレコーディングの例
注記スナップショットは、アクティブなレコーディングのリストから snapshot の接頭辞で識別できます。
次のステップ
- JFR スナップショットレコーディングのアーカイブについては、JDK Flight Recorder (JFR) のレコーディングのアーカイブ を参照してください。
第4章 JFR レコーディングのラベル
Cryostat 2.4 で JDK Flight Recorder (JFR) レコーディングを作成する場合、一連のキーと値のラベルのペアを指定することで、記録にメタデータを追加できます。
さらに、ターゲット JVM 内にある JFR レコーディングにカスタムラベルを割り当てることができるため、JFR レコーディングを簡単に識別してより適切に管理できます。
一般的なレコーディングラベルの使用例を以下に示します。
- JFR レコーディングにメタデータを割り当てる。
- 同一のラベルを含むレコーディングに対してバッチ操作を実行する。
- レコーディングに対してクエリーを実行するときにラベルを使用する。
Cryostat を使用すると、コンテナー化されたアプリケーションで JVM のパフォーマンスを監視する JFR レコーディングを作成できます。さらに、アクティブな JFR レコーディングのスナップショットを作成して、ターゲット JVM アプリケーションの特定の時点までの収集データをキャプチャーできます。
4.1. JFR レコーディングへのラベルの追加
Cryostat 2.4 で JFR レコーディングを作成する場合、ラベルを使用して、キーと値のラベルペアを含むメタデータをレコーディングに追加できます。
Cryostat は、作成された JFR レコーディングにデフォルトのレコーディングラベルを適用します。これらのデフォルトラベルは、Cryostat が JFR レコーディングの作成に使用したイベントテンプレートに関する情報を取得します。
カスタムラベルを JFR レコーディングに追加すると、特定の JFR レコーディングを識別したり、同じラベルが適用されたレコーディングでバッチ操作を実行したりするなど、ニーズを満たす特定のクエリーを実行できます。
前提条件
- Cryostat Web コンソールにログインしている。
- Cryostat インスタンスのターゲット JVM を作成または選択している。
手順
- Cryostat Web コンソールから、Recordings をクリックします。
- Active Recordings タブで、Create をクリックします。
Custom Flight Recording タブで、Show metadata options を展開します。
注記Custom Flight Recording タブでは、アスタリスクが付いている必須フィールドに入力する必要があります。
Add label をクリックします。
図4.1 Custom Flight Recording タブに表示される Add Label ボタン
- 表示された Key フィールドと Value フィールドに値を入力します。たとえば、レコーディングに関する問題を報告する場合は、Key フィールドに理由を入力し、Value フィールドに問題の種類を入力できます。
Create をクリックして、JFR レコーディングを作成します。レコーディングは、指定されたレコーディングラベルおよびカスタムラベルとともに Active Recordings タブに表示されます。
ヒントArchives メニューから、アーカイブされた JFR レコーディングにアクセスできます。Cryostat アーカイブの場所への JFR レコーディングのアップロード (Cryostat を使用した JFR レコーディングの管理) を参照してください。
例
次の例は、2 つのデフォルトのレコーディングラベル template.name: Profiling
および template.type: TARGET
と、1 つのカスタムラベル reason:service-outage
を示しています。
図4.2 定義済みのレコーディングラベルとカスタムラベルを使用したアクティブなレコーディングの例

4.2. JFR レコーディングのラベルの編集
Cryostat Web コンソールで、Recordings メニューに移動して、JFR レコーディングのラベルとそのメタデータを編集できます。アーカイブにアップロードした JFR レコーディングのラベルとメタデータを編集することもできます。
前提条件
- Cryostat Web コンソールにログインしている。
- JFR レコーディングを作成し、このレコーディングにラベルを添付する。
手順
- Cryostat Web コンソールで、Recording メニューをクリックします。
- Active Recordings タブから、JFR レコーディングを見つけて、その横にあるチェックボックスを選択します。
Edit Labels をクリックします。Cryostat Web コンソールで Edit Recording Label ペインが開きます。このペインを使用して、JFR レコーディングのラベルを追加、編集、または削除できます。
ヒント各レコーディングの横にあるチェックボックスを選択すると、複数の JFR レコーディングを選択できます。同じラベルを含むレコーディングを一括編集する場合、または複数のレコーディングに新しい同一のラベルを追加する場合は、Edit Labels ボタンをクリックします。
オプション: Edit Recording Labels ウィンドウから、次のいずれかのアクションを実行できます。
- Add をクリックして、ラベルを作成します。
-
ラベルの横にある
X
をクリックして、ラベルを削除します。 - フィールドの内容を変更して、ラベルを編集します。内容を編集すると、編集したことを示す緑色のチェックマークがフィールドに表示されます。
- Save をクリックします。
オプション: 次の手順を実行して、JFR レコーディングをそのラベルとともにアーカイブできます。
- レコーディングの名前の横にあるチェックボックスを選択します。
Archive ボタンをクリックします。レコーディングは Archived Recordings タブで見つけることができます。
レコーディングをラベル付きでアーカイブすると、後でレコーディングを見つける場合に検索機能を強化できます。Cryostat アーカイブにアップロードした任意のレコーディングにラベルを追加することもできます。
注記Cryostat は、アーカイブされたレコーディングの存続期間中、レコーディングのラベルを保持します。
検証
- Active Recordings タブで、レコーディングの Labels セクションに変更内容が表示されていることを確認します。
改訂日時: 2024-01-02