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.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 [β¦]