Repository
Munin (contrib)
Last change
2018-08-01
Graph Categories
Keywords
Language
Bash

virtualbox_cpu_kernel

Sadly there is no documentation for this plugin.

#!/bin/bash
#
# evaluate the current cpu usage of every vm running on this host
# separated by time spend in user mode and kernel mode
#
# Date: 2011-09-09
# Author: Gerald Schnabel ger@ldschnabel.de
#
# Usage: Place in /etc/munin/plugins (or link it there using ln -s)
#
# This plugin has to run with the same user like the VirtualBox Server rans
# Update munin plugin-conf.d/munin-node file with
# [virtualbox_*]
# user VIRTUAL_BOX_SERVER_USER
#
# Parameters understood:
#
# config (required)
# autoconf (optional - used by munin-config)
#
# Versions
# 2013-05-25 robi fix for handling vm names with dots and dashes; separate Kernel and User CPU graphs
# 2011-09-22 ger@ldschnabel.de fix for handling vm names with spaces and setup metric period to get values
# 2011-09-09 ger@ldschnabel.de initial version


if [ "$1" = "autoconf" ]; then
        echo yes
        exit 0
fi

if [ "$1" = "config" ]; then
        echo 'graph_title Kernel CPU used by virtual machines'
        echo "graph_args --base 1000 -r --lower-limit 0 "
        echo 'graph_vlabel %'
        echo 'graph_scale no'
        echo 'graph_info This graph shows the percentage of processor time spent in kernel mode by the every single VM process.'
        echo 'graph_category virtualization'
        echo 'graph_period second'
        vboxmanage list vms | sed -r 's/^\"(.*)\" \{.*\}$/\1/' | while read -r VM_NAME; do
                VM_NAME_PRINT=$(echo -e "${VM_NAME}" | sed 's/[^A-Za-z0-9_]/_/g')
                echo "${VM_NAME_PRINT}_kernel.label ${VM_NAME}"
        done
        exit 0
fi

vboxmanage metrics setup --period 5 --samples 3
sleep 5

vboxmanage list vms | sed -r 's/^\"(.*)\" \{.*\}$/\1/' | while read -r VM_NAME; do
VM_NAME_PRINT=$(echo -e "${VM_NAME}" | sed 's/[^A-Za-z0-9_]/_/g')
        vboxmanage metrics query "${VM_NAME}" CPU/Load/Kernel | grep -E "^${VM_NAME}" | sed -r 's/^.*([0-9]+\.[0-9]+)%/'"${VM_NAME_PRINT}"'_kernel.value \1/'
done