node_exporter

Linux/UNIXマシン自体のハードウェア・OSレベルのメトリクス(CPU、メモリ、ディスクI/O、ネットワーク、ファイルシステムなど)をPrometheus形式で公開する公式exporter。Go製のシングルバイナリで、/proc/sys以下の仮想ファイルシステムをパースしてメトリクス化する「collector」がドメインごとにプラグイン的に実装されている(cpumeminfodiskstatsfilesystemなど)。各collectorは共通のCollectorインターフェースを実装し、/metricsへのスクレイプ時にNodeCollectorが全collectorのUpdate()を呼び出してメトリクスを集約する。

#observability

動作モデル

Prometheus本体と同じくpull型。node_exporterはHTTPサーバーとして起動し(デフォルトポート9100)、Prometheusサーバー側が/metricsエンドポイントを定期的にスクレイプしに来る。

textfile collector

--collector.textfile.directory=<dir>フラグで指定したディレクトリ内の*.promファイル(Prometheusのtext exposition format)をスクレイプのたびに読み込み、そのままメトリクスとしてマージして公開する機能。node_exporter自身が対応していない独自メトリクスや、cronジョブの実行結果(“最後に成功した時刻"など)を後付けで露出させたい場合に使う。

  • ファイルごとにnode_textfile_mtime_seconds{file="..."}(最終読み込み成功時のmtime)が自動付与される
  • タイムスタンプ付きの行(metric_name 1 1234567890000のような3カラム目)はサポートされておらず、含まれているとそのファイル全体がパース不可としてスキップされる(他の.promファイルには影響しない、ファイル単位のエラー)。この場合node_textfile_scrape_errorが1になる
  • 書き込み中の不完全な内容を読まれないよう、一時ファイルに書いてからmvでリネームするatomicな置き換えが推奨パターンとして機能することを実験で確認した(詳細はtextfile collectorを動かした実験記録参照)

出典

作成日時: 2026-08-17 09:48 / 更新日時: 2026-08-17 09:51