您的位置:首页 > 运维架构 > Nginx

Nginx日志处理

2015-08-28 15:16 579 查看
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日志处理/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: