服务器性能监控脚本

整理了下几个常用的监控简本:

 

#获取cpu使用率

cpuIdle=`top -n 1 | grep 'Cpu' | awk '{print $8}'`

cpuUsage=`expr 100 - ${cpuIdle[((0))]%.*}`

 

#获取磁盘使用率(监控目标 /dev/sda1

data_name="/dev/sda1"

diskUsage=`df -h | grep $data_name | awk -F '[ %]+' '{print $5}'`

 

#获取内存情况

mem_total=`free -m | awk -F '[ :]+' 'NR==2{print $2}'`

mem_used=`free -m | awk -F '[ :]+' 'NR==2{print $3}'`

#统计内存使用率

mem_used_persent=`awk 'BEGIN{printf "%.0f\n",('$mem_used'/'$mem_total')*100}'`

 

#获取报警时间

now_time=`date '+%F %T'`

 

#进程详情(这里抓取的是firefox浏览器的信息)

detail=`top -b -n 1 | grep 'firefox'`

 

#磁盘读写速度监控(监控的是sda详情)

df_monitor=`iostat -d -k 1 1 | grep 'sda'`


#进程监控(这里抓取的进程是我随便写的一个 fdfafx)

function proc_monitor(){

    procID=`pgrep fdfafx`

    if [ "" == "$procID" ];

    then

        #可添加重启操作

        echo "   进程不存在!"

    fi

}


#端口监控 此处使用的是鸟哥的脚本

 监控对象也是本机的80端口

function net_monitor(){

server_all_list=(\

192.168.0.1:80 \

)

 

date=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")

 

server_all_len=${#server_all_list[*]}

 i=0

 

 while  [ $i -lt $server_all_len ]

 do

    server_ip=$(echo ${server_all_list[$i]} | awk -F ':' '{print $1}')

    server_port=$(echo ${server_all_list[$i]} | awk -F ':' '{print $2}')

     is_send_msg=0

 

    if nc -vv -z -w 3 $server_ip $server_port

    then

        #status:    0,http down    1,http ok    2,http down but ping ok

        status=1

        echo "   服务器${server_ip},端口${server_port}能够正常访问"

    else

        if nc -vv -z -w 10 $server_ip $server_port

        then

            status=1

            echo "   服务器${server_ip}端口${server_port}能够正常访问!"

              else

            if ping -c 1 $server_ip

         then

                status=2

                echo "   服务器${server_ip}端口{server_port}无法访问,但是能够Ping"

                  message="   服务器无法访问,但是能ping"

                  is_send_msg=1

            else

                status=0x

            echo "   服务器${server_ip}端口${server_port}无法访问,并且无法Ping通!"

                 message="   无法访问,并且无法ping"

                 is_send_msg=1

 

            fi

         fi

           if is_send_msg=1

           then

          echo "   报警服务器${server_ip}报警内容: $message时间:$date "

               else

                         echo "   一切正常,无须发送报警消息!\n"

       fi

     fi

   let i++

done

}


参考链接:

鸟哥http://blog.chinaunix.net/uid-25266990-id-148111.html

awk使用 :http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

sendmail:http://blog.csdn.net/chb2000/article/details/6326500

你可能感兴趣的:(开发基础)