37.大数据之旅——网站流量统计项目

网站流量统计案例概述


背景说明
网站流量统计是改进网站服务的重要手段之一,通过获取用户在网站的行为,可以分析出哪些内容受到欢迎,哪些页面存在问题,从而使网站改进活动更具有针对性。

统计指标说明
常用的网站流量统计指标一般包括以下情况分析:

1)按在线情况分析
在线情况分析分别记录在线用户的活动信息,包括:来访时间、访客地域、来路页面、当前停留页面等,这些功能对企业实时掌握自身网站流量有很大的帮助。

2)按时段分析
时段分析提供网站任意时间内的流量变化情况.或者某一段时间到某一段时间的流量变化,比如小时段分布,日访问量分布,对于企业了解用户浏览网页的的时间段有一个很好的分析。

3)按来源分析
来源分析提供来路域名带来的来访次数、IP、独立访客、新访客、新访客浏览次数、站内总浏览次数等数据。这个数据可以直接让企业了解推广成效的来路,从而分析出那些网站投放的广告效果更明显。

本项目统计的指标说明
在这里插入图片描述

系统架构设计


在这里插入图片描述

数据的埋点和采集


概述
所谓埋点就是在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑,即通过数据埋点来采集数据,比如采集:访问(Visits),访客(Visitor),停留时间(Time On Site),页面查看(Page Views,又称为页面浏览)和跳出率(Bounce Rate,又可称为蹦失率)等等。

一个典型的数据平台,对于数据的处理,是由如下的5个步骤组成的:
在这里插入图片描述
其中,我们认为第一个步骤,也即数据埋点和采集是最基础的问题。数据采集是否丰富,采集的数据是否准确,采集是否及时,都直接影响整个数据平台的应用的效果。

埋点的两种方式:
第一种:自己公司研发在产品中注入埋点代码进行采集。将埋点代码比如写到一个js里,然后放到某个应用网站上。
第二种:使用第三方统计工具,如友盟、百度移动、魔方、App Annie、talking data等。

本项目的埋点实现
我们是通过js代码来实现埋点。编写特定的js脚本,然后嵌入到需要做日志分析的web页面上(实际是通过

日志数据采集模块说明


概述
日志收集的目的最终是把用户对目标网站的访问日志汇聚到HDFS文件系统中的特定目录,以便提供给下一步的数据清洗模块进行处理。要完成这一工作,需要分为如下几个步骤去做:
1)JS埋点
2)日志服务器搭建
3)日志收集

下面对上述四个步骤一一进行详细说明:

一、 JS埋点
我们需要收集某个网页的访问情况,通用的做法是在这个网页上嵌入一个JS脚本,这样当用户访问该页面时,页面上的JS脚本会在页面上动态加入一个标签,并且的src属性指向日志服务器下的一个透明图片的URL地址。

在该URL参数上会附带一些用户的访问信息(如被访问页面的URL、识别用户身份的cookie等),这样通过分析日志服务器(一般是nginx或apache)的access日志文件就能获取到这些信息。这个JS埋点的脚本可以自己编写来实现,代码片断如下:

js主函数代码:

function ar_main() {
   
 
//收集完日志 提交到的路径
var dest_path   = "http://localhost:8090/LogDemo/servlet/LogServlet?"; 
var expire_time = 30 * 60 * 1000;//会话超时时长
 
//处理uv
//--获取cookie ar_stat_uv的值
var uv_str = ar_get_cookie("ar_stat_uv");
var uv_id = "";
//--如果cookie ar_stat_uv的值为空
if (uv_str == ""){
   
//--为这个新uv配置id,为一个长度20的随机数字
uv_id = ar_get_random(20);
//--设置cookie ar_stat_uv 保存时间为10年
ar_set_cookie("ar_stat_uv", uv_id, 1);
}
//--如果cookie ar_stat_uv的值不为空
else{
   
//--获取uv_id
uv_id  = uv_str;
}
 
//处理ss
//--获取cookie ar_stat_ss
var ss_str = ar_get_cookie("ar_stat_ss"); 
var ss_id = "";  //sessin id
var ss_no = 0;   //session有效期内访问页面的次数
 
//--如果cookie中不存在ar_stat_ss 说明是一次新的会话
if (ss_str == ""){
   
//--随机生成长度为10的session id
ss_id = ar_get_random(10);
//--session有效期内页面访问次数为0
ss_no = 0;
//--拼接cookie ar_stat_ss 值 格式为 会话编号_会话期内访问次数_客户端时间_网站id
value = ss_id+"_"+ss_no+"_"+ar_get_stm();
//--设置cookie ar_stat_ss
ar_set_cookie("ar_stat_ss", value, 0); 
} 
//--如果cookie中存在ar_stat_ss
else {
    
//获取ss相关信息
var items = ss_str.split("_");
//--ss_id
var cookie_ss_id  = items[0];
//--ss_no
var cookie_ss_no  = parseInt(items[1]);
//--ss_stm
var cookie_ss_stm = items[2];
 
//如果当前时间-当前会话上一次访问页面的时间>30分钟,虽然cookie还存在,但是其实已经超时了!仍然需要重新生成cookie
if (ar_get_stm() - cookie_ss_stm > expire_time) {
    
//--重新生成会话id
ss_id = ar_get_random(10);
//--设置会话中的页面访问次数为0
ss_no = 0;
} 
//--如果会话没有超时
else{
   
//--会话id不变
ss_id = cookie_ss_id;
//--设置会话中的页面方位次数+1
ss_no = cookie_ss_no + 1;
}
 
//--重新拼接cookie ar_stat_ss的值 
value = ss_id+"_"+ss_no+"_"+ar_get_stm();
ar_set_cookie("ar_stat_ss", value, 0); 
}
 
//当前地址
var url = document.URL; 
url = ar_encode(String(url)); 
 
//当前资源名
var urlname = document.URL.substring(document.URL.lastIndexOf("/")+1);
urlname = ar_encode(String(urlname)); 
 
    //返回导航到当前网页的超链接所在网页的URL
var ref = document.referrer; 
ref = ar_encode(String(ref)); 
 
 
//网页标题
var title = document.title;
title = ar_encode(String(title)); 
 
//网页字符集
var charset = document.charset;
charset = ar_encode(String(charset)); 
 
//屏幕信息
var screen = ar_get_screen(); 
screen = ar_encode(String(screen)); 
 
//颜色信息
var color =ar_get_color(); 
color =ar_encode(String(color)); 
 
//语言信息
var language = ar_get_language(); 
language = ar_encode(
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值