网站流量日志数据分析系统
点击流数据模型
- 点击流(Click Stream)是指用户在网站上持续访问的轨迹,我们通过对网站日志的分析可以获得用户的点击流数据。
- 点击数据在数据建模时存在两张模型表 Pageviews 和 visits
网站流量分析
- 网站流量分析模型举例
- 网站流量质量分析
流量并不是越多越好,应该更加看重流量的质量 网站流量多维度细分
细分是指通过不同维度对指标进行分割
网站内容及导航分析
第一个问题:访问者从导航页(首页)还没有看到内容页面之前就从导航页
离开网站,需要分析导航页造成访问者中途离开的原因。
第二个问题:访问者从导航页进入内容页后,又返回到导航页,说明需要分
析内容页的最初设计,并考虑中内容页提供交叉的信息推荐。
- 网站转化以及漏斗分析
①阻力的流失
比如:不恰当的商品或活动推荐,对支付环节中专业名词的解释、帮助信息等内容不当。
②迷失
比如在线购买演唱会门票,直到支付也没看到在线选座的提示,这时候就很可能会产生迷失,返回查看。
- 流量分析常见分类
指标是网站分析的基础,用来记录和衡量访问者在网站自的各种行为。
- 骨灰级指标:IP访问网站的不重复 IP 数、PageView页面被加载的总次数、Unique PageView访问网站的不重复用户数
- 基础级指标:访问次数、网站停留时间、页面停留时间
- 复合级指标:人均浏览页数、跳出率(单页访问)、退出率
整体技术流程及架构
数据处理流程
- 数据采集:定制开发采集程序,或使用开源框架 Flume
- 数据预处理:定制开发 mapreduce 程序运行于 hadoop 集群
- 数据仓库技术:基于 hadoop 之上的 Hive
- 数据导出:基于 hadoop 的 sqoop 数据导入导出工具
- 数据可视化:定制开发 web 程序(echarts)或使用 kettle 等产品
- 整个过程的流程调度:hadoop 生态圈中的 azkaban 工具或其他类似 开源产品
项目结构
模块开发---- 数据采集
Flume日志采集系统搭建
- nginx日志切割
nginx文件存储日志不会自动地进行切割,都是写在一个文件 access.log 当中,切割需要使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。
自动切割 shell 脚本 nginx_log.sh:
#!/bin/bash
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置 pid 文件
pid_path="/usr/local/nginx/nginx-1.7.3/logs/nginx.pid"
#日志文件
filepath=${logs_path}"access.log"
# Source function library.
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d '-1 day' '+%Y-%m-%d').log
#向 nginx 主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
crontab设置作业(每天零时零分执行)
#设置日志文件存放目录 crontab -e
0 0 * * * sh /usr/local/nginx/nginx_log.sh
采集实现
- 在个 web 服务器上部署 agent 节点,修改配置文件
- 启动 agent 节点,将采集到的数据汇聚到指定的 HDFS 目录中
使用aildirSource,可以监控一个目录,并且使用正则表达式匹配该目录中的文件名进行实时收集。
#核心配置
a1.sources = r1
a1.sources.r1.type = TAILDIR
a1.sources.r1.channels = c1
a1.sources.r1.positionFile = /var/log/flume/taildir_position.json
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.filegroups.f1 = /var/log/test1/example.log
a1.sources.r1.filegroups.f2 = /var/log/test2/.*log.*
- filegroups:指定 filegroups,可以有多个,以空格分隔;(TailSource 可以同时监控tail 多个目录中的文件)
- positionFile:配置检查点文件的路径,检查点文件会以 json 格式保存已经 tail 文件的位置,解决了断点不能续传的缺陷。
- filegroups.
模块开发----数据预处理
主要目的
- 清理不合规无意义的数据
- 格式转换和规整
- 根据后续的统计需求,过滤分离出各种不同主题的基础数据。