プロフィールアイコン

[OpenTelemetry 検証5] Grafana を使ってメトリクスを見てみる

Tech

はじめに

[OpenTelemetry検証4] Prometheus UI を使用してメトリクスを見てみる の続きです。

前回の記事 では Prometheus UI を使って PromQL によるメトリクスの検索・分析を実践しましたが、今回は同じクエリを Grafana Explore で実行し、グラフとして可視化していきたいと思います。


内容

早速見ていきます。

http://localhost:3000 にアクセスし、データソースを Prometheus に指定しておきます。

スクリーンショット 2026-02-22 22.08.16.png

クエリの作成は Builder 形式ではなく、Code形式でいきます。※最近ではAIがその辺りのコードも作成してくれるためそっちのが早い

まずは、前回同様 article_views_total で、記事の閲覧数から見ていきます。

うまくデータが取れていると以下のような出力になるかと思います。

スクリーンショット 2026-02-22 22.17.45.png

Prometheus UI の場合、Graph タブで同じように可視化することができるが、リアルタイムのデータがないとうまく表示されないですが、Grafana は時間範囲を指定するだけで過去データも合わせて確認できるのが便利です。

また、Grafana の場合はタイムゾーンの設定も自由に変更できるため、こちらも使い勝手がいいです。※もしかしたら Prometheus UI でもできるのかもしれないけどパッと見わからなかった

このグラフから読み取れることを整理すると以下です。

時間帯出来事
〜21:25累計 20 件前後で横ばい (アクセスなし)
21:25〜21:30累計 40 件に急増 (記事が閲覧された)
21:35〜累計 80 件に急増 (さらに記事が閲覧された)
21:35〜22:10横ばい (アクセスなし)

各記事毎の累計値については以下のような見方になります。

article_id累計
article-00183
test-00180
not-found77

また、グラフ上でより変動が大きい場所をマウスドラッグしながら指定することで簡単に詳細なグラフを表示することができます。

スクリーンショット 2026-02-22 22.22.48.png


よく使うクエリをグラフで確認する

リクエストレートの推移

記事 ID ごとのアクセス数の増減をリアルタイムでグラフに表示できます。

rate(article_views_total[1m])

このグラフを表示しながら、以下で継続的にリクエストを投げてみると以下のようにリクエストがリアルタイムで反映されていることを確認できます。

for i in $(seq 1 60); do
 curl -s http://localhost:8080/articles/article-001 > /dev/null
 curl -s http://localhost:8080/articles/test-001 > /dev/null
 curl -s http://localhost:8080/articles/not-found > /dev/null
 sleep 1
done

スクリーンショット 2026-02-22 22.30.41.png

スクリーンショット 2026-02-22 22.33.48.png

このグラフからは以下が読み取れます。

時間帯状況
22:28〜22:290.5〜0.7 のレートでアクセスが集中していた
22:29〜22:30レートが急落 (アクセスが止まった)
22:30〜22:31再びレートが上昇 (アクセスが再開した)
22:31〜22:32再び急落し横ばい (アクセスが止まった)

ホバー時の値

article_idrate意味
article-0010.380約 2.6 秒に 1 アクセス

ステータス別の件数

記事作成APIの結果を、success / error / validation_error の 3系列を積み上げてステータス毎の構成比を確認できます。

グラフは Lines ではなく、Stacked bars に変更して見てみます。

sum by(status) (article_create_duration_count)

スクリーンショット 2026-02-22 22.40.40.png

このグラフからは以下が読み取れます。

status現在の累計傾向
success177最も多く、22:30 頃に急増
error28横ばいで推移
validation_error2022:30 頃から増加し始めた

p95, p99 レイテンシの推移

記事作成処理の 95 パーセンタイルレイテンシを時系列グラフで表示してみます。

前回同様、アプリケーション側にランダムに遅延ロジックを入れているため、それらが発動した際にグラフが跳ね上がる様子を確認します。

histogram_quantile(0.95, rate(article_create_duration_bucket[5m]))

スクリーンショット 2026-02-22 22.50.27.png

statusp95 レイテンシ意味
error0.675sリクエストの 95% が 0.675 秒以内に完了
success0.550sリクエストの 95% が 0.550 秒以内に完了
validation_error0.095sリクエストの 95% が 0.095 秒以内に完了
histogram_quantile(0.99, rate(article_create_duration_bucket[5m]))

スクリーンショット 2026-02-22 22.51.56.png

statusp99 レイテンシ意味
error0.935sリクエストの 99% が 0.935 秒以内に完了
success0.910sリクエストの 99% が 0.910 秒以内に完了
validation_error0.099sリクエストの 99% が 0.099 秒以内に完了

Tips

過去に実行したクエリは以下のように履歴から再度実行することも可能です。※わりと使います

スクリーンショット 2026-02-22 23.00.03.png


おわりに

今回は Grafana Explore を使って Prometheus のメトリクスをグラフで可視化しました。

Prometheus UI で実行したクエリをそのまま Grafana でも使えることが確認でき、過去データも含めて安定してグラフ表示できる点はとても便利でした。

次回はダッシュボードを作成し、レイテンシ・リクエストレート・エラー率を 1画面にまとめていくような取り組みをしたいと思います。