日志分析
./awstats.pl -update -config=sitename -lang=cn比如:./awstats.pl -update -config=chedong
会自动调用awstats.chedong.conf这个配置文件
统计输出
gnu/linux http://localhost/cgi-bin/awstats/awstats.pl?config=chedongwindows 2000 http://localhost/awstats/awstats.chedong.html
日志统计自动运行
gnu/linux上:crontab -e: 每天8点10分运行
#update awstats
10 8 * * * (cd /path/to/apache/cgi-bin/awstats/; ./awstats.pl -update -config=chedong)
windows 2000上:设置每天8点10分运行
d:\perl\bin\perl.exe d:\awstats\tools\awstats_buildstaticpages.pl -update -config=chedong -lang=cn -dir=c:\inetpub\awstats\ -awstatsprog=d:\awstats\wwwroot\cgi-bin\awstats.pl
多站点日志统计
awstats自带了一个批处理工具:tools/awstats_updateall.pl,可以批量地遍历一个目录下所有地配置文件并运行统计。因此剩下的工作就主要是日志的同步问题了。
针对多个站点,很多配置选项是重复的,如果每个配置文件都修改维护起来会很麻烦,awstats从5.4版本开始提供了配置文件包含的功能,所以我们可以配置一个通用配置,比如:common.conf
然后其他站点的配置设置为:可以通过后面的选项覆盖和缺省不一致的配置。
awstats.bbs.chedong.conf
include "chedong.common.conf"
logfile "/path/to/bbs_log"
sitename "bbs.chedong.com"
awstats.www.chedong.conf
include "chedong.common.conf"
logfile "/path/to/www_log"
sitename "www.chedong.com"
hostaliases="chedong.com"
统计指标说明
- 参观者:按来访者不重复的ip统计,一个ip代表一个参观者;
- 参观次数:一个参观者可能1天之内参观多次(比如:上午一次,下午一次),所以按一定时间内(比如:1个小时),不重复的ip数统计,参观者的访问次数;
- 网页数:不包括图片,css, javascript文件等的纯页面访问总数,但如果一个页面使用了多个帧,每个帧都算一个页面请求;
- 文件数:来自浏览器客户端的文件请求总数,包括图片,css,javascript等,用户请求一个页面是,如果页面中包含图片等,所以对服务器会发出多次文件请求,文件数一般远远大于文件数;
- 字节:传给客户端的数据总流量;
- 来自referer中的数据:日志中的参考(referer)字段,记录了访问相应网页之前地址,因此如果用户是通过搜索引擎的搜索结果点击进入网站的,日志中就会有用户在相应搜索引擎的查询地址,这个地址中就可以通过解析将用户查询使用的关键词提取出来:
比如:
2003-03-26 15:43:58 123.123.123.123 - get /index.html 200 192 http/1.1 mozilla/4.0+(compatible;+msie+5.01;+windows+nt+5.0) http://www.google.com/search?q=chedong
awstats在搜索引擎的关键短语和关键词统计方面的功能还是比较完整的:可以对全世界3百多种机器爬虫进行识别,并且可以识别大部分主流国际化搜索引擎和很多地区的本地语言搜索引擎。
hacking awstats
iis按gmt时间的补丁:awstats.pliis的日志时间是格林威治之间,中国本地时间和gmt有+8个小时差距,如果直接用timezone插件从格林威治时间转换会有40%的性能下降,这里有一个将时间按本地时间修改时间坐标的补丁:
7696d7695
< my $time_zone = 8;
7698,7702c7697
< my $ix_local = $ix + $time_zone;
< if ($ix_local >= 24) {
< $ix_local = $ix_local - 24;
< }
< print "
---
> print "
7708,7712c7703
< my $ix_local = $ix + $time_zone;
< if ($ix_local >= 24) {
< $ix_local = $ix_local - 24;
< }
< my $hr= $ix_local + 1 ; if ($hr>12) { $hr=$hr-12; }
---