监控nginx

#/bin/bash

host=`hostname`
ip=`ifconfig eth0 | grep ‘inet addr’|sed ‘s/.*addr://g’|sed ‘s/B.*//g’`
#监控nginx的连接数
http_req=`netstat -nat|grep -i “80″|wc -l `
time_stamp=`date “+%Y/%m/%d %T”`
if [ ${http_req} -ge 300 ];
then
echo “alert ==> ${host}@${ip}: http connection ${http_req} >= 300 @${time_stamp} ”
else
echo “${host}@${ip}: http connection ${http_req} @ ${time_stamp}”
fi
##监控nginx的进程
nginx_proc=`ps -C nginx –no-header | wc -l `
time_stamp=`date “+%Y/%m/%d %T”`
if [ ${nginx_proc} -ge 100 ]
then
echo “alert ==> ${host}@${ip}: nginx process ${nginx_proc} >= 100 @${time_stamp} ”
else
echo “${host}@${ip}: nginx process ${nginx_proc} @ ${time_stamp}”
fi

#监控nginx所占用的内存总数
nginx_mem=`top -b -n1 | grep nginx |gawk ‘{sum += $6}; END {print int(sum/1024)}’ `
time_stamp=`date “+%Y/%m/%d %T”`
if [ ${nginx_mem} -ge 500 ]
then
echo “alert ==> ${host}@${ip}: nginx memory usage ${nginx_mem} MB >= 500 @${time_stamp} ”
else
echo “${host}@${ip}: nginx memory ${nginx_mem}MB @ ${time_stamp}”
fi




# 循环执行,不采用 crontab ,国为 crontab 最小单位是分钟,时间太长了
while :
do

# 1:先检测 nginx 主进程是否存在
V_NGINX_NUM=`ps axu |grep 'nginx' |grep -v 'grep' |wc -l`
if [ $V_NGINX_NUM -lt 1 ];then
restart_nginx
continue
fi

# 2:再检查php-cgi是否有进程存在
V_PHP_CGI_NUM=`ps axu |grep 'php-cgi' |grep -v 'grep' |wc -l`
if [ $V_PHP_CGI_NUM -lt 1 ];then
restart_nginx
continue
fi

# 3:再判断端口是否正常
for PORT in $V_PHP_CGI_PORT
do
V_NUM=`eval "netstat -nlpt | grep '${PORT}' | wc -l"`
if [ $V_NUM -lt 1 ];then
restart_nginx
continue
fi
done

# 休眠
sleep 5
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值