This episode covers Proxmox's built-in monitoring, exporting node and VM metrics to Prometheus with pve-exporter, visualizing them in a Grafana dashboard, and configuring alerting for notifications when problems occur.

An invisible infrastructure is an unpredictable infrastructure. Without monitoring, you only find out that storage is full or a node is down after users complain. Episode 18 builds observability: seeing metrics, visualizing them, and being woken up early by alerts when something starts to drift.
We'll use Proxmox's built-in monitoring, export metrics to Prometheus with pve-exporter, display them in Grafana, and then configure alerting. By the end of the episode, you'll be able to monitor the entire cluster from one dashboard.
The Proxmox web UI already provides basic monitoring: CPU, RAM, storage, and network graphs for each node, plus per-VM metrics. The Datacenter -> Graph Server page even shows metrics for all nodes in one view. That's enough for daily visual supervision.
Node : CPU, RAM, storage, network, load average
VM : CPU usage, RAM utilization, disk I/O, network trafficHowever, built-in metrics are stored with limits and can't be queried flexibly. For long retention and analysis, you need an external metrics system.
Prometheus collects metrics from various sources through exporters. prometheus-pve-exporter is the official exporter that reads Proxmox metrics from the API and serves them in Prometheus format. Install it on a separate machine (or container):
pip install prometheus-pve-exporterCreate the exporter configuration file:
default:
user: mon@pve
password: <read-only-password>
verify_ssl: falseThe mon@pve user only needs read permission at the datacenter level — following the least privilege principle from episode 14.
Run the exporter as a systemd service:
prometheus-pve-exporter /etc/pve-exporter/config.ymlThe exporter listens on port 9221. Test it with curl:
curl http://localhost:9221/pveThe curl http://localhost:9221/pve command should return metrics in Prometheus format, including pve_up, pve_cpu_usage_ratio, pve_memory_usage_bytes, and others.
Register the exporter in the Prometheus configuration:
scrape_configs:
- job_name: proxmox
static_configs:
- targets: ["192.168.1.10:9221"]Prometheus now pulls Proxmox metrics periodically. Use queries like pve_cpu_usage_ratio in PromQL to check the load.
Grafana presents Prometheus metrics in easy-to-read dashboards. Add Prometheus as a data source, then import a dashboard. Many Proxmox dashboards are available on grafana.com — one of the most popular shows graphs for both nodes and VMs.
CPU usage, RAM utilization, disk I/O, network throughputThe dashboard displays all nodes and VMs on one screen, with graphs that can be zoomed and filtered.
A good dashboard isn't enough — you won't stare at it all day. Alerting is what wakes you up. In Grafana, create alert rules based on PromQL; for larger needs, use Alertmanager:
Node down : up{job="proxmox"} == 0
Storage full : pve_storage_used_bytes / capacity > 0.9
VM not running : pve_vm_status == 0Alerts are sent to notification channels — email, Telegram, Slack, or webhook.
In Grafana, open the Alerting tab and create a new rule with a query like:
when : max of pve_storage_used_ratio > 0.9
for : 5mThis rule only fires if the condition persists for 5 minutes, reducing false positives.
Tip
Start with the three most important alerts: node down, storage almost full, and VMs that aren't running. Add more alerts after that stabilizes, so the team doesn't go numb from too many notifications.
Episode 18 built complete observability: using Proxmox's built-in metrics, exporting metrics to Prometheus with pve-exporter, visualizing them in Grafana, and configuring alerting for early detection.
The key takeaways:
pve-exporter converts Proxmox metrics into Prometheus format.In the next episode, episode 19, we will cover troubleshooting and disaster recovery — the pvecm, ha-manager, qm, and pct diagnostic commands, log analysis with journalctl, handling common problems like split-brain and full storage, and recovery procedures from backups. Your infrastructure is now monitored; it's time to learn how to handle things when they break!