#!/bin/bash # # Script to make usage stats on Linux Libvirtd host # # Copyright (c) 2017 Benjamin Renard # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License version 3 # as published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # HTML_OUTPUT=0 [ "$1" == "html" ] && HTML_OUTPUT=1 TABLE_LINES="" TOTAL_VCPU=0 TOTAL_MEMORY=0 TOTAL_MEMORY_USED=0 IFS=" " for line in $( ps aux|egrep '(qemu-system|/usr/bin/kvm)'|grep ' -name ' ) do PID=$( echo "$line"|awk '{print $2}' ) NAME=$( echo "$line"|sed 's/^.* -name \([^ ]*\) .*$/\1/' ) MEMORY=$( echo "$line"|sed 's/^.* -m \([0-9]*\) .*$/\1/' ) MEMORY_USED=$( echo -e "$line"|awk '{print $6}' ) let MEMORY_USED=MEMORY_USED/1024 let TOTAL_MEMORY=MEMORY+TOTAL_MEMORY let TOTAL_MEMORY_USED=MEMORY_USED+TOTAL_MEMORY_USED VCPU=$( echo "$line"|sed 's/^.* -smp \([0-9]*\),.*$/\1/' ) let TOTAL_VCPU=VCPU+TOTAL_VCPU CONSOLE="" if [ $( echo "$line"|grep -c ' -vnc ' ) -gt 0 ] then CONSOLE="VNC : $( echo "$line"|sed 's/^.* -vnc \([^ ]*\) .*$/\1/' )" elif [ $( echo "$line"|grep -c ' -spice ' ) -gt 0 ] then SPICE_PARAMS=$( echo "$line"|sed 's/^.* -spice -spice \([^ ]*\) .*$/\1/' ) SPICE_PORT=$( echo "$SPICE_PARAMS"|sed 's/^.*port=\([0-9]*\).*/\1/' ) SPICE_ADDR=$( echo "$SPICE_PARAMS"|sed 's/^.*addr=\([0-9]*\).*/\1/' ) CONSOLE="Spice : " [ -n "$SPICE_ADDR" -a "$SPICE_ADDR" != "$SPICE_PARAMS" ] && CONSOLE="$CONSOLE$SPICE_ADDR" [ -n "$SPICE_PORT" -a "$SPICE_PORT" != "$SPICE_PARAMS" ] && CONSOLE="$CONSOLE:$SPICE_PORT" fi TABLE_LINES="$TABLE_LINES$PID$NAME$VCPU$MEMORY Mo$MEMORY_USED Mo$CONSOLE" done HYP_RAM=$( free -m|grep ^Mem:|awk '{print $2}' ) HYP_RAM_USED=$( free -m|grep ^Mem:|awk '{print $3}' ) HYP_RAM_CACHED=$( free -m|grep ^Mem:|awk '{print $7}' ) HYP_SWAP_USED=$( free -m|grep ^Swap:|awk '{print $3}' ) let HYP_TOTAL_RAM_USED=HYP_RAM_USED+HYP_SWAP_USED-HYP_RAM_CACHED HYP_CPU=$( cat /proc/cpuinfo |grep -c ^processor ) HTML=" $TABLE_LINES
PIDNamevCPUMemoryMemory usedConsole
Total : $TOTAL_VCPU $TOTAL_MEMORY Mo $TOTAL_MEMORY_USED Mo
Hyperviseur : $HYP_CPU $HYP_RAM Mo $HYP_TOTAL_RAM_USED Mo
" if [ $HTML_OUTPUT -eq 1 ] then echo -e "$HTML" else echo -e "$HTML"|lynx -stdin fi