Home > 工作记录 > 正文

【工作】实现Nginx每天自动切割日志功能

写在前面:

由于公司网站之前没有做过日志切割,造成Nginx日志文件不断增长达到了几百G,现在要监控访问日志,这么大的日志分析起来非常不方便,所以现在需要每天把Nginx日志文件切割,然后以时间命名备份起来,方法如下:

方法一:

写脚本放到定时任务中,每天零点把旧的日志移动到备份目录中,并对nginx进程发送USR1信号使其重新生成日志并写入数据,然后删除60天之前的备份。
 
创建备份目录,并编写脚本:
# mkdir -p /opt/nginx-1.9.3/logs/logs_bak
# vi /opt/nginx-1.9.3/sbin/cut_nginx_log.sh
 
#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path="/opt/nginx-1.9.3/logs/"
logs_bak_path="/opt/nginx-1.9.3/logs/logs_bak"
mkdir -p ${logs_bak_path}/$(date -d "yesterday" +"%Y-%m-%d")
mv ${logs_path}*.log ${logs_bak_path}/$(date -d "yesterday" +"%Y-%m-%d")/
kill -USR1 `cat /opt/nginx-1.9.3/logs/nginx.pid`
/bin/find $logs_bak_path -type d -mtime +60 -exec rm -rf {} \; > /dev/null 2>&1
 
修改脚本执行权限,并放到定时任务中: 
# chmod 755 /opt/nginx-1.9.3/sbin/cut_nginx_log.sh
# crontab -e
00 00 * * * sh /opt/nginx-1.9.3/sbin/cut_nginx_log.sh

方法二:

通过系统自带的logrotate服务来切割日志,将旧的日志重命名打包备份到指定目录中
 
创建备份目录,编写Nginx切割的配置文件:
# mkdir -p /opt/nginx-1.9.3/logs/logs_bak 
 
# vi /etc/logrotate.d/nginx 
 
#/opt/nginx-1.9.3/logs/下以.log后缀的文件都会被切割
/opt/nginx-1.9.3/logs/*.log {
#指定转储周期为每天
daily
#指定日志文件删除之前转储的次数,0指没有备份,60指保留60个备份,按天备份的话就是保留两个月的备份
rotate 60
#如果指定的目录不存在,logrotate会报错,此项用来关闭报错      
missingok 
#在文件末尾添加当前日期     
dateext
#指通过gzip压缩转储以后的日志        
compress
#转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统    
olddir /opt/nginx-1.9.3/logs/logs_bak/
#表示postrotate脚本在压缩了日志之后只执行一次  
sharedscripts 
#在转储以后需要执行的命令(在压缩旧日志之前),postrotate/endscript必须成对出现 
postrotate     
  if [ -f /opt/nginx-1.9.3/logs/nginx.pid ]; then
     kill -USR1 `cat /opt/nginx-1.9.3/logs/nginx.pid`
  fi
endscript
}
 
测试配置是否有问题,如果不报错则写入定时任务中: 
# /usr/sbin/logrotate -f /etc/logrotate.d/nginx 
# crontab -e
00 00 * * *  /usr/sbin/logrotate -f /etc/logrotate.d/nginx

总结:

以上两种方法都可以实现日志切割,方法一适合每天访问量不大,需要实时分析每天日志内容(因为没有打包,且备份目录按天创建),方法二适合只做备份,需要时候再找到相应日志解压查看,当然两种方法都可以设置成压缩或者不压缩日志文件,可以根据自己需要改动参数即可。
上一篇:【基础】Linux 开启telnet远程登录服务
下一篇:【理论】Nginx连接数、请求数限制应用详解
【理论】Nginx的内置变量和作用

【理论】Nginx的内置变量和作用

【理论】Nginx “upstream”模块详解和各负载均衡模式对比测试

【理论】Nginx “upstream”模块详解和各负载均衡模式对比测试

【工作】解决Nginx访问日志中报favicon.ico文件404错误

【工作】解决Nginx访问日志中报favicon.ico文件404错误

【理论】HTTP状态码大全

【理论】HTTP状态码大全

【工作】Nginx限制IP并发连接数和请求数的研究

【工作】Nginx限制IP并发连接数和请求数的研究

【理论】Nginx连接数、请求数限制应用详解

【理论】Nginx连接数、请求数限制应用详解

【案例】京东Nginx平台化实践

【案例】京东Nginx平台化实践

发表评论

昵称 *
邮箱 *
网址

沙发空闲中,快来抢!