Quarkus Observability入門!QuarkusとPrometheus連携の基本を初心者向けに徹底解説
生徒
「Quarkusでアプリを作ったんですが、動いているかどうかをどうやって監視すればいいんですか?」
先生
「QuarkusではObservabilityの仕組みが用意されていて、Prometheusと連携すると状態を数値で確認できます。」
生徒
「Prometheusって名前は聞いたことがありますが、何をしてくれるものなんですか?」
先生
「アプリケーションのメトリクスを収集して、負荷や動作状況を可視化するための監視ツールです。では、Quarkusとの基本的な連携から見ていきましょう。」
1. Quarkus Observabilityとは何か
Quarkus Observabilityとは、Quarkusで作成したJavaアプリケーションの内部状態を外部から観測できるようにする考え方です。 観測という言葉は難しく聞こえますが、実際には「今アプリは元気に動いているか」「どれくらいリクエストが来ているか」 「エラーは発生していないか」といった情報を数値として確認することを意味します。 クラウドネイティブな環境やコンテナ、Kubernetes上で動くQuarkusアプリでは、ログだけでなくメトリクス監視が非常に重要になります。 その中心的な役割を担うのがPrometheusです。
2. Prometheusの基本的な役割
Prometheusはオープンソースの監視ツールで、アプリケーションが公開しているメトリクス情報を定期的に取得します。 取得した情報は時系列データとして保存され、CPU使用率やリクエスト数の増減を後から確認できます。 QuarkusとPrometheusを連携すると、Javaアプリケーションの内部状態を自動的に数値化できるため、 障害の早期発見やパフォーマンス改善につなげやすくなります。 特に初心者の方にとっては、数字で状況を把握できる点が大きなメリットです。
3. Quarkusでメトリクスを有効化する準備
QuarkusでPrometheus連携を行うには、まずメトリクス機能を有効化します。 QuarkusではMicroProfile Metricsという仕組みが用意されており、 拡張機能を追加するだけで基本的なメトリクスが自動的に提供されます。 ここではMavenプロジェクトを例に、設定の考え方を確認します。
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>
この設定を追加することで、Quarkusアプリケーションは起動時からメトリクス情報を生成します。 初心者の方は、まず「特別なコードを書かなくても数値が取れる」という点を押さえておくと理解しやすくなります。
4. メトリクス確認用エンドポイントの仕組み
Quarkusでメトリクスを有効にすると、決められたURLでメトリクス情報が公開されます。 このURLをPrometheusが定期的にアクセスすることで、数値を収集します。 開発中はブラウザで直接アクセスして、どのような情報が出力されているかを確認するのがおすすめです。 表示される内容には、リクエスト数やレスポンス時間など、アプリケーションの健康状態を表す情報が含まれます。
quarkus.smallrye-metrics.path=/metrics
この設定により、メトリクスはmetricsというパスで公開されます。 初心者の段階では、まず「アクセスすると大量の数値が表示される」ことを体験するだけでも十分です。
5. 独自メトリクスを追加する基本例
標準メトリクスに慣れてきたら、独自のメトリクスを追加してみましょう。 Quarkusではアノテーションを使って簡単にカウント処理を追加できます。 例えば、特定のAPIが何回呼ばれたかを数えることで、利用状況を把握できます。 これはPrometheus連携の理解を深めるうえで、とても良い練習になります。
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import org.eclipse.microprofile.metrics.annotation.Counted;
@Path("/hello")
public class HelloResource {
@GET
@Counted(name = "hello_count", description = "Hello APIの呼び出し回数")
public String hello() {
return "Hello Quarkus";
}
}
このように設定すると、APIが呼ばれるたびに数値が増えていきます。 数字の変化を見ることで、アプリケーションが実際に使われている様子を実感できます。
6. PrometheusからQuarkusを監視する流れ
Prometheusは自分からデータを受け取るのではなく、対象のアプリケーションに取りに行く仕組みです。 QuarkusアプリのメトリクスURLをPrometheusに登録することで、自動的に監視が始まります。 この構造を理解すると、複数のQuarkusサービスをまとめて監視するイメージがつかみやすくなります。 Kubernetes環境でも同じ考え方が使われるため、基礎としてとても重要です。
scrape_configs:
- job_name: "quarkus-app"
static_configs:
- targets: ["localhost:8080"]
この設定により、Prometheusは定期的にQuarkusアプリへアクセスし、メトリクスを収集します。 初心者の方は、まずローカル環境で動作を確認してから本番環境を意識すると理解が進みます。
7. QuarkusとPrometheus連携で得られるメリット
QuarkusとPrometheusを連携する最大のメリットは、アプリケーションの状態を数値で把握できる点です。 ログだけでは気づきにくい負荷の増加や異常も、メトリクスを見れば一目で分かります。 また、Observabilityの考え方に慣れておくことで、将来的に分散システムやマイクロサービスを扱う際にも役立ちます。 初心者の段階からこの仕組みに触れておくことは、Javaエンジニアとしての成長につながります。