Cluster, nodes, VMs, containers, storages, network, firewall, replication, HA, SDN, pools, users, tokens and TFA, plus one detail sheet per node, VM and container.
Your first report in 4 steps
- Install cv4pve-report
- Create an API token
- Run
cv4pve-report export - Open the report
Know what is in your Proxmox VE cluster
By sysadmins, for sysadmins.
Built by Corsinvest, official Proxmox partner.
arch=$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/;s/armv7l/arm/')wget https://github.com/Corsinvest/cv4pve-report/releases/latest/download/cv4pve-report-linux-$arch.zipunzip cv4pve-report-linux-$arch.zipchmod +x cv4pve-report./cv4pve-report --host=pve01 --api-token='report@pve!report=…' exportcurl -s https://api.github.com/repos/Corsinvest/cv4pve-report/releases/latest | grep -o "https://[^\"]*-$(dpkg --print-architecture)\.deb" | xargs curl -LOsudo dpkg -i cv4pve-report-*-$(dpkg --print-architecture).debcv4pve-report --host=pve01 --api-token='report@pve!report=…' exportcurl -s https://api.github.com/repos/Corsinvest/cv4pve-report/releases/latest | grep -o "https://[^\"]*-$(rpm --eval %_target_cpu)\.rpm" | xargs curl -LOsudo rpm -i cv4pve-report-*-$(rpm --eval %_target_cpu).rpmcv4pve-report --host=pve01 --api-token='report@pve!report=…' exportyay -S cv4pve-reportcv4pve-report --host=pve01 --api-token='report@pve!report=…' exportbrew install corsinvest/tap/cv4pve-reportcv4pve-report --host=pve01 --api-token='report@pve!report=…' exportcurl -s https://api.github.com/repos/Corsinvest/cv4pve-report/releases/latest | grep -o "https://[^\"]*-$(uname -m)\.pkg" | xargs curl -LOsudo installer -target / -pkg cv4pve-report-*-$(uname -m).pkgcv4pve-report --host=pve01 --api-token='report@pve!report=…' exportarch=$(uname -m | sed 's/x86_64/x64/')curl -LO https://github.com/Corsinvest/cv4pve-report/releases/latest/download/cv4pve-report-osx-$arch.zipunzip cv4pve-report-osx-$arch.zipchmod +x cv4pve-report./cv4pve-report --host=pve01 --api-token='report@pve!report=…' exportwinget install Corsinvest.cv4pve.reportcv4pve-report --host=pve01 --api-token='report@pve!report=…' export$arch = @{ AMD64 = 'x64'; x86 = 'x86'; ARM64 = 'arm64' }[$env:PROCESSOR_ARCHITECTURE]Invoke-WebRequest https://github.com/Corsinvest/cv4pve-report/releases/latest/download/cv4pve-report.exe-win-$arch.zip -OutFile cv4pve-report.zipExpand-Archive cv4pve-report.zip -DestinationPath . -Force.\cv4pve-report --host=pve01 --api-token='report@pve!report=…' exportA few rows of five pages of the report: node, VM and container names link to their own pages:
| Id | Name | Is Online | Type | Nodes | Quorate | Level | Ip Address | Node Id |
|---|---|---|---|---|---|---|---|---|
| cluster | pve-cluster | · | cluster | 2 | 1 | None | ||
| node/pve01 | pve01 | ✓ | node | 0 | 0 | Community | 10.0.0.11 | 2 |
| node/pve02 | pve02 | ✓ | node | 0 | 0 | Community | 10.0.0.12 | 1 |
| Node | Storage | Status | Health | Plugin Type | Shared | Disk Size GB | Disk Usage GB | Disk Usage % |
|---|---|---|---|---|---|---|---|---|
| (shared) | pbs01 | available | 19 | pbs | ✓ | 3000.00 | 2427.45 | 80.91% |
| pve01 | datapool | available | 80 | zfspool | · | 5068.38 | 1015.68 | 20.04% |
| pve01 | local | available | 92 | dir | · | 361.85 | 29.25 | 8.08% |
| pve02 | datapool | available | 75 | zfspool | · | 31689.63 | 8021.70 | 25.31% |
| pve02 | local-zfs | available | 64 | zfspool | · | 214.09 | 77.82 | 36.35% |
| Node | Vm Id | Name | Status | Health | Cpu Size | Memory Size GB | Memory Usage % | Os Version | Agent Running |
|---|---|---|---|---|---|---|---|---|---|
| pve02 | 203 | test-debian | stopped | - | 2 | 4.00 | 0.00% | Linux 5.x - 2.6 Kernel | · |
| pve01 | 1000 | opnsense-01 | running | 81 | 4 | 8.00 | 35.13% | Linux 5.x - 2.6 Kernel | · |
| pve01 | 1006 | dc01 | running | 66 | 4 | 8.00 | 65.09% | Windows Server 2022 Datacenter | ✓ |
| pve02 | 1012 | mailstore | running | 76 | 2 | 4.00 | 44.38% | Windows Server 2022 Standard | ✓ |
| pve01 | 1104 | gitlab | running | 48 | 4 | 10.00 | 95.03% | Ubuntu 22.04.5 LTS | ✓ |
| Node | Vm Id | Vm Name | Vm Status | Mount Point | Type | Total GB | Used GB | Used % |
|---|---|---|---|---|---|---|---|---|
| pve01 | 1006 | dc01 | running | C:\ | NTFS | 63.33 | 37.32 | 58.93% |
| pve02 | 1012 | mailstore | running | C:\ | NTFS | 54.35 | 23.22 | 42.73% |
| pve02 | 1012 | mailstore | running | F:\ | NTFS | 99.98 | 85.30 | 85.32% |
| pve01 | 1020 | erp01 | running | C:\ | NTFS | 160.95 | 92.46 | 57.45% |
| pve01 | 1104 | gitlab | running | / | ext4 | 246.33 | 83.67 | 33.96% |
| Node | Vm Id | Name | Cpu Size | Cpu Avg % | Cpu Peak % | Cpu Peak Cores | Memory Size GB | Memory Peak GB | Memory Peak Usage % | Disks Used GB |
|---|---|---|---|---|---|---|---|---|---|---|
| pve01 | 1000 | opnsense-01 | 4 | 2.23% | 11.17% | 0.45 | 8.00 | 2.98 | 37.25% | |
| pve01 | 1006 | dc01 | 4 | 3.94% | 39.85% | 1.59 | 8.00 | 6.41 | 80.17% | 37.32 |
| pve02 | 1012 | mailstore | 2 | 3.80% | 52.52% | 1.05 | 4.00 | 3.48 | 86.99% | 108.53 |
| pve01 | 1020 | erp01 | 4 | 2.20% | 91.92% | 3.68 | 6.00 | 5.40 | 90.04% | 92.46 |
| pve01 | 1104 | gitlab | 4 | 7.64% | 54.48% | 2.18 | 10.00 | 9.58 | 95.79% | 83.67 |
Some of the columns only. Health is the 0-100 score of the resource; a stopped VM has none. Without a running guest agent, Os Version is the OS type set in the VM configuration.
Two pages the Proxmox VE web interface has no equivalent for.
Partitions is the space used inside each VM, read from
the guest agent: Proxmox VE itself reports no disk usage for VMs.
Capacity Planning (on with --full) is the
average and the peak of each guest and node over a week, with the growth of every storage: erp01
above averages 2 % of its CPUs and peaks at 92 %.
The Proxmox VE web interface shows one object at a time: a VM’s hardware on one tab, its snapshots on another, the storage it lives on somewhere else. That is fine for daily work, but not when someone asks how many VMs do we run, on which nodes, with how much memory, and who can log in? (an auditor, a customer taking over the cluster, a capacity plan, a migration from VMware).
cv4pve-report reads the whole cluster and writes it down in one file you can filter, share and keep. Take one every month and you have the history of the cluster: what was running, where, and when.
Where it fits
Section titled “Where it fits”The cv4pve suite follows the Unix philosophy: each tool does one thing and does it well. cv4pve-report exports everything the cluster contains, to read, share and keep. Its companion cv4pve-diag finds what is wrong. Two questions, two tools, used together.
| cv4pve-report | cv4pve-diag | |
|---|---|---|
| Question | What do I have? | What is wrong? |
| Purpose | Inventory and reporting | Diagnostics and health checks |
| Result | The full inventory: nodes, VMs, containers, storage, network, users… | A list of problems, each with a code, a severity and the resource it concerns |
| Formats | Excel, static HTML site, multi-file JSON, plus an SVG network diagram | Text, HTML, JSON, Markdown, Excel |
| Compliance | - | Findings tagged with the controls of 18 standards |
| Access | Proxmox VE API only, from outside the nodes | Proxmox VE API only, from outside the nodes |
Want reports on demand from a web interface, with their history? cv4pve-admin runs the same engine as its System Report module.
Outside the nodes, API only
Section titled “Outside the nodes, API only”cv4pve-report runs outside the cluster (on your workstation, a management VM or a scheduled job) and talks only to the Proxmox VE REST API. Nothing is installed on the nodes and no SSH or root shell is needed: an API token with the privileges listed in Permissions is enough. Any node gives the view of the whole cluster; give it more than one and it connects to the first one that answers, so it still runs while a node is down.
What it does for you
Section titled “What it does for you”A workbook with real Excel tables for filters and pivots, an offline HTML site to share, or one JSON file per section for scripts and diffs.
Every export includes an SVG of each node: physical NICs, bonds, bridges, the VMs and containers behind them and the network storages.
Every table is sorted, numbers inside names included, so two reports of an unchanged cluster differ only in live values.
A call that fails (a node down, a missing privilege, a broken RRD file) does not stop the report: it lands on an Issues page with the Proxmox error and the endpoint.
Three profiles from a quick inventory of a large cluster to SMART, syslog and a week of RRD history, or a settings file that turns each section on or off.
Take your first report
Download the binary, point it at any node, open the workbook.
official Proxmox partner