web请求中,web服务器的日志中会留有一些信息,这些信息可以供后续数据分析只有。常用的有apache和nginx服务器,两者日志格式相差不是很多。日志格式可以配置,具体配置方式不详细介绍,网上肯定很多。
常见的分析方式有两种:
(1)在服务器上通过shell或者python脚本分析,将结果数据搞到数据库
(2)将服务器上的原始文件拉到特定的分析服务器,分析服务器对于结果分析,然后搞到数据库
两种方式各有利弊,第一种的话获取结果的脚本需求部署到每台机器上去,好处是减少网络传输,第二种的话好处是服务器不需要部署脚本,直接拖数据到分析服务器即可,缺点是网络传输消耗比较大。
apache和nginx中常见的日志信息(下面是两个日志配置)
nginx:"$remote_addr $request_time_usec $http_x_readtime [$time_local] \"$request_method http://$host$request_uri\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\"";
apace:"%h %D %{X_READTIME}i %t \"%m http://%V%U%q\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
可以获取的信息有以下几个(基本上是基于http协议的一下信息)
(1)来源ip
(2)请求响应时间
(3)请求时间点
(4)请求URL(包含get或者post信息)
(5)返回的http状态码
(6)返回的信息的大小
(7)来源URL(refer信息)
(8)浏览器和操作系统数据
基于这些基本数据,我们可以做哪些分析(做了简单的描述)?
(1)统计每秒请求的数量(即QPS)以及特定时间内的总请求书
(2)统计每秒请求的用户数(UV),但是理论上是IPV
(3)统计系统的平均响应时间(基于每次请求的时间做平均)
(4)用户在页面上的停留时间,这个需要结合refer以及时间点,可能会有些许不准确
(5)用户路径分析,分析refer数据,例如A>B点数据,refer是A,那用户先到A页面再到B页面
基于web服务器获取的数据毕竟有限,想要获取更多用户的行为或者统计数据,还看一怎么做?
(1)页面通过js来进行埋点
用户的行为会触发浏览器对被统计页面的一个http请求,,页面中的埋点javascript片段会被执行,用过相关工具的朋友应该知道,一般网站统计工具都会要求用户在网页中加入一小段javascript代码,这个代码片段一般会动态创建一个script标签,并将src指向一个单独的js文件,此时这个单独的js文件会被浏览器请求到并执行,这个js往往就是真正的数据收集脚本。
(2)在服务端代码中添加埋点
将埋点的统计数据临时放置在内存中,然后将数据定时的写入磁盘,之后基于这些信息来进行分析。
分享到:
2012-11-15 18:34
浏览 3667
评论