为了解决这个问题,我们编写了一个Bash脚本,它将实时监控Nginx的访问日志,并在检测到过多的502错误时采取行动。以下是脚本的详细解释:

#!/bin/bash  

# 定义日志文件路径  
log=/data/log/access.log  

# 设定阈值,即当502错误的次数达到或超过这个值时,将触发重启动作  
N=30  

# 使用无限循环来持续监控  
while :  
do  
  # 使用tail命令查看访问日志的最新300条记录,并使用grep命令统计其中包含'502"'的行数  
  err=`tail -n 300 $log | grep -c '502"'`  

  # 如果502错误的次数达到或超过阈值  
  if [ $err -ge $N ]  
  then  
    # 重启PHP-FPM服务,并将标准错误输出重定向到/dev/null,以避免不必要的日志信息  
    /etc/init.d/php-fpm restart 2> /dev/null  

    # 为了防止脚本bug导致无限重启PHP-FPM服务,设定60秒的延迟  
    sleep 60  
  fi  

  # 每次循环结束后,脚本将休眠10秒,然后再次检查日志  
  sleep 10  
done
文档更新时间: 2024-05-07 08:34   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室