第3章 新機能
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
定義の条件として適用できます。
-
OpenShift ラベルまたはアノテーションを
自動化ルールを JSON 形式で Cryostat にアップロードすると、Cryostat は定義ファイルを検証します。
以前に定義された一致するターゲットのルール定義をすぐにアクティブにすることができます。ルール定義の作成後にターゲットを再度追加または再起動する必要はありません。
HTTP クエリー clean=true
パラメーターをルール定義の DELETE
要求に追加して、ルール定義を削除できます。このパラメーターは、アクティブなレコーディングのみを削除するように Cryostat に指示します。アーカイブされたレコーディングは削除対象ではありません。
cert-manager
API
Cryostat Operator の Create Cryostat ページにある Enable cert-manager integation トグルボタンで、Cryostat アプリケーションの cert-manager
を使用してエンドツーエンドの暗号化を有効または無効にできるようになりました。
図3.1 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 サーバーのハンドラーをインストールするかどうかを決定する際に、HTTP リクエストハンドラーがデフォルトの 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 Operator は、この変数を、非アクティブ状態が続いて終了するまで JMX 接続をキャッシュする秒数を指定する値に設定します。
OpenShift Operator はこれらの環境変数の値を自動的に判別するため、これらの環境変数について OpenShift Operator によって指定された値を変更することはできません。
新しいハンドラー
Cryostat 2.0 では、次の V2 ハンドラーが導入されています。
-
AbstractV2RequestHandler
:AbstractAuthenticatedRequestHandler
と同様に動作しますが、V2 ハンドラー間で応答全体の形式を維持します。 -
TargetRecordingOptionsListGetHandler
: ターゲット JVM でサポートされているレコーディングオプションを確認します。ターゲット JVM でサポートされていないレコーディングオプションを使用しないように、レコーディングを作成する前にこのハンドラーを使用してください。 -
TargetSnapshotPostHandler
: カスタマイズされたスナップショットのレコーディングのためにターゲット応答を JSON 形式でエンコードします。この 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
ディレクトリーのマウントポイントが追加されました。ここに Cryostat クラスパスにロードする追加の JAR ファイルを追加できます。これは、JMX RMI の代替として、クライアント定義の接続プロトコルをサポートします。