背景
公司是做视频服务器的,为了统计每个视频的点击率来做热播的排行榜,于是采用了从nginx的访问日志来着手,并且有Cookid来做唯一值,防止重复的访问。
一、获取Cookid
二、nginx日志截取
三、nginx的日志导入
一、获取Cookid
二、nginx日志截取
感谢群友的帮助:雪落纷飞-1009556020
#!/bin/bash file=/usr/local/nginx/logs/2014/06/access_20140612.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 "\""$0"\""}' > ${dir}/visitdate.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 } if [ -f $file ];then if [ -d $dir ];then fenxi else mkdir $dir fenxi fi else echo "sorry! the directory "/usr/local/nginx/logs/access.log" is not exsit" fi #截取后的日志文件如下 [root@AY140514131444517dd8Z ng_mongodb]# ll total 1612 -rw-r--r-- 1 root root 42528 Jun 17 18:18 appKey.log -rw-r--r-- 1 root root 330977 Jun 17 18:18 browsertype.log -rw-r--r-- 1 root root 111615 Jun 17 18:18 cookieId.log -rw-r--r-- 1 root root 58954 Jun 17 18:18 ip.log -rw-r--r-- 1 root root 46791 Jun 17 18:18 os.log -rw-r--r-- 1 root root 121244 Jun 17 18:18 referer.log -rw-r--r-- 1 root root 804258 Jun 17 18:18 test1.dat -rw-r--r-- 1 root root 10275 Jun 17 18:18 videoId.log -rw-r--r-- 1 root root 81512 Jun 17 18:18 visitdate.log #然后把以上八个文件汇总成一个文件并用特殊符号分开 注意:说到这里,我得感谢 小武的帮忙 paste命令 [root@AY140514131444517dd8Z ~]# man paste 格式: paste -d -s file1 file2 参数 -d:指定不同于空格或tab键的域分隔符。例如用@分隔域,使用- d @ -s:将每个文件合并成行而不是按行粘贴 paste的用法:http://os.chinaunix.net/a2008/0921/985/000000985401.shtml #合并到一个文件中并用逗号隔开 [root@AY140514131444517dd8Z ~]# paste -d , browsertype.log cookieId.log appKey.log ip.log os.log referer.log videoId.log visitdate.log > test1.dat
三、nginx的日志导入MongoDB数据库中
#导入到mongodb数据库中 [root@AY140514131444517dd8Z ~]# mongoimport -d 'uda' -c 'dd2' -f browsertype,cookieId,appKey,ip,os,referer,videoId,visitdate --ignoreBlanks --type csv --file=test1.dat --host 192.168.0.100 -u sa -p 123root
查看导入效果
至此。实战完成
转载于:https://blog.51cto.com/13260071987/1427440