BI之数据驱动系统
BI:俗称智网,说白了就是一个报表系统,今天我们来看一下这个系统有关流量的数据流向。
疑问一:用户访问日志流水,都给BI传了什么信息?
解答:我们访问易迅网的时候,每一个页面请求都会访问cgi程序(stat.fcg)
这个cgi放在(10.217.148.11、10.217.148.125、10.217.148.194)这三台机器的 /data/clickflow/stat_cgi_ngx/bin/目录下执行
cgi请求url格式如下:
http://stat.51buy.com/stat.fcg?type=1&uid=0&pageid=1000&plevel=1&tag=&url=http%3A//www.yixun.com/&refer=&guid=139019276D8F6A00&whid=1&resolution=1440*900&color=24&pid=0&referid=0&ext=&uin=|||&area=S0001_1&vk=23888012509552196
疑问二:三台CGI机器接收到数据后,是如何保存的呢?
解答:日志流水信息会保存在(10.217.148.11、10.217.148.125、10.217.148.194)这三台机器的 /data/clickflow/data/ 目录下
日志文件名格式如下:
20140905124
我们可以打开这个文件的一部分看一下:
2014-09-05 12:47:57 时间
1409892477 时间戳
1 记录类型 1:页面跳转 2:点击(不带来pv,uv,订单)
187236982 用户id 未登录:0
0 当前页是加入购物车或者商详,则取当前商品id,,否则:0
1 分站id
13815EBC212DD300 Guid 用户唯一表示串,进网站时生成
600 Pageid 当前页面id
3 Page_level 当前页面level
http%3A//service.yixun.com/ 当前页面url,不包含?及参数
0 ReferPageid 页面来源页面id,没有则0
http://base.yixun.com/orderdetail-1085821470.html Refer 页面来源url,没有则为空
120.195.5.185 Clientip 客户端ip
1280*800 客户端分辨率
32 页面颜色
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 187236982|21334170|187236982| S0001_1 47979510565854323 客户端agent参数
2014-09-05 12:47:57 1409892477 1 0 0 2001 139062E4A9F7A900 9443027 2 http%3A//event.yixun.com/event/94437dc8.html 10386017 http://event.yixun.com/event/10386f45c.html 219.232.115.207 1440*900 32 Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0; QQBrowser/7.7.26717.400) like Gecko ||| S0001_1 58480095723444979
2014-09-05 12:47:57 1409892477 1 0 0 1 138E8E3556426200 1000 1 http%3A//www.yixun.com/ 0 114.229.26.240 1920*1080 32 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 ||| S0001_1 49367051293201024
2014-09-05 12:47:57 1409892477 2 31796873 0 1992 bf8ed96b-2b90-272a-1220-4fcfa1a3d7ba 3.250010000 2500 3 http%3A%2F%2Fm.51buy.com%2Ft%2Forder%2Fdetail.html 2500 http%3A%2F%2Fm.51buy.com%2Ft%2Fdetail%2Findex.html 119.134.113.219 360*519 Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2A Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 XiaoMi/MiuiBrowser/2.0.1
疑问三:75机器是如何从这三台CGI机器抓取日志流水和合并,又保存在什么地方?
打开75机器kamilzhou用户下的cron可以发现
1,11,21,31,41,51 * * * * /data/clickflow/shell/getLogFile.sh >> /data/clickflow/logs/getLogFile.log 2>&1 &
getLogFile文件内容如下:
#!/bin/bash #获取当前脚本所在路径 currdir=$(cd "$(dirname "$0")"; pwd) #进入脚本所在目录 cd $currdir echo $currdir #获取数据文件名 logFileName=`date +%Y%m%d%H -d"-10 minutes"` min=`date +%M -d"-10 minutes"` min=`expr $min / 10` logFileName=$logFileName$min #判断如果文件已经存在,则直接返回 if [ -f ../data_today/"row_data_"$logFileName ] then line=`cat ../data_today/"row_data_"$logFileName | wc -l ` if [ $line -gt 0 ] then exit fi fi #echo $logFileName #logFileName='20120419114' ## 从第一个机器拉取文件 /usr/bin/expect ./scp.expect 10.217.148.11 /data/clickflow/data/$logFileName ../data_today kamilzhou Zhou2013@tencent mv ../data_today/$logFileName ../data_today/$logFileName"_1" ## 从第二个机器拉取文件 /usr/bin/expect ./scp.expect 10.217.148.125 /data/clickflow/data/$logFileName ../data_today kamilzhou Zhou2013@tencent mv ../data_today/$logFileName ../data_today/$logFileName"_2" /usr/bin/expect ./scp.expect 10.217.148.194 /data/clickflow/data/$logFileName ../data_today kamilzhou Zhou2013@tencent #合并两份文件 cat ../data_today/$logFileName"_1" >> ../data_today/$logFileName cat ../data_today/$logFileName"_2" >> ../data_today/$logFileName sort -t $'\t' +1 -2 -n -o ../data_today/$logFileName ../data_today/$logFileName mv ../data_today/$logFileName ../data_today/"row_data_"$logFileName #删除临时文件 rm ../data_today/$logFileName"_1" rm ../data_today/$logFileName"_2"
得到结果:75使用scp从(10.217.148.11、10.217.148.125、10.217.148.194)这三台机器 拉取日志,并保存到 /data/clickflow/data_today文件夹下面。