340 lines
6.1 KiB
Bash
Executable File

#!/bin/bash
# ABOUT xen server for zabbix
# author mikedmorto 2021 year
export LC_ALL=""
export LANG="en_US.UTF-8"
version="1.4"
XE="/opt/xensource/bin/xe"
# path to mdmxen cfg backup system
VMSCFG="/root/bin/mdmxen/etc/vms.cfg"
JSON=""
##### PARAMETERS#####
METRIC="$1"
ITEM="$2"
case "$METRIC" in
discovery)
# delete last simbol and add the end
JSON="{ \"data\":["
XCPU_LIST=""
# get all cpu numbers
XCPU_LIST=`cat "/proc/cpuinfo" | grep processor | tr -d ' ' | awk -F":" '{print "cpu"$2}'`
XSR_LIST=`${XE} sr-list params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"`
XVM_LIST=`${XE} vm-list is-control-domain=false params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"`
#show all cpu
for CPU_NAME in ${XCPU_LIST}; do
JSON=${JSON}" {\"{#CPU_NAME}\":\"${CPU_NAME}\"},"
done
#show all sr uuid
for SR_UUID in ${XSR_LIST}; do
JSON=${JSON}" {\"{#SR_UUID}\":\"${SR_UUID}\"},"
done
#show all vm uuid
for VM_UUID in ${XVM_LIST}; do
JSON=${JSON}" {\"{#VM_UUID}\":\"${VM_UUID}\"},"
done
JSON=${JSON::-1}
JSON=${JSON}"]}"
echo ${JSON}
exit 0
;;
xen.version)
RET=`cat "/etc/xensource-inventory" | awk -F"=" '{if($1=="PRODUCT_VERSION"){print $2} }' | tr -d "'" `
echo ${RET}
exit 0
;;
xen.dom0_mem)
RET=`cat "/etc/xensource-inventory" | awk -F"=" '{if($1=="DOM0_MEM"){print $2} }' | tr -d "'" `
echo ${RET}
exit 0
;;
xen.brand)
RET=`cat "/etc/xensource-inventory" | awk -F"=" '{if($1=="PRODUCT_BRAND"){print $2} }' | tr -d "'" `
echo ${RET}
exit 0
;;
xen.memory_total_kib)
RET=`${XE} host-data-source-query data-source=memory_total_kib`
echo ${RET}
exit 0
;;
xen.memory_free_kib)
RET=`${XE} host-data-source-query data-source=memory_free_kib`
echo ${RET}
exit 0
;;
####### xapi memory ########
xen.xapi_memory_usage_kib)
RET=`${XE} host-data-source-query data-source=xapi_memory_usage_kib`
echo ${RET}
exit 0
;;
xen.xapi_free_memory_kib)
RET=`${XE} host-data-source-query data-source=xapi_free_memory_kib`
echo ${RET}
exit 0
;;
xen.xapi_live_memory_kib)
RET=`${XE} host-data-source-query data-source=xapi_live_memory_kib`
echo ${RET}
exit 0
;;
xen.xapi_allocation_kib)
RET=`${XE} host-data-source-query data-source=xapi_allocation_kib`
echo ${RET}
exit 0
;;
##### cpu
xen.cpu_usage)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} host-data-source-query data-source=${ITEM}`
echo ${RET}
exit 0
;;
###### sr #########
xen.sr_physical-size)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} sr-param-get param-name=physical-size uuid=${ITEM}`
if [[ $RET = '-1' ]]
then echo 0
else
echo ${RET}
fi
exit 0
;;
xen.sr_virtual-allocation)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} sr-param-get param-name=virtual-allocation uuid=${ITEM}`
echo ${RET}
exit 0
;;
xen.sr_physical-utilisation)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} sr-param-get param-name=physical-utilisation uuid=${ITEM}`
if [[ $RET = '-1' ]]
then echo 0
else
echo ${RET}
fi
exit 0
;;
xen.sr_type)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} sr-param-get param-name=type uuid=${ITEM}`
echo ${RET}
exit 0
;;
xen.sr_name-label)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} sr-param-get param-name=name-label uuid=${ITEM}`
echo ${RET}
exit 0
;;
###### vms ######
xen.vm_running)
RET=`${XE} vm-list is-control-domain=false power-state=running params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}" | wc -l`
echo ${RET}
exit 0
;;
xen.vm_name-label)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} vm-param-get param-name=name-label uuid=${ITEM}`
echo ${RET}
exit 0
;;
xen.vm_power-state)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} vm-param-get param-name=power-state uuid=${ITEM}`
echo ${RET}
exit 0
;;
xen.vm_memory-actual)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`${XE} vm-param-get param-name=memory-actual uuid=${ITEM}`
echo ${RET}
exit 0
;;
xen.pool_autorun)
XPOOL=`${XE} pool-list params=uuid| egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"`
XSTATUS=`${XE} pool-param-get param-name=other-config uuid=${XPOOL} | tr -d ' ' | tr ';' '\n' | awk -F":" '{if($1=="auto_poweron"){print $2}}'`
if [[ $XSTATUS = "true" ]]
then echo "1"
else
echo "0"
fi
exit 0
;;
xen.vm_autorun)
if [ -z "$ITEM" ]
then
exit 1
fi
XSTATUS=`${XE} vm-param-get param-name=other-config uuid=${ITEM} | tr -d ' ' | tr ';' '\n' | awk -F":" '{if($1=="auto_poweron"){print $2}}'`
if [ -z "$XSTATUS" ]
then
echo "0" && exit 1
fi
if [[ $XSTATUS = "true" ]]
then echo "1"
else
echo "0"
fi
exit 0
;;
xen.vm_is_backuped)
if [ -z "$ITEM" ]
then
exit 1
fi
RET=`cat ${VMSCFG} | awk -F: '/^[^#]/ { print $1 }' | awk -v UUID="${ITEM}" '{ if($2==UUID){print $0} }' | wc -l`
echo ${RET}
exit 0;
;;
script.version)
echo ${version}
;;
help)
echo "please use these params
{
discovery
xen.version
xen.dom0_mem
xen.brand
xen.memory_total_kib
xen.memory_free_kib
xen.xapi_memory_usage_kib
xen.xapi_free_memory_kib
xen.xapi_live_memory_kib
xen.xapi_allocation_kib
xen.cpu_usage
xen.pool_autorun
xen.sr_virtual-allocation
xen.sr_physical-utilisation
xen.sr_physical-size
xen.sr_type
xen.sr_name-label
xen.vm_runnig
xen.vm_name-label
xen.vm_power-state
xen.vm_memory-actual
xen.vm_is_backuped
xen.vm_autorun
script.version
}"
;;
*)
echo ""
;;
esac