This article will provide a guide for how to install and configure Node Exporter on Debian VPS.
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)
🛠️ 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.8.1/node_exporter-1.9.1.linux-amd64.tar.gz tar -xzf node_exporter-1.9.1.linux-amd64.tar.gz
Replace
1.9.1
with the latest version if needed. - Move the binary to a system path:
sudo mv node_exporter-1.8.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
ufw
is 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
/metrics
output 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 […]