网站日志流量分析系统
一、概述
背景:在互联网应用中,日志是非常重要的数据,因为互联网项目往往要求是7*24不间断运行的,所以能获取到监控系统运行的相关日志数据并进行分析就显得非常重要。网站流量统计是改进网站服务的重要手段之一,通过获取用户在网站的行为数据,进行分析,从而得到有价值的信息,并基于这些信息对网站进行改进。
日志种类:
①系统日志:开发人员在系统后台代码中增加的日志输出语句,如果是Java语言,通常采用log4j或slfj框架技术进行一些日志语句的输出,但这类输出信息并不全面,不能细致地把系统运行信息进行输出。
②埋点日志:在现有系统集成相应代码,捕捉系统特定的事件,输出一些相关的信息。
二、业务指标
①PV(Page View)
访问量:也叫点击量,即一天之内整个网站中的页面被访问的次数(对同一个页面重复访问也记为不同的PV)
②UV(Uniquer Visitor)
独立访客数:即一天之内访问网站的人数(同一个人在一天之内访问网站多次,也只能算一个UV)
③VV(Visit View)
会话总数:即一天之内会话总的数量,所谓一次会话,指的是从访问第一个页面开始,会话开始,直到访问最后一个页面结束,关闭所有页面,会话结束;会话可以认为在访问第一个页面时开始,访问所有页面完成并关闭或超过指定时长没有后续访问都认为会话结束。
④BR(Bounce Rate)
跳出率:即一天之内跳出的会话总数占所有会话总数的比率。所谓跳出指的是一个会话中只访问过一个页面会话就结束了。跳出会话占全部会话的比率,称为跳出率。这个指标在评价推广活动的效果时非常的有用。
⑤NewIP
NewIP:即新增IP总数,一天内访问网站的所有IP去重后,检查有多少是在历史数据中未出现过的,这些数量指的就是新增的IP总数,这个指标可以一定程度上体现网站新用户的增长情况。
⑥NewCust
NewCust:即新增独立访客数,一天之内访问网站的人中,有多少人是在历史记录中从来没有出现过的。这个指标可以从另一个角度体现网站用户增长的情况。
⑦AvgTime
AvgTime:平均访问时长,所谓一个会话的访问时长,是指一个会话结束的时间—会话开始时间。将一天之内所有会话的访问时长求平均值,就是平均访问时长,这个指标可以体现出网站对用户的粘性大小。
⑧AvgDeep
AvgDeep:平均访问深度,所谓一个会话的访问深度,是指一个会话中的所有源地址去重后计数得到的指标。将一天之内的所有会话的访问深度求平均值就是平均访问深度。这个指标可以体现出网站对用户的粘性大小。
三、架构图
网站日志分析主要有以下几个步骤:
①网页埋点:在每个页面进行埋点,将相关数据通过ajax发送至日志服务器
②日志收集:日志服务器结合logback将数据发送至Flume客户端,Flume客户端通过配置负载均衡策略发送至不同的中心日志服务器
③数据存储:中心日志服务器分别将数据落地至HDFS和Kafka消息队列,以供离线和实时分析
④数据清洗处理:离线分析通过Hive或MR、实时分析通过SparkStreaming消费Kakfa消息来对数据进行清洗和处理
⑤数据导出:将数据清洗处理完成后的结果通过sqoop工具导出到MySQL数据库
⑥可视化展示:通过Echarts、HighCharts等框架对数据进行可视化展示