株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > Prometheus + Grafana サーバー監視入門

Prometheus + Grafana サーバー監視入門(Ubuntu 24.04 LTS)


Prometheus はオープンソースの時系列データベース型監視システムで、 サーバーの CPU・メモリ・ディスク・ネットワーク使用率などのメトリクスを収集します。
Grafana はそのデータを可視化するダッシュボードツールです。
本ドキュメントでは Ubuntu 24.04 LTS 上への構築手順を解説します。


コンポーネント 役割 デフォルトポート
Prometheus メトリクス収集・保存(時系列 DB)・クエリエンジン(PromQL) 9090
node_exporter OS メトリクス(CPU/メモリ/ディスク/NW)を HTTP で公開 9100
Grafana Prometheus をデータソースとしてダッシュボードを表示 3000
Alertmanager Prometheus のアラートルールに基づいて通知を送信 9093

# 専用ユーザー作成
sudo useradd --no-create-home --shell /bin/false prometheus

# ディレクトリ作成
sudo mkdir /etc/prometheus /var/lib/prometheus

# 最新バージョンを確認して取得(例:2.51.x)
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.51.2/prometheus-2.51.2.linux-amd64.tar.gz
tar xzf prometheus-2.51.2.linux-amd64.tar.gz
cd prometheus-2.51.2.linux-amd64

sudo cp prometheus promtool /usr/local/bin/
sudo cp -r consoles console_libraries /etc/prometheus/
sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

sudo nano /etc/prometheus/prometheus.yml
global:
  scrape_interval: 15s       # 15秒ごとにメトリクス収集
  evaluation_interval: 15s   # アラートルール評価間隔

rule_files:
  - /etc/prometheus/alert_rules.yml

scrape_configs:
  # Prometheus 自身の監視
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  # ノードメトリクス
  - job_name: "node"
    static_configs:
      - targets:
          - "localhost:9100"        # 自サーバー
          - "192.168.1.10:9100"     # 監視対象サーバー(複数可)
        labels:
          env: "production"
# 設定ファイルの構文チェック
promtool check config /etc/prometheus/prometheus.yml

sudo nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring
After=network.target

[Service]
User=prometheus
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --storage.tsdb.retention.time=30d \
  --web.listen-address=0.0.0.0:9090
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
sudo systemctl status prometheus

監視したいすべてのサーバーに node_exporter をインストールします。

cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-amd64.tar.gz
tar xzf node_exporter-1.8.1.linux-amd64.tar.gz
sudo cp node_exporter-1.8.1.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /bin/false node_exporter
# /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter

# メトリクスが取得できるか確認
curl http://localhost:9100/metrics | head -20

sudo apt install -y apt-transport-https software-properties-common

# Grafana 公式リポジトリを追加
wget -q -O - https://apt.grafana.com/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/grafana.gpg
echo "deb https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

sudo apt update
sudo apt install -y grafana

sudo systemctl enable --now grafana-server
sudo systemctl status grafana-server

ブラウザで http://<サーバーIP>:3000 にアクセスします。
初期ユーザー:admin / 初期パスワード:admin(初回ログイン時に変更を求められます)


データソースの追加:
Grafana → Configuration → Data Sources → Add data source → Prometheus
URL: http://localhost:9090 → Save & Test

Node Exporter Full ダッシュボードのインポート:
Dashboards → Import → ID 1860 と入力 → Load → Prometheus データソースを選択 → Import
CPU・メモリ・ディスク・ネットワークのグラフが一括で表示されます。


# /etc/prometheus/alert_rules.yml
groups:
  - name: node_alerts
    rules:
      # CPU 使用率が5分間 90% 超でアラート
      - alert: HighCPUUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU使用率が高い: {{ $labels.instance }}"
          description: "CPU使用率が {{ $value | printf \"%.1f\" }}% 超えています"

      # メモリ使用率が 90% 超
      - alert: HighMemoryUsage
        expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "メモリ不足: {{ $labels.instance }}"

      # ディスク使用率が 85% 超
      - alert: DiskSpaceLow
        expr: (1 - node_filesystem_avail_bytes{fstype!="tmpfs"} / node_filesystem_size_bytes{fstype!="tmpfs"}) * 100 > 85
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "ディスク残量が少ない: {{ $labels.instance }}"

通知の送信には Alertmanager(別途インストール)を使い、 メール・Slack・PagerDuty などと連携できます。


Grafana は Nginx をリバースプロキシとして前段に置き、SSL証明書で HTTPS 化することを推奨します。 監視データは社内情報であり、平文 HTTP での閲覧はリスクになります。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。

SSL証明書の購入はこちら / Nginx SSL/TLS 設定 / Nginx アクセス制御(Basic認証・IP制限)


← 技術ドキュメント一覧へ戻る