This guide sets up a Prometheus + Grafana monitoring stack to visualize CPU, memory, disk, and network metrics for a Proxmox host (Dell R720).
Prometheus scrapes metrics from the Node Exporter running on your Proxmox host, and Grafana provides the web-based dashboard.
Use an Ubuntu Server VM on your Proxmox host (2+ GB RAM recommended).
sudo apt update && sudo apt upgrade -y
sudo apt install prometheus -y
Enable and start Prometheus:
sudo systemctl enable prometheus
sudo systemctl start prometheus
Verify:
sudo systemctl status prometheus
→ Should show active (running)
Test via browser:
👉 http://<monitoring-vm-ip>:9090
sudo apt install -y apt-transport-https software-properties-common
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://packages.grafana.com/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/grafana.gpg
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
sudo apt install grafana -y
sudo systemctl enable --now grafana-server
Test in browser:
👉 http://<monitoring-vm-ip>:3000
Default credentials: admin / admin
SSH into your Host:
apt update
apt install prometheus-node-exporter -y
Node Exporter runs automatically and listens on port 9100.
Check:
sudo systemctl status prometheus-node-exporter
Edit:
sudo nano /etc/prometheus/prometheus.yml
Replace the scrape_configs section with:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'Anything You’d Like'
static_configs:
- targets: ['Host IP']
labels:
nodename: 'Anything You'd Like'
Replace Host IP with your host’s LAN IP.
Restart:
sudo systemctl restart prometheus
Verify Prometheus sees your host:
👉 http://<monitoring-vm-ip>:9090/targets
Set URL:
http://localhost:9090
Use Grafana’s dashboard library:
Now you have a full performance dashboard with CPU, memory, network, and disk metrics.
(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
Find grafana config file:
sudo journalctl -u grafana-server -b | grep -i "Config" -m1
Edit:
sudo nano (the config file)
Uncomment and set:
[auth.anonymous]
enabled = true
org_name = Main Org.
org_role = Viewer
[auth]
disable_login_form = true
Restart:
sudo systemctl restart grafana-server
Now you can access Grafana directly via
👉 http://<monitoring-vm-ip>:3000