Cryostat での自動化ルールの使用
概要
はじめに
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章 自動化ルールの概要
自動化ルールを使用すると、JFR を有効にして、実行中のターゲットアプリケーションを継続的に監視できます。アプリケーションの再起動または再デプロイは必要ありません。
継続的なモニタリングイベントテンプレートは Cryostat にあり、自動化ルールおよびテンプレートの作成に使用できます。継続的なモニタリングイベントテンプレートを使用すると、JFR を指定してアプリケーションを継続的に監視するためのダウンタイムを短縮できます。
ターゲットアプリケーションが Java Management Extensions (JMX) 接続を使用するように設定するか、エージェント HTTP API 接続を使用するように設定するかに関係なく、自動化ルールを定義できます。ターゲットアプリケーションの設定の詳細は、Java アプリケーションの設定 を参照してください。
次のガイドラインを考慮してください。
-
ターゲット JVM がエージェント HTTP API 接続を使用する場合は、ターゲットアプリケーションの設定で
cryostat.agent.api.writes-enabled
プロパティーをtrue
に設定するようにしてください。そうしないと、Cryostat エージェントは、自動化ルールに基づいて JFR レコーディングの開始、停止、および削除を行うオンデマンドリクエストを受け入れることができません。 ターゲット JVM が JMX 接続を使用する場合、それぞれが JMX 認証情報を必要とする複数のターゲット JVM に適用する自動ルールを作成する前に、各 JVM の認証情報を Cryostat Web コンソールに保存することを検討してください。Cryostat は各ターゲット JVM との接続を維持するため、認証情報を保存すると、自動化ルールが開始します。詳細は、JMX 認証情報の保存および管理 (Cryostat を使用した JFR レコーディングの管理) を参照してください。
Cryostat は、JMX 認証情報を
keyring
データベースに格納することもできます。このデータベースでは、JMX 認証情報は、Cryostat がCRYOSTAT_JMX_CREDENTIALS_DB_PASSWORD
環境変数で提供するユーザー提供のパスフレーズによって暗号化されます。
第2章 定義の作成
自動化ルールの定義を作成する際に、多数のオプションを設定できます。Cryostat は、自動化ルールを使用して、matchExpression
文字列式で定義された正規表現に一致するすべての JVM ターゲットにルールを適用します。OpenShift ラベルまたはアノテーションを matchExpression
定義の条件として適用できます。
自動化ルールのルール定義を指定した後に、一致するターゲットの再追加や再起動の必要はありません。一致するターゲットを定義した場合は、すぐにルール定義をアクティブ化できます。
既存の自動化ルールの定義を再利用する場合は、定義を JSON 形式で Cryostat にアップロードできます。
2.1. 既存の自動化ルールの有効化または無効化
Cryostat Web コンソールのトグルスイッチを使用して、既存の自動化ルールを有効または無効にすることができます。
前提条件
- Cryostat Web コンソールにログインしている。
- 自動化ルールを作成している。
手順
Cryostat Web コンソールから、Automated Rules をクリックします。Automated Rules ウィンドウが開き、自動化ルールが表に表示されます。
図2.1 自動化ルールの完了からの一致式の出力例
Enabled 列に、リストされた自動化ルールの 有効 ステータスが表示されます。ステータスに応じて、次のいずれかのアクションを選択します。
-
自動化ルールを有効にするには、トグルスイッチをクリックして
On
にします。Cryostat は、自動化ルールで定義されている各アプリケーションを、その一致式と照合してすぐに評価します。一致式がアプリケーションに適用されると、Cryostat はアプリケーションのパフォーマンスを監視する JFR レコーディングを開始します。 -
自動化ルールを無効にするには、トグルスイッチをクリックして
Off
にします。Disable your Automated Rule ウィンドウが開きます。選択した自動化ルールを無効にするには、Disable をクリックします。選択したルールによって作成されたアクティブなレコーディングも停止する場合は、Clean を選択し、Disable をクリックします。
-
自動化ルールを有効にするには、トグルスイッチをクリックして
2.2. 自動化ルールの定義の作成
Cryostat Web コンソールで自動化ルールを作成する際に、Cryostat がすべてのアプリケーションを選択するのに使用する一致式を指定できます。アプリケーションの選択後、Cryostat は、ルールによって定義された JFR イベントテンプレートを使用して新しいレコーディングを開始します。
以前に自動化ルールを作成し、Cryostat が新しいターゲットアプリケーションを識別する場合は、Cryostat は、新規アプリケーションインスタンスが式と一致し、関連するイベントテンプレートを使用して新しいレコーディングを開始するかどうかをテストします。
前提条件
- Red Hat OpenShift プロジェクトに Cryostat インスタンスを作成した。
- Java アプリケーションを作成している。
- OperatorHub オプションを使用して、Cryostat 2.4 を Red Hat OpenShift にインストールしている。
- Cryostat Web コンソールにログインしている。
手順
- Cryostat Web コンソールのナビゲーションメニューで、Automated Rules をクリックします。Automated Rules ウィンドウが開きます。
Create をクリックします。Create ウィンドウが開きます。
図2.2 自動化ルールの Create ウィンドウ (Graph View)
- Name フィールドにルール名を入力します。
Match Expression フィールドに、一致式の詳細を指定します。
注記疑問符アイコンを選択すると、Match Expression Hint スニペットに推奨の構文が表示されます。
Match Expression Visualizer パネルで Graph View オプションを選択すると、一致するターゲット JVM が強調表示されます。一致しないターゲット JVM はグレー表示されます。
オプション: Match Expression Visualizer パネルで List View を選択することもできます。これを選択すると、一致するターゲット JVM が展開可能な行の形式で表示されます。
図2.3 自動化ルールの Create ウィンドウ (List View)
- Template リストからイベントテンプレートを選択します。
Create をクリックして、自動化ルールを作成します。Automated Rules ウィンドウが開き、自動化ルールが表に表示されます。
図2.4 自動化ルールの完了からの一致式の出力例
一致式がアプリケーションに適用されると、Cryostat はアプリケーションのパフォーマンスを監視する JFR レコーディングを開始します。
- オプション: 自動化ルールのオーバーフローメニューから ダウンロード をクリックして、自動化ルールをダウンロードできます。その後、任意のテキストエディターでルール定義を設定するか、ローカルファイルシステムにファイルの追加コピーを作成できます。
2.3. Cryostat の Match Expression Visualizer パネル
Web コンソールの Match Expression Visualizer パネルを使用すると、選択したターゲット JVM アプリケーションの JSON 構造の情報を表示できます。情報を Graph View で表示するか List View モードで表示するかを選択できます。Graph View では、一致するターゲット JVM が強調表示されます。一致しないターゲット JVM はグレー表示されます。List View では、一致するターゲット JVM が展開可能な行の形式で表示されます。
一致するターゲット JVM の詳細を表示するには、強調表示されているターゲット JVM を選択します。表示されるウィンドウの Details タブに、アプリケーションのメタデータに固有の情報が表示されます。この情報のいずれかを一致式の構文として使用できます。一致式は、自動化ルールに指定できるルール定義パラメーターです。
一致式を指定して自動化ルールを作成すると、Cryostat は、自動化ルールで定義した各アプリケーションをその一致式と照合してすぐに評価します。一致式がアプリケーションに適用されると、Cryostat はアプリケーションのパフォーマンスを監視する JFR レコーディングを開始します。
2.4. JSON での自動化ルールのアップロード
既存の自動化ルールを Cryostat の Web コンソールにアップロードして再利用することで、実行中の Java アプリケーションの監視をすぐに開始できます。
前提条件
- プロジェクトに Cryostat インスタンスを作成している。Operator を使用して OpenShift に Cryostat をインストールする (Cryostat のインストール) を参照してください。
- Java アプリケーションを作成している。
- 自動化ルールファイルを JSON 形式で作成している。
- Cryostat Web コンソールにログインしている。
手順
- Cryostat Web コンソールのナビゲーションメニューで、Automated Rules をクリックします。Automated Rules ウィンドウが開きます。
Create ボタンの横にあるファイルアップロードアイコンをクリックします。
図2.5 自動化ルールのアップロードボタン
Upload Automated Rules ウィンドウが開きます。
Upload をクリックし、ローカルシステム上の自動化ルールファイルを見つけます。1 つ以上のファイルを Cryostat にアップロードできます。あるいは、ファイルエクスプローラーツールからファイルをドラッグし、Web コンソールの JSON File フィールドにドロップすることもできます。
重要Upload Automated Rules 機能は、JSON 形式のファイルのみを受け付けます。
図2.6 自動化ルール設定を含む JSON ファイルをアップロードできるウィンドウプロンプト
オプション: Upload Automated Rules 機能からファイルを削除する必要がある場合は、選択したファイルの X アイコンをクリックします。
図2.7 アップロードされた JSON ファイルの例
- Submit をクリックします。
2.5. Metadata ラベル
JFR が実行中のターゲットアプリケーションを継続的に監視できるようにする自動化ルールを作成すると、その自動化ルールによってメタデータラベルが自動的に生成されます。このメタデータラベルは、JFR レコーディングを生成する自動化ルールの名前を示します。レコーディングをアーカイブした後、メタデータラベルに対してクエリーを実行して、レコーディングを生成した自動化ルールを見つけることができます。
Cryostat は、アーカイブされたレコーディングの存続期間に合わせて、自動化ルールのメタデータラベルを保持します。
第3章 追加の自動化ルール関数
Cryostat Web コンソールから、自動化ルールの削除や JFR のコピーなど、追加の自動化ルール機能にアクセスします。
Cryostat 2.3 を作成し、その後 Cryostat 2.3 から Cryostat 2.4 にアップグレードした場合、Cryostat 2.4 はこれらの自動化ルールを自動的に検出します。
3.1. 自動化ルールの移行
Cryostat 2.4 は、Automated Rules テーブルに表示される自動化ルールを自動的にスキャンします。Cryostat 2.3 で自動化ルールを作成し、その後 Cryostat 2.4 にアップグレードした場合、Cryostat 2.4 は、選択した該当する JVM アプリケーションにこのルールを適用できます。
Cryostat が古い自動化ルールに対して、JVM アプリケーションをテストする方法に違いはありません。Cryostat がルール定義と選択した JVM アプリケーションの一致を検出すると、Cryostat はアプリケーションの JFR レコーディングを自動的に開始します。Cryostat 2.4 は、自動化ルールで定義した内容のみに基づいて JFR レコーディングの設定を行います。つまり、Cryostat 2.4 への移行を容易にするために、自動化ルールを再設定する必要はありません。
3.2. JFR データのコピー
情報を JVM アプリケーションのメモリーから OpenShift Container Platform (OCP) 上の Cryostat のアーカイブストレージの場所にコピーできます。
Cryostat Web コンソールから自動化ルールを作成すると、Archival Period フィールドに値を設定できます。数値の値は、秒、分、または時間で指定できます。指定されたアーカイブ期間で自動化ルールを作成した後に、Cryostat はルールに一致するターゲット JVM アプリケーションに再接続します。次に、Cryostat は、生成された JFR レコーディングデータをアプリケーションのメモリーから Cryostat のアーカイブ保存場所にコピーします。
さらに、Preserved Archives フィールドに値を入力します。このフィールドは、Cryostat がアプリケーションのメモリーから Cryostat のアーカイブストレージの場所に移動できる JFR レコーディングのコピー数に制限を設定します。たとえば、保存されたアーカイブ フィールドに値 10
を設定した場合、Cryostat はファイルのコピーが 10 個を超えると、アーカイブの保存場所には保存されません。Cryostat が、制限を超えるファイルの新規コピーを生成すると、Cryostat は最も古いバージョンをファイルの最新バージョンに置き換えます。
JFR レコーディングファイルのサイズ制限を設定し、Maximum Size および Maximum Age パラメーターの値を指定して、ターゲット JVM アプリケーションのメモリーに保存される期間の時間制限を指定することもできます。
前提条件
- Red Hat OpenShift プロジェクトに Cryostat インスタンスを作成した。
- Java アプリケーションを作成している。
- Cryostat Web コンソールにログインしている。
手順
- Cryostat Web コンソールのナビゲーションメニューで、Automated Rules をクリックします。Automated Rules ウィンドウが開きます。
- Create をクリックします。Create ウィンドウが開きます。
- Match Expression フィールドなど、必須フィールドに値を入力します。
- Archival Period フィールドに、秒、分、または時間単位で値を指定します。
- Preserved Archives フィールドに、保存するアーカイブレコーディングのコピーの数を入力します。
- Create をクリックして、自動化ルールを作成します。Automated Rules ウィンドウが開き、自動化ルールが表に表示されます。
3.3. 自動化ルールの削除
OpenShift Container Platform (OCP) で実行される Cryostat Web コンソールでは、簡略化された方法でルール定義を削除できます。
curl
ツールを使用して、自動化ルールを削除することもできます。curl
ツールは、DELETE
エンドポイントを使用して Cryostat インスタンスと通信します。リクエストで、clean=true
パラメーターを指定できます。これにより、選択したルールによって開始されたすべてのアクティブな Java Flight Recording (JFR) が停止されます。
前提条件
- Cryostat Web コンソールにログインしている。
- 自動化ルールを作成している。
手順
Cryostat Web コンソールのナビゲーションメニューで、Automated Rules をクリックします。Automated Rules ウィンドウが開き、既存のすべての自動化ルールが表に表示されます。
注記自動化ルールを作成していない場合は、Automated Rules ウィンドウに Create ボタンのみが表示されます。
- 表で、削除する自動化ルールを選択します。
その他のオプションアイコン (⋮) をクリックし、Delete をクリックします。
図3.1 自動化ルールテーブルからの削除オプション
Permanently delete your Automated Rule ウィンドウが開きます。
- 選択した自動化ルールを削除するには、Delete をクリックします。選択したルールによって作成されたアクティブなレコーディングも停止する場合は、Clean を選択し、Delete をクリックします。
Cryostat は自動化ルールを完全に削除します。
改訂日時: 2024-01-02