Introduction
Node Exporter is the standard way to feed host-level metrics into Prometheus. It reads data from Linux pseudo-filesystems (/proc, /sys) and exposes hundreds of hardware and kernel metrics on a single HTTP endpoint that Prometheus scrapes.
What Node Exporter Does
- Exposes CPU usage per core and per mode (user, system, idle, iowait)
- Reports memory, swap, and hugepage statistics from /proc/meminfo
- Tracks disk I/O, filesystem space, and mount-point health
- Monitors network interface bytes, packets, errors, and drops
- Provides thermal, power supply, and hardware sensor readings via sysfs
Architecture Overview
Node Exporter is a single Go binary that registers a set of collectors. Each collector reads from a specific Linux subsystem (procfs, sysfs, ethtool, etc.) and emits Prometheus-format metrics. Collectors are enabled or disabled via CLI flags. The binary listens on port 9100 and responds to GET /metrics with a text exposition of all enabled collectors.
Self-Hosting & Configuration
- Run as a systemd service with
--web.listen-address=:9100 - Disable unneeded collectors with
--no-collector.<name>flags - Enable optional collectors like
systemd,processes, ortcpstatexplicitly - Use
--collector.textfile.directoryto expose custom metrics from cron jobs - Deploy as a Kubernetes DaemonSet using the Prometheus community Helm chart
Key Features
- 40+ built-in collectors covering CPU, memory, disk, network, and more
- Textfile collector: drop
.promfiles to expose custom batch metrics - TLS and basic auth support for secure metric endpoints
- Low overhead: typically under 15 MB RSS and negligible CPU
- Pairs with Grafana's Node Exporter Full dashboard for instant visibility
Comparison with Similar Tools
- Telegraf — push-based, multi-output; Node Exporter is Prometheus-native pull
- cAdvisor — container-level metrics; Node Exporter covers the host OS
- collectd — plugin-based collector; Node Exporter is simpler, single-purpose
- Netdata — real-time dashboard included; Node Exporter is headless, pairs with Grafana
FAQ
Q: Does Node Exporter work on macOS or Windows? A: macOS is partially supported. Windows has a separate project: windows_exporter.
Q: How do I add custom metrics?
A: Write a script that outputs Prometheus text format to a .prom file in the textfile directory. Node Exporter serves them automatically.
Q: What is the scrape performance impact? A: A typical scrape takes 50-200 ms and produces 1-3 MB of text. Impact on the host is negligible.
Q: Can I filter which metrics Prometheus collects?
A: Yes. Use metric_relabel_configs in Prometheus or --collector.disable-defaults with explicit --collector.<name> flags.