QuarkusでMicroProfile Metricsを有効化する方法を完全解説|Observability入門
生徒
「Quarkusでアプリの状態を数値で確認できる仕組みがあると聞いたんですが、本当ですか?」
先生
「あります。QuarkusではMicroProfile Metricsを使うことで、リクエスト数や処理時間などを簡単に可視化できます。」
生徒
「設定が難しそうで不安です。初心者でも使えますか?」
先生
「依存関係を追加して少し設定するだけなので、Java初心者でも十分に扱えます。順番に見ていきましょう。」
1. QuarkusとObservabilityの基本概要
Quarkusは、Java向けに最適化された軽量なフレームワークで、クラウドネイティブやマイクロサービス開発に強みがあります。 Observabilityとは、アプリケーションの内部状態を外部から把握できるようにする考え方で、主にメトリクス、ログ、トレースの三つで構成されます。 その中でもMicroProfile Metricsは、アプリケーションの数値情報を収集するための重要な仕組みです。 QuarkusではMicroProfile Metricsが公式にサポートされており、設定も非常にシンプルです。
2. MicroProfile Metricsとは何か
MicroProfile Metricsは、Eclipse MicroProfile仕様の一つで、Javaアプリケーションの動作状況を数値として公開するための仕組みです。 例えば、エンドポイントが何回呼ばれたか、処理にどれくらい時間がかかったかといった情報を取得できます。 これらの情報はPrometheusなどの監視ツールと連携することが多く、Quarkus Observabilityの中心的な役割を担います。 初心者にとっても、数値で状態を確認できる点は理解しやすく、大きなメリットです。
3. QuarkusでMetrics拡張を追加する方法
QuarkusでMicroProfile Metricsを使うためには、専用の拡張機能を追加します。 Mavenを利用している場合は、依存関係を一行追加するだけで準備が整います。 この拡張を追加することで、Quarkusは自動的にメトリクス用のエンドポイントを有効化します。 ここでは、pomファイルに追加する基本的な設定を確認します。
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
4. Metricsエンドポイントの確認方法
拡張機能を追加してQuarkusアプリケーションを起動すると、メトリクス情報が自動的に公開されます。 デフォルトでは、ローカル環境で指定されたパスにアクセスすることで、数値データを確認できます。 表示される内容には、JVMの状態やHTTPリクエストの情報などが含まれます。 まずはブラウザでアクセスし、どのような情報が見えるのかを体感することが大切です。
http://localhost:8080/metrics
5. アノテーションを使ったメトリクスの追加
MicroProfile Metricsでは、アノテーションを使って独自のメトリクスを定義できます。 例えば、特定のメソッドが何回呼ばれたかをカウントしたい場合に便利です。 Quarkusでは、Javaクラスにアノテーションを付与するだけで自動的に計測が行われます。 ここでは、シンプルなカウンターを追加する例を紹介します。
import org.eclipse.microprofile.metrics.annotation.Counted;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
@Path("/hello")
public class HelloResource {
@GET
@Counted(name = "hello_count", description = "Helloが呼ばれた回数")
public String hello() {
return "Hello Quarkus";
}
}
6. 処理時間を計測するタイマーの使い方
呼び出し回数だけでなく、処理にかかった時間を計測することも重要です。 MicroProfile Metricsでは、タイマー用のアノテーションを利用することで簡単に実現できます。 パフォーマンスのボトルネックを探す際に非常に役立ちます。 初心者でも、処理が遅い箇所を数値で把握できる点は大きな学習効果があります。
import org.eclipse.microprofile.metrics.annotation.Timed;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
@Path("/time")
public class TimeResource {
@GET
@Timed(name = "time_process", description = "処理時間の計測")
public String process() {
return "processing";
}
}
7. 設定ファイルでの基本的な調整
Quarkusでは、設定ファイルを使ってMetricsの挙動を調整できます。 例えば、本番環境ではメトリクスを有効にし、開発環境では無効にするといった制御も可能です。 applicationプロパティに設定を追加するだけで、柔軟な運用が実現できます。 設定管理に慣れておくことで、Observability全体の理解も深まります。
quarkus.smallrye-metrics.enabled=true
8. Prometheus連携を意識した使い方
MicroProfile Metricsは、そのままPrometheusと連携できる形式でデータを提供します。 Quarkusで公開されたメトリクスをPrometheusが定期的に取得することで、グラフ化やアラート設定が可能になります。 初心者の段階では、まず数値が取得できていることを確認するだけでも十分です。 将来的に本格的な監視を行う際の基礎として、Quarkus Observabilityの考え方を理解しておくと役立ちます。