《shell腳本系統監控-------郵件告警》
我與眾多同學一樣,在沒有學習shell編程之前是對shell編程是一頭霧水的,然而它能做什麽我也不知道,就是覺得能夠使用一個與別人不一樣的方式去管理系統。現在我慢慢的懂shell的重要性,為小型的機房裏面做一個小小的shell監控足夠,當然大型的機房不能使用shell來監控系統,因為大型機房監控的機器有很多,而它們的狀態是以報表和圖形界面的形式來匯報問題的。
接下來我寫一篇關於怎麽用shell來進行系統監控並在進行發送郵件。
創建一個文件:
vim monitor.sh
#/bin/bash ----默認執行方式 #以下為變量: HOST=`hostname` ---輸出當前系統的機器名 SYS=`uname -a` ---輸出當前系統信息 DATE=`date "+%F %H:%M:%S"` ---輸出當前系統時間 WEB=/var/www/html/$HOST.html ---創建當前系統的網站的網頁(以該腳本命名) CPU=`cat /proc/cpuinfo |grep processor | wc -l` ---輸出當前系統的CPU信息(作為判斷信息) ID=`vmstat | awk ‘NR==3{print $15 }‘` ----輸出當前系統CPU的IP號碼 WA=`vmstat | awk ‘NR==3{print $16 }‘` ---輸出系統的I/O的等待百分比 LOAD=`w | awk ‘NR==1{print $8}‘ |awk -F "," ‘{print $1}‘` ---輸出系統的負載值 DISK=`df -h |awk ‘NR==3{print $4}‘ |awk -F "%" ‘{print $1}‘` ---輸出硬盤的已經使用值 FREE=`free -m | awk ‘NR==2{print $4}‘` ----輸出內存空閑值 CACHE=`free -m | awk ‘NR==2{print $7}‘` ----輸出內存緩存值 TCP=`netstat -atunlp` ----輸出當前系統的網絡鏈接狀態 IF=`iftop -i eth0 -P -Nn -L 100 -s 1 -t >>$WEB` ---輸出系統的eth0接口的狀態 #以下是執行上面所做的變量的輸出 #在這裏對cpu的線程數,CPU的LOAD,系統磁盤的狀態,內存剩余。這四個做一個郵件的告警 echo "design for leoheng" echo "######---主機名---##########" echo hostname=`echo $HOST` echo "######---系統參數---########" echo system=`echo $SYS` echo "######---CPU線程數---#######" echo processor=`echo $CPU` if [ $CPU -eq 4 ];then `echo "wa=$WA and id=$ID cpu processor is ok" | mail -s "$HOST CPU" [email protected]