1. Node Exporter のデプロイ方法
Kubernetes クラスタ内の各ワーカーノードに、Node Exporter を DaemonSet またはバイナリ方式で展開します。これにより、ホストレベルのシステムメトリクス(CPU、メモリ、ディスク、ネットワークなど)を収集し、Prometheus が `/metrics` エンドポイント(デフォルトポート: 9100)経由で定期的にスクレイプできるようになります。# バイナリダウンロードと展開(例:v1.6.1)
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xzf node_exporter-1.6.1.linux-amd64.tar.gz -C /opt/
sudo ln -sf /opt/node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/node_exporter
# systemd サービス定義(/etc/systemd/system/node-exporter.service)
[Unit]
Description=Node Exporter for Host Metrics
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/bin/node_exporter \
--web.listen-address=:9100 \
--web.telemetry-path=/metrics \
--collector.systemd \
--collector.textfile.directory=/var/lib/node_exporter/textfiles
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
サービスを有効化・起動後、ポート状態を確認します:
sudo systemctl daemon-reload
sudo systemctl enable --now node-exporter
ss -tlnp | grep :9100
2. メトリクスエンドポイントの検証
ノードの IP アドレスに対してhttp://<NODE_IP>:9100/metrics にアクセスすると、生の Prometheus 形式のメトリクスがテキスト形式で返されます。以下は代表的な指標カテゴリです:
node_boot_time_seconds:システム起動からの経過秒数node_cpu_seconds_total:CPU 使用時間(mode ごと)node_disk_io_time_seconds_total:ディスク I/O 時間node_filesystem_avail_bytes:利用可能なファイルシステム容量node_load1:1分間の平均ロードアベレージnode_memory_MemAvailable_bytes:利用可能な物理メモリ量node_network_receive_bytes_total:受信バイト数(インターフェース別)node_time_seconds:現在の Unix タイムスタンプgo_goroutines,process_resident_memory_bytes:Exporter 自身のランタイム指標
3. Prometheus サーバー側の設定変更
Prometheus の設定ファイルprometheus.yml に、Node Exporter のターゲットを追加します。複数ノードがある場合は static_configs にリスト形式で記述します。
# prometheus.yml の scrape_configs セクション内に追加
- job_name: 'host-metrics'
static_configs:
- targets:
- '192.168.50.10:9100'
- '192.168.50.11:9100'
- '192.168.50.12:9100'
# オプション:特定のコレクターのみ有効化(例:メモリとディスクのみ)
params:
collect[]:
- meminfo
- diskstats
- filesystem
設定反映には、--web.enable-admin-api を有効化した上でリロードを実行します:
curl -X POST http://localhost:9090/-/reload
4. スクレイプ結果の確認
Prometheus Web UI(http://<PROMETHEUS_IP>:9090/targets)で「host-metrics」ジョブのステータスが UP であることを確認します。また、http://<PROMETHEUS_IP>:9090/graph で node_cpu_seconds_total や node_memory_MemAvailable_bytes をクエリして、データが正しく取得されているかを検証できます。
5. コレクターのカスタマイズとフィルタリング
Node Exporter は多数のコレクターを提供しており、必要に応じて有効/無効化可能です。コマンドライン引数で制御する方法と、Prometheus 側のparams による制御が併用可能です。
- すべてのデフォルトコレクターを無効化し、必要なものだけを明示的に有効化:
node_exporter \
--collector.disable-defaults \
--collector.meminfo \
--collector.diskstats \
--collector.netdev
- 特定のマウントポイントを除外(例:Docker や Kubernetes の一時ファイルシステム):
--collector.filesystem.mount-points-exclude="^/(dev|proc|sys|var/lib/docker|var/lib/kubelet)($|/)"
- Prometheus 設定での指定(上記と同等の効果):
params:
collect[]:
- meminfo
- diskstats
exclude[]:
- netdev
6. 外部テキストファイルからのカスタム指標統合
--collector.textfile.directory を指定することで、外部の `.prom` 形式ファイルから独自指標を読み込むことができます。例として、手動で生成されたメモリ使用率指標を追加します:
# /var/lib/node_exporter/textfiles/custom_mem.prom
# HELP node_custom_memory_usage_bytes Custom memory usage in bytes
# TYPE node_custom_memory_usage_bytes gauge
node_custom_memory_usage_bytes 4294967296
# HELP node_custom_memory_total_bytes Total memory capacity
# TYPE node_custom_memory_total_bytes gauge
node_custom_memory_total_bytes 1099511627776
このファイルが存在すれば、Node Exporter は自動的にその内容を /metrics に含めて公開します。