目前我同时使用awstat和google analytics,他们各有优劣:GA的报表相对全面而美观但是定制麻烦,而awstats由于是基于网站日志的分析,所以相对来说比较准确; 另外awstats能比较有效的获得搜索引擎bots的最近访问时间,这对seo也是很有帮助的,由于GA是用js方式的,而搜索引擎的bot都会忽略js, 因而GA是无法获得搜索引擎bots相关信息的。
安装
下载安装最新的awstats:
cd /home/software
wget http://prdownloads.sourceforge.net/awstats/awstats-6.9.tar.gz
tar -xvzf awstats-6.9.tar.gz
mv awstats-6.9 /usr/local/awstats
cd /usr/local/awstats
mkdir -m 755 data
配置Awstats
cd /usr/local/awstats/tools
perl awstats_configure.pl
我们这里假设conf文件配置在/usr/local/awstats目录下。
更新数据库
perl awstats.pl -config=www.jefflei.com -update
如果成功看到结果,可以将以上命令放到crontab中执行,每天8点10分执行更新:
10 8 * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.xyz.com >/dev/null 2>&1
Awstats的高级配置
安装GeoIP
编译安装GeoIP的C应用库:
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar -xvzf GeoIP.tar.gz
cd GeoIP
./configure
make;make install
安装Perl下的Geo IP应用
perl -MCPAN -e 'install "Geo::IP"'
然后下载GeoIP数据库,具体介绍如何自动下载ip数据库和纯真国内数据库请见我另外一篇博文:
cd /usr/local/share/GeoIP/
wget -t 5 http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget -t 5 http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget -t 5 http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
gzip -d *
修改awstats的配置文件,添加如下几行:
LoadPlugin="decodeutfkeys"
LoadPlugin="toolstips"
LoadPlugin="geoip GEOIP_STANDARD /usr/local/share/GeoIP/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoLiteCity.dat"
LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/local/share/GeoIP/GeoIPASNum.dat"
#百万级以上网址使用:LoadPlugin="hashfiles"
更新搜索引擎定义
对于中文网页,参照车东blog中介绍的中文搜索引擎定义:
wget http://www.chedong.com/tech/lib.tgz
解压后将search_engine.pm, robots.pm覆盖/usr/local/awstats/wwwroot/cgi-bin/lib/目录下的原文件
使用多awstats配置文件
多个站点很多配置选项是重复的,如果每个配置文件都修改维护起来会很麻烦,AWStats提供了配置文件包含的功能,我们使用一个通用配置:awstats.common.conf。这样每个配置文件只要include这个common设置就可以了:
awstats.www.abc.com.conf:
Include "awstats.common.conf"
LogFile="/usr/local/nginx/logs/access_log.store.%NS"
#压缩文件用 LogFile="zcat /home/www/logs/%YYYY/%MM/www.access.log.%YYYY-24%MM-24%DD-24.gz|" 效率比gzip高
SiteDomain="www.abc.com"
HostAliases="abc.com www.abc.com 127.0.0.1 localhost"
awstats.help.abc.com.conf:
Include "awstats.common.conf"
LogFile="/usr/local/apache/logs/access_log.help.%NS"
SiteDomain="help.abc.com"
AWStats自带了批处理工具tools/awstats_updateall.pl,可以批量地遍历一个目录下所有地配置文件并运行统计, 更新cron脚本如下:
10 8 * * * /usr/local/awstats/tools/awstats_updateall.pl now -configdir=/usr/local/awstats/wwwroot/cgi-bin/ >>/usr/local/awstats/logs/cronaw.log 2>>/usr/local/awstats/logs/cronaw.err
Awstats, Google Analytics, WebAlizer访问统计数据相差很大的问题
这种情况一般是由于被统计的数据不同所造成的,
首先,在awstats配置文件中设置不被统计的文件:
NotPageList="css js class gif jpg jpeg png bmp ico swf pdf txt zip arj rar gz z bz2 wav mp3 wma mpg avi"
在webAlizer中,可以修改PageType 配置。
另外,Awstats的页面数包括了ajax请求的页面和include页面,而一般这些页面并不会种GA代码,因此这部分的差异也许会很大, 参见我另一篇如何更精确统计awstats差异页面的文章。
使用准确的中国ip数据库
见刘晖博客,awstats安装QQip数据库。安装后如果还有问题可以安装perl的Net::XWhois
perl -MCPAN -e ‘install Net::XWhois’
安装无误后可根据需要设定系统自动更新IP数据库。
extra的编写
推荐几个有用的AWStats Extra扩展统计, 包括获取搜索引擎最近访问时间,抓取地图,还有RSS的访问等,对我们了解搜索引擎bot的动向和RSS用户很有帮助。参见车东关于RSS的一些说明
调整Bots定义
这里介绍了在哪里找robots的定义,参见 DBANotes的这篇关于114的说明
多服务器的日志合并分析
只要你的文件系统没有使用NFS,就需要把不同服务器上的log文件同步到一台上合并分析,合并之前还需要排序以提高awstats的效率
第一步,用rsync同步文件
#!/bin/sh
rsync -avz --progress -e "ssh -p 22" www@10.0.0.1/data/logs/`date --date "1 days ago" +*.\%Y\%m\%d` /data/logs/
在原服务器上删除前一天的日志:
50 4 * * * /bin/rm -f /data/logs/`date --date "1 days ago" +*.\%Y\%m\%d`
第二步,分析日志,假设我们有3台服务器的日志传到第四台服务器上合并日志:
-rw-r--r-- 1 nobody root 1538516677 Oct 29 05:20 www.access.log.1.gz
-rw-r--r-- 1 nobody root 1507444445 Oct 29 04:12 www.access.log.2.gz
-rw-r--r-- 1 nobody root 1507444445 Oct 29 04:43 www.access.log.3.gz
我们利用logresolvemerg.pl配置文件中配置日志处理
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /usr/local/nginx/logs/www.access.log.* |"
logresolve可以合并、排序日志文件,它还自动检测文件格式,只要zcat或bzcat在PATH中,它会自动调用zcat
nginx下的awstats设置
千万级日志的awstats设置
VN:F [1.9.14_1148]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.14_1148]