Part 6-1. Prometheus と Grafana 連携

はじめに

Prometheus はメトリクスを効率的に収集・保存しますが、それだけではデータの価値を十分に引き出せません。ダッシュボードで可視化し、人間が一目で状況を把握できる形にすることが、実務運用では重要です。その役割を担うのが Grafana です。

Prometheus はデータの「収集と保管」を、Grafana はそのデータの「表示と分析」を担当すると考えるとわかりやすいでしょう。Grafana には Prometheus、InfluxDB、Elasticsearch など様々なデータソースを接続できますが、Prometheus メトリクスの可視化では、最も自然で強力な組み合わせになります。

このセクションでは、Grafana を初めて使う方を想定し、Prometheus との接続方法からダッシュボード構築まで、段階的に学びます。

Grafana データソースの設定

ステップ1: Grafana へのアクセス

Grafana はデフォルトで http://localhost:3000 で起動します。ブラウザでこのアドレスにアクセスすると、ログイン画面が現れます。初期ユーザー名・パスワードは admin / admin です(本番環境では必ず変更してください)。

ログイン後、ホーム画面が表示されます。左側メニューの「Configuration」または歯車アイコンから「Data Sources」を選択します。

ステップ2: データソース追加画面へ移動

「Data Sources」ページでは、既に接続されているデータソース(あれば)が一覧表示されます。右上の「Add data source」ボタンをクリックします。

データソースタイプを選ぶ画面が現れるので、リストから「Prometheus」を探して選択します。Prometheus は高い人気度のため、検索窓に「prom」と入力すれば、すぐに候補が出てきます。

ステップ3: Prometheus 設定値の入力

データソース設定フォームが開きます。主な設定項目は以下の通りです。

Name にはデータソースの識別名を入力します。複数の Prometheus インスタンスを接続する場合は、「prod-prometheus」「staging-prometheus」など、環境を区別できる名前が便利です。

URL には、Prometheus が稼働しているアドレスを入力します。デフォルトは http://prometheus:9090 です(ローカルテスト環境なら `

Scrape intervalQuery timeout の設定も重要です。Scrape interval はデフォルト 15 秒で、Prometheus が Grafana からのクエリに応答するまでの待機時間を示しています。ネットワーク遅延が大きい場合は、これを 30 秒程度に増やすとよいでしょう。Query timeout はデフォルト 10 秒で、クエリの最大実行時間を指します。複雑なクエリを実行する場合は、これを 30~60 秒に設定することもあります。

その他の設定項目(認証、プロキシ等)は、本番環境での セキュリティ要件に応じて調整します。

ステップ4: 接続確認

フォーム下部の「Save & test」ボタンをクリックします。「Data source is working」というメッセージが表示されれば、接続成功です。これで Grafana から Prometheus への通信が確立しました。

ダッシュボード設計のガイドライン

初心者向けの「最小限ダッシュボード」

ダッシュボード構築は、最小限から始めることをお勧めします。最初は 3~5 個のパネル(グラフやメトリクス表示要素)で十分です。

典型的な最小限ダッシュボードの構成は以下の通りです。

  • 行1: ホストの稼働台数(Stat パネル)と、全体的なアラート状態(Gauge パネル)
  • 行2: CPU 使用率(TimeSeries パネル、複数ホスト重ね合わせ)
  • 行3: メモリ使用率(TimeSeries パネル)と、ディスク使用量(Gauge パネル)
  • 行4: ネットワークトラフィック(TimeSeries パネル)

このような構成なら、30 分程度で基本的なダッシュボードが完成します。運用チームが毎日チェックするべき情報に絞られており、ノイズが少ないため、判断が素早くできます。

ダッシュボード構築の段階的アプローチ

ダッシュボード構築を段階的に進めることで、チーム全体の理解が深まり、メンテナンスもしやすくなります。

段階1: 基本メトリクス → ホスト CPU、メモリ、ディスク、ネットワークなど、全てのシステムで共通となる、確認すべき項目を追加

段階2: アプリケーション固有メトリクス → 実装したアプリケーションが公開しているメトリクスを追加(HTTP リクエスト数、データベース接続プール数等)

段階3: カスタマイズと最適化 → 特定の業務シーンに合わせたダッシュボード作成、複数チーム間での共有

この流れで進めれば、ダッシュボードの有用性が段階的に高まり、運用チームからの信頼も得られやすいでしょう。

よくあるレイアウトパターン

1行1メトリクス型 は、パネル幅を広くして、大きなグラフを表示するスタイルです。細かい変動を見たい場合に向いています。

2~3列配置型 は、1行を複数カラムに分け、複数の小さなパネルを並べるスタイルです。概観を素早く把握したい場合に適しています。

階層化型 は、セクション(例:ホスト監視、アプリケーション監視)ごとに行を分け、論理的に整理するスタイルです。スケールしても見やすさが保たれます。

自分たちのチーム文化と見易さのバランスで、最適なレイアウトを選んでください。

パネルタイプの選択と活用

Grafana には、複数のパネルタイプが用意されており、どのタイプを選ぶかで、視認性と分析効率が大きく変わります。以下の比較表を参考に、適切なパネルを選択してください。

パネルタイプ主な用途推奨メトリクス例PromQL 例
TimeSeries時系列データの推移を見たいCPU使用率、メモリ、リクエスト数rate(http_requests_total[5m])
Stat現在値を数字で確認したいアラート数、稼働台数、エラー率count(up==1)
Gauge正常範囲内か直感的に判断したいディスク使用率(%)、メモリ(%)(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100
Table複数メトリクスをホスト別に比較したいホスト別リソース、ステータス一覧{job="node"} or {job="app"}
Pie chart全体に占める割合を見たいアラート分類、ステータス分布count by (severity)

TimeSeries パネル は最も一般的で、CPU 使用率やメモリ使用量の推移を見るのに向いています。複数のメトリクスを重ねて表示し、相関を分析することも簡単です。

Stat パネル は、単一の数値を大きく表示します。「現在のアラート数は 5 件」といった、現在の状態を素早く確認したいときに重宝します。

Gauge パネル は、円形のゲージで数値を表示し、正常範囲(緑)と危険範囲(赤)を色分けできます。ディスク使用率が 90% に達していないか、一目で確認できます。

Table パネル は、複数ホストのメトリクスを行列形式で表示します。ホスト数が多い場合、一覧で比較したいなら、このパネルが最適です。

Pie chart パネル は、カテゴリー別の割合を円グラフで表示します。例えば、エラーログの種類別分布を見たいときに使えます。

Grafana 設定のコツ

よくある設定ミス

Prometheus URL の間違い が最も多いミスです。ローカル環境では ` で良いのですが、Docker コンテナ環境では、Prometheus コンテナへのアドレスが異なる場合があります。「Data source is not working」というエラーが出た場合は、URL を確認してください。

スクレイプ間隔の設定ミス も起こりやすいです。Prometheus の実際のスクレイプ間隔(例:15 秒)と、Grafana の設定が異なる場合、ダッシュボードの表示がぎくしゃくすることがあります。両者を統一するか、Grafana を明示的に 30 秒にするなど、調整が必要です。

パフォーマンス調整のポイント

クエリのシンプル化 がパフォーマンス向上の鍵です。複雑な PromQL(例:複数の PromQL 関数を組み合わせたもの)は、実行時間が長くなります。可能なら、Prometheus の recording rules を使って、あらかじめ集計したメトリクスをクエリした方が高速です。

レンジクエリの時間範囲を制限 することも重要です。ダッシュボードで1年分のデータを表示しようとすれば、クエリが遅くなります。ダッシュボードの目的(リアルタイム監視なら過去 24 時間、トレンド分析なら過去 30 日)に応じて、時間范囲を適切に設定しましょう。

ダッシュボードの自動更新間隔 も調整が必要です。デフォルトでは数十秒ごとにクエリが実行される場合があり、Prometheus に負荷をかけることになります。運用目的に応じて、1 分~数分の更新間隔に設定するとバランスが取れます。


関連記事