一 nrpe.cfg 中添加
command[check_mem]=/usr/local/icinga/libexec/check_mem.sh -w 80 -c 90
说明:内存实际使用量超过80%警告;超过90%严重警告
二 添加检查脚本
check_mem.sh
# $2 = 80
warn=$2
# $4 = 90
critical=$4
#free -m
#--------------------------------------------------------------------------
# total used free shared buffers cached
#Mem: 3832 2191 1640 0 154 1542
#-/+ buffers/cache: 493 3338
#Swap: 3967 0 3967
#第二行 第二列
total=`free -m | sed -n '2p' | awk '{print $2}'`
#第二行 第三列
used=`free -m| sed -n '2p' | awk '{print $3}'`
#第三行 第三列
buff=`free -m | sed -n '3p' | awk '{print $3}'`
#第二行 第四列
free=`free -m| sed -n '2p' | awk '{print $4}'`
let "c=$buff*100/$total"
if [[ $c -lt $warn ]]
then
echo "buff/total($c%) < $warn% [free:$free MB: used:$used MB: buff:$buff MB: total:$total MB]|free:$free;;;; used:$used;;;; total:$total;;;;"
exit 0
elif [[ $c -lt $critical ]]
then
echo "buff/total($c%) < $warn% [free:$free MB: used:$used MB: buff:$buff MB: total:$total MB]|free:$free;;;; used:$used;;;; total:$total;;;;"
exit 1
else
echo "buff/total($c%) < $warn% [free:$free MB: used:$used MB: buff:$buff MB: total:$total MB]|free:$free;;;; used:$used;;;; total:$total;;;;"
exit 2
fi
1. free用来查看内存的使用情况
- total 内存总数: 3072
- used 已经使用的内存数: 2459
- free 空闲的内存数: 612
- shared 当前已经废弃不用,总是0
- buffers: Buffer Cache内存数: 13220
- cached: Page Cache内存数: 2720160
关系:total = used + free
Linux中实际的内存使用是第三行buffers/cache中的used,所以这里以这个实际使用除总内存作为报警的依据。
2. sed -n '2p'指的是查找第二行
三 重启nrpe
/etc/init.d/nrpe restart
四 nagios增加监控项
1 vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_mem
command_line $USER1$/check_mem -u -w $ARG1$ -c $ARG2$
}
2 vi xxx.xxx.xxx.xxx.cfg
define service{
use xxxxxx-service
host_name xxx.xxx.xxx.xxx
service_description Memory
check_command check_nrpe!check_mem
contact_groups xxxxx
}
五 未解决的问题
1 目前不能出图
参考:http://blog.youkuaiyun.com/ronmy/article/details/68941096?ticket=ST-133921-wjVarkforBe2bTQwhNhz-passport.youkuaiyun.com