HOME > 技術ドキュメント > Prometheus + Grafana サーバー監視入門
Prometheus + Grafana サーバー監視入門(Ubuntu 24.04 LTS)
Prometheus はオープンソースの時系列データベース型監視システムで、
サーバーの CPU・メモリ・ディスク・ネットワーク使用率などのメトリクスを収集します。
Grafana はそのデータを可視化するダッシュボードツールです。
本ドキュメントでは Ubuntu 24.04 LTS 上への構築手順を解説します。
1. アーキテクチャ概要
| コンポーネント | 役割 | デフォルトポート |
|---|---|---|
| Prometheus | メトリクス収集・保存(時系列 DB)・クエリエンジン(PromQL) | 9090 |
| node_exporter | OS メトリクス(CPU/メモリ/ディスク/NW)を HTTP で公開 | 9100 |
| Grafana | Prometheus をデータソースとしてダッシュボードを表示 | 3000 |
| Alertmanager | Prometheus のアラートルールに基づいて通知を送信 | 9093 |
2. Prometheus のインストール
# 専用ユーザー作成 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
3. prometheus.yml の設定
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
4. systemd サービスの設定と起動
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
5. node_exporter のインストール
監視したいすべてのサーバーに 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
6. Grafana のインストール
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(初回ログイン時に変更を求められます)
7. Grafana にデータソースを追加してダッシュボードを作成
データソースの追加:
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・メモリ・ディスク・ネットワークのグラフが一括で表示されます。
8. アラートルール設定
# /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 などと連携できます。
監視ダッシュボード自体を HTTPS で保護する
Grafana は Nginx をリバースプロキシとして前段に置き、SSL証明書で HTTPS 化することを推奨します。
監視データは社内情報であり、平文 HTTP での閲覧はリスクになります。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
2009年から16年以上、RapidSSL 3,960円/1年(税込)〜でSSL証明書を販売しています。審査サポート・インストール代行も対応しています。
SSL証明書の購入はこちら / Nginx SSL/TLS 設定 / Nginx アクセス制御(Basic認証・IP制限)
