第3章 機能拡張
Cryostat 2.1 には、Cryostat 2.0 の機能に基づいて構築された機能拡張が含まれています。
Archives ビュー
Cryostat 2.1 Web コンソールには、Archives メニュー項目が含まれています。このメニュー項目を選択すると、Archives Recording テーブルがコンソールに表示されます。このテーブルは、Cryostat 2.0 のテーブルを改良したものです。分割ビューを維持しつつ、GraphQL クエリーを使用してテーブルデータを入力するように改良されました。
Archives メニュー項目の Archived Recordings のテーブルは、すべてのターゲット JVM のアーカイブを表示するという点で Recordings メニューに表示される Archived Recordings のテーブルとは異なります。
図3.1 Cryostat Web コンソールの Archives ビュー
cert-manager API
Cryostat 2.1 はバージョン 1.5.3 をサポートしているため、Cryostat Operator は cert-manager API を使用してターゲット JVM の TLS 証明書を設定するようになりました。
v1.5.3 (cert-manager) を参照してください。
Create Target ダイアログボックス
Cryostat 2.1 では、Connection URL フィールドに値を入力するまで、Create Target ダイアログボックスの Create ボタンが無効になります。
また、Connection URL フィールドには、JMX サービス URL の例が含まれています。フィールドに有効な URL を入力する必要がある場合、この URL を参考にすることができます。
図3.2 Dashboard メニュー項目の Create Target ダイアログボックス
Cryostat Operator サービスのカスタマイズ
Cryostat Operator の YAML 設定ファイルに spec.serviceOptions プロパティーが追加されました。これにより Operator の以下のサービスオプションを変更できるようになりました。
- アノテーション
- ラベル
- ポート番号
- サービスのタイプ
デフォルトのサービスオプション値を変更すると、Cryostat Operator は次のコンポーネントのサービスを作成します。
- Cryostat アプリケーション
- Grafana アプリケーション
- ジェネレーターマイクロサービスの報告
Cryostat Operator の詳細
OpenShift Container Platform (OCP) Web コンソールの Cryostat Operator の詳細ページに、次の機能拡張が追加されました。
- Cryostat Operator の名前参照が更新されました。Cryostat 2.1 がリリースされる前は、Cryostat アプリケーションと Cryostat Operator に OCP で類似した名前が付けられていました。
- Cryostat の Web サイトへのリンク
図3.3 Cryostat Operator の詳細ページの新たな機能拡張
Cryostat のファイルダウンロードの動作
Cryostat 2.0 の Web コンソールからファイルをダウンロードする場合 (たとえば、Active Recordings オーバーフローメニューから Download Recording 項目を選択した場合)、次の手順を完了する必要がありました。
- リモートファイルをデフォルトの Web ブラウザーのメモリーにダウンロードする。
- Blob ファイル項目のローカルオブジェクト URL を作成する。
このような動作が原因で、Web ブラウザーのダウンロードメニューの Cancel オプションが役に立たなくなっていました。これは、JFR バイナリーファイルのダウンロード操作をキャンセルする場合に問題となることがありました。
Cryostat 2.1 は、Web ブラウザーで使用できる HTML 5 の download 属性を利用してファイルのダウンロードを管理します。この属性は、href 属性からアンカー要素を読み取り、Web ブラウザーにファイルをダウンロードするように指示します。このようなダウンロード操作により、Web ブラウザーで Save File メニューが表示される時間が短縮されるため、ファイルをローカルシステムに保存する前にダウンロード操作をキャンセルできるようになります。
ファイルのアップロード機能
Cryostat 2.1 では、大規模なファイルアップロード操作時に (たとえば、Re-Upload Archived Recordings ダイアログボックスからアーカイブされたレコーディングを再アップロードするときに)、Cancel ボタンをクリックしてファイルのアップロード操作を停止できます。Upload in Progress ダイアログボックスが表示されたら、キャンセル操作を続行するかどうかを選択する必要があります。
図3.4 Re-Upload Archived Recordings ダイアログボックスの Cancel ボタン
キャンセル操作が完了すると、Cryostat アプリケーションに転送されなかった JFR ファイルのサイズが Web ブラウザーに表示されます。
jfr-datasource コンテナー
Cryostat 2.0 には、Cryostat Web コンソールの About ページにバージョン番号が表示されないという問題がありました。Cryostat 2.1 では、jfr-datasource または grafana ダッシュボードの設定に関係なく、このページにバージョン番号が表示されるようにコードベースを変更することで、この問題を修正しています。
図3.5 Cryostat Web コンソールの About ページ
Netty のパフォーマンスリグレッション
Vert.x BodyHandler クラスを使用するハンドラーの実装で、Cryostat 2.0 で明らかだったパフォーマンスの問題が発生しなくなりました。たとえば、ハンドラーが標準の HTTP フォームのアップロードを求めているのに、ファイルのアップロードが許可されるという問題がありました。このファイルのアップロードにより、Vert.x のリソース制約が発生する可能性があります。ハンドラーがそのようなファイルを、Vert.x の一時的なファイルアップロードの場所に永続的に保存する可能性があるためです。さらに、Netty による POST フォーム本文の解析により、API リクエストの処理中に、メモリー使用量が想定を上回る可能性があります。
Cryostat 2.1 は Vert.x バージョン 3.9.9 を使用します。このバージョンには、Netty バージョン 4.1.67 へのアップグレードが含まれます。このアップグレードにより、ハンドラーが Vert.x にファイルをアップロードする方法とロジックの両方が改善されました。
外部 JVM を使用した Red Hat OpenShift クラスター接続
Cryostat 2.0 には、Cryostat ノードで実行されているノードとは異なるノードにある JVM と Red Hat OpenShift クラスターとの接続に関する既知の問題がありました。
Cryostat 2.1 では、この問題は、デフォルトで false に設定されている新しい CRYOSTYAT_ENABLE_JDP_BROADCAST 環境変数によって解決されています。この環境変数のデフォルト設定では、Red Hat OpenShift で Java Discovery Protocol (JDP) が無効になっているため、Cryostat 2.1 は任意のノードにある JVM に接続できるようになります。
既知の問題 (Cryostat 2.0) を参照してください。
RecordingPostHandler 動作の変更
Cryostat 2.1 では RecordingPostHandler 実装が強化され、JFR バイナリーが順次解析されるようになりました。Cryostat 2.0 の実装では、データを解析してからイベントのリストを構築していました。
新しい実装には、以下の利点があります。
- シンプルな方法を提供します。
- 実行に必要なリソースは少なくなります。
- アップロードしたデータを以前の動作よりもはるかに高速に検証します。
Security メニュー項目
Cryostat 2.1 インスタンスで Security メニュー項目を選択すると、Store JMX Credentials タイルにアクセスできます。
図3.6 Security メニュー項目の Store JMX Credentials
Store JMX Credentials タイルは、JMX クレデンシャルが保存されているターゲット JVM を簡単に表示できる便利な方法です。
さらに、このタイル項目では、保存されているクレデンシャルを特定のターゲット JVM に追加できます。JMX 認証を必要とするターゲット JVM には、プロンプトが表示されたらユーザー名とパスワードを指定する必要があります。Cryostat は、ターゲット JVM への JMX 接続を開くときに保存されたクレデンシャルを使用できます。
setCachedTargetSelect 実装
Cryostat 2.1 リリースより前は、Cryostat Web コンソールにログインして Dashboard に移動すると、前のセッションで選択した JVM が Target JVM ドロップダウンリストにデフォルト値として表示されていました。これは、Cryostat がこの JVM に接続できなくなった場合でも発生します。
Cryostat 2.1 では、この問題は、新しい各セッションの開始時にターゲット JVM のリストを更新し、接続を確立できる JVM のみをリストすることによって解決されています。
Settings > Auto-Refresh に移動して、Cryostat Web コンソールの更新期間を設定できます。表示されたフィールドに、秒、分、または時間単位で値を指定できます。設定を完了するには、Enable チェックボックスを選択する必要があります。
GUI マストヘッドのユーザー名
Cryostat 2.1 は、/v2.1/auth エンドポイントからユーザー名を取得するため、Cryostat Web コンソールのマストヘッドにユーザー名を表示できます。Cryostat 2.0 では、Cryostat インスタンスを Basic 認証モードで起動する場合にしかユーザー名を表示できませんでした。
図3.7 Cryostat Web コンソールのマストヘッドに表示されるユーザー名
WebSocket API
Cryostat 2.1 では、WebSocket API が更新され、無制限の WebSocket クライアント接続がサポートされるようになりました。これまでは、WebSocket API は最大 64 クライアント接続しかサポートしませんでした。
Cryostat 2.1 の WebSocket API は、同じ一方向のプッシュ通知チャネル (NC) を使用している接続済みクライアントによって実行されるアクションに関する情報を自動的に受信できます。クライアントの数に制限はありません。