




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)購房轉(zhuǎn)讓合同范本
- 個(gè)人轉(zhuǎn)讓德文合同范本
- 分包混凝土合同范本
- 買賣車位轉(zhuǎn)讓合同范本
- 包子工用工合同范本
- 創(chuàng)業(yè)加盟合同范本
- 廣西買房合同范本
- 出國勞務(wù)外派合同范本
- 勞動(dòng)合同范本工資
- 出租包車合同范本
- 2022-2023學(xué)年湖南省長沙市統(tǒng)招專升本語文模擬練習(xí)題三及答案
- 社會(huì)救助法課件
- 1.裝配式建筑概述(裝配式混凝土結(jié)構(gòu)施工技術(shù))
- 第七講+漢字字音
- 新零件的成熟保障MLA
- 【基于杜邦分析法的企業(yè)盈利能力研究國內(nèi)外文獻(xiàn)綜述4000字】
- 初中語文七下-上下句默寫
- 《董存瑞舍身炸碉堡》PPT課件新
- 新川教版信息技術(shù)六年級(jí)下冊(cè)全冊(cè)教案
- 第20章補(bǔ)充芯片粘接技術(shù)
- 旅行社運(yùn)營實(shí)務(wù)電子課件 5.1 旅行社電子商務(wù)概念
評(píng)論
0/150
提交評(píng)論