說明
工作包括兩部分監控端(一二三)和被監控端(四)
一、nrpe.cfg中新增指令碼
nrpe.cfg中新增命令索引
command[check_used_mem]=/usr/local/nagios/libexec/check_used_mem.sh 80 90
說明:實際記憶體使用量超過80%警告;超過90%嚴重警告
二、新增具體指令碼
參考指令碼check_used_mem.sh
warn=$1 critical=$2 all=`free | sed -n '2p' | awk '{print $2}'` used=`free | sed -n '3p' | awk '{print $3}'` let "c=$used*100/$all" if [[ $c -lt $warn ]] then echo "used mem/total < $warn% [used:$used, total:$total:$all]" exit 0 elif [[ $c -lt $critical ]] then echo "used mem/total ≥$warn% [used:$used, total:$total:$all]" exit 1 else echo "used mem/total ≥$critical% [used:$used, total:$total:$all]" exit 2 fi
解釋:
1. $1、$2分別指輸入的第一、二個引數,比如:
del.sh指令碼內容為
#/bin/bash echo $1
- sh del.sh a #第一個引數是a
- chmod a+x ./del.sh a #第一個引數是a
2. free用來檢視記憶體的使用情況
[root@xen_202_12 /]# free -m total used free shared buffers cached Mem: 3072 2459 612 0 207 1803 -/+ buffers/cache: 447 2624 Swap: 1913 0 1913
- total 記憶體總數: 3072
- used 已經使用的記憶體數: 2459
- free 空閒的記憶體數: 612
- shared 當前已經廢棄不用,總是0
- buffers: Buffer Cache記憶體數: 13220
- cached: Page Cache記憶體數: 2720160
關係:total = used + free
第3行:
-/+ buffers/cache的意思:
-buffers/cache 的記憶體數: 447 (等於第1行的 used - buffers - cached)
+buffers/cache 的記憶體數: 2624 (等於第1行的 free + buffers + cached)
注:此處的記憶體數在用上面式子計算後,在大小上有一點點出入(還不知道是什麼原因)。
可見-buffers/cache反映的是被程式實實在在吃掉的記憶體,而+buffers/cache反映的是可以挪用的記憶體總數。
3. sed -n '2p'指的是查詢第二行
4. awk '{print $2} 指的是第二列,其中預設以空格分隔。可以利用-F指定分隔符
$echo 1b234b56b7 | awk -F 'b' '{print $2}' 234
5. 實用[[]],<用來比較字串;-lt用來比較數字
三、重啟nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
四、在監控端新增監控項
define service { use generic-service host_name 100.61.73.2,100,61,73.3 service_description 記憶體 check_command check_nrpe!check_used_mem notifications_enabled 1 }