運維監控總少不了一些腳原本監控本身的機器,博主本身寫了個監控,並經過sleep來控制輸出的間隔時間。若是想要獲取其餘的相關信息,能夠採用相似的方式,添加便可。bash
首先是服務器的負載監控腳本,主要輸出了 內存,CPU,網絡鏈接等信息服務器
#!/bin/sh while true do TOP=`top -b -n 2 | grep Cpu |tail -2` FREE=`free -m` SWAP=`echo $FREE | grep Swap | cut -d":" -f 4` MEM=`echo $FREE | grep Mem | cut -d: -f 2` #cpu status########################################################## IDLE=`echo $TOP | awk '{print $14}'| sed s/id,//` #swap status######################################################### swap_total=`echo $SWAP | awk '{print $1}'` swap_free=`echo $SWAP| awk '{print $3}'` #mem status########################################################## mem_total=`echo $MEM| awk '{print $1}'` mem_used=`echo $MEM | awk '{print $2}'` mem_free=`echo $MEM| awk '{print $3}'` caches=`echo $MEM| awk '{print $6}'` #tcp status########################################################## closed_wait=`netstat -an| awk '/^tcp.*CLOSED_WAIT/' | wc | awk '{print $1}'` established=`netstat -an| awk '/^tcp.*ESTABLISHED/' | wc | awk '{print $1}'` #date infomation#################################################### DATE=`date +"%F %T"` #echo all the infomation############################################ echo $DATE" "$IDLE" "$mem_total" "$mem_used" "$mem_free" "$caches" "$swap_total" "$swap_free" "$closed_wait" "$established >> Load.log sleep 1 done
而後是單獨列出 日期時間以及CPU負載的 文本處理腳本,主要進行了自動的篩減數據,及分列處理網絡
#!/bin/bash count=1 num=10 while read line;do ((count++)) { if [ $count -eq $num ];then count=1 && echo $line >> odb.txt fi } done < db.txt
最後是腳本輸出的最後處理,過濾掉CPU獲取失敗的行,並把CPU空閒轉化爲CPU的利用率。最後的腳本效率極差,能夠進行優化。運維
#!/bin/bash while read line;do { READ=`echo $line | awk '{print $3}'` WE="0.0%wa," NUM=`echo $READ | tr -cd '0-9'` NUM1=`echo $NUM | sed 's/\(.\)$/.\1/g'` RESULT=`echo "scale=3;1000-$NUM1"|bc` RERE=`echo $RESULT | sed 's/.*\(...\)$/\1/'` HAHA=`echo $line | awk '{print $1,$2}'` if [ $READ != $WE ];then echo $HAHA $RERE% >> idb.txt fi } done < odb.txt