网站流量日志数据分析系统知识详解
1. 点击流数据模型
1.1 点击流概念
点击流(Click Stream)是指用户在网站上持续访问的轨迹。可以通过对网站日志的分析可以获得用户的点击流数据。
1.2 点击流模型生成
点击流数据在具体操作上是由散点状的点击日志数据梳理所得。点击数据在数据建模时存在两张模型表 Pageviews
和 visits
,例如:
原始访问日志表
时间戳 | IP | URL | Referal | 响应码 | … |
---|---|---|---|---|---|
20120101 12:31:12 | 101.0.0.1 | /a/… | somesite.com | 200 | |
20120101 12:32:12 | 201.0.0.1 | /a/… | - | 200 | |
20120101 12:33:12 | 101.0.0.1 | /b/… | baidu.com | 200 | |
20120101 15:31:12 | 201.0.0.1 | /c/… | google.com | 304 | |
20120101 15:34:12 | 101.0.0.1 | /d/… | /c/… | 404 |
页面点击流模型 Pageviews 表
session | IP | 时间 | 访问URL | 停留时间 | step |
---|---|---|---|---|---|
s1 | 101.0.0.1 | 20120101 12:31:12 | /a/… | 120 | 1 |
s1 | 101.0.0.1 | 20120101 12:33:12 | /b/… | 60 | 2 |
s2 | 101.0.0.1 | 20120101 15:32:12 | /c/… | 60 | 3 |
s1 | 201.0.0.1 | 20120101 15:32:12 | /a/… | 60 | 1 |
s2 | 201.0.0.1 | 20120101 15:34:12 | /c/… | 60 | 2 |
点击流模型 Visits 表(按 session 聚集的页面访问信息)
session | 起始时间 | 结束时间 | 进入页面 | 离开页面 | 访问页数 |
---|---|---|---|---|---|
s1 | 20120101 12:31:12 | 20120101 12:31:12 | /a/… | /a/… | 1 |
s1 | 20120101 12:33:12 | 20120101 12:36:12 | /b/… | /e/… | 2 |
s2 | 20120101 15:34:12 | 20120101 15:38:12 | /d/… | /c/… | 2 |
s1 | 20120101 12:32:12 | 20120101 12:32:12 | /a/… | /c/… | 1 |
s2 | 20120101 15:31:12 | 20120101 12:33:12 | /c/… | /e/… | 3 |
具体图解如下 :
详解 :
散点状 : 站在网站角度看待访问行为
点击流模型 : 站在用户角度看待访问行为
在网站行为分析中 会话session—> 业务指定的概念
假设我们将前后两条记录的时间差在30分钟以内就属于同一次会话(session)
在一次会话中 , 用户可能有多条访问操作记录 , 如果把这些记录按照时间先后竖立起来就变成了一条线 , 叫做点击流
业务模型 : 有些概念以及数据需要业务提供支持 , 否则计算不出来
原始数据形式
192.168.1.100 8:30:30 a.html 192.168.1.100 8:30:35 c.html 192.168.1.200 8:31:35 a.html 192.168.1.100 8:31:40 d.html 192.168.1.200 8:32:00 f.html 192.168.1.100 18:30:35 w.html 192.168.1.100 18:31:30 f.html
点击流之PageViews(数据是由原始访问日志传递)
注重于用户访问中每次会话的识别 , 以及每次会话内步骤数以及每一步的停留时间
- 根据IP把相同的用户访问日志聚在一起==> mr <ip,webLogBean>
数据变为
192.168.1.100 8:30:30 a.html |200 8:31:35 a.html 192.168.1.100 8:30:35 c.html |200 8:32:00 f.html 192.168.1.100 8:31:40 d.html | 192.168.1.100 18:30:35 w.html | 192.168.1.100 18:31:30 f.html |
分成了两组
- 把该用户的所有记录按照时间正序排序(以100那组为例)
192.168.1.100 8:30:30 a.html || 192.168.1.100 8:30:35 c.html ||访问时间 192.168.1.100 8:31:40 d.html || 192.168.1.100 18:30:35 w.html || 192.168.1.100 18:31:30 f.html \/
- 判断前后两条记录的时间差是否为30分钟以内
会话 ip time url step stay ------------------------------------------------------- | 192.168.1.100 | 8:30:30 | a.html | 1 | 5s session1 | 192.168.1.100 | 8:30:35 | c.html | 2 | 65s | 192.168.1.100 | 8:31:40 | d.html | 3 | 60s ------------------------------------------------------- session2 | 192.168.1.100 | 18:30:35 | w.html | 1 | 55s | 192.168.1.100 | 18:31:30 | f.html | 2 | 60s
- 每次session按照时间排序 , 一次打步骤号 , 如下图
点击流之Visits(数据来源于Pageviews)
注重于用户每次session内
起始``结束
情况比如 : 什么时间进来的 , 什么页面进来的 , 什么时间出去的 , 什么页面出去的
从Pageviews获取表结构
- 根据sessionid进行分组
在每个session内按照时间排序或步骤号排序
session1 | 192.168.1.100 | 8:30:30 | a.html | 1 | 5s
session1 | 192.168.1.100 | 8:30:35 | c.html | 2 | 35s
session1 | 192.168.1.100 | 8:31:10 | d.html | 3 | 60s
- 提取第一步和最后一步的信息
session ip intime inpage outtime outpage totalpage session1 | 192.168.1.100 | 8:30:30 | a.html |8:31:10 | d.html | 3 session2 | 192.168.1.100 | 18:30:35| w.html |18:31:10| f.html | 2
2. 如何进行网站流量分析
流量分析整体来说是一个内涵非常丰富的体系,整体过程是一个金字塔结构:
金字塔的顶部是网站的目标:投资回报率(ROI)。
2.1 网站流量分析模型举例
网站流量质量分析(流量分析)
流量并不是越多越好,应该更加看重流量的质量
由上图可以看出网站拥有者想要的理想情况就是右上方
网站干流量多维度细分(流量分析)
细分是指通过不同维度对指标进行分割
网站内容及导航分析(内容分析)
页面一般划分为三个类别 :
导航页、功能页、内容页
网站运营者不希望看到的下列行为 :
第一个问题 :访问者从导航页(首页)还没有看到内容页面之前就从导航页离开网站 , 需要分析导航页造成访问者中途离开的原因
第二个问题 : 访问者从导航页进入内容页后 , 又返回到导航页 , 说明需要分析内容页的最初设计 , 并考虑内容页提供交叉的信息推荐.
网站转化以及漏斗分析(转化分析)
访问者的流失和迷失都会造成流量的流失
2.2 流量分析常见分类
指标是网站分析的基础,用来记录和衡量访问者在网站自的各种行为。
骨灰级指标
- IP
- PageView浏览量
- Unique PageView
基础级指标
- 访问次数
- 网站停留时间
- 页面停留时间
复合级指标
- 人均浏览页数
- 跳出率
- 退出率
基础分析(PV , IP , UV)
- 趋势分析
- 对比分析
- 当前在线
- 访问明细
来源分析
- 来源分类
- 搜索引擎
- 搜索词
- 最近7日的访客搜索记录
- 来路域名
- 来路页面
- 来源升降榜
受访分析
- 受访域名
- 受访页面
- 受访升降榜
- 热点图
- 用户视点
- 访问轨迹
访客分析
- 地区运营商
- 终端详情
- 新老访客
- 忠诚度
- 活跃度
转换路径分析
- 转换定义
- 目标示例
- 路径分析
- 转换类型
- 页面
- 事件
常见分析分类图示
3. 整体技术流程及架构
3.1 数据处理流程
网站流量日志数据分析是一个纯粹的数据分析项目,其整体流程基本上就是依据数据的处理流程进行。分为以下几大步 :
-
数据采集
- 从无到有的过程 , 比如js埋点采集用户行为 服务器自带日志功能
- 数据搬运传输的过程 比如flume采集
-
埋点采集
- 何为埋点 : 在页面上预先置入一段js代码 ,当用户某种行为触发满足 , js执行搜集数据
- 埋点什么 : 埋点js采集代码
- 在哪埋点 : 在需要采集数据的页面埋点
- 为了性能做了哪些优化 :
1、采集数据js和页面解耦合--->如何加载到页面上? =====> src直接引用 js匿名函数自调用 2、单独部署服务器用于采集数据的接收---->跨域 ====> 伪造请求图片 携带参数传输采集数据
-
flume采集
flume没有分布式集群概念 多台flume叫做级联
fluem--->agent
source--->对接数据源
channel-->内部缓存数据
sink----->下沉地 目的地
数据在flume中是以event存在的。
-
数据预处理
在采集到数据之后 , 根据分析需求清晰过滤出符合分析的数据格式
在离线中 , 通常使用mr程序来进行
- mr本质还是java程序 , 可以无缝调用java很多内置开源的工具类
- mr可以分布式运行 , 数据越大 , mr越有效果
此外 , 任何一种语言或者技术 , 只要满足可以接受数据并且处理输出数据 , 都可以用于数据的预处理
比如 : shell python php等等
-
预处理编程技巧
- 如果涉及多属性传递 , 优先使用javaBean , 注意实现hadoop的序列机制Writable
- 有意识的把javaBean的toString方法使用’\001’进行分割 , 便于后续入库分析
-
数据入库
-
数据分析
-
数据展现
- 将分析的数据进行可视化展示 , 市面上有许多开源的可视化软件、工具 . 比如Echarts
3.2 系统的架构
相对于传统的 BI 数据处理,流程几乎差不多,但是因为是处理大数据,所以流程中各环节所使用的技术则跟传统 BI 完全不同:
数据采集:定制开发采集程序,或使用开源框架 Flume
数据预处理:定制开发 mapreduce 程序运行于 hadoop 集群
数据仓库技术:基于 hadoop 之上的 Hive
数据导出:基于 hadoop 的 sqoop 数据导入导出工具
数据可视化:定制开发 web 程序(echarts)
整个过程的流程调度:hadoop 生态圈中的 azkaban 工具
系统的数据分析不是一次性的,而是按照一定的时间频率反复计算,因而整个处理链条中的各个环节需要按照一定的先后依赖关系紧密衔接,即涉及到大量任务单元的管理调度,所以,项目中需要添加一个任务调度模块
。