如何计算网站访问的有效PV量

为了更好的分析得到的PV量, 使自己由日志文件得到的PV量更接近Google
由日志中统计出的PV量要排除掉如下一些:

注意点: 以上排除项对一些地址会有重复,比如既是搜索引擎的访问,又是内嵌的小页面地址,这样在处理时要注意,以防造成PV量的重复剔除

Popularity: 5% [?]

Related

几种常见WEB日志分析方法中被统计的用户访问量差异产生原因分析

这几天一直根据原始的weblog文件做日志分析,发现如下一些ip访问量和页面访问量方面的问题。
通常我们会用如下的一些工具来做WEB网站访问日志的分析。

这几者之间方法机制的存在着差别,就需要好好分析一些,提升一下自己在通过方式 3 得到的数据的精确性,同时也有助于发现一些存在的问题。

工具 ip量 唯一访问者数 访问人次 pv量
google X X X
awstat X X X
yahoo X X X X

注: awstats也有唯一访问数的统计,不过只能在摘要按月历史统计中才能看到,不能以按天的方式看到,为了方便这边对比看到某一天的数据,我单独以某天的日志做一个配置,得到的按月数据等同于按天。

对几种工具的统计的情况对比(以实际统计中某几天的数据做对比)
统计结果呈现出: ip量 < 唯一人数 < 访问人次
对PV量的统计
google 和 yahoo 差不多, awstats 统计出的 页面数 比google和yahoo统计出来的数量要多出约两倍左右。产生这个现象的原因: google和yahoo都是采用的在页面嵌入脚本的方式,这样统计出来的就都是在用户浏览器上显示的页面,所以他们统计出的结果差不多。和awstat统计结果发生大偏差的原因:

访问人次:
这个项只有 google和awstas有,其中google得到的人次要比awstats多。这个可以解释为他们用来识别两次访问间的时间间隔不同。google的判断时间间隔小,所以得到的总访问次数多。
唯一人数:
这个的结果是 yahoo < awstats < google
这个结果的不同可能是由于采用了不同的鉴别唯一用户的算法。估计采用了公网ip+ua+内网ip等的不同组合,从而得到的唯一用户数也不同。

IP访问量
这个只有 yahoo 提供,其他方式中没有该项,但是是可以反映出 ip地址量少于 唯一用户数的 。

对方式3自己写shell脚本做分析,在pv上得到的数据和awstats更接近一些,因为所使用的数据源和分析方式类似。
awstats使用缓冲记录运算获得的用户停留时间等信息不好获得,但是可以做出其他的一些按照ip为基准而awstat等工具未提供的统计,比如

Popularity: 6% [?]

Related

NotPageList的设置会引起Awstats用户访问量统计发生变化

为了方便业务做分析,给awstats添加了一下 ExtraSection 的设置, 结果隔天同事反映awstats统计的访问用户数量一下子少掉好多。

想想ExtraSection的设置不应该影响到Awstats的访问用户数统计,但是打开看awstats的统计量,pv,文件数都没有什么变化,但确实用户访问量发生了大的变化。

于是努力回想在给Awstats设置ExtraSection的时候,还对awstats配置的什么地方做了改动,终于在对比后想起来是修改了 NotPageList 的设置,将zip, swf, wma 等后缀的也做了NotPageList的过滤。

于是猜想是否由于这个选项的设置变化导致了awstat的统计结果不一样,立马开始做验证,将其中几天的日志转到测试服务器上,建立两个配置,一个NotPageList是使用默认的设置,另外一个NotPageList中添加了额外扩展名的设置。
然后分别对两个配置做 update 后再对数据进行查看比较,发现添加额外的扩展名后,访问用户数变少,网页数的统计有变少,文件数没有太大变化。

结论: NotPageList的设置确实会影响AWSTATS对 访问用户数, 页面数,文件数等的统计结果。

带来的问题: AWstats是怎么计算用户访问数的?
根据以上对比和对其中部分代码的分析有如下一些初步结论:
参与访问用户量分析的只有那些被识别为网页的记录
唯一用户数: 用ip 地址 + ua 信息的组合来识别不同的用户访问
访问人次: 被识别的唯一用户在最后一次页面访问后又间隔一定时间(30分钟?)后再次访问,算是该用户的第二次访问。

根据这个分析回过来看前面由于NotPageList的设置变化而导致的统计用户数上差别的原因就可能是:
网页上有对额外添加的这些扩展名文件的连接,对这些文件的打开采用了不同于浏览器ua的插件或工具打开,造成新的ip+ua的组合和用户正在打开页面的ip+浏览器ua不一样,被awstats识别为一个新的用户访问。

Popularity: 4% [?]

Related

http返回代码的一般含义

因为要做web日志做分析,http的返回代码所代表的意思也要再搞清一下,方便分析。

1XX 代码

这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx 响应

2XX 代码

这类状态代码表明服务器成功地接受了客户端请求,一般日志中记录下的应该200的为多

3XX 代码

表示重定向,客户端浏览器必须采取更多操作来实现请求,比如 header Location: /anotherurl 这样的命令。

4XX 代码

表示客户端有问题,比如请求了一个不存在的文件。

5XX 代码

表示服务器端有问题,比如服务器端内存不足,响应超时等。

红颜色的代码是我们经常看到的。

更细的含义这边有一份HTTP返回代码表

Popularity: 4% [?]

Related

根据weblog分析某个业务下的ip访问量

目标:
对日志做分析,获取各个模块的ip访问量。
计划方法:
1. 首先获得符合条件的访问日志记录
2. 对符合条件的记录做排序做uniq得到模块目录下唯一ip列表
3. 再使用uniq 获得各个模块的ip数量
实施步骤:
1. 提取符合条件的日志行,输出ip地址和url

  1.     cat www.access.log |awk '($7 ~ /\.php/|| $7 ~/\/mod1\//){print $1 " " $7}'

2. 通过sed从url中提取模块目录的名称

  1.     |sed -e 's/\(^\/[^\/?"]*\).*/\1/'

3. 排序求每个模块下唯一的ip

  1.     | awk '{print $2 " " $1}'  |sort |uniq

4. 对每个模块做统计倒序排列

  1.     | awk '{print $1}' | uniq -c |sort -nr

合起来:

  1. cat www.access.log |awk '($7 ~ /\.php/|| $7 ~/\/mod1\//){print $1 " " $7}'  \
  2.   |sed -e 's/\(^\/[^\/?"]*\).*/\1/'  \
  3.   | awk '{print $2 " " $1}'  |sort |uniq
  4.   | awk '{print $1}' | uniq -c |sort -nr

Popularity: 4% [?]

Related

WEB日志的一般性分析

随着网站正式运行,我们可以通过通用的免费日志分析工具比如awstats获得一些实际访问网站的信息,例如每天ip量,pv量,用户所用的的浏览器,用户所用的操作系统等,但是有时候希望通过手工方式从WEB日志文件中获得一些信息,下面列出了一些最近一段时间我经常在用的命令

获得访问前10位的ip地址

  1. cat access.log|gawk '{print $1}' |sort|uniq -c|sort -nr |head -10

访问次数最多的文件或页面

  1. cat access.log|gawk '{print $11}'|sort|uniq -c|sort -nr

通过子域名访问次数,依据referer来计算,稍有不准

  1. cat access.log | awk '{print $11}' | sed -e ' s/http:\/\///' -e ' s/\/.*//' | sort | uniq -c | sort -rn | head -20

列出传输大小最大的几个文件

  1. cat www.access.log |awk '($7~/\.php/){print $10 " " $1 " " $4  " " $7}'|sort -nr|head -100

列出输出大于200000byte(约200kb)的页面以及对应页面发生次数

  1. cat www.access.log |awk '($10 > 200000 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面

  1. cat www.access.log |awk '($7~/\.php/){print $NF " " $1 " " $4  " " $7}'|sort -nr|head -100

列出最最耗时的页面(超过60秒的)的以及对应页面发生次数

  1. cat www.access.log |awk '($NF > 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

列出传输时间超过 30 秒的文件

  1. cat www.access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20

列出当前服务器每一进程运行的数量,倒序排

  1. ps -ef | awk -F ' ' '{print $8 " " $9}' |sort | uniq -c |sort -nr |head -20

Popularity: 2% [?]

Related

通过网站日志做网络爬虫和恶意访问分析

今天公司网站系统发生短暂的访问中断,虽然临时性的通过重启网站服务达到正常运作的目的,但是后续的分析工作还是要做的。

首先使用命令

  1. cat www.access.log |grep spider -c

  1. cat www.access.log |wc

分别查看有爬虫标志的访问次数和合计的总页面访问次数,发现还有爬虫标志的访问次数超过总访问次数的 10%, 访问显得有些不正常。

使用

  1. cat www.access.log |grep spider|awk '{print $1}'|sort -n|uniq -c|sort -nr

命令查看爬虫来ip地址来源,发现主要来至于 124.115.4.*和124.115.0.* 这两个地址段。

在防火墙上对其地址做限制。

/etc/sysconfig/iptables 中添加规则

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.0.1/24 -j REJECT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -s 124.115.4.1/24 -j REJECT

service iptables restart 使限制生效

一些已知的爬虫可以在 http://www.wangzhongyuan.com/archives/367.html 看到。可以针对自己的情况做一下分析处理,有选择性的让一些爬虫来访问。当然这个地址列出的都是一些比较有名的爬虫,如Googlebot, Baiduspider,Sogo,Yahoo等都是比较上规矩的,对他们可以通过robots.txt进行爬虫访问规则的设置,而那些较稀奇的比如这里列出的 Sosospider等就没有被列出,所以更多的小爬虫和恶意的访问还是要自己来具体分析处理的。

从网站日志文件中找出爬虫和恶意访问

一般可以对网站访问日志做分析,通过分析单位时间里面某个ip访问服务器的次数等信息来找出爬虫的来源地址和恶意访问的来源地址,比如通过

  1. cat www.access.log |awk '{print $1 " " substr($4,14,5)}'|sort -n|uniq -c|sort -nr|head -20

这么一个命令就可以列出在一分钟内访问网站次数最多的前20位ip地址。

而通过

  1. cat www.access.log |grep 60.190.128.6 |awk '{print $1 " " substr($4,14,5)}'|sort -n|uniq -c|sort -nr|head -20

这个命令则可以查看一天中某个ip地址对网站服务器的访问时间分段情况。

对这些命令中表现出的数量比较突出的一些ip地址,一般来说就是有问题的ip了,在配合

  1. cat www.access.log |grep ip地址

可以看看这些高强度的地址访问都在干些什么。是不是正常访问,如果不是就要考虑是否要做限制了。

Popularity: 2% [?]

Related