为了解决这个问题,我们编写了一个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 作者:月影鹏鹏