Nginx日志处理

来源:互联网 发布:唐门炮哥脸型数据 编辑:程序博客网 时间:2024/06/06 17:42

nginx日志切割一般的做法是:系统设定每天00:00执行脚本,mv后重新打开日志文件。但在切割后的日志中,除了昨天的日志外,还有少量的当天的日志,例如,0点之前是10号,那么切割后会有少量11号的日志,因为执行mv是需要时间的,即使是很短,期间会有少量日志写进去。

下面是两个nginx日志处理脚本:
1、每日凌晨日志分割,生成前天日志文件 ,rsync传送到日志服务器待分析。
2、日志服务器合并各站台日志,排序分离,生成按时间排序的前天、当天日志文件 。
3、web机保留一天日志,日志服务器保留合并、排序后的两天日志文件。

普通的两个脚本(甚至没有考虑性能),可贵之处在于经过自己学习shell,按照需求编写实现的。

nginx_log.sh

# Ip Address
IP_ADDRESS=`/sbin/ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
mv /usr/local/nginx/logs/access.log ${LOG_PATH}/access_${IP_ADDRESS}_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

nginx_log_server.sh

sort -m -t " " -k 3 -o $LOG_PATH/$LOG_NAME $LOG_PATH/access_*_$(date -d "1 days ago" +"%Y%m%d").log
REGEX="\[$(date -d "0 days ago" +"%d\/%b\/%Y")"
sed -n "/$REGEX/p" $LOG_PATH/$LOG_NAME > ${LOG_PATH}/access_crontab_$(date -d "0 days ago" +"%Y%m%d").log
sed -i "/$REGEX/d" $LOG_PATH/$LOG_NAME

完整代码下载:

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2012年资料/2月/10日/Nginx日志处理/

0 0
原创粉丝点击