如何使用check_nt命令而不是百分比值检查Nagios中剩余的空间(MB或GB)的确切数量?
目前我正在使用这个命令:
check_command check_nt!USEDDISKSPACE!-lc -w 90 -c 95
但是这是检查已使用磁盘空间的百分比值,并且我希望在某些驱动器上剩余一定数量的GB时收到通知(例如,警告何时剩余10GB,如果剩余只剩下5GB,则会发生严重错误)。
谢谢
check_nt!USEDDISKSPACE返回磁盘使用的大小和百分比。 但是,门槛是百分比。
如果您希望根据大小接收警报,则可以为check_nt命令编写包装程序脚本,例如check_disk_by_size :
#!/bin/bash FREESPACE=`/usr/local/nagios/libexec/check_nt -H $2 -p 12489 -s pa$$word \ -v USEDDISKSPACE -l $4 | awk -F"- " '{ print $4 }' | awk -F "|" '{ print $1 }'` SIZE=`echo $FREESPACE | awk '{ print $2 }'` UNIT=`echo $FREESPACE | awk '{ print $3 }'` if [ $UNIT == "Gb" ]; then SIZE=`echo $SIZE \* 1024 | bc` fi if [ `echo "$SIZE >= $6" | bc` -eq 1 ]; then echo "$4:\_Drive_Space OK - $FREESPACE" exit 0 elif [ `echo "$SIZE < $6" | bc` -eq 1 -a `echo "$SIZE > $8" | bc` -eq 1 ]; then echo "$4:\_Drive_Space WARNING - $FREESPACE" exit 1 elif [ `echo "$SIZE <= $8" | bc` -eq 1 ]; then echo "$4:\_Drive_Space CRITICAL - $FREESPACE" exit 2 fi
testing:
$ check_disk_by_size.sh -H 192.168.6.31 -lc -w 10240 -c 5120 c:\_Drive_Space OK - free 13.01 Gb (36%) $ check_disk_by_size.sh -H 192.168.6.31 -lc -w 14240 -c 5120 c:\_Drive_Space WARNING - free 13.01 Gb (36%) $ check_disk_by_size.sh -H 192.168.6.31 -lc -w 16240 -c 15120 c:\_Drive_Space CRITICAL - free 13.01 Gb (36%)
你可以像这样将它添加到Nagios:
"check_disk_by_size.sh". # 'check_disk_by_size' command definition define command{ command_name check_disk_by_size command_line $USER1$/check_disk_by_size.sh -H $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ } define service{ use generic-service host_name fileserver1 service_description Drive Space fileserver1: L: check_command check_disk_by_size!-l L -w 4096 -c 2048 notifications_enabled 1 }
我修改了代码以适应新的BASH语法和更强大的检查。
#!/斌/庆典
(){echo $ $ check_nt -H host [-p port] [-w warning] [-c critical] [-l params] [-t timeout]“1>&2; 出口1; }
而getopts“:H:p:l:w:c:”opt; 做
case“$ {opt}”中
H)HOST_NAME = $ OPTARG ;;
p)PORT = $ OPTARG ;;
l)DISC = $ OPTARG ;;
w)WARN_THRESHOLD = $ OPTARG ;;
c)CRITICAL_THRESHOLD = $ OPTARG ;;
#t)TIME_OUT = $ OPTARG ;;
\?)回声“无效的选项: - $ OPTARG”>&2; 出口1 ;;
:)回声“选项 - $ OPTARG需要一个参数。” >&2; 出口1 ;;
ESAC
DONE
shift $((OPTIND-1))
如果[[-z“$ HOST_NAME”]] || [[-z“$ PORT”]] || [[-z“$ DISC”]] || [[-z“$ WARN_THRESHOLD”]] || [[-z“$ CRITICAL_THRESHOLD”]]; 然后
用法
科幻
FREESPACE =`/ usr / local / nagios / libexec / check_nt -H $ HOST_NAME -p $ PORT \
-v USEDDISKSPACE -l $ DISC | awk -F“ - ”“{print $ 4}”| awk -F“|” '{print $ 1}'
SIZE =`echo $ FREESPACE | awk'{print $ 2}'`
UNIT =`echo $ FREESPACE | awk'{print $ 3}'`
如果[[$ UNIT ==“Gb”]];那么
SIZE =`echo $ SIZE \ * 1024 | bc`
科幻
如果[[``echo“$ SIZE> = $ WARN_THRESHOLD”| bc` -eq 1]];然后
echo“$ DISC:\ _ Drive_Space OK - $ FREESPACE”
退出0
elif [[``echo“$ SIZE $ CRITICAL_THRESHOLD”| bc` -eq 1]];然后
回声“$ DISC:\ _ Drive_Space警告 - $ FREESPACE”
出口1
elif [[``echo“$ SIZE
我修改了Gnought的脚本,这是对Quanta脚本的修改,甚至进一步删除了一些代码错误,并修改了结果,使其更接近于check_nt的原始输出,从而在分析趋势随着时间的推移以及性能数据被加回时提供了更好的数据在。
#!/bin/bash # Date: 2015-06-30 # Purpose: A wrapper script for check_nt to set threshold for exact space # free rather than just percentage. Useful on VERY large drives. # Example: check_disk_by_size.sh -H 192.168.0.1 -lc -w 10240 -c 5120 usage() { echo "$0 -H host [-s password] [-p port] [-w warning] [-c critical] [-l params]" 1>&2; exit 1; } while getopts ":H:s:p:l:w:c:" opt; do case "${opt}" in H ) HOST_NAME=$OPTARG;; s ) PASSW0RD=$OPTARG;; p ) PORT=$OPTARG;; l ) DISC=$OPTARG;; w ) WARN_THRESHOLD=$OPTARG;; c ) CRITICAL_THRESHOLD=$OPTARG;; \?) echo "Invalid option: -$OPTARG" >&2; exit 1 ;; : ) echo "Option -$OPTARG requires an argument." >&2; exit 1;; esac done shift $((OPTIND-1)) if [[ -z "${HOST_NAME}" ]] || [[ -z "${PASSW0RD}" ]] || [[ -z "${PORT}" ]] || [[ -z "${DISC}" ]] || [[ -z "${WARN_THRESHOLD}" ]] || [[ -z "${CRITICAL_THRESHOLD}" ]] ; then usage fi CHECKRESULT=`/usr/local/nagios/libexec/check_nt -H ${HOST_NAME} -p ${PORT} -s ${PASSW0RD} -v USEDDISKSPACE -l ${DISC}` PERFDATA=`echo ${CHECKRESULT} | awk -F"- " '{ print $4 }' | awk -F "|" '{ print $2 }'` FREESPACE=`echo ${CHECKRESULT} | awk -F"- " '{ print $4 }' | awk -F "|" '{ print $1 }'` USEDSPACE=`echo ${CHECKRESULT} | awk -F"- " '{ print $3 }'` TOTALSPACE=`echo ${CHECKRESULT} | awk -F"- " '{ print $2 }'` if [[ -z ${FREESPACE} ]]; then ## Command failed or server offline echo "ERROR ERROR: Command failed" exit 1 fi SIZE=`echo $FREESPACE | awk '{ print $2 }'` UNIT=`echo $FREESPACE | awk '{ print $3 }'` if [[ ${UNIT} == "Gb" ]]; then SIZE=`echo ${SIZE} \* 1024 | bc` fi if [[ `echo "${SIZE} >= ${WARN_THRESHOLD}" | bc` -eq 1 ]]; then echo "${DISC}:\ OK - ${TOTALSPACE} - ${USEDSPACE} - ${FREESPACE} | ${PERFDATA}" exit 0 elif [[ `echo "${SIZE} < ${WARN_THRESHOLD}" | bc` -eq 1 && `echo "${SIZE} > ${CRITICAL_THRESHOLD}" | bc` -eq 1 ]]; then echo "${DISC}:\ WARNING - ${TOTALSPACE} - ${USEDSPACE} - ${FREESPACE} | ${PERFDATA}" exit 1 elif [[ `echo "${SIZE} <= ${CRITICAL_THRESHOLD}" | bc` -eq 1 ]]; then echo "${DISC}:\ CRITICAL - ${TOTALSPACE} - ${USEDSPACE} - ${FREESPACE} | ${PERFDATA}" exit 2 fi