Nagios中nrpe 无法读取check_memory插件的输出
时间:2019-08-20 17:58:07 来源:igfitidea点击:
在搭建nagios监控系统,使用check_memory插件时,报错:
NRPE : unable to read output
经过调试,发现是NRPE无法读取check_内存插件的输出。
需要将bash脚本中if语句的[[]]
改成[]
。
插件使用了gawk和bc命令,在系统中安装了gawk和bc命令
apt-get install gawk bc
同时需要给插件赋予可执行权限。chmod 755 check_memory
vi /usr/lib/nagios/plugins/check_memory # $Id: check_mem,v 1.3 2008/09/17 21:47:03 nagios Exp nagios $ # # # $Log: check_mem,v $ # Revision 1.3 2008/09/17 21:47:03 nagios # dropped free in favor of using /proc/meminfo # # Revision 1.2 2008/09/17 21:00:24 nagios # added usage statement and input validation from http://www.nagiosexchange.org/cgi-bin/page.cgi?g=2099.html;d=1 # respects to the author # # Revision 1.1 2008/09/17 20:57:38 nagios # Initial revision # # #!/bin/bash USAGE="`basename ##代码##` [-w|--warning]<percent free> [-c|--critical]<percent free>" THRESHOLD_USAGE="WARNING threshold must be greater than CRITICAL: `basename ##代码##` $*" # print usage if [ $# -lt 4 ] then echo "" echo "Wrong Syntax: `basename ##代码##` $*" echo "" echo "Usage: $USAGE" echo "" exit 0 fi # read input while [ $# -gt 0 ] do case "" in -w|--warning) shift warning= ;; -c|--critical) shift critical= ;; esac shift done # verify input if [[ $warning -eq $critical || $warning -lt $critical ]] then echo "" echo "$THRESHOLD_USAGE" echo "" echo "Usage: $USAGE" echo "" exit 0 fi # Total physical memory total=`cat /proc/meminfo |head -n 1 |tail -n 1| gawk '{print }'` # Free physical memory free=`cat /proc/meminfo |head -n 2 |tail -n 1| gawk '{print }'` # Buffers buffers=`cat /proc/meminfo |head -n 3 |tail -n 1| gawk '{print }'` # Cached cached=`cat /proc/meminfo |head -n 4 |tail -n 1| gawk '{print }'` #Available physical memory available=`echo "$free+$buffers+$cached" | bc` # make it into % percent free = ((free mem / total mem) * 100) percent=`echo "scale=2; $available/$total*100" | bc` #echo $total #echo $free #echo $buffers #echo $cached #echo $available #echo $percent #echo $critical #echo $warning #echo `echo "$percent <= $critical"|bc` #echo `echo "$percent <= $warning"|bc` #echo `echo "$percent > $warning"|bc` if [ "`echo "$percent <= $critical"|bc`" -eq 1 ] then echo "CRITICAL - $available KB ($percent%) Free Memory" exit 2 fi if [ "`echo "$percent <= $warning"|bc`" -eq 1 ] then echo "WARNING - $available KB ($percent%) Free Memory" exit 1 fi if [ "`echo "$percent > $warning"|bc`" -eq 1 ] then echo "OK - $availabe KB ($percent%) Free Memory" exit 0 fi