#!/bin/bash
|
|
HN=`hostname`
|
|
if [[ -z $1 || -z $2 ]]; then
|
|
##### DISCOVERY #####
|
|
VMS=`ls /etc/pve/nodes/$HN/qemu-server | sed s/\.conf//`
|
|
if [[ -n ${VMS} ]]; then
|
|
JSON="{ \"data\":["
|
|
for VM in ${VMS}; do
|
|
JSON=${JSON}"{ \"{#VMNAME}\":\"${VM}\"},"
|
|
done
|
|
JSON=${JSON}"]}"
|
|
echo ${JSON}
|
|
fi
|
|
exit 0
|
|
else
|
|
##### PARAMETERS #####
|
|
VM="$1"
|
|
METRIC="$2"
|
|
FILECACHE="/tmp/zabbix.vmstat.cache"
|
|
TTLCACHE="50"
|
|
TIMENOW=`date '+%s'`
|
|
##### CACHE #####
|
|
if [ -s "${FILECACHE}" ]; then
|
|
TIMECACHE=`stat -c"%Y" "${FILECACHE}"`
|
|
else
|
|
TIMECACHE=0
|
|
fi
|
|
if [ "$((${TIMENOW} - ${TIMECACHE}))" -gt "${TTLCACHE}" ]; then
|
|
echo "">> ${FILECACHE} # !!!
|
|
DATACACHE1=`ps -eo pid,pcpu,%mem,rss,command | awk '/usr\/bin\/kvm -id/ {print "VM"$7" "$1" "$2" "$3" "$4}' | sort`
|
|
DATACACHE2=`sudo /usr/sbin/iotop -P -k -n 1 --batch | awk '/kvm -id/ {print "VM"$14" "$1" "$4" "$6}' | sort`
|
|
echo "${DATACACHE1}" > ${FILECACHE} # !!!
|
|
echo "${DATACACHE2}">> ${FILECACHE} # !!!
|
|
chmod 777 ${FILECACHE}
|
|
fi
|
|
##### VM statistic #####
|
|
if [ "` cat ${FILECACHE} | grep VM${VM}`" = "" ]; then
|
|
echo 0
|
|
exit 0
|
|
fi
|
|
case "$METRIC" in
|
|
"cpu")
|
|
cat ${FILECACHE} | grep VM${VM} | head -n 1 | awk '{print$3}'
|
|
exit 0;;
|
|
"mem")
|
|
cat ${FILECACHE} | grep VM${VM} | head -n 1 | awk '{print$5}'
|
|
exit 0;;
|
|
"read")
|
|
cat ${FILECACHE} | grep VM${VM} | tail -n 1 | awk '{print$3}'
|
|
exit 0;;
|
|
"write")
|
|
cat ${FILECACHE} | grep VM${VM} | tail -n 1 | awk '{print$4}'
|
|
exit 0;;
|
|
"pid")
|
|
cat ${FILECACHE} | grep VM${VM} | head -n 1 | awk '{print$2}'
|
|
exit 0;;
|
|
esac;
|
|
#
|
|
fi
|
Powered by TurnKey Linux.