实战7 nginx访问日志插入到mongodb数据库

续实战6!更新中......

nginx日志切割脚本

#!/bin/bash
# This script run at 00:00
logs_path="/usr/local/nginx/logs/"
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m"+"%d")/
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m"+"%d")/access_$(date -d "yesterday" +"%Y%m%d%H%M").log
cat ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m"+"%d")/access_$(date -d "yesterday" +"%Y%m%d%H%M").log > ${logs_path}/Allentuns_insert_mongodb/access_1.log
/usr/local/nginx/sbin/nginx -s reload
file=${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m"+"%d")/access_$(date -d "yesterday" +"%Y%m%d%H%M").log
dir=/usr/local/nginx/logs/ng_mongodb
##################
#function fenxi () {
#cat $file | awk -F "uid=" ‘{print $2}‘ | awk ‘{print $1}‘ | grep -v "^$" | awk ‘{print "\""$0"\""}‘ > ${dir}/cookieId.log
#cat $file | awk ‘{print $4}‘ | awk ‘{print "\""$0"\""}‘ >  ${dir}/ip.log
#cat $file | awk ‘{print $1}‘| awk ‘{print "\""$0"\""}‘ > ${dir}/appKey.log
#cat $file | awk ‘{print $2}‘ | awk -F "[" ‘{print $2}‘| awk ‘{print "ISODate\""$0"\""}‘ > ${dir}/visitdate.log
#cat $file | awk ‘{print $2}‘ | awk -F "[" ‘{print $2}‘| awk ‘{print "ISODate\""$0"\""}‘ > /usr/local/nginx/logs/rmdir/visitdate1.log
#cat $file | awk -F "\"" ‘{print $6}‘| awk ‘{print "\""$0"\""}‘ >  ${dir}/browsertype.log
#cat $file | awk -F "\"" ‘{print $4}‘| awk ‘{print "\""$0"\""}‘ > ${dir}/referer.log
#cat $file | awk -F "\"" ‘{print $6}‘ |awk ‘{print $1}‘| awk ‘{print "\""$0"\""}‘> ${dir}/os.log
#cat $file | awk -F "\"" ‘{print $2}‘ | awk -F "=" ‘{print $2}‘|awk -F "&" ‘{print $1}‘|awk ‘{print $1}‘ >${dir}/videoId.log
#}        
#cd /usr/local/nginx/logs/ng_mongodb
#/usr/bin/paste -d , browsertype.log cookieId.log appKey.log ip.log os.log referer.log videoId.log visitdate.log > test1.dat
#/usr/local/mongodb/mongodb-linux-x86_64-2.6.1/bin/mongoimport -d ‘uba‘ -c ‘user.visit.data‘ -f browsertype,cookieId,appKey,ip,os,referer,videoId,visitdate --ignoreBlanks --type csv --file=test1.dat --host 115.29.2.223 -u sa -p ‘123root‘
mv /usr/local/nginx/logs/ng_mongodb/* /usr/local/nginx/logs/rmdir
rm -rf /usr/local/nginx/logs/rmdir/*

批量插入数据库脚本

#!/bin/bash
###郑彦生###
##time 2014-07-10
access_dir="/usr/local/nginx/logs/Allentuns_insert_mongodb"
cat ${access_dir}/access_1.log | while read line;
do
cookieId=`echo $line |awk -F "uid=" ‘{print $2}‘ | awk ‘{print $1}‘ | grep -v "^$"`
ip=`echo $line | awk ‘{print $3}‘`
appKey=`echo $line | awk ‘{print $1}‘`
visidate=`echo $line | awk ‘{print $2}‘ | awk -F "[" ‘{print $2}‘`
browsertype=`echo $line | awk -F "\"" ‘{print $6}‘`
refer=`echo $line | awk -F "\"" ‘{print $4}‘`
os=`echo $line | awk -F "\"" ‘{print $6}‘ |awk ‘{print $1}‘`
videoID=`echo $line | awk -F "\"" ‘{print $2}‘ | awk -F "/?id=" ‘{print $2}‘|awk -F "&" ‘{print $1}‘|awk ‘{print $1}‘`
#插入到正表中
sql="db.user.visit.data.insert({browsertype:‘$browsertype‘,cookieId:‘$cookieId‘,appKey:‘$appKey‘,ip:‘"$ip"‘,os:‘"$os"‘,referer:‘"$refer"‘,videoId:parseInt(‘$videoID‘),visitdate:ISODate(‘$visidate‘)})"
echo "$sql" >> ${access_dir}/nginx_log_mongodb_1.txt
done
cat ${access_dir}/nginx_log_mongodb_1.txt | mongo 127.0.0.1:27017/uba -u sa -p "123root"
mv ${access_dir}/nginx_log_mongodb_1.txt ${access_dir}/nginx_log_mongodb_mv_1.txt

3、定时任务

[root@AY140514131444517dd8Z ~]# crontab -l
*/5 * * * * /bin/bash  /usr/local/nginx/logs/nginx_log.sh 
*/6 * * * * /bin/bash  /usr/local/nginx/logs/Allentuns_insert_mongodb/a.sh

本文出自 “郑彦生” 博客,请务必保留此出处http://467754239.blog.51cto.com/4878013/1440291

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。