[Linux运维 -- webserver]nginx的日志轮转
2015-08-24 19:57
555 查看
nginx的日志轮转
今天突然发现nginx所在的机器出现了问题,报警磁盘空间快满了。 立马看看。$df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 50G 50G 50G 100% / /dev/sda1 247M 23M 212M 10% /boot tmpfs 48G 368K 48G 1% /dev/shm /dev/sda5 1.1T 491M 1.1T 1% /home
发现根目录满了,查询一下是哪个文件比较大,耗空间
$sudo find / -size +512M | xargs ls -lh -rw-r--r-- 1 root root 3.5G Aug 8 15:16 /usr/local/openresty/nginx/logs/access.log -rw-r--r-- 1 root root 3.0G Aug 8 15:16 /usr/local/openresty/nginx/logs/error.log
发现nginx的请求和错误日志文件已经非常大了。
[xxxxx:/usr/local/openresty/nginx/logs] $ls access.log error.log nginx.pid
到日志目录下,发现只有一个文件,原来nginx的日志文件没有做轮转导致的。
使用linux自带的logrotate日志轮询工具来对nginx的log做处理。
具体的格式如下:
$ cat /etc/logrotate.d/nginx /usr/local/openresty/nginx/logs/*.log { daily missingok rotate 20 notifempty sharedscripts postrotate sudo kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid` > /dev/null endscript }
上面各行的意思为:
/usr/local/openresty/nginx/logs/*.log 为nginx的日志路径
daily 每天轮转一次
missingok 即使日志不存在也继续执行
rotate 20 保留20个备份
notifempty 如果空文件的话不转存
sharedscripts 在所有的日志文件都轮转完毕后统一执行一次脚本。如果没有配置这条指令,那么每个日志文件轮转完毕后都会执行一次脚本。
postrotate 轮转结束的动作
endscript 用于结束postrotate部分的脚本
脚本部分
sudo kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid` > /dev/null
让nginx进程平滑加载
参考:
(1) http://os.51cto.com/art/200912/167478_all.htm(2) http://huoding.com/2013/04/21/246
(3) http://blog.csdn.net/superhosts/article/details/8741227
相关文章推荐
- Nginx文档
- linux安装部署nginx+uwsgi+uliweb
- Nginx错误页面优雅显示的配置
- Nginx出现413 Request Entity Too Large错误解决方法
- Nginx 服务器安装及配置文件详解
- 解决nginx负载均衡的session共享问题
- Nginx Rewrite规则
- Nginx Location 语法,与简单配置
- linux下安装nginx-1.8.0
- 4.3.6、基于Nginx身份验证代理
- Apache 和 nginx 之间的配置
- Nginx 配置 gzip 压缩
- 通过awk等命令、按日期查看nginx访问IP数量
- Nginx 动态生成缩略图
- linux nginx service nginx restart [fail]
- Nginx日志分析
- 基于 Nginx XSendfile + SpringMVC 进行文件下载
- 基于 Nginx XSendfile + SpringMVC 进行文件下载
- nginx 实现4层负责均衡
- nginx二级域名配置到文件夹