Quarkus Observability入門|GrafanaでQuarkusアプリのメトリクスを可視化する方法を初心者向けに解説
生徒
「Quarkusで作ったアプリがちゃんと動いているか、数字で確認する方法ってありますか?」
先生
「あります。Quarkus Observabilityの仕組みを使うと、アプリの状態をメトリクスとして取得できます。」
生徒
「そのメトリクスは、どうやって見るんですか?」
先生
「Grafanaという可視化ツールを使うと、CPU使用率やリクエスト数をグラフで確認できます。」
生徒
「初心者でも設定できますか?」
先生
「順番に進めれば大丈夫です。Quarkus、Prometheus、Grafanaを連携させていきましょう。」
1. Quarkus Observabilityとは何か
Quarkus Observabilityとは、Quarkusアプリケーションの内部状態を外から観測できるようにする考え方です。Javaで作られたQuarkusアプリは、高速起動や軽量動作が特徴ですが、運用時にはアプリの状態を把握することが重要です。Observabilityでは、メトリクス、ログ、トレースといった情報を通して、アプリの動きや負荷状況を理解します。
特にメトリクスは、数値として状態を確認できるため、初心者でも理解しやすい要素です。QuarkusではMicrometerが標準的に使われており、PrometheusやGrafanaと簡単に連携できます。
2. Grafanaで可視化するメリット
Grafanaは、メトリクスをグラフやダッシュボードとして表示できる可視化ツールです。Quarkusアプリ単体では数値の一覧しか見られませんが、Grafanaを使うことで時間変化や傾向を直感的に把握できます。
例えば、リクエスト数の増加やレスポンス時間の変化を視覚的に確認できるため、障害の予兆にも気づきやすくなります。Quarkus ObservabilityとGrafanaを組み合わせることで、運用監視の第一歩を踏み出せます。
3. Quarkusでメトリクスを有効化する設定
まずはQuarkusアプリ側でメトリクスを有効にします。MicrometerとPrometheusの拡張を追加することで、メトリクスが自動的に収集されます。設定はシンプルで、初心者でも理解しやすい構成です。
import io.quarkus.runtime.Startup;
@Startup
public class SampleStartup {
public SampleStartup() {
System.out.println("Quarkus application started");
}
}
このようなシンプルなQuarkusアプリでも、HTTPリクエスト数やJVMメモリ使用量といった基本的なメトリクスが自動的に取得されます。
4. メトリクス確認用エンドポイントの理解
Quarkusでは、メトリクス確認用のエンドポイントが用意されています。ブラウザでアクセスすると、Prometheus形式の数値データが表示されます。この状態が確認できれば、Grafana連携の準備は整っています。
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
@Path("/hello")
public class HelloResource {
@GET
public String hello() {
return "Hello Quarkus";
}
}
このエンドポイントにアクセスすると、リクエスト回数がメトリクスとして記録されます。数値が増えていく様子を確認することで、Observabilityの感覚をつかめます。
5. PrometheusとGrafanaの役割分担
Prometheusはメトリクスを収集して保存する役割を持ちます。一方、Grafanaはそのデータを読み取り、グラフとして表示します。Quarkus Observabilityでは、この二つを組み合わせるのが定番構成です。
Grafana単体ではデータを持たないため、必ずPrometheusのようなデータソースが必要です。この仕組みを理解すると、全体の流れが見えやすくなります。
<div class="container">
<h3>Quarkus Observability構成</h3>
<ul>
<li>Quarkusアプリ:メトリクス提供</li>
<li>Prometheus:メトリクス収集</li>
<li>Grafana:メトリクス可視化</li>
</ul>
</div>
6. Grafanaダッシュボードで見る代表的なメトリクス
Grafanaでは、Quarkusアプリのさまざまなメトリクスを確認できます。代表的なものとして、HTTPリクエスト数、レスポンス時間、JVMメモリ使用量などがあります。
初心者は、まずリクエスト数とメモリ使用量を見るだけでも十分です。数値が増減する様子を観察することで、アプリの負荷状況が感覚的に理解できます。
7. 開発環境で可視化を試すポイント
最初は本番環境ではなく、ローカル開発環境でGrafana可視化を試すのがおすすめです。Quarkusは起動が速いため、設定変更と確認を何度も繰り返せます。
数値が表示されない場合は、Quarkusアプリが起動しているか、Prometheusが正しく接続されているかを確認します。原因を一つずつ切り分けることが、Observability理解への近道です。
public class LoadSimulator {
public void execute() {
for (int i = 0; i < 100; i++) {
System.out.println("simulate request " + i);
}
}
}
8. Quarkus Observabilityを学ぶ意味
Quarkus Observabilityを理解すると、単にアプリを作るだけでなく、運用を意識した開発ができるようになります。Grafanaでメトリクスを可視化する経験は、クラウドネイティブ開発において大きな武器になります。
初心者の段階から数値でアプリを見る習慣を身につけることで、トラブル対応や性能改善にも強くなります。Quarkus、Prometheus、Grafanaの組み合わせは、今後も長く使われる定番技術です。