您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# nginx 日志怎么定时切割
## 为什么需要日志切割
Nginx作为高性能的Web服务器,默认会将所有访问日志和错误日志写入单个文件(如`access.log`和`error.log`)。长期运行会导致:
1. **日志文件过大**:可能占用数十GB磁盘空间
2. **检索困难**:大文件难以用文本工具打开分析
3. **影响性能**:频繁写入大文件可能降低I/O效率
4. **维护不便**:无法按时间维度归档历史日志
日志切割(Log Rotation)通过定期分割、压缩和归档日志文件解决这些问题。
---
## 手动切割方案
### 1. 使用mv+reload基础方法
```bash
# 重命名当前日志文件
mv /var/log/nginx/access.log /var/log/nginx/access_$(date +%Y%m%d).log
# 发送USR1信号让Nginx重新打开日志文件
kill -USR1 $(cat /var/run/nginx.pid)
缺点:需要手动操作,不适合生产环境
Linux系统自带的logrotate是更专业的解决方案:
/var/log/nginx/*.log {
daily # 按天切割
missingok # 日志不存在时不报错
rotate 30 # 保留30个历史版本
compress # 使用gzip压缩
delaycompress # 延迟一天压缩
notifempty # 空文件不切割
sharedscripts # 所有日志处理完后执行脚本
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
dateext # 使用日期作为后缀
dateformat -%Y%m%d # 日期格式
}
参数 | 作用 |
---|---|
size 100M | 按大小切割 |
hourly | 每小时切割(需安装cronhourly) |
weekly | 按周切割 |
monthly | 按月切割 |
create 0640 www-data adm | 设置新日志文件权限 |
# 调试模式测试(不实际执行)
logrotate -d /etc/logrotate.d/nginx
# 强制立即运行
logrotate -vf /etc/logrotate.d/nginx
# 每天凌晨执行
0 0 * * * /usr/sbin/logrotate /etc/logrotate.d/nginx
创建/etc/systemd/system/nginx-logrotate.timer
:
[Unit]
Description=Daily rotation of Nginx logs
[Timer]
OnCalendar=daily
AccuracySec=1h
Persistent=true
[Install]
WantedBy=timers.target
服务单元/etc/systemd/system/nginx-logrotate.service
:
[Unit]
Description=Nginx log rotation
[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate /etc/logrotate.d/nginx
启用定时器:
systemctl enable --now nginx-logrotate.timer
/var/log/nginx/*.log {
hourly
rotate 24
dateext
dateformat -%Y%m%d%H
...
}
需确保/etc/cron.hourly/
有logrotate任务。
create 0640 www-data adm
olddir /var/log/nginx/archive/
prerotate
/usr/bin/nginx-log-analyser /var/log/nginx/access.log > /tmp/last_report
endscript
解决方法:
1. 确认postrotate脚本正确执行
2. 检查nginx进程用户有日志目录写入权限
3. 使用lsof | grep nginx
确认文件描述符是否释放
建议:
rotate 7
size 500M
# 在logrotate配置前添加
export TZ=Asia/Shanghai
delaycompress
避免高峰时段CPU占用Nginx日志切割最佳实践组合: 1. logrotate作为核心工具 2. crontab/systemd timer实现自动化 3. 合理的保留策略(时间+大小双重限制) 4. 完善的监控(日志增长报警)
通过合理配置,可以确保: ✓ 日志文件大小可控 ✓ 历史数据可追溯 ✓ 系统性能不受影响 ✓ 存储空间高效利用 “`
(全文约1300字)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。