Ubuntu 26.04 で node_exporter を導入し、Prometheus からホストメトリクスを収集できる状態にするための基本設定を整理します。node_exporter は、CPU、memory、disk、filesystem、network など、Linux ホスト側の状態を Prometheus 形式で公開する exporter です。
この記事では、Prometheus サーバーそのものの構築ではなく、監視対象ホスト側に prometheus-node-exporter を入れて、9100/tcp でメトリクスを取得できる状態にするところまでを扱います。
書籍
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
node_exporter の位置づけ
node_exporter は、監視対象の Linux ホスト上で動作し、Prometheus が scrape するための HTTP endpoint を公開します。Zabbix のように監視サーバー側へホストを登録していく発想とは少し違い、Prometheus 側が対象 endpoint を定期的に取りに行く構成になります。
| 項目 | 内容 |
|---|---|
| 役割 | Linux ホストのメトリクスを Prometheus 形式で公開する |
| 主な port | 9100/tcp |
| Ubuntu package | prometheus-node-exporter |
| service | prometheus-node-exporter.service |
| 設定ファイル | /etc/default/prometheus-node-exporter |
重要なのは、node_exporter が「監視の完成形」ではなく、ホスト状態を取得するための部品であることです。アラート条件、ダッシュボード、障害時に見る順序は Prometheus / Alertmanager / Grafana 側で別途設計します。
package をインストールする
Ubuntu 26.04 では、APT から prometheus-node-exporter を導入できます。まず package を入れ、systemd service として扱える状態にします。
sudo apt update
sudo apt install -y prometheus-node-exporterpackage 名は node_exporter ではなく prometheus-node-exporter です。サービス名も Ubuntu package の名前に合わせて prometheus-node-exporter.service になります。
起動引数を確認する
Ubuntu の package では、起動引数は /etc/default/prometheus-node-exporter で管理します。最小構成では ARGS を空にして、package 標準の collector と listen 設定を使います。
sudo tee /etc/default/prometheus-node-exporter >/dev/null <<'EOF'
ARGS=""
EOF
sudo systemctl restart prometheus-node-exporter.serviceARGS は、collector の追加・除外や listen address の変更が必要な場合に使います。最初から複雑な引数を入れるより、まず標準状態で何が取れるかを確認し、必要に応じて絞り込む方が安全です。
listen address を制限する場合
管理 network だけから scrape させたい場合は、--web.listen-address で待ち受け address を明示できます。環境によって interface address は異なるため、次は例です。
sudo tee /etc/default/prometheus-node-exporter >/dev/null <<'EOF'
ARGS="--web.listen-address=10.0.0.10:9100"
EOF
sudo systemctl restart prometheus-node-exporter.service全 interface で待ち受ける場合でも、公開 network にそのまま出すべきではありません。Prometheus サーバーや監視 network からだけ到達できるように、firewall、security group、経路制御のいずれかで制限します。
service を有効化する
インストール後は systemd service として起動し、再起動後にも自動起動するようにします。
sudo systemctl enable --now prometheus-node-exporter.service
systemctl status prometheus-node-exporter.servicesystemctl status では、service が active (running) になっていることを確認します。起動できない場合は、まず設定ファイルの引用符や起動引数の誤りを疑います。
metrics endpoint を確認する
node_exporter は HTTP でメトリクスを公開します。ローカルホストから 9100/tcp の待ち受けと /metrics の応答を確認します。
ss -ltnp | grep ':9100'
curl -s http://127.0.0.1:9100/metrics | head/metrics には多数の行が出力されます。node_cpu_seconds_total、node_memory_MemAvailable_bytes、node_filesystem_avail_bytes などが見えれば、ホストメトリクスを公開できています。
Prometheus 側から scrape する
Prometheus から収集する場合は、Prometheus 側の scrape target に対象ホストの 9100/tcp を追加します。次は静的に 1 台を指定する最小例です。
scrape_configs:
- job_name: node
static_configs:
- targets:
- ubuntu.example.internal:9100実運用では、ホスト名、site、role、environment などを label として整理すると、Grafana の dashboard や alert rule で扱いやすくなります。ただし、label を増やしすぎると運用上の意味が薄くなるため、検索・集計・障害切り分けに使う単位に絞ります。
確認する観点
node_exporter を入れた後は、service が起動しているかだけでなく、Prometheus が実際に scrape できているかを確認します。監視対象ホストから見える状態と、監視サーバーから見える状態は同じではありません。
prometheus-node-exporter.serviceが起動しているか9100/tcpが意図した address で待ち受けているか- Prometheus サーバーから対象ホストの
9100/tcpに到達できるか /metricsの応答が返るか- Prometheus の target 画面で
UPになっているか - 公開 network から意図せず到達できないか
公開範囲を広げすぎない
node_exporter は認証機能を前提にした公開サービスではありません。取得できる情報は、ホスト名、filesystem、network interface、CPU、memory などの運用情報を含みます。外部公開するものではなく、監視基盤から到達できる範囲に閉じるべきです。
監視のために endpoint を増やすことは必要ですが、同時に攻撃対象領域も増えます。特にクラウドや複数 network interface を持つサーバーでは、どの address で待ち受けるのか、どの経路から到達できるのかを確認します。
まとめ
Ubuntu 26.04 で node_exporter を使う場合、基本は prometheus-node-exporter package を導入し、/etc/default/prometheus-node-exporter で起動引数を管理し、prometheus-node-exporter.service を有効化する流れです。
node_exporter は、ホストメトリクスを収集するための入口です。これだけで監視設計が完成するわけではありません。どのホストを対象にするのか、どの label で整理するのか、どの値を alert に使うのか、どの dashboard で状態を見るのかまで含めて、Prometheus / Grafana 側の設計につなげる必要があります。


