Quarkus におけるオブザーバビリティー
オブザーバビリティーは、人間がシステムについて質問したり答えたりできる能力として定義できます。
これまで、Quarkus アプリケーションにオブザーバビリティー機能を提供するためのエクステンションが数多く開発されてきました。このガイドでは、Quarkus で利用できるオブザーバビリティーエクステンションの概要と、Quarkus アプリケーションのニーズに応じてオブザーバビリティーを提供するために使用できるエクステンションについて説明します。
テレメトリー
テレメトリーにはシステムの内部状態に関するデータが含まれており、カテゴリーまたは シグナル に分類できます。
-
ロギング、従来のローカルログまたは分散ログ
-
メトリクス、各 Quarkus アプリケーションインスタンスで計算されるメトリクス
-
トレーシング、アプリケーション間の分散トレーシング
-
プロファイリング :アプリケーションのパフォーマンス、リソースの使用状況、実行時の動作を分析・監視します。
-
イベント は、最も一般的なシグナルです。プログラムの実行中に発生した重要な出来事を表します。
ガイドライン
Quarkus のオブザーバビリティーには重要なガイドラインが 1 つだけあります。
-
OpenTelemetry OTLP プロトコル は、Quarkus アプリケーションからテレメトリーを送信するための推奨される方法です。これにより、アプリケーションのテレメトリーの統一された出力が提供されます。
概要
一部のエクステンションには重複する機能があり、シグナルの種類ごとに推奨されるエクステンションがあります。
次の表は、Quarkus で利用可能なオブザーバビリティーエクステンション、それらが提供するシグナル、および各シグナルに推奨されるエクステンションの概要を示しています。
エクステンション | ロギング | メトリクス | トレース | プロファイリング | ヘルスチェック | イベント |
---|---|---|---|---|---|---|
O |
O |
R |
X |
|||
R |
||||||
X |
R |
R |
X |
|||
R |
X |
|||||
X |
||||||
X |
||||||
D |
-
R - 推奨
-
X - サポート
-
D - 非推奨
-
O - デフォルトでオフ
シグナル
ロギングとイベント
ログラインは、重大度分類を含むイベントの種類であると言えます。OpenTelemetry プロジェクトはこのアプローチを認識しており、ログとイベント用の OpenTelemetry API はほぼ同じになっています。
ログは非常に古い概念であり、今でも業界で広く使われています。そのため、上記の概要表ではログとイベントに異なる列があります。
将来的には、OpenTelemetry ログの採用が進むことで、これら 2 つの概念が統合されることになるでしょう。
Quarkus ロギングエクステンション
Quarkus は、JBoss Log Manager ロギングバックエンドを使用して、アプリケーションおよびフレームワークのログをコンソールまたはファイルに公開します。これらのログは、従来の quarkus-logging-gelf
エクステンション、または推奨される quarkus-opentelemetry
あるいは quarkus-micrometer-opentelemetry
エクステンションを使用して、集中ロギングシステムに転送することもできます。
OpenTelemetry ログは、quarkus-opentelemetry
エクステンションではデフォルトで無効になっていますが、quarkus-micrometer-opentelemetry
エクステンションではデフォルトで有効になっています。
その他のイベント
OpenTelemetry Events API はまだ開発中であり、その使用はまだ推奨されていないため、Quarkus でオブザーバビリティーイベントを生成するための推奨される方法はありません。
quarkus-jfr
エクステンションは、オブザーバビリティー関連のイベントを生成できます。
メトリクス
Quarkus は長い間、アプリケーションからメトリクスを収集するために Micrometer を使用してきました。Quarkus のすぐに使用できるメトリクス計装のほぼすべてが Micrometer で実装されています。
最近では、OpenTelemetry メトリクスが、quarkus-opentelemetry
エクステンションで利用可能になりましたが、メトリクスのセマンティック規則がまだ安定していないため、デフォルトでは無効になっています。
解決策として、quarkus-micrometer-opentelemetry
エクステンションを使用することで、Micrometer メトリクス と OpenTelemetry のログおよびトレース を同時に利用し、OTLP プロトコルを通じて統一された出力を得ることができます。また、このエクステンションを使用すれば、手動で OpenTelemetry のメトリクスを作成することも可能で、利便性のために、すべてのシグナルがデフォルトで有効になっています。
トレース
Quarkus は OpenTelemetry Tracing を使用してアプリケーションにトレース機能を提供します。トレースには quarkus-opentelemetry
および quarkus-micrometer-opentelemetry
エクステンションの使用が推奨されます。
プロファイリング
Quarkus は、Java Flight Recorder (JFR) を使用して、アプリケーションにプロファイリング機能を提供します。アプリケーションのプロファイリングに必要なイベントを生成するには、quarkus-jfr
エクステンションの使用が推奨されます。
OpenTelemetry プロファイリングシグナルはまだ開発中ですが、将来利用可能になる可能性があります。
テレメトリーを確認する
Grafana LGTM Dev Service エクステンションを使用すると、Grafana のログ、メトリクス、トレースのテレメトリーデータを視覚化できます。