# Prometheus Node Exporter — Hardware and OS Metrics for Unix Systems > Node Exporter is the official Prometheus exporter for machine-level metrics, exposing CPU, memory, disk, filesystem, and network statistics from Linux and other Unix systems via an HTTP endpoint. ## Install Save in your project root: # Prometheus Node Exporter — Hardware and OS Metrics for Unix Systems ## Quick Use ```bash # Download and run wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz tar xvfz node_exporter-*.tar.gz cd node_exporter-* && ./node_exporter # Scrape metrics curl http://localhost:9100/metrics # Add to prometheus.yml # scrape_configs: # - job_name: node # static_configs: # - targets: ['localhost:9100'] ``` ## 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.` flags - Enable optional collectors like `systemd`, `processes`, or `tcpstat` explicitly - Use `--collector.textfile.directory` to 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 `.prom` files 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.` flags. ## Sources - https://github.com/prometheus/node_exporter - https://prometheus.io/docs/guides/node-exporter/ --- Source: https://tokrepo.com/en/workflows/ea6dae1a-3f30-11f1-9bc6-00163e2b0d79 Author: AI Open Source