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 の画面で次の順に操作します。
- 左のメニューの Connections → Add new connection を開く
- 検索欄に
Prometheusと入力し、Prometheus を選ぶ - 右上の Add new data source を押す
- Prometheus server URL に
http://localhost:9090を入力する(Grafana と Prometheus が同じサーバーの場合) - 画面下の Save & test を押す
「Successfully queried the Prometheus API.」と表示されれば接続できています。失敗する場合は、Grafana のサーバーから curl -s http://localhost:9090/-/ready が応答するかを確認してください。
4. ダッシュボードを表示する
公開されているダッシュボードをインポートする
node_exporter の値を一通り表示するダッシュボードが grafana.com で公開されています。よく使われるのは「Node Exporter Full」(ID 1860)です。
- 左のメニューの Dashboards を開き、New → Import を選ぶ
- ダッシュボードの ID に
1860を入力して Load を押す - データソースに手順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 トンネルで守ります。