由于近來線上環(huán)境的某些進(jìn)程總是內(nèi)存溢出,所以需要添加一下對(duì)于某些進(jìn)程的內(nèi)存使用情況監(jiān)控,搜到的別人的腳本大都不太滿意,于是自己寫了個(gè),代碼如下:
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括開平網(wǎng)站建設(shè)、開平網(wǎng)站制作、開平網(wǎng)頁(yè)制作以及開平網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,開平網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到開平省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!#!/bin/bash HELP(){ echo " Usage: $0 -p /var/run/pidfile -w used% -c used%" echo " Exam: $0 -p /var/run/pidfile -w 85 -c 90" exit 3 } OK=0 ; WA=1 ; CR=2 ;UN=3 ; WAR=$4 ; CRI=$6 ; MI=${7:-0.9} ; MX=${8:-0.8} #MX:性能數(shù)據(jù)的CRITICAL線,計(jì)算方式為內(nèi)存總量乘以MX值,此處為0.9等于 當(dāng)前系統(tǒng)總內(nèi)存 * 0.9,取結(jié)果整數(shù)部分 #MI:性能數(shù)據(jù)的WARNING線,計(jì)算方式為內(nèi)存總量乘以MX值,此處為0.8等于 當(dāng)前系統(tǒng)總內(nèi)存 * 0.8,取結(jié)果整數(shù)部分 DATE="date +%Y-%m-%d~%k:%M:%S" ; NUL=/dev/null TAG=$1 ; [ "$TAG" != "-p" ] && HELP PID=$2 [ ! -f "$PID" ] && echo "`$DATE` Error: $PID not exist." && HELP if ! ps aux|grep "\<`cat $PID`\>"|grep -v grep &>$NUL;then echo "`$DATE` Error: `cat $PID` not exist." HELP else TOTAL=`/usr/bin/free -m|grep Mem|awk '{print $2}'` MIN=`echo "$TOTAL * $MI"|/usr/bin/bc|awk -F. '{print $1}'` MAX=`echo "$TOTAL * $MX"|/usr/bin/bc|awk -F. '{print $1}'` OSM=`/usr/bin/free -m|grep "\"|awk '{print $NF}'` ID=`cat $PID` BMEM=`/usr/bin/top -bn 1|grep "\<$ID\>"|awk '{print $10}'` declare -u MMEM=`/usr/bin/top -bn 1|grep "\<$ID\>"|awk '{print $6}'` RES=`echo "$BMEM > $CRI"|/usr/bin/bc` if [ "$RES" -eq 1 ];then echo "CRITICAL - PID:$ID Memory usage = $BMEM% ["$MMEM"B]. OS free memory="$OSM"MB|Used="$MMEM"B;"$MIN"MB;"$MAX"MB;0;"$TOTAL"MB" exit $CR fi RES=`echo "$BMEM > $WAR"|/usr/bin/bc` if [ "$RES" -eq 1 ];then echo "WARNING - PID:$ID Memory usage = $BMEM% ["$MMEM"B]. OS free memory="$OSM"MB|Used="$MMEM"B;"$MIN"MB;"$MAX"MB;0;10877MB" exit $WA else echo "OK - PID:$ID Memory usage = $BMEM% ["$MMEM"B]. OS free memory="$OSM"MB|Used="$MMEM"B;"$MIN"MB;"$MAX"MB;0;10877MB" exit $OK fi fi HELP ########## ########## ##能不能吐槽一下這個(gè)代碼編輯器??? ########## ##########
測(cè)試使用如下:
./check_mem_pid.sh -p /var/run/hadoop/hdfs/hadoop-hdfs-namenode.pid -w 80 -c 90 OK - PID:5534 Memory usage = 6.6% [720MB]. OS free memory=9179MB|Used=720MB;9789MB;8701MB;0;10877MB
# -w 指內(nèi)存使用的warning比例,-c為critical,其大小均為top -bn 1取出的指定pid的第10列字段
不足之處,歡迎指正...
昨天同事又提了點(diǎn)要求,說能不能給這個(gè)進(jìn)程指定可以內(nèi)存的大小,在可用的范圍內(nèi)監(jiān)控,所以,今天又修改了下,在nagios服務(wù)端執(zhí)行,結(jié)果如下:
# /usr/lib64/nagios/plugins/check_nrpe -H node63 -c check_test -a /var/run/hadoop/hdfs/hadoop-hdfs-namenode.pid 80 90 2048 OK - 719.59MB / 2048MB. (35.14% used)|Used=35.14%;1843MB;1638MB;0;2048MB # 第一個(gè)參數(shù)是進(jìn)程pid文件,第二個(gè)是warning報(bào)警值,第二個(gè)critical報(bào)警值(85就是已用85就開始報(bào)警),最后一個(gè)給監(jiān)聽的目標(biāo)進(jìn)程共分配多少內(nèi)存,單位MB。
在本地執(zhí)行則直接使用腳本如下:
# ./check_mem_pid.sh -p /var/run/hadoop/hdfs/hadoop-hdfs-namenode.pid -w 30 -c 40 -t 2048 WARNING - 719.53MB / 2048MB. (35.13% used)|Used=35.13%;1843MB;1638MB;0;2048MB
代碼就不再列出了,直接上傳到附件了(帶有nagios相關(guān)使用配置文檔哦,親),有興趣的同學(xué)自行下載哈。
附件:http://down.51cto.com/data/2363564另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。