服务器上跑的是LNMP环境,近期总是有502现象。502为网站访问的状态码,200正常,502错误是nginx最为普通的错误状态码。由于502只是暂时的,并且只要一重启php-fpm服务则502消失,但不重启的话,则会一直持续很长时间。所以有必要写一个监控脚本,监控访问日志的状态码,一旦发生502,则自动重启一下php-fpm。
我们设定:
1. access_log /data1/log/access.log
2. 脚本死循环,每10s检测一次
3. 重启php-fpm的方法是 /etc/init.d/php-fpm restart
参考脚本:
{{{密码回复可见}}}
我们设定:
1. access_log /data1/log/access.log
2. 脚本死循环,每10s检测一次
3. 重启php-fpm的方法是 /etc/init.d/php-fpm restart
参考脚本:
{{{密码回复可见}}}
0
- #!/bin/bash
- while :;do
- a=awk -F ' ' '{print $9}' /usr/local/nginx/logs/access.log|tail -1
- if [a=502];then
- /etc/init.d/php-fpm restart
- fi
- sleep 10
- done
0
#!/bin/bash
##by xingcheng
##2016/8/20
while :;
do
I=`awk '{print $6}' /data1/log/access.log |grep 502 |head -1`
if [ $I -eq 502 ]
then
/etc/init.d/php-fpm restart
> /data1/log/access.log
fi
sleep 10
done
测试脚本
#!/bin/bash
##by xingcheng
##2016/8/20
while :;
do
I=`awk '{print $6}' /tmp/access.log |grep 200 |head -1`
if [ $I -eq 200 ]
then
/etc/init.d/php-fpm restart
> /tmp/access.log
fi
sleep 10
done
##by xingcheng
##2016/8/20
while :;
do
I=`awk '{print $6}' /data1/log/access.log |grep 502 |head -1`
if [ $I -eq 502 ]
then
/etc/init.d/php-fpm restart
> /data1/log/access.log
fi
sleep 10
done
测试脚本
#!/bin/bash
##by xingcheng
##2016/8/20
while :;
do
I=`awk '{print $6}' /tmp/access.log |grep 200 |head -1`
if [ $I -eq 200 ]
then
/etc/init.d/php-fpm restart
> /tmp/access.log
fi
sleep 10
done
0
#使用两个echo是为了测试时报个信。这里检测发现5个502才重启,没有5次502才算正常不做重启。while :;do tail -n5 /tmp/access.log | grep 502 &> /dev/null if [ $? -ne 0 ];then echo "this php-fpm is ok" else echo "this php-fpm is error,we must restart" /etc/init.d/php-fpm restart &> /dev/null fi sleep 10done
0
#!/bin/bash
while :
do
n=`cat /data1/log/access.log |grep -c 502`
if [ $n -gt 0 ]
then
/etc/init.d/php-fpm restart
fi
sleep 10
done
while :
do
n=`cat /data1/log/access.log |grep -c 502`
if [ $n -gt 0 ]
then
/etc/init.d/php-fpm restart
fi
sleep 10
done
编辑回复