監控腳本CPU——內存——硬盤

 

#!/bin/bash
#Editor Y_ming
mt="/etc/motd"       #定義反饋信息文件,這個是ssh登錄時顯示message的文件!
#獲取主機信息
hostname=$(uname -n)
ip=`ifconfig eth0 | awk '/inet addr/{print $2}'` #Defind ethX


while :              #定義一個循環定時執行監控腳本
do
sleep 15m       #每15分鐘循環執行一次
echo "This is status of $hostname $ip from the monitor_script.">$mt
#CPU_monitor
load_15=$(uptime | awk '{print $(NF)}')    #獲取當前主機15分鐘平均負載
cpu_num=$(grep -c 'model name' /proc/cpuinfo)  #獲取cpu核心數
vga=`echo "scale=2;a=$load_15/$cpu_num*100;if(length(a)==2) print("0");print("a")"| bc | awk -F. '{print $1}'`
#根據每核心的平均負載值反饋信息
if [ $vga -le 70 ] ;then
        echo "LoadAaverage=0."$vga",System running well.">>$mt
else
    if [ $vga -le 100 ] ;then
        echo "LoadAaverage=0."$vga",CPU will becoming full used.">>$mt
    elif [ $vga -le 120 ];then
        echo "LoadAaverage=0."$vga",CPU has over used">>$mt
    else
        echo "LoadAaverage=0."$vga",CPU has bigger over used.">>$mt
    fi
fi

#Memory_monitor
mem_free=`/usr/bin/free -m | awk '/Mem/{print $8=$4+$6+$7}'` #獲取空閒內存值
mem_total=`/usr/bin/free -m | awk '/Mem/{print $2}'`       #獲取總內存值
mem_used=`expr $mem_total - $mem_free`                     #計算已用內存
swap_total=`/usr/bin/free -m | awk '/Swap/{print $2}'`     #虛擬內存總值
swap_free=`/usr/bin/free -m | awk '/Swap/{print $4}'`      #空虛虛擬內存值  
swap_used=`expr $swap_total - $swap_free`                  #已經使用的虛擬內存

mem=`echo "scale=2;a=$mem_free/$mem_total*100;if(length(a)==2) print("0");print("a")"| bc | awk -F. '{print $1}'`
mem_used=`expr 100 - $mem`
#mem=15
swap=`echo "scale=2;a=$swap_free/$swap_total*100;if(length(a)==2) print("0");print("a")" | bc | awk -F. '{print $1}'`
#swap=20
if [ $mem -le "20" ];then
        echo "Mem has used $mem_used"M"/$mem_total"M" more than 80%,please check it.">>$mt
        if [ $swap -le 30 ];then
                echo "Swap has used $swap_used"M"/$swap_total"M" more than 70%,too.Please Check it right now.">>$mt
        fi
else
        echo "Mem has used $mem_used"%" that enough to running.">>$mt
fi

#Disk_monitor
#用一個循環判斷所有掛載點的使用百分比,這個對lvm分區的需要修改執行
for i in $(df -h | grep / | awk  '{print $NF;}') #{\/,\/boot,\/dev\/shm,\/cdrom}
do
     num=$(/bin/df -h | grep -w $i | awk  '{print $(NF-1)}' | sed  's/%//g')
     #num=$(/bin/df -h | grep -w $poit | awk  '{print $(NF-1)}' | sed  's/%//g')
     if [ $num -gt 80 ]
        then
                echo "The Mountpoit $i will be full use, please check it.">>$mt
     fi
done
done
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章