整理了下几个常用的监控简本:
#获取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