proxmox / resource usage
As I mentioned the other day, my VM was slow, so I needed a way to figure out which VM guests were causing the heavy load on our Proxmox platform.
I hacked up proxtop to enumerate the top resource users:
$ ./proxtop -t day proxmox.example.com monitor@pve
Password:<enter password>
SORTED BY: cpu, avg
...
SORTED BY: diskread, avg
------------------
#0: 3.1 MiB/s pve10 (acme-bugs-bunny)
#1: 1.3 MiB/s pve07 (customerX-private)
#2: 992.3 KiB/s pve10 (acme-road-runner)
...
SORTED BY: diskwrite, avg
...
SORTED BY: netin, avg
...
SORTED BY: netout, avg
...
Like the example above shows, you get the top heaviest users for each of these resources: cpu, diskread, diskwrite, netin, netout.
Using the proxmoxer Python API worked intuitively; but see this:
-
The proxmoxer README shows this example to list all VMs.
for node in proxmox.nodes.get(): for vm in proxmox.nodes(node['node']).openvz.get(): print "{0}. {1} => {2}" .format(vm['vmid'], vm['name'], vm['status'])
That second
get()
got me 0 VMs. I went with this:for vm in proxmox.cluster.resources.get(type='vm'): print "{0}. {1} => {2}" .format(vm['vmid'], vm['name'], vm['status'])
-
I had to filter out some records that were obviously invalid — large net reads/writes or large disk reads/writes — using a custom foreach that ignores insanely high values.
-
VMs with only a single RRD data row tended to contain invalid values as well.
I hope it is useful to you too.