Cryostat 2.1での不要な通知をフィルタリング

Red Hat で Java Platform Advocate として OpenJDK を担当している伊藤ちひろ(@chiroito)です。

この記事は、Red Hat Developerのブログ記事、Filter unwanted notifications in Cryostat 2.1 | Red Hat Developer の翻訳記事です。


https://developers.redhat.com/sites/default/files/styles/article_feature/public/2020_Java_ContainerJFR_Featured_Article__A-01.png?itok=K_g-UdJY

Cryostatは、Java Flight Recorder (JFR)でJavaアプリケーションを監視する際、常に通知を発行してきました。Cryostatのバージョン2.1では、提供される情報の量を増やし、表示されるものに対するユーザの制御を強化し、Cryostatの性能を向上させる通知のための新しい実装とインタフェースがあります。

Cryostat インタフェース

新しいWebSocketインタフェースのおかげで、Cryostatは以前報告されなかったイベントに対して通知を発行します。このように、デフォルトでは、より多くの通知がユーザへ報告されます。例えば、新しい自動ルール機能は、一度に多くのインスタンスにルールを追加し、各ルールが作成または削除されたとき、またルールが記録を開始、記録をアーカイブにコピー、またはアーカイブから古い記録を削除するときに通知を発行します。図1に示すように、通知の量は特に膨大になる可能性があります。

https://developers.redhat.com/sites/default/files/styles/article_full_width_1440px_w/public/image1_5.png?itok=0-zCTz84

図1: Cryostatは膨大な数の通知を届けることができる。

この問題に対処するため、Cryostat 2.1では、新しい設定ページ(図2)を通じて、ユーザが受け取る通知の有効化と無効化を行う機能を提供します。ユーザは、カテゴリごとに通知を選択したり、ワンクリックですべての通知を有効または無効にできます。

https://developers.redhat.com/sites/default/files/styles/article_full_width_1440px_w/public/image2_0.png?itok=t4XT14Q8

図2:Cryostat 2.1のSettingsビューには、各通知カテゴリの切り替えが可能なNotificationsの機能が搭載

例えば、自動ルールのバックグラウンドでの活動によって発せられる可能性のあるすべての通知を無効にするには、次のカテゴリーをオフに切り替えます。

  • Recording Created (自動化ルールがターゲットに新しい記録を作成するときに発行)
  • Recording Saved (自動化されたルールが稼働中の記録を保管するときに発行)
  • Archived Recording Deleted (自動化されたルールが過去の記録を削除したときに発行)

実装と性能

Cryostat は、Cryostat バックエンドとブラウザで動作する Web クライアントの間で WebSocket 接続を使用し、様々な操作や 状態の変化が発生したときに通知を表示します。Cryostat 2.1では、発生しうる全ての概念的なアクションや状態変化に対してWebSocket通知が発行されます。以前のバージョンのCryostatでは、一部のタイプの操作や 状態変化に対する通知が含まれていなかったのに対して、今回のCryostatでは、そのような通知が含まれています。書式もより一貫しており、各通知タイプに詳細なタイトルと説明があります。

通知カテゴリを無効にすると、メッセージは WebSocket 接続を介して送信されますが、Web クライアントのポップアップ通知は単に表示されなくなります。ユーザが選択した設定は、完全に Web クライアント側で行われ、ブラウザのローカル ストレージに永続化されます。Web クライアントは依然として通知情報を受信し、メモリに保持します。したがって、通知カテゴリを再度有効にした場合、そのカテゴリで以前に発せられた通知は、まだあなたが読むことができるようになります。このようにして、Cryostatは、必要に応じて調べるために操作と状態変化のログを保存しながら、通知でユーザインタフェースを乱雑にするのを避けます。

注意: 通知カテゴリは、自動化されたルールによって実行された操作と、ユーザがAPIリクエストを経由して別のクライアントによって対話的に実行された操作とを区別していません。これらの通知を無効にすると、自動化されたルールが実行したときだけでなく、すべてのケースで無効になります。

また、Web クライアントのパフォーマンスも、通知を使用して稼働中の記録、保管された記録、およびテンプレートなどのリソースの状態を更新することで改善されました。たとえば、稼働中の記録を削除した場合、Web クライアントはバックエンドからの対応する通知を使用して、該当する記録を削除することで稼働中の記録リストを更新するようになりました。その他の状態の更新も、同様の方法で行われます。以前は、この作業の流れは、バックエンドにHTTP GETリクエストを送信して、稼働中の記録全体の更新された一覧を取得し、この一覧を使用して、ユーザに表示される古い一覧を完全に置き換える必要がありました。現在、Web クライアントは、削除された 1 つの記録項目のみを更新するだけです。

まとめ

Cryostatの通知方法は、バージョン2.1でより良く構造化され、より充実しています。それはあなたが望む通知を取得し、あなたが邪魔に感じるかもしれない多くの他のものを除外するために、あなたのブラウザで少し準備を必要とします。しかし、一貫性と性能の改善は、より良いユーザインタフェースを生み出します。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。