高效运维小技巧:Nginx 按天切割日志,查错、分析效率翻倍
|
admin
2025年9月7日 23:22
本文热度 201
|
nginx按天切割,有两种方法。一种是用nginx自带的map进行正则匹配,另一种是shell脚本每天进行mv移动日志,不过这种需要kill nginx服务,怕有起不来的风险,所以不采用。
配置步骤:
http {
open_log_file_cache max=100;
map $time_iso8601 $logdate {
'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
default 'date-not-found';
}
access_log logs/access-$logdate.log ;
}
检查配置是否正确 执行 /usr/local/nginx/sbin/nginx -t
重启nginx
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
.sh脚本
nginx.sh restart
访问nginx,观察日志是否成功切割。
设置cron
定时任务删除180天的日志记录
#!/bin/bash
LOG_PATH="/data/nginx/logs"
find "$LOG_PATH" -name "access-*" -type f -mtime +180 -delete
mkdir -p /usr/local/tiedan/bin
touch /usr/local/tiedan/bin/dellog.sh && chmod +x /usr/local/nomax/bin/dellog.sh
tee -a /usr/local/tiedan/bin/dellog.sh << 'EOF'
LOG_PATH="/data/nginx/logs"
find "$LOG_PATH" -name "access-*" -type f -mtime +180 -delete
EOF
cat /usr/local/tiedan/bin/dellog.sh
把这个脚本加入到定时任务cron
crontab -e
,每月一号凌晨三点执行
0 3 1 * * /usr/local/nomax/bin/dellog.sh
cat /dev/null > ./access_2025.log
该文章在 2025/9/8 9:04:14 编辑过