• Awstats安装和配置

    Posted on 一月 8th, 2009 inetdemon No comments

    目前我同时使用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设置

    Leave a reply