340 lines
6.1 KiB
Bash
Executable File
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.5"
|
|
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 is-a-snapshot=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
|