2026年8月12日

2026年8月12日

GrafanaでPrometheusのメトリクスを可視化する方法(Ubuntuでの導入手順)

Prometheus は、サーバーやアプリケーションのメトリクス(CPU 使用率やメモリ量などの数値)を定期的に集めて時系列データとして保存する監視システムです。Grafana は、そのデータをグラフやダッシュボードとして表示するツールです。組み合わせると、サーバーの状態の推移を一つの画面で確認できます。

この記事では、1台の Ubuntu サーバー(24.04 LTS を想定)に次の3つを入れ、サーバー自身の状態を Grafana で見られるようにします。手順は 2026年10月時点の Grafana 公式ドキュメントと Ubuntu のパッケージに基づいています。

ソフト 役割 既定のポート
node_exporter サーバーの CPU・メモリ・ディスク・ネットワークの値を公開する 9100
Prometheus node_exporter から値を集めて保存する 9090
Grafana Prometheus のデータをグラフにする 3000

1. Prometheusとnode_exporterを入れる

Ubuntu のリポジトリ(universe)に prometheus と prometheus-node-exporter のパッケージがあります。

sudo apt update
sudo apt install -y prometheus prometheus-node-exporter
systemctl status prometheus prometheus-node-exporter --no-pager

ディストリビューションのパッケージは、Prometheus の最新版より古いことがあります。新しい版が必要な場合は、prometheus.io の公式バイナリを使ってください。

収集対象を確認する

設定ファイルは /etc/prometheus/prometheus.yml です。scrape_configs に、同じサーバーの node_exporter(localhost:9100)を読むジョブがあるか確認します。なければ次のように追加します。

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

YAML はインデント(半角スペース)で構造を表すので、既存の行と揃えてください。変更後は文法を確かめてから再起動します。

promtool check config /etc/prometheus/prometheus.yml
sudo systemctl restart prometheus

Prometheusが値を集めているか確認する

# 起動して準備ができていれば "Prometheus Server is Ready." のような応答が返る
curl -s http://localhost:9090/-/ready

# node_exporter が値を出しているか
curl -s http://localhost:9100/metrics | grep '^node_load1'

ブラウザで Prometheus の画面(http://サーバーのIP:9090/targets)を開くと、各ジョブの状態が UP になっているかを確認できます。外部から開けない場合は、後述の SSH トンネルを使ってください。

2. Grafanaを入れる

Grafana は Ubuntu の標準リポジトリには含まれていないため、Grafana Labs の APT リポジトリを追加して入れます(Grafana 公式ドキュメントの手順)。

sudo apt-get install -y apt-transport-https wget gnupg
sudo mkdir -p /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/grafana.asc https://apt.grafana.com/gpg-full.key
sudo chmod 644 /etc/apt/keyrings/grafana.asc
echo "deb [signed-by=/etc/apt/keyrings/grafana.asc] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana

起動して、OS の起動時にも立ち上がるようにします。

sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server.service

初回ログインとパスワード

ブラウザで http://サーバーのIP:3000 を開きます。初期のユーザー名とパスワードはどちらも admin で、初回ログイン時に新しいパスワードの設定を求められます。

管理者のパスワードを忘れた場合は、サーバー上でリセットできます。

sudo grafana cli --homepath /usr/share/grafana admin reset-admin-password '新しいパスワード'

ほかの利用者のアカウントは、コマンドではなく Grafana の管理画面(Administration → Users and access → Users)から追加します。

3. Prometheusをデータソースとして追加する

Grafana の画面で次の順に操作します。

  1. 左のメニューの Connections → Add new connection を開く
  2. 検索欄に Prometheus と入力し、Prometheus を選ぶ
  3. 右上の Add new data source を押す
  4. Prometheus server URL に http://localhost:9090 を入力する(Grafana と Prometheus が同じサーバーの場合)
  5. 画面下の Save & test を押す

「Successfully queried the Prometheus API.」と表示されれば接続できています。失敗する場合は、Grafana のサーバーから curl -s http://localhost:9090/-/ready が応答するかを確認してください。

4. ダッシュボードを表示する

公開されているダッシュボードをインポートする

node_exporter の値を一通り表示するダッシュボードが grafana.com で公開されています。よく使われるのは「Node Exporter Full」(ID 1860)です。

  1. 左のメニューの Dashboards を開き、New → Import を選ぶ
  2. ダッシュボードの ID に 1860 を入力して Load を押す
  3. データソースに手順3で追加した Prometheus を選び、Import を押す

CPU・メモリ・ディスク・ネットワークのグラフが並んだダッシュボードが表示されます。

PromQLで自分のパネルを作る

Dashboards → New → New dashboard → Add visualization を選び、データソースに Prometheus を指定してクエリを入力します。よく使うクエリの例です。

# CPU 使用率(%)
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# メモリ使用率(%)
(1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

# ルートファイルシステムの空き容量(%)
node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100

# ネットワーク受信量(バイト/秒)
rate(node_network_receive_bytes_total{device!="lo"}[5m])

rate(...[5m]) は、累積で増え続けるカウンターの値を「直近5分間の1秒あたりの増加量」に直す関数です。名前が _total で終わるメトリクスはカウンターなので、rate() を付けてグラフにします。パネルを作ったら、右上の保存ボタンでダッシュボードを保存してください。

5. 外部に公開しないようにする

Prometheus(9090)と node_exporter(9100)は、既定では認証なしで誰でも値を読めます。Grafana(3000)もログイン画面をインターネットに出すことになります。次のどちらかで、外から直接開けないようにしてください。

  • ファイアウォールで、管理用の IP アドレス以外からの 3000・9090・9100 への接続を拒否する(例: ufw)。
  • ポートは開けず、手元の PC から SSH トンネルで接続する。
# 手元の PC で実行し、ブラウザで http://localhost:3000 を開く
ssh -L 3000:localhost:3000 ユーザー名@サーバーのIP

Grafana を常にブラウザから使う場合は、Nginx などのリバースプロキシで HTTPS 化してから公開します。

うまくいかないとき

症状 確認すること
Save & test が失敗する Prometheus が起動しているか(systemctl status prometheus)、URL のホスト名とポートが正しいか
グラフが「No data」になる Prometheus の Targets 画面で node ジョブが UP か、ダッシュボードの表示期間(右上)が導入後の時間を含んでいるか
Grafana の画面が開けない systemctl status grafana-server、ファイアウォールで 3000 番が許可されているか
設定変更後に Prometheus が起動しない promtool check config で YAML の誤りを確認し、journalctl -u prometheus でエラーを見る

関連記事:

まとめ

  • node_exporter がサーバーの値を出し、Prometheus が集めて保存し、Grafana が表示します。
  • Prometheus と node_exporter は Ubuntu のパッケージで、Grafana は Grafana Labs の APT リポジトリから入れます。
  • データソースに http://localhost:9090 を追加し、ダッシュボード ID 1860 のインポートか PromQL のパネルで可視化します。
  • 9090・9100・3000 番はインターネットに直接公開せず、ファイアウォールか SSH トンネルで守ります。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲