第2章 新機能

Cryostat 2.0 では、Cryostat 製品の使用を強化する新機能が導入されました。

Cryostat アプリケーションの API パーミッション

Cryostat Operator はサービスアカウントを作成し、続いて Cryostat アプリケーションがサービスアカウントを使用するように設定します。Cryostat Operator はサービスアカウントをチェックして、そのパーミッションが承認チェックによって予想されるものと同期したままになるようにします。

Cryostat 1 では、Cryostat Operator は独自のサービスアカウントのパーミッションを Cryostat アプリケーションに適用します。これにより、Cryostat アプリケーションに過剰なパーミッションが提供されます。

自動ルール

Cryostat 2.0 では、自動化されたルールを使用して、JFR が実行中のターゲットアプリケーションを継続的に監視できるようにすることができます。アプリケーションの再起動または再デプロイは必要ありません。

JVM フラグを設定して常に継続的な監視を有効にすることは可能ですが、この方法にはアプリケーションの再起動が必要になります。

Cryostat 2.0 には、自動化されたルールとテンプレートを作成するのに使用できる継続的な監視イベントテンプレートが含まれます。継続的なモニタリングイベントテンプレートを使用すると、JFR を指定してアプリケーションを継続的に監視するためのダウンタイムを短縮できます。

自動ルールには、以下の自動ルール定義を指定する必要があります。

  • 1 回限りのルール定義: JFR 設定用の 1 回限りの自動ルールの簡単な設定を作成できるようになりました。eventSpecifier プロパティーには、archiveの単純な文字列値が含まれます。
  • matchExpression 定義: 自動ルールを受け取る必要がある JVM ターゲットを定義する自動ルールの必須コンポーネント。Cryostat は、matchExpression 文字列式で定義された正規表現に一致する JVM ターゲットにルールを適用するのに使用されます。有効な文字列式には、セパレーター、演算子、および簡単な式が含まれます。

    • OpenShift ラベルまたはアノテーションを matchExpression 定義の条件として適用できます。

自動ルールを JSON 形式で Cryostat にアップロードすると、Cryostat は定義ファイルを検証します。

以前に定義された一致するターゲットのルール定義をすぐにアクティブにすることができます。ルール定義の作成後にターゲットを再度追加または再起動する必要はありません。

HTTP クエリー clean=true パラメーターをルール定義の DELETE 要求に追加して、ルール定義を削除できます。このパラメーターは、アクティブな録画のみを削除するように Cryostat に指示します。アーカイブされた記録は削除対象ではありません。

cert-manager API

Cryostat Operator の Create Cryostat ページで Enable cert-manager integation トグルボタンで、Cryostat アプリケーションの cert-manager を使用してエンドツーエンドの暗号化を有効または無効にすることができるようになりました。

図2.1 Enable cert-manager integation トグルボタン

*Enable cert-manager integation* トグルボタン

さらに、Cryostat Operator は、Cryostat をデプロイする前に cert-manager API があることを自動的にチェックするようになりました。これにより、Cryostat Operator が Cryostat を安全にデプロイできるようになります。必要性に応じて、Cryostat Operator cert-manager API チェックを無効にするように明示的に設定できます。

Cryostat Operator が cert-manager を必要とする Cryostat インスタンスを検出していても、cert-manager をインストールしていない場合は、OpenShift Web コンソールの Events ページの Cryostat インスタンスについての警告イベントを受け取ります。

デプロイメントシナリオツリービュー

アプリケーションを OpenShift またはサポートされる Kubernetes ディストリビューションにデプロイした後に、Cryostat の情報を JSON 形式のツリービューに表示できます。ツリービューで以下のコンポーネントを表示できます。

  • Pod
  • レプリカ
  • コンテナー
  • エンドポイント

エンドポイントリソースの監視

OpenShiftPlatformClient により、エンドポイントリソース監視がターゲット JVM の非同期ターゲット検出を自動的に設定できるようになります。

TargetEventGetHandlerでのイベント検索

TargetEventGetHandler を使用して、ターゲット JVM によって生成されたイベントタイプを一覧表示または検索できます。

HTTP API の動作変更

Cryostat 2.0 よりも前のバージョンでは、Vertx サーバーのハンドラーをインストールするかどうかを決定する際に、デフォルトの isAsync メソッド設定を true に上書きする可能性があります。

各 HTTP ハンドラーには、Cryostat の HTTP API エンドポイントを定義するコードが含まれます。isAsync メソッドは、HTTP ハンドラーが別のワーカースレッドまたはメインの webserver スレッドによって処理されるかどうかを定義します。

新しい環境変数

Cryostat 2.0 には、以下の 2 つの新しい環境変数が含まれています。

  • CRYOSTAT_TARGET_CACHE_MAX_CONNECTIONS。OpenShift Operator は、オープンな JMX 接続の最大数を指定する値に設定されます。
  • CRYOSTAT_TARGET_CACHE_TTL。OpenShiftオペレーターが、非アクティブから閉じる前にJMX接続をキャッシュする秒数を指定する値に設定します。
注記

OpenShift Operator はこれらの環境変数の値を自動的に判別するため、これらの環境変数について OpenShift Operator によって指定された値を変更することはできません。

新しいハンドラー

Cryostat 2.0 では、以下の V2 ハンドラーが導入されました。

  • AbstractAuthenticatedRequestHandler と似ていますが、V2 ハンドラー間で応答全体の応答形式を維持する AbstractV2RequestHandler
  • ターゲット JVM でサポートされる録画オプションを確認する TargetRecordingOptionsListGetHandler。録画を作成する前にこのハンドラーを使用します。そのため、ターゲット JVM でサポートされていない録画オプションを使用しません。
  • カスタマイズされたスナップショットの録画のためにターゲット応答を JSON 形式でエンコードする TargetSnapshotPostHandler。この V2 スナップショットハンドラーには、録画の名前、ダウンロード可能な録画ファイルの URL、自動化分析レポートの URL などが含まれます。
注記

V1 ハンドラーは V2 ハンドラーと同様のスナップショット操作を実行できますが、V1 ハンドラーの HTTP 応答はプレーンの文字列形式でのみレンダリングされ、スナップショットの録画の名前のみが含まれます。

Cryostat で利用可能な新規イベントテンプレート

Cryostat Web コンソールの利用可能な Target JVM テンプレートの一覧から cryostat.jfc イベントテンプレートを選択できるようになりました。

cryostat.jfc イベントテンプレートを選択すると、以下の Cryostat 設定が自動的に有効になります。

  • ステータスコード、期間などの HTTP 要求情報。
  • 期間、メッセージタイプなどの WebSocket メッセージ情報。
  • オープン、クローズ、失敗などの JMX 接続の状態。

事前設定された Grafana ダッシュボードイメージ

Cryostat 2.0 には、アプリケーションのメトリクスを表示するための事前設定された Grafana ダッシュボードイメージが含まれています。必要に応じて、独自の Grafana ダッシュボードイメージを作成することもできます。

Cryostat 1 は、Cryostat コンテナーのデプロイメント時に OpenShift Operator によって基本的なカスタマイズを提供する Grafana イメージを提供していました。

応答ステータスコードメッセージ

ClientUrlGetHandler エラーメッセージの応答ステータスコードメッセージが、エラーメッセージの前に表示されるようになりました。これはデフォルト設定です。カスタム例外メッセージは、エラーメッセージの応答ボディー部に残ります。

クライアント側の接続プロトコルのサポート

Cryostat 2 は、clientlib ディレクトリーのマウントポイントを追加するようになりました。これにより、追加の JAR ファイルを Cryostat クラスパスに追加できます。これは、JMX RMI の代替として、クライアント定義の接続プロトコルをサポートします。