When it comes to virtualization systems, Proxmox is my hypervisor distribution of choice.  While it has an excellent web interface, it only provides real-time resource usage information.  While useful, being able to look at resource usage over time can be an added benefit when troubleshooting a system problem.  Thankfully, since Proxmox is Linux, there are a plethora of easy to use, freely available applications that can be easily added to provide just that information.

One of the simpler application for this purpose is Munin .  Munin is easy to install and get going on Proxmox, and in 5 minutes you can have detailed, historical reports for your Virtual Host.  There are other solutions available, but this is very lightweight, and keeps Proxmox as an “all-in-one” solution.  Hopefully, we may see the maintainers include Munin in the future as a part of the base install.  Until then, here’s how to do it yourself:

Login to the Proxmox console, either locally or via SSH, then run this command:

apt-get -y install munin munin-node

Right away, your system performance is being tracked, but it isn’t yet available via the web, and it doesn’t have all the information we want to see.  So lets customize it, by editing this file:

nano /etc/apache2/sites-enabled/pve.conf

search for this in the file editor:

Alias /images/  /usr/share/pve-manager/images/
Alias /css/ /usr/share/pve-manager/css/
Alias /javascript/ /usr/share/javascript/
Alias /vncterm/ /usr/share/vncterm/

And add this line below the last “Alias” line:

Alias /munin /var/www/munin

Now we’ll edit another file:

nano /etc/munin/munin.conf

search for this in the file editor:

[localhost.localdomain]
address 127.0.0.1
use_node_name yes

and change it to:

[yourserver.yourdomain.com]
address 127.0.0.1
use_node_name yes

Substitute yourserver.yourdomain.com with the fully qualified hostname of your server.

Now we will need to add any additional network interfaces that need to be monitored.  On my servers I have a single trunk into the switch using all of my available physical network adapters (ethX).  The trunk interface is a bond called bond0.  I then have the bond0 broken down into  several vLANs, and those interfaces are titled by vLAN ID.  For example bond0.56, bond0.28 for vLANs 56 and 28.  Each virtual guest connects to a bridge interface, which is titled by the bond interface it uses, one for each vLAN as well: vmbr56, vmbr28.  When installing munin, the ethX interfaces are added automatically, so I will need to add these additional interfaces with these commands (since the bond.vLAN and vmbrvLAN interfaces are 1-to-1, I’ll just add the bridge interface).  On some systems, I’ll have more than 30 interfaces:

(just copy and past, changing the interface name at the end to whatever you are using)
ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_bond0
ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_vmbr0
ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_vmbr56
ln -s /usr/share/munin/plugins/if_ /etc/munin/plugins/if_vmbr28

To make it pretty, add a link to your web interface:

(will add link soon)

Now restart your services:

/etc/init.d/apache2 reload
/etc/init.d/munin-node stop
/etc/init.d/munin-node start

Now you can browse to your Proxmox server at https://servername/munin and view detailed information on Disk, Network, Process, and other system information.  This gives good, basic  historical information on your systems.  It will take some time for the graphs to populate, but I am sure you will find this a useful troubleshooting tool.

Later, I’ll show how you can aggregate all of this information onto one page, which is especially useful if you are using Proxmox with Clustered nodes, and have many systems to manage.

Some samples:

bond0.56 – shows the in/out traffic on this particular vLAN

CPU Usage – shows that the system isn’t very busy (user), has a lot of capacity to spare (idle), and lets me know the disks are fast enough for the current work load (io wait).

Network Traffic Example

CPU Usage

CPU Usage