linux系統(tǒng)整體監(jiān)控腳本_第1頁
linux系統(tǒng)整體監(jiān)控腳本_第2頁
linux系統(tǒng)整體監(jiān)控腳本_第3頁
linux系統(tǒng)整體監(jiān)控腳本_第4頁
linux系統(tǒng)整體監(jiān)控腳本_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、linux系統(tǒng)整體監(jiān)控腳本 (2012-01-09 11:28:19)從網(wǎng)上搜了一個(gè)監(jiān)控系統(tǒng)資源的腳本,有問題在他基礎(chǔ)上改一改試試問題1、io結(jié)果不準(zhǔn)確2、數(shù)據(jù)各自為戰(zhàn),不方便合并統(tǒng)計(jì)出報(bào)表修改思路1、沿用腳本框架2、使用持續(xù)運(yùn)行腳本獲取系統(tǒng)資源3、假定cpu使用vmstat 30 21 ,首次運(yùn)行獲取時(shí)間,其他命令使用相同的周期和次數(shù)亂糟糟的寫了兩天,分成2塊把腳本寫完了。· 1、shell,作用:獲取最原始的資源占用數(shù)據(jù)#!/bin/bash#This scripts is checking your host system: the cpu ,i/o,mem,netw

2、ork,#processes stat.#  vision 1.1 Bate#  Write by skate#  Update by Poisson#If you have some advise about it ,you can mail :gaosongbo#logdir=/data0/search/sysLoadLogcd $logdir#make the local language is chinese#export LANG=zh_CNremovedate=date +%dcurdate=date +%HdateOFf

3、ile=date +"%Y%m%d%H"logcpuuse=$logdir/cpuuse"."$dateOFfile".log"logcpuload=$logdir/cpuload"."$dateOFfile".log"logioload=$logdir/ioload"."$dateOFfile".log"lognetworkload=$logdir/networkload"."$dateOFfile".log"lo

4、gsysprocess=$logdir/sysprocess"."$dateOFfile".log"logmemuse=$logdir/memuse"."$dateOFfile".log"lognetsession=$logdir/netsession"."$dateOFfile".log"debuglog=$logdir/debuglog"."$dateOFfile".log"#統(tǒng)計(jì)cpu的使用率信息#持續(xù)1小時(shí)#cpuuse() &

5、#160;   echo "begin cpuuse"    datenow=date +"%Y%m%d%H%M%S"    if -f $logcpuuse     then        echo $datenow,$logcpuuse >> $debuglog    el

6、se        echo $datenow > $logcpuuse    #    echo $datenow >> $debuglog        vmstat 30 120 | grep -v "p|r">> $logcpuuse    fi#統(tǒng)計(jì)cpu的負(fù)

7、載信息#cpuload()     for(i=1;i<120;i+);    do        datenow=date +"%Y%m%d%H%M%S"        if -f $logcpuload           

8、60; then                uptime  >> $logcpuload            else             

9、;   #echo $datenow > $logcpuload                uptime >> $logcpuload        fi        sleep 30   

10、60;done#統(tǒng)計(jì)io的使用率#持續(xù)1小時(shí)#io()     datenow=date +"%Y%m%d%H%M%S"    if -f $logioload     then        echo $datenow,$logioload >> $debuglog    else   

11、0;    echo $datenow > $logioload        echo $datenow >> $debuglog        iostat -x -k 30 120 >> $logioload    fi#統(tǒng)計(jì)Mem的使用率#持續(xù)1小時(shí)#mem()     for(i

12、=1;i<120;i+);    do        datenow=date +"%Y%m%d%H%M%S"        if -f $logmemuse             then     &

13、#160;          #echo $datenow >> $logmemuse                free -m >> $logmemuse            else&#

14、160;               echo $datenow > $logmemuse                free -m >> $logmemuse        fi

15、0;       sleep 30    doneothers()    #    #查看網(wǎng)絡(luò)連接數(shù),tcp協(xié)議    #    if -f $lognetsession     then    date +"%D %r" >

16、;> $lognetsession    netstat -an | grep -E "(tcp)" | cut -c 74- | sort | uniq -c | sort -n >> $lognetsession    else    date +"%D %r" >> $lognetsession    netstat -an | grep -E "(t

17、cp)" | cut -c 74- | sort | uniq -c | sort -n >> $lognetsession    fi          #    #統(tǒng)計(jì)系統(tǒng)進(jìn)程總數(shù)信息    #    if -f $logsysprocess     then &

18、#160;  date +"%D %r" >> $logsysprocess    eysnum=ps aux | wc -l    javanum= ps -ef |grep java | grep -v grep |wc -l    echo "processes of system is: $sysnum" >> $logsysprocess    

19、;echo "processes of java is: $javanum" >> $logsysprocess    else       date +"%D %r" > $logsysprocess    sysnum=ps aux | wc -l    javanum= ps -ef |grep java | grep -v grep |wc

20、-l    echo "processes of system is: $sysnum" >> $logsysprocess    echo "processes of javanum is: $javanum" >> $logsysprocess    fi          #   

21、; #統(tǒng)計(jì)網(wǎng)絡(luò)負(fù)載的信息    #       if -f $lognetworkload     then    date +"%D %r" >> $lognetworkload    sar -n DEV 1 3| grep eth0 >> $lognetworkload   &#

22、160;   else    date +"%D %r" > $lognetworkload    sar -n DEV 1 3|head -3 |tail -1 >> $lognetworkload    sar -n DEV 1 3| grep eth0 >> $lognetworkload    ficase "$1" in

23、0;   cpuuse)        cpuuse        RETVAL=$?            cpuload)        cpuload    

24、60;   RETVAL=$?            io)        io        RETVAL=$?            mem)  

25、      mem        RETVAL=$?            others)        others        RETVAL=$?  &#

26、160;         *)        echo $"Usage: $0 cpuuse|cpuload|io|mem|others"        exit 1        esacexit 0· 2、python的,作用:根據(jù)輸入

27、的時(shí)間,查找并展現(xiàn)該時(shí)間段內(nèi)資源占用的情況,其中還不能根據(jù)指定列展現(xiàn),也沒有單獨(dú)拿出來做個(gè)函數(shù)'''Created on 2012-1-6author: poisson'''import reimport stringimport sysimport osimport datetimeimport string, timefrom datetime import timedeltalogFilePath = "/data0/search/sysLoadLog/"#logFilePath = "D:/others/20

28、1201/logs/"def getStaticsPeriod():       argv = sys.argv    print "argv", argv    if (argv._len_() < 3):        print '''example: test.py yyyymmddhh24mi yy

29、yymmddhh24mior: test.py hh24mi hh24mi    (only for today)'''        print "argv._len_()", argv._len_()        exit(-1)    else:     &

30、#160;  return argvdef formatLine(line):    fl = re.sub('n', '', line)    while(fl.count('  '):        fl = re.sub('  ', ' ', fl)   

31、0;return re.sub(' ', '', fl)def getTimepoint(origtime, j):    #origtime 20120109190001    if (type(origtime) = type('20120109190001'):        origtime_obj = getTimeOBJ(origtime)   &

32、#160;    return origtime_obj + datetime.timedelta(seconds=30 * j)    else:        return origtime + datetime.timedelta(seconds=30 * j)      def check(list,one):    #fn.sp

33、lit(".")0    res = False    for item in list:        if (item.count(one):            res = True    return resdef check2(list,one):

34、    #fn.split(".")0    if (list.count(one)>0):        return True    else:        return Falsedef getFilenameByStaticsPeriod(StaticsTimeStart, Stat

35、icsTimeEnd):    #if error res.key=1, res hase res.value(error), else res.key=0    filename = 0:'cpuuse':,                'ioload':,     

36、60;          'memuse':    filelist = "memuse.time.log","ioload.time.log","cpuuse.time.log"       for temp in os.walk(logFilePath):    

37、60;   filelists = temp2       for fn in filelists:        if (check(filelist,fn.split(".")0):            if ( (getTimeOBJ(fn.split(".&q

38、uot;)1)>=(StaticsTimeStart - datetime.timedelta(minutes=1)                 and (getTimeOBJ(fn.split(".")1)<=(StaticsTimeEnd + datetime.timedelta(minutes=1)       &#

39、160;         ):                filename0fn.split(".")0.append(logFilePath+fn)       return filenamedef getTimeOBJ(origtime): 

40、         if (origtime._len_() < 14):        today = datetime.datetime.today()        if (origtime._len_() = 4):          &

41、#160; return datetime.datetime(today.year,                       today.month,                 &

42、#160;     today.day,                       string.atoi(origtime0:2),               &#

43、160;       string.atoi(origtime2:),                       0)        else:      &

44、#160;     if (origtime._len_() = 10):                return datetime.datetime(string.atoi(origtime0:4),               &#

45、160;           string.atoi(origtime4:6),                           string.atoi(origtime6:8),   

46、                        string.atoi(origtime8:10),                     

47、0;     0,                           0)    else:        return datetime.datetime(

48、string.atoi(origtime0:4),               string.atoi(origtime4:6),               string.atoi(origtime6:8),       

49、60;       string.atoi(origtime8:10),               string.atoi(origtime10:12),               string.atoi(origtime12

50、:)    #n = datetime.datetime.now() #    print n+ #    print n,n-datetime.timedelta(minutes=30)#    d = timedelta(seconds=30) #    n = n + d #    tick = time.mkt

51、ime(n.timetuple() def getAllRecord(filelist,StaticsTimeStart,StaticsTimeEnd):    seed = #    while ()          print filelist    for fn in filelist:      &

52、#160; f = open(fn)        i = 0        j = 0        res =         origtime = 0        timepoint

53、 = 0        if (True):#        try:            origtime = getTimeOBJ(re.sub('n','',f.readline()        &

54、#160;   f.seek(0)            print "origtime",origtime,fn            tempTimeObj = origtime          

55、0; if (seed.keys().count(origtime)=0):                while (tempTimeObj<(origtime + datetime.timedelta(hours=1):                

56、60;   seedtempTimeObj='mem':,'io':,'cpu':                    tempTimeObj = getTimepoint(tempTimeObj,1)          

57、;  for line in f.readlines()1:                fl = formatLine(line)    #           #MEM#seedtime=total,used,free,shared,buffers,cached,

58、    #                                           rused,rfree, 

59、;   #                                           swaptotal,swapused,swa

60、pfree                if (fn.split("/")-1.count('memuse')>0):                    if (fl.count("

61、total") ) = 1):                        timepoint = getTimepoint(origtime,j)#                

62、60;       seedtimepoint='mem':,'io':,'cpu':                        j = j + 1       

63、60;            if (fl.count("Mem:")=1):                        templist = fl.split(" ")  &

64、#160;                     seedtimepoint'mem''total'=(string.atoi(templist1)                 &#

65、160;      seedtimepoint'mem''used'=(string.atoi(templist2)                        seedtimepoint'mem''free'=(string.ato

66、i(templist3)                        seedtimepoint'mem''shared'=(string.atoi(templist4)             

67、           seedtimepoint'mem''buffers'=(string.atoi(templist5)                        seedtimepoint'mem&#

68、39;'cached'=(string.atoi(templist6)                    if (fl.count("buffers/cache:")=1):               

69、60;        templist = fl.split(" ")                        seedtimepoint'mem''rused'=(string.atoi(templist2) 

70、                       seedtimepoint'mem''rfree'=(string.atoi(templist3)                &

71、#160;   if (fl.count("Swap:")=1):                        templist = fl.split(" ")          

72、0;             seedtimepoint'mem''swaptotal'=(string.atoi(templist1)                        seedtim

73、epoint'mem''swapused'=(string.atoi(templist2)                        seedtimepoint'mem''swapfree'=(string.atoi(templist3)    

74、60;                              #IO#seedtime=Device:r/s,w/s,rkB/s,wkB/s,iowait            

75、;    if (fn.split("/")-1.count('io')>0):                    if (fl.count(":") = 0)and(fl._len_() > 10):#       

76、                 temp =                         templist = fl.split(" ")  &

77、#160;                     if (templist._len_() = 6):                        

78、;    iowait = string.atof(templist3)                            timepoint = getTimepoint(origtime,j)      

79、0;                     j = j + 1                        if (templist._len_(

80、) >= 12):                            #print templist                 

81、60;          seedtimepoint'io'templist0 = 'r/s':string.atof(templist3),                           &

82、#160;                  'w/s':string.atof(templist4),                         

83、                     'rkB/s':string.atof(templist5),                      

84、60;                       'wkB/s':string.atof(templist6),                    

85、                          'iowait':string.atof(iowait)                  

86、             #CPU#seedtime=us,sy,wa,st,r,b                               if (fn.

87、split("/")-1.count('cpu')>0):                    if (fl.count("p") + fl.count('r') = 0):            &

88、#160;           timepoint = getTimepoint(origtime,j)                        seedtimepoint'cpu' = 'us':string.

89、atoi(fl.split(' ')12),                                             

90、           'sy':string.atoi(fl.split(' ')13),                              

91、0;                         'id':string.atoi(fl.split(' ')14),                &#

92、160;                                       'wa':string.atoi(fl.split(' ')15),  

93、                                                  

94、    'r':string.atoi(fl.split(' ')0),                                      

95、                  'b':string.atoi(fl.split(' ')1)                        j

96、 = j + 1                                 i = i + 1#        except:#    

97、0;       print "ERROR"        f.close()    return seed   def showResult(seed,StaticsTimeStart,StaticsTimeEnd):       print "Seed:-begin prin

98、t-"    nlist = seed.keys()    nlist.sort()    print "timePoint",'t',"mem-used",'t',"cpu-used",'t',"cpu-wait",'t',"rkbTotal",'t',"wkbTotal&qu

99、ot;,'t',"iops"    for item in nlist:        if (item>=StaticsTimeStart) and (item <=StaticsTimeEnd):            rkbTotal = 0     &#

100、160;      wkbTotal = 0            iops = 0            for itemofIO in seeditem'io'.keys():        

101、0;       rkbTotal = seeditem'io'itemofIO'rkB/s' + rkbTotal                wkbTotal = seeditem'io'itemofIO'wkB/s' + wkbTotal     

102、           iops = seeditem'io'itemofIO'r/s' + seeditem'io'itemofIO'w/s' + iops            #special -free only run 119 times, other commits run 120 times&

103、#160;           if (seeditem'mem'.keys().count("rused")=0):                print item,'t',seedgetTimepoint(item,-1)'mem''rused&

104、#39;,'t',100-seeditem'cpu''id','t',seeditem'cpu''wa','t',rkbTotal,'t',wkbTotal,'t',iops            else:          

105、0;     print item,'t',seeditem'mem''rused','t',100-seeditem'cpu''id','t',seeditem'cpu''wa','t',rkbTotal,'t',wkbTotal,'t',iops         

106、           if _name_ = '_main_':#    origtime = '0100'#    print getTimeOBJ(origtime)#    j = 20#    print "test",getTimepoint(origtime, j)

107、       StaticsTimeStart, StaticsTimeEnd = getStaticsPeriod()1:#    StaticsTimeStart, StaticsTimeEnd = '1000','1110'    print StaticsTimeStart, StaticsTimeEnd    print "getTimeOBJ(Stati

108、csTimeStart), getTimeOBJ(StaticsTimeEnd):",getTimeOBJ(StaticsTimeStart), getTimeOBJ(StaticsTimeEnd)       obj = getFilenameByStaticsPeriod(getTimeOBJ(StaticsTimeStart), getTimeOBJ(StaticsTimeEnd)    if (obj.keys()0=0):   

109、0;    filelist =         for keys in obj0.keys():            for item in obj0keys:                fi

110、lelist.append(item)       showResult(getAllRecord(filelist,getTimeOBJ(StaticsTimeStart),getTimeOBJ(StaticsTimeEnd),getTimeOBJ(StaticsTimeStart),getTimeOBJ(StaticsTimeEnd)    else:        print "getAll

111、Record ERROR"· 3、crontabl0 */1 * * * sh /application/search/qp/moni_system.sh io >>/data0/search/sysLoadLog/debug.log0 */1 * * * sh /application/search/qp/moni_system.sh mem >>/data0/search/sysLoadLog/debug.log0 */1 * * * sh /application/search/qp/moni_system.sh cpuuse >>

112、/data0/search/sysLoadLog/debug.log0 */1 * * * sh /application/search/qp/moni_system.sh cpuload >>/data0/search/sysLoadLog/debug.log*/1 * * * * sh /application/search/qp/moni_system.sh others >>/data0/search/sysLoadLog/debug.log轉(zhuǎn)自:author:skatetime :2009/03/10  os平臺(tái):centos 4.7作為DBA要時(shí)刻注意系統(tǒng)的整體狀況,我們不能人為的一直監(jiān)控系統(tǒng)這就需要DBA要寫一些日常的監(jiān)控腳本,幫助DBA分析問題,我們最近要上個(gè)新的系統(tǒng),我于是寫了linux系統(tǒng)的整體監(jiān)控腳本  monilog_timeswitch.sh :日志輪詢腳本,保留最近5個(gè)監(jiān)控日志,定期刪除最陳舊的監(jiān)控日志moni_system.sh        :linux 系統(tǒng)整體監(jiān)控腳本 功能:監(jiān)控系統(tǒng)的資源使用信息,及負(fù)載信息使用方法:把這兩個(gè)腳本做成定時(shí)任務(wù)例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論