Advertisement
flipje

nagios_check_xenserver_vmstatus

Mar 9th, 2012
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.93 KB | None | 0 0
  1. #!/bin/bash
  2. # Global variables:
  3.  
  4. PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
  5. SCRIPT_PATH="${0}"
  6. ARGS="${#}"
  7. PARM1="${1}"
  8. WARN="${2}"
  9. PARM2="${3}"
  10. CRIT="${4}"
  11. XEN="sudo /opt/xensource/bin/xl list"
  12.  
  13. STATE_OK="0"
  14. STATE_WARNING="1"
  15. STATE_CRITICAL="2"
  16. STATE_UNKNOWN="3"
  17.  
  18. # Functions:
  19.  
  20.   # exit function
  21.   function die()
  22.   {
  23.     # output
  24.     echo -e "Error in ${SCRIPT_PATH}:\n ${1}"
  25.  
  26.     # return state unknown
  27.     exit ${STATE_UNKNOWN}
  28.   }
  29.  
  30.   # Shows usage function.
  31.   function fShowUsage()
  32.   {
  33.     echo -e "Usage: ${SCRIPT_PATH} -w <warning> -c <critical>\n
  34.    -w = Minimum Number of Xen VMs to activate a warning message.
  35.    -c = Number of Xen VMs to activate a critical message.\n\nVersion 2.0"
  36.     exit ${STATE_UNKNOWN}
  37.   }
  38.  
  39.   # The main function.
  40.   function fMain()
  41.   {
  42.     # script o depends on:
  43.     [ -x /opt/xensource/bin/xl ] || die "This script depends on /opt/xensource/bin/xl"
  44.  
  45.     # check for arguments:
  46.     [ "${ARGS}" = 4 ] || fShowUsage
  47.  
  48.     # check for parameters
  49.     [ "${PARM2}" = "-c" -o "${CRIT}" != "" ] || fShowUsage
  50.     [ "${PARM1}" = "-h" -o "${WARN}" != "" ] || fShowUsage
  51.  
  52.     OUTPUT="$( ${XEN} )"
  53.     NBVMS=$(echo "${RUNNING}" | wc -w)
  54.     HNAME=$(hostname)
  55.  
  56.     # validate output
  57.     ( echo "${OUTPUT}" | grep -q 'ID   Mem VCPUs      State' ) || die "Unexpected output from plugin!"
  58.  
  59.  
  60.     echo -e "Xen Running =\n${OUTPUT}"
  61.  
  62.     # make results
  63.     if [ "$NBVMS" -le "$CRIT" ]; then
  64.         echo "Critical Xen VMs Usage - Total NB: $NBVMS - detected VMs: $RUNNING"
  65.        exit ${STATE_CRITICAL}
  66.     elif [ "$NBVMS" -le "$WARN" ]; then
  67.         echo "Warning Xen VMs Usage - Total NB: $NBVMS - detected VMs: $RUNNING"
  68.         exit ${STATE_WARNING}
  69.     else
  70.         echo "OK: Xen Hypervisor \"$HNAME\" is running Xen VMs: $RUNNING"
  71.         exit ${STATE_OK}
  72.     fi
  73.  
  74.   }
  75.  
  76.  # Start the program:
  77.   fMain
  78.  
  79.  # Exit with previous return code:
  80.   exit "${?}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement