diff --git a/xenserver/xen-zbx-active-3x.xml b/xenserver/xen-zbx-active-3x.xml new file mode 100644 index 0000000..f33dd7a --- /dev/null +++ b/xenserver/xen-zbx-active-3x.xml @@ -0,0 +1,1270 @@ + + + 3.4 + 2021-01-26T10:07:03Z + + + Templates + + + Xen servers + + + + + + + + {xenzbx active:xenzbx[xen.pool_autorun].last()}<>1 + 0 + + XenServer is disabled autorun! + 0 + + + 0 + 4 + + 0 + 0 + + + + + + + Xen Memory + 900 + 200 + 0.0000 + 100.0000 + 0 + 0 + 0 + 1 + 0 + 0.0000 + 0.0000 + 0 + 0 + 0 + 0 + + + 0 + 4 + 009999 + 0 + 2 + 0 + + xenzbx active + xenzbx[xen.memory_total_kib] + + + + 1 + 4 + 009900 + 0 + 2 + 0 + + xenzbx active + xenzbx[xen.memory_free_kib] + + + + + + Xen xapi memory + 900 + 200 + 0.0000 + 100.0000 + 0 + 0 + 0 + 1 + 0 + 0.0000 + 0.0000 + 0 + 0 + 0 + 0 + + + 0 + 0 + FFFF33 + 1 + 2 + 0 + + xenzbx active + xenzbx[xen.xapi_memory_usage_kib] + + + + 1 + 0 + FF3333 + 1 + 2 + 0 + + xenzbx active + xenzbx[xen.xapi_live_memory_kib] + + + + 2 + 0 + 0000DD + 1 + 2 + 0 + + xenzbx active + xenzbx[xen.xapi_free_memory_kib] + + + + 3 + 0 + BB00BB + 1 + 2 + 0 + + xenzbx active + xenzbx[xen.xapi_allocation_kib] + + + + + + diff --git a/xenserver/xenzbx.conf b/xenserver/xenzbx.conf new file mode 100644 index 0000000..9f65532 --- /dev/null +++ b/xenserver/xenzbx.conf @@ -0,0 +1,3 @@ +#xenserver zabbix +UserParameter=xenzbx[*],sudo /etc/zabbix/scripts/xenzbx.sh "$1" "$2" "$3" + diff --git a/xenserver/xenzbx.sh b/xenserver/xenzbx.sh new file mode 100755 index 0000000..9a8ddfb --- /dev/null +++ b/xenserver/xenzbx.sh @@ -0,0 +1,326 @@ +#!/bin/bash +# ABOUT xen server for zabbix +# author mikedmorto 2021 year + +export LC_ALL="" +export LANG="en_US.UTF-8" + +version="1.3" +XE="/opt/xensource/bin/xe" + +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 +;; + + +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_autorun +script.version +}" +;; + + +*) + echo "" +;; +esac