轉載請註明:http://www.cnblogs.com/zishengY/p/6819606.html html
廣義的網站的監控涵蓋全部的非業務行爲的數據採集與管理,包括數據分析師和產品設計師使用的網站用戶行爲日誌、業務運行數據,以及供運維工程師和開發工程師使用的性能統計數據等。react
本文主要是經過shell腳原本收集服務器性能指標,如系統load、內存佔用、磁盤IO、CPU佔用,並將其寫入一個文件中,及時判斷應用狀況,防患於未然 。linux
實現步驟以下:shell
vim check.sh
添加下面腳本以後保存 vim
#!/bin/bash #這個腳本使用來統計CPU、磁盤、內存使用率、帶寬的 total=0 system=0 user=0 i=0 #帶寬使用狀況 time=`date "+%Y-%m-%d %k:%M"` day=`date "+%Y-%m-%d"` minute=`date "+%k:%M"` echo "*************************************************************************" >> 123.txt echo "統計開始時間:$day $minute" >> 123.txt #循環五次,避免看到的是偶然的數據 echo "#帶寬的使用狀況:#" >>123.txt while (( $i<5 )) do #原先的`ifconfig eth0|sed -n "7p"|awk '{print $2}'|cut -c7-`方式獲取網卡的信息爲空,已經註釋掉 #rx_before=`ifconfig eth0|sed -n "7p"|awk '{print $2}'|cut -c7-` #tx_before=`ifconfig eth0|sed -n "7p"|awk '{print $6}'|cut -c7-` rx_before=$(cat /proc/net/dev | grep 'eth' | tr : " " | awk '{print $2}') tx_before=$(cat /proc/net/dev | grep 'eth' | tr : " " | awk '{print $10}') sleep 2 #rx_after=`ifconfig eth0|sed -n "7p"|awk '{print $2}'|cut -c7-` #tx_after=`ifconfig eth0|sed -n "7p"|awk '{print $6}'|cut -c7-` rx_after=$(cat /proc/net/dev | grep 'eth' | tr : " " | awk '{print $2}') tx_after=$(cat /proc/net/dev | grep 'eth' | tr : " " | awk '{print $10}') rx_result=$[(rx_after-rx_before)/1024/1024/2*8] tx_result=$[(tx_after-tx_before)/1024/1024/2*8] echo "$time Now_In_Speed: $rx_result Mbps Now_OUt_Speed: $tx_result Mbps" >>123.txt let "i++" done rx_result=$(cat 123.txt|grep "$time"|awk '{In+=$4}END{print In}') tx_result=$(cat 123.txt|grep "$time"|awk '{Out+=$7}END{print Out}') In_Speed=$(echo "scale=2;$rx_result/5"|bc) Out_Speed=$(echo "scale=2;$tx_result/5"|bc) #echo "#帶寬的5次的平均值是:#" >>123.txt echo "$time In_Speed_average: $In_Speed Mbps Out_Speed_average: $Out_Speed Mbps" >>123.txt #CPU使用狀況 which sar > /dev/null 2>&1 if [ $? -ne 0 ] then total=`vmstat 1 5|awk '{x+=$13;y+=$14}END{print x+y}'` average=$(echo "scale=2;$total/5"|bc) fi echo "#CPU使用率:#" >>123.txt echo "Total CPU is already use: $average%" >>123.txt #磁盤使用狀況(注意:須要用sed先進行格式化才能進行累加處理) disk_used=$(df -m | sed '1d;/ /!N;s/\n//;s/ \+/ /;' | awk '{used+=$3} END{print used}') disk_totalSpace=$(df -m | sed '1d;/ /!N;s/\n//;s/ \+/ /;' | awk '{totalSpace+=$2} END{print totalSpace}') disk_all=$(echo "scale=4;$disk_used/$disk_totalSpace" | bc) disk_percent1=$(echo $disk_all | cut -c 2-3) disk_percent2=$(echo $disk_all | cut -c 4-5) disk_warning=`df -m | sed '1d;/ /!N;s/\n//;s/ \+/ /;' | awk '{if ($5>85) print $5 $6;} '` echo "#磁盤利用率#" >>123.txt echo "hard disk has used: $disk_percent1.$disk_percent2%" >>123.txt echo -e "\t\t#磁盤存在目錄使用率超過85%報警#" >>123.txt echo -e "\t\tover used: $disk_warning" >>123.txt #內存使用狀況 memery_used=$(free -m | awk 'NR==2' | awk '{print $3}') buffer_used=$(free -m | awk 'NR==2' | awk '{print $6}') cache_used=$(free -m | awk 'NR==2' | awk '{print $7}') free=$(free -m | awk 'NR==2' | awk '{printf $4}') memery_all=$(free -m | awk 'NR==2' | awk '{print $2}') used_all=$[memery_all-(free+buffer_used+cache_used)] echo "$used_all $memery_all $free" >>123.txt memery_percent=$(echo "scale=4;$memery_used / $memery_all" | bc) memery_percent2=$(echo "scale=4; $used_all / $memery_all" | bc) percent_part1=$(echo $memery_percent | cut -c 2-3) percent_part2=$(echo $memery_percent | cut -c 4-5) percent_part11=$(echo $memery_percent2 | cut -c 2-3) percent_part22=$(echo $memery_percent2 | cut -c 4-5) echo "#內存使用率#" >> 123.txt echo "system memery is already use: $percent_part1.$percent_part2%" >>123.txt echo "actual memery is already use: $percent_part11.$percent_part22%" >>123.txt echo "結束本次統計:$day $minute" >> 123.txt echo "*************************************************************************" >> 123.txt echo -e "\n\n\n\n" >> 123.txt
touch 123.txt
chmod 777 check.sh chmod 777 123.txt
./check.sh
出現這信息表名腳本成功運行實時統計狀況。bash
如果想使用定時任務,可以使用crontab進行設置,請參見這篇文章服務器
學習本就是一個不斷模仿、練習、再到最後面本身原創的過程。運維
雖然可能歷來不能寫出超越網上通類型同主題博文,但爲何仍是要寫?
於本身而言,博文主要是本身總結。假設本身有觀衆,畢竟講是最好的學(見下圖)。post於讀者而言,筆者能在這個過程get到知識點,那就是共贏了。
固然因爲筆者能力有限,或許文中存在描述不正確,歡迎指正、補充!
感謝您的閱讀。若是本文對您有用,那麼請點贊鼓勵。性能