第4章 機能拡張
Cryostat 2.0 には、Cryostat 1 の機能に基づいて構築された機能拡張が含まれています。
Cryostat Web コンソールの GUI
Cryostat Web コンソールの右上隅にある Help アイコンを使用して Cryostat 情報ページにアクセスできます。このコンソールページで、Cryostat のバージョンを表示できます。
また、アーカイブされたレコードの生成された名にターゲットエイリアスが含まれるようになりました。ターゲットエイリアスにより、エイリアスがレコードの生成された名前にリンクされるため、レコードの取得が向上します。
Cryostat Operator トポロジービュー
Cryostat Operator が、正しい app.openshift.io/connects-to
アノテーションを Cryostat デプロイメントに適用するようになりました。この設定により、OpenShift Container Platform Web コンソールのトポロジービューで、Cryostat デプロイメントが Cryostat Operator デプロイメントにリンクされます。
Cryostat Operator コントローラーマネージャー
cert-manager
インストールしなかったために Cryostat Operator が Cryostat のデプロイに失敗した場合でも、Cryostat カスタムリソースを削除するときに Cryostat Operator がハングしなくなりました。
Cryostat クラスター ConsoleLink
namespace
Cryostat 2.0 では、Cryostat Operator クラスターが Cryostat クラスター用に重複した ConsoleLink
namespace を作成する場合があります。この問題を回避するために、Cryostat Operator は GenerateName
オブジェクトを ConsoleLink
リソース定義の Name
オブジェクトで定義された SH256
ハッシュ値に置き換えるようになりました。
カスタムイベントテンプレート
カスタムイベントテンプレートを使用して、すべての Cryostat JFR レコーディングを設定できます。カスタムイベントテンプレートは、以下の方法で使用できます。
-
Cryostat Operator に、保存された
ConfigMap
オブジェクトのテンプレートファイルを指定して Cryostat カスタムイベントテンプレートを事前設定するよう指示します。 - Cryostat Web アプリケーションを使用してカスタムイベントテンプレートをアップロードします。
サポートされる形式による SSL/TLS 証明書のエンコード
ターゲット JVM アプリケーションの Cryostat Web コンソールインターフェイスに SSL/TLS 証明書を追加できます。
有効な SSL/TLS 証明書は、DER でエンコードされた base-64
または binary
形式です。どちらの形式でも次の拡張子がサポートされています。
-
.der
-
.cer
-
.pem
生成された証明書を実行時に指定できるようになりました。これにより、ターゲット JVM アプリケーションが JMX 接続に SSL/TLS を使用できるようになります。Cryostat は、SSL/TLS 証明書を使用するターゲット JVM への JMX 接続を開くことを試みます。JMX 接続を成功させるには、実行時に指定したターゲット JVM 証明書に対するすべての認証チェックに Cryostat が合格する必要があります。
POST
ハンドラーを使用して、証明書の受け入れ、検証、書き込みを行うことができます。
Fabric8 Kubernetes および OpenShift クライアント
Cryostat 2.0 は、Fabric8 Kubernetes および OpenShift クライアントのバージョン 4.12.0 をサポートします。このバージョンでは、Cryostat とのアプリケーションの互換性が強化され、ダウンストリームのビルドエラーが減少します。
Grafana コンテナーのバージョン
Cryostat 2.0 では、Grafana コンテナーのバージョン 6.4.4 がバージョン 7.3.6 に置き換わります。
Grafana エラーメッセージ
502
エラーメッセージは失敗した JMX 接続に関連するものであり、512
エラーメッセージは JFR コンテナーに送信された無効な応答に関連するものです。
ヘルスチェックリソースの定義
Cryostat Operator の api/v1/clienturl
リソース定義が health
リソース定義に置き換わります。Cryostat Operator は、コンテナー化された JVM ヘルスチェックの実行時に health
エンドポイントを使用するようになりました。
initialization-resource
アノテーション
Cryostat Operator の CSV ファイルの設定に initialization-resource
アノテーションが含まれるようになりました。このアノテーションは、Cryostat クラスターの Cryostat カスタムリソースを作成するためのグラフィカルなヒントを提供して、OpenShift Container Platform Web コンソールで実行される Cryostat Operator インスタンスを強化します。
OLM バンドル記述子
Cryostat 2.0 の OLM バンドルでは、JFR レコーディングの期間をチェックするために、eventOptions
記述子に整数値を設定する必要がなくなりました。代わりに、OLM バンドルは EventOptions
文字列で定義される期間形式の値を使用するようになりました。
サポートされる期間単位には、s
、m
、および h
があります。たとえば、2h15m
は、2 時間 15 分の JFR レコーディングの長さを示します。
SCC (Security Context Constraints)
Cryostat Operator はデフォルトで restricted
SCC 設定を使用するようになりました。Cryostat クラスターに含まれる Pod が、restricted
SCC 設定にリスト表示されている許可された fsGroup
の値を使用できるようになりました。これにより、永続ストレージ (PV) にマウントされた Cryostat Pod が、そのディレクトリーへの読み取り/書き込みアクセス権を持つことができます。
Pod の読み取り/書き込みアクセスレベルは、Pod の fsGroup
GID の値により異なります。Cryostat Operator は、この値をビルトインの制限付き SecurityContextConstraint
に準拠するように設定します。SecurityContext
要素には、Pod レベルのセキュリティー属性が含まれます。
Cryostat 2.0 より前のバージョンでは、Cryostat Operator が default
設定に設定されていたため、Cryostat クラスターで実行する Pod の fsGroup
アクセスの問題が生じました。
Cryostat クラスターで許可される fsGroup
値の範囲についての詳細は、OpenShift ドキュメントの Web サイトの About pre-allocated security context constraints values を参照してください。
ServiceRef
定義
ServiceRef
定義には、HTTP API ハンドラーを使用した GET
通信から返されたすべての ServiceRef
オブジェクトに含まれる以下の新しいプロパティーが含まれています。
- Java アプリケーション名、ラベル、ポート番号などのアノテーション。
-
エイリアスや
connectURL
などのユーザー固有のServiceRef
値。
以下の 2 つのハンドラーを使用して ServiceRef
定義を作成または削除できます。
-
POST
: 同じサービス URL を持つ既存のターゲットが存在しない場合に、新規のServiceRef
を作成します。 -
DELETE
:targetID
パスパラメーターで指定された値と一致する場合に、CustomTargetPlatformClient
からServiceRef
定義を削除します。
サブプロセス管理
Cryostat は自動分析レポートを生成する前に、子サブプロセスを作成します。子サブプロセスは、レポート生成によって消費される大量のメモリー負荷を蓄積することで親プロセスを保護します。
たとえば、Linux オペレーティングシステムでは、OOM (Out-of-memory) Killer が、システムから利用できない追加メモリーを要求するプロセスを検出し、プロセスを停止します。子サブプロセスが存在する場合、OOM Killer はこのサブプロセスを停止しますが、実行中の親プロセスには干渉しません。
Cryostat 環境変数 CRYOSTAT_REPORT_GENERATION_MAX_HEAP
を使用して、子サブプロセスの最小または最大の JVM ヒープサイズを設定できます。最小値が低いとレポートを生成する前に子サブプロセスが停止する可能性があり、最大値が高いと親プロセスで追加のメモリー制約が発生する可能性があることに注意してください。
サブプロセスレポートの生成
Cryostat 2.0 は、ActiveRecordingReportCache
または ArchivedRecordingReportCache
のいずれかを使用して Java アプリケーションのサブプロセスレポートを生成する拡張機能を提供します。これらのクラスは以下のように簡素化されます。
-
ActiveRecordingReportCache
に、ディスクのレコーディングへのパスが自動的に含まれるようになりました。 -
ArchivedRecordingReportCache
は、親プロセスの接続マネージャーを使用してレコードをローカルディスクファイルにコピーするユーティリティーメソッドを呼び出します。このクラスはローカルパスの場所をサブプロセスに渡します。
サブプロセスでは、以下のタスクを完了する必要がなくなりました。
- JMX 接続を確立する。
- SSL/TLS 証明書を処理する。
- JMX 認証のクレデンシャルを処理する。
これらのタスクが不要になると、次の面でサブプロセスのワークロードが改善されます。
- エンドツーエンドのレポート生成が高速化されます。
- コードの複雑さが軽減され、コードベースの保守が容易になります。
- SSL/TLS 認証および JMX 認証メカニズムが適切かつセキュアに処理されます。
truststore
環境変数
Cryostat 2.0 では、TRUSTSTORE
環境変数名が SSL_TRUSTSTORE_DIR
に置き換わります。
TargetConnectionManager
ハンドラー
TargetConnectionManager
は、ターゲット要求と Cryostat 間の接続に JMX 接続にタイムアウトしたキャッシュ値を使用することで、同時接続をサポートするようになりました。デフォルトでは、時間のキャッシュは 90 秒です。
Vertx サーバーの応答管理
Vertx サーバーは、TimeoutHandler
実装を使用して、Cryostat リクエストハンドラーによって送信された遅延応答メッセージを自動的に終了できるようになりました。これにより、クライアントが Cryostat リクエストハンドラーからの応答を無期限に待機する必要がなくなります。
TimeoutHandler
実装は、Cryostat リクエストハンドラーからの遅延応答を検出すると、500
エラーメッセージを出力します。
WebSocket
WebSocket には以下の更新が含まれます。
- WebSocket 接続が、双方向のインタラクティブチャネルから一方向のプッシュ通知チャネル (NC) にアップグレードされました。
-
WebSocket が一方向のプッシュ通知に WebSocket 通知チャネルを使用するようになったため、WebSocket 通知チャネルが
api/v1/command
からapi/v1/notfications
に変更されました。 - JFR データの分析にレコーディングとイベントテンプレートを使用する場合、WebSocket は通知チャネルでイベントを送信できます。
WebSocket クライアントが一方向プッシュ NC に接続すると、クライアントは同じチャネルで他の接続クライアントが実行したアクションに関する情報を自動的に受信します。