`

nginx之访问日志文件自动切割

阅读更多

一,需求背景

       生产环境中的nginx服务器,由于访问日志文件增长快速,这样access_log日志文件过大,会严重影响日志记录性能;同时为了方便对访问日志进行分析,需要对日志进行定时切割。定时切割的方式主要有:按月切割,按天切割,按小时切割等方案,具体切割方案可根据线上服务器访问量来定,一般为按天进行定时切割。

 

二,实现步骤

    手动操作步骤:

#重命名日志文件
 mv /usr/local/nginx/logs/access_log /usr/local/nginx/logs/access_log_20160625.log
#使用Nginx的信号控制USR1重新打开日志文件进行写入
 kill -USR1 Nginx主进程号
 或
 kill -USR1 'cat /usr/local/nginx/logs/nginx.pid'

   

   自动操作步骤:需要借助crontab完成

#步骤1:编辑需要定时执行的shell脚本(脚本需在每天的00:00执行)
  vi /usr/local/nginx/sbin/cut_nginx_log.sh
  脚本内容如下:
  #!/bin/bash
  #Nginx访问日志文件存放路径变量
  nginx_access_log_path="/usr/local/nginx/logs/"
  #定义脚本逻辑
   mkdir -p ${nginx_access_log_path}${date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
 mv ${nginx_access_log_path}access.log ${nginx_access_log_path}${date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
   kill -USR1 'cat /usr/local/nginx/log/nginx.pid'
  
#步骤2:配置crontab定时执行这个脚本
  crontab -e
  输入以下内容并保存:
  00 00 * * * /bin/bash  /usr/local/nginx/sbin/cut_nginx_log.sh

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics