说明
工作包括两部分 监控端(一二三)和 被监控端(四)
一、nrpe.cfg中添加脚本
nrpe.cfg中添加命令索引
1
|
command
[check_used_mem]=
/usr/local/nagios/libexec/check_used_mem
.sh 80 90
|
说明:实际内存使用量超过80%警告;超过90%严重警告
二、添加具体脚本
check_used_mem.sh
# $1 = 80 warn=$1
# $2 = 90 critical=$2 #free -m #-------------------------------------------------------------------------------- # total used free shared buff/cache available #Mem: 3781 1506 557 16 1716 2000 #Swap: 3983 0 3983 #第二行 第二列 total=`free -m | sed -n '2p' | awk '{print $2}'` #第二行 第三列 used=`free -m| sed -n '2p' | awk '{print $3}'` #第二行 第四列 free=`free -m| sed -n '2p' | awk '{print $4}'` let "c=$used*100/$total" if [[ $c -lt $warn ]] then echo "used/total($c%) < $warn% [free:$free MB,used:$used MB,total:$total MB]" exit 0 elif [[ $c -lt $critical ]] then echo "used/total($c%) ≥$warn% [free:$free MB,used:$used MB,total:$total MB]" exit 1 else echo "used/total($c%) ≥$critical% [free:$free MB,used:$used MB,total:$total MB]" exit 2 fi
解释:
1. free用来查看内存的使用情况
- total 内存总数: 3072
- used 已经使用的内存数: 2459
- free 空闲的内存数: 612
- shared 当前已经废弃不用,总是0
- buffers: Buffer Cache内存数: 13220
- cached: Page Cache内存数: 2720160
关系:total = used + free
2. sed -n '2p'指的是查找第二行
3. awk '{print $2} 指的是第二列,其中默认以空格分隔。可以利用-F指定分隔符
$echo 1b234b56b7 | awk -F 'b' '{print $2}' 234
4. 实用[[ ]],< 用来比较字符串;-lt 用来比较数字
三、重启nrpe
1
|
/usr/local/nagios/bin/nrpe
-c
/usr/local/nagios/etc/nrpe
.cfg -d
|
四、在监控端添加监控项
define service { use local-service host_name server1,server2 service_description 内存 check_command check_nrpe!check_used_mem notifications_enabled 1 }