天天看點

nginx通路日志切割腳本

1、說明

随着時間的增加,nginx 的通路日志會越來越大,下圖是新部署的線上 zabbix 監控網站運作了十幾天左右産生的通路日志達到213M。

<a href="http://s5.51cto.com/wyfs02/M00/8B/49/wKioL1hJDW2AYqn8AAA0SQ0ucqY181.png" target="_blank"></a>

是以必須進行日志分割,要求如下:

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

每天淩晨運作腳本

crontab -e

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

重新開機crond服務

service crond restart

運作腳本會生成 access_log 檔案夾,下圖是到今天為止的所有日志

<a href="http://s5.51cto.com/wyfs02/M02/8B/49/wKioL1hJEAqSE7H6AABooLD1hZY944.png" target="_blank"></a>

      本文轉自M四月天 51CTO部落格,原文連結:http://blog.51cto.com/msiyuetian/1880769,如需轉載請自行聯系原作者

繼續閱讀