假设服务器环境为 lnmp,近期访问经常出现 502 现象,且 502 错误在重启 php-fpm 服务后消失,因 此需要编写监控脚本,一旦出现 502,则自动重启 php-fpm 服务。

    1. #场景:
    2. #1.访问日志文件的路径:/data/log/access.log
    3. #2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重
    4. php-fpm服务
    5. #3.重启命令为:/etc/init.d/php-fpm restart
    6. #!/bin/bash
    7. ###########################################################
    8. #监测Nginx访问日志502情况,并做相应动作
    9. ###########################################################
    10. log=/data/log/access.log
    11. N=30 #设定阈值
    12. while :do
    13. #查看访问日志的最新300条,并统计502的次数
    14. err=`tail -n 300 $log |grep -c '502" '`
    15. if [ $err -ge $N ]
    16. then
    17. /etc/init.d/php-fpm restart 2> /dev/null
    18. #设定60s延迟防止脚本bug导致无限重启php-fpm服务
    19. sleep 60
    20. fi
    21. sleep 10
    22. done