nginx訪問日誌切割腳本


1、說明

隨着時間的增加,nginx 的訪問日誌會越來越大,下圖是新部署的線上 zabbix 監控網站運行了十幾天左右產生的訪問日誌達到213M。

wKioL1hJDW2AYqn8AAA0SQ0ucqY181.png


所以必須進行日誌分割,要求如下:

1、每天的日誌單獨生成一個文件

2、保留30天的訪問日誌


 

2、編寫腳本

vim /usr/local/nginx/logs/nginx_log_rotate.sh

#! /bin/bash

 

logs_path="/usr/local/nginx/logs/"

log_name="access.log"

pid_path="/usr/local/nginx/logs/nginx.pid"

 

#日誌文件集中存放的路徑

[ -d /usr/local/nginx/logs/access_log ] || mkdir /usr/local/nginx/logs/access_log

access_logs_path="/usr/local/nginx/logs/access_log/"

 

#移動日誌

mv ${logs_path}${log_name} ${access_logs_path}$(date --date="yesterday"+"%Y-%m-%d")_${log_name}

 

#生成新的access.log文件

kill -USR1 `cat ${pid_path}`

 

#刪除一個月之前的日誌

cd ${access_logs_path}

find . -ctime +30 -name "*access.log" |xargs rm -f

exit 0

腳本增加可執行權限

chmod a+x /usr/local/nginx/logs/nginx_log_rotate.sh

 

3、加入計劃任務

每天凌晨運行腳本

crontab -e

00 00 * * * /usr/local/nginx/logs/nginx_log_rotate.sh

重啓crond服務

service crond restart



運行腳本會生成 access_log 文件夾,下圖是到今天爲止的所有日誌

wKioL1hJEAqSE7H6AABooLD1hZY944.png




      本文轉自M四月天 51CTO博客,原文鏈接:http://blog.51cto.com/msiyuetian/1880769,如需轉載請自行聯繫原作者