What is Node Exporter?
Node Exporter is a Prometheus exporter that collects and exposes hardware and OS-level metrics from Linux and Unix-like systems. It runs as a background service and makes these metrics available over HTTP, typically at http://localhost:9100/metrics, where Prometheus scrapes them for monitoring and alerting.
What It Monitors
Node Exporter gathers system-level metrics such as:
- CPU usage
- Memory usage
- Disk I/O and space
- Network statistics
- Filesystem metrics
- System load and uptime
- Hardware sensor data (if available)
- Systemd service states
Key Features
- Lightweight & efficient: Minimal overhead, ideal for all server types.
- Easy integration: Works seamlessly with Prometheus and Grafana.
- Modular collectors: Can enable or disable specific metric collectors.
- Secure options: Supports TLS and basic auth (via reverse proxy or exporter wrappers).
Common Use Case
- Infrastructure monitoring: Paired with Prometheus and Grafana to build dashboards and alerting systems for your serversβ health and performance.
Prerequisites
- A Debian VPS (Debian 10/Debian 11/Debian 12)
- Root or sudo access
- Prometheus server (optional, but needed for metrics scraping)
Compare Debian VPS Plans
How to Install and Configure Node Exporter on Debian VPS
To install and configure Node Exporter on Debian VPS, follow the steps below:
-
Create a Dedicated User
Itβs best practice to run Node Exporter as a non-privileged system user.
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
-
Download Node Exporter
- Find the latest version from the official releases page:
https://github.com/prometheus/node_exporter/releases - Download and extract:
cd /tmp wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-amd64.tar.gz tar -xzf node_exporter-1.9.1.linux-amd64.tar.gz
Replace
1.9.1with the latest version if needed. - Move the binary to a system path:
sudo mv node_exporter-1.9.1.linux-amd64/node_exporter /usr/local/bin/ sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
- Find the latest version from the official releases page:
-
Create a Systemd Service
Create a systemd service file to manage Node Exporter as a system service.
sudo nano /etc/systemd/system/node_exporter.service
Paste the following:
[Unit] Description=Prometheus Node Exporter Wants=network-online.target After=network-online.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target
Save and exit.
-
Start and Enable the Service
sudo systemctl daemon-reexec sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter
Check status:
sudo systemctl status node_exporter
-
Allow Port in Firewall
By default, Node Exporter exposes metrics on port
9100.If
ufwis enabled:sudo ufw allow 9100/tcp
-
Test Node Exporter
Open your browser or use curl to check if itβs running:
http://:9100/metrics
You should see a long list of metrics in plain text.
-
Configure Prometheus to Scrape Node Exporter
If youβre using Prometheus, add the target in
prometheus.yml:- job_name: 'node_exporter' static_configs: - targets: [':9100']Reload Prometheus or restart the service:
sudo systemctl restart prometheus
Bonus: Secure Node Exporter with NGINX + Lets Encrypt
To secure Node Exporter with TLS (HTTPS), youβll need to wrap it behind a reverse proxy like NGINX (since Node Exporter doesnβt support TLS natively). Weβll use Certbot to get a Letβs Encrypt SSL certificate.
Prerequisites
- Domain name pointing to your VPS (e.g.
metrics.example.com) - Node Exporter running on
localhost:9100 - Port 80 and 443 open in firewall
To secure Node Exporter with TLS using NGINX + Letβs Encrypt, follow the steps below:
-
Install NGINX
sudo apt update sudo apt install nginx -y
Enable and start:
sudo systemctl enable nginx sudo systemctl start nginx
-
Configure Reverse Proxy for Node Exporter
Create a new NGINX config:
sudo nano /etc/nginx/sites-available/node_exporter
Paste this config (replace domain name):
server { listen 80; server_name metrics.example.com; location / { proxy_pass http://localhost:9100/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }Enable the site:
sudo ln -s /etc/nginx/sites-available/node_exporter /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
-
Install Certbot and Get SSL Certificate
Install Certbot:
sudo apt install certbot python3-certbot-nginx -y
Request SSL:
sudo certbot --nginx -d metrics.example.com
When prompted, choose to redirect HTTP to HTTPS.
-
Auto-Renew SSL Certificate
Letβs Encrypt certs are valid for 90 days. Add a cron job to auto-renew:
sudo systemctl list-timers | grep certbot
Certbot installs a timer automatically. To test:
sudo certbot renew --dry-run
-
Test Access Over HTTPS
Visit:
https://metrics.example.com
You should see Node Exporterβs
/metricsoutput over a secure HTTPS connection.
Verify Metrics in Prometheus
- Visit Prometheus web UI:
http://prometheus.example.com:9090 - Run a query like:
node_cpu_seconds_total
You should see live metrics.
Conclusion
You now know how to install and configure Node Exporter on Debian VPS.











[β¦] Exporter: Install and configure Node Exporter for detailed system-level [β¦]
[β¦] See: π How to Install and Configure Node Exporter on Debian VPS [β¦]
[β¦] Prometheus already installed and scraping Node Exporter [β¦]
[β¦] This dashboard provides an in-depth view of your Linux server metrics using the Prometheus Node Exporter. It includes panels for CPU usage, memory usage, network IO, disk IO, file system stats, and [β¦]