nagios監控linux主機監控記憶體指令碼

weixin_34355881發表於2015-10-18

說明

工作包括兩部分監控端(一二三)和被監控端(四)

一、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
        }

 

相關文章