捐赠物资怎么记账:给Jboss安装网站日志分析工具Awstats

来源:百度文库 编辑:偶看新闻 时间:2024/05/09 14:09:45
去年11月份,本站开始使用Webalizer作访问日志统计分析工具。Webalizer也是比较流行的网站日志统计分析工具,但我们在使用的过程中,发现确实存在一些问题:统计的水分比较大,把很多搜索引擎的网络爬虫(spider)的访问当作正常访问;对搜索引擎带来的访问,方面作的统计分析比较糟糕,而这往往是网站管理员最关心的一块。比如,只统计了访问者用Google搜过来的关键词,而把baidu等的搜索完全抛弃了,大概是认识的搜索引擎(特别是中国的搜索引擎)太少的缘故,而本站主打的访问贡献是baidu.。还有,即使是所主要统计的Google为代表的搜索引擎使用的关键词,也存在中文问题。
简单的说,Webalizer不太合用,尤其不太适合中国国情:不认识中国的搜索引擎,不能够正确处理中文搜索。
昨天,我用了一天时间安装另外一种据说更专业的网站访问统计分析工具:Awstats.。
从网上简单的搜了一下,发现车东有篇文章写得比较详细、实用:AWStats: Apache/IIS的日志分析工具
??在GNU/Linux和Windows平台上的使用简介,位置:http://www.chedong.com/tech/awstats.html。
但看标题,就知道,车东的文章主要是针对Apache/IIS的,好像正如其标题所言,Awstats也比较针对这二种Web服务器。而本站使用的却是Jboss服务器,情形不一样,碰到的问题也多一些,写下解决过程,希望对后来者有所帮助。
本文的应用场景:TurboLinux Server 8.0+Jboss 3.2.3+Oracle 8i+Perl 5.6.1.
下面是完整的安装步骤:
一、 下载软件
http://sourceforge.net/projects/awstats/ 下载安装包后,最新的是2005年2月25日发布的6.4版:awstats-6.4.tgz., cp awstats-6.4.tgz /usr/local
cd /usr/local/
tar zxf awstats-6.4.tgz
cd awstats-6.4
mv awstats-6.4 awstats
cd awstats/tools
perl awstats_configure.pl
在回答Web服务器配置文件路径时,因为Awstats默认的Web服务器是Apache,而我们是Jboss,,所以这儿应该输入”none”.
安装程序要求输入域名时,可以输入自己的域名,本例是www.zhuoda.org.
将生成默认的配置文件,位置是:/etc/awstats/awstats-www.zhuoda.org.conf。
其它基本上安装默认值就可以了。
安装就这么简单,但要真正使用,对Jboss而言,还有不少麻烦的配置步骤。
二、基本配置
1. 首先得修改网站日志文件的位置。
如果是Apache就不用了,因为Awstats能够根据Apache的配置文件确定其日志文件。
Cd /etc/awstats
Vi awstats-your.domain.name.conf,(本例是vi awstats.www.zhuoda.org.conf)
默认的LogFile=”/var/log/httpd/mylog.log”
本例修改为: LogFile=”/app/jboss/server/default/log/vhost1%YYYY--%MM-%DD.log.
因为我的Jboss访问日志文件名称类似于vhost12005-03-01.log。
2.日志文件类型,默认的是Web,并且是Combined格式,符合我的情况。
LogFormat=1。
就不用修改了。
需要说明的是,Jboss默认的日志格式不是combined,需要修改,否则会缺少很多对网管而言非常重要的信息:referral,访问者从何而来,使用了什么关键词才搜到了本站等。修改方法,见本站我去年写的另外一篇文章。
还有,配置文件的注释以及文档都说用:%YYYY-0%MM-0%DD,但我这样用时好像有问题,将%前面的0去掉,就可以了。
3.输出文件的位置:
默认的是: DirData=”/var/lib/awstats”。
这项,我没有修改。当然,要符合这一项,还得 mkdir /var/lib/awstats,并且自己记住这个位置,以便调试。
修改语言一项,Lang="auto",将“auto"改为"cn",让awstats以中文方式工作。
其它配置选项暂时可以不动,等调通之后,再微调。
三、最初的测试。
awstats安装上了,也初步配了一下,现在可以测试、调整了。
可以使用的这样的测试:cd /usr/local/awstats/wwwroot/cig-bin
perl awstats.pl -configure=www.zhuoda.org -update -output -staticlinks > 301.html
再查看结果,vi 301.html
如果不正常,可以根据其提示再修改配置文件。典型的错误是日志文件的格式问题。
如果通过了,说明安装初步成功了。
四、Web访问
Awstats是用perl开发的,故而其默认的分析结果是通过cgi方式,提供web访问的。本文环境是Jboss,当然没有必要,为了显示Awstats的分析文件而再专门安装Apache.。替代的方法很简单:在Jboss部署文件夹中,建立一个静态Web包文件夹,本例是mkdir /app/jboss/server/default/deploy/usage.war
Mkdir /app/jboss/server/default/deploy/usage.war/WEB-INF,
把Awstats统计分析日志得出的html文件copy到usage.war文件中,就可以通过http://www.zhuoda.org/usage/这个路径来访问了。
因为之前使用Webalizer作日志分析时,已经使用这个方法,这一步,因此非常容易地完成了。
五、中文问题
通过Web测试,发现Awstats果然比Webalizer厉害不少,数据可靠了,因为已经去掉了大量的spider的访问,并且对搜索引擎方面的数据分析非常不错。但是,部分搜索的关键词仍然有个中文问题,看车东的文章,知道原来是Google等搜索引擎使用的是utf-8编码,而不是本地的gb2312或者gbk编码。
车东解决了这个问题,提供了一个小脚本。
但我发现awstats-6.4已经能够自己解决这个问题,不需要额外的补丁。
vi /etc/awstats/awstats-www.zhuoda.org.conf
在配置文件中:
#LoadPlugin=”decodeutfkeys”
将前面的注释号去掉就可以了。
但再次运行测试脚本时,却提示perl缺少Encoding模块.
我就上www.cpan.org去当相应的模块,2个文件:Encode-2.09.tar.gz,URI-1.35.tar.gz.
下载回来确又发现,这2个模块不能安装,因为我的perl版本是5.6.1,安装要求得5.7.x以上。
只好再上www.perl.com找最新的perl5.8.6.tar.gz.,为了加快下载速度使用了linuxforum.net的镜像。但解开安装时,按了无数个回车之后,make半天,告知perl安装失败。
再去找perl 5.8.6的bin发行包 rpm包,但下载太麻烦,很慢,linuxforum没有提供这个版本的镜像,只好放弃。
郁闷。忽然想起,在另外一天服务器上,一年前我似乎装过高版本的perl.。果然找到了已经安装好的perl 5.8.0,符合Encoding模块的安装要求。将Encoding/URI这2个源文件,ftp到装有perl5.8的机器,果然就能安装成功了。
将该机器的perl5.8打包: cd /usr/lib/perl5
tar czvf perl580.tgz 5.8
再将 perl580.tgz ftp 到 Jboss 服务器,
之后,cd /usr/lib/perl5
tar zxvf perl580.tgz
mv /usr/bin/perl /usr/bin/perl561
cp /usr/lib/perl5/5.8/bin/perl /usr/bin
再运行awstats测试脚本,好,终于成功了,中文问题解决了。
说明,可能perl5.8环境下不需要安装Encode/URI这2个模块,但我既然已经下载了,这2个包非常小,不到一分钟就全部搞定,所以就装了。
这一步费时长达一个小时,也许应该直接用车东的脚本,但也有个回报:Awstats文档说,perl5.8要比perl 5.6.1快15%左右。
六、历史文档问题
因为我们的网站是去年春天开始运行的,日志文件修改为combined格式也是去年11月份的事情,所以积累了大量的访问日志文件。分析历史文档非常重要。但Awstats默认的方式,在这个问题上不太友好,让人费了不少劲。
这个问题,车东的文章也没有涉及。只好再读awstats自带的一个pdf文档(在doc目录里面)。个人感觉awstats文档前面一大半,没有什么价值,只是罗嗦地重复配置文件的注释中已有的内容。但发现文档最后一部分,最有价值,主要是各种常见问题的解决办法,还有些特殊的技巧。
首先,因为awstats习惯是按照时间顺序处理日志文件的,也就是如果你先在测试时,处理了默认的当日的日志,那么等处理老的日志文件时,应该把新的日志文件处理的Awstats的数据库文件(默认是*.txt,例如awstats022005.www.zhuoda.org.txt,本例中的位置是/var/lib/awstats),移动到另外的文件夹。
其次,默认的配置文件是处理最新的日志文件,所以,处理大量过去的日志文档时,应该用LogFile=/app/jboss/server/default/log/vhost12004-11-11.log,来显示覆盖(override)配置文件的LogFile项。如, perl awstats.pl -config=www.zhuoda.org -update -output -staticlinks -LogFile=LogFile=/app/jboss/server/default/log/vhost12004-11-11.log > 11.html。
-config=www.zhuoda.org,表明使用 /etc/awstats/awstats.www.zhuoda.org.conf,这个配置文件,注意如果使用全称awstats.www.zhuoda.org.conf,就会出现错误,因为awstats会自动补上前面的awstats,以及结尾的.conf。
-update 选项表示可能按月累计,因而允许更新awstats相应的数据库文件。
-output 选项表示输出为一个主要的html文档,
-LogFile选项上面介绍过了,表明此次处理,针对命令行中给出的特定文件,而非配置文件中的常规最新日志文件
perl awstats.pl就可以看到给出的用法提示。
第三,如果一个一个手工处理几个月的日志文件,每天一个,加起来就是一百多了,在我的机器上大约数秒种处理一个文件。
我想,还是用一个脚本,比较方便一点,于是有了下面的文件:chk5Big
#!/bin/bash
# added on 2005-3-1, by hofman
DAY=0
echo $DAY
cd /usr/local/awstats/wwwroot/cgi-bin
while [ $DAY ?Clt 31 ]
do
DAY=`expr DAY + 1`
# 2 -> 02
if [ $DAY -lt 10 ]; then
DAY=0$DAY
fi
perl awstats.pl -config=www.zhuoda.org -update -output -staticlinks -LogFile=/app/jboss/server/default/log/vhost12005-$1-$DAY.log -month=$1 > $1.html
done
cp $1.html /app/jboss/server/default/deploy/usage.war/awstats/2005
用法:
./chk5Big 01
这就处理了2005年1月份的31天的31个文件。
简单地修改一下,就可以处理其它月份的文件,以及去年的文件。
再提醒一下,需要安装时间顺序处理,如果是去年的,需要补上一个参数,-year=2004.
需要返工的话,应该先移走/var/lib/awstats里面时间再后的txt文件。
七、最后的完善
安装基本上接近尾声了,但有些完善的工作要作。
1. 这时,可以将awstats自带的icon/css/js目录copy到我们的usage.war里面的相应位置,再修改一下配置文件中,相应的条目:DirIcons=”/icon”配套就可以了。
2. 也可以根据自己的需要,调整一下日志分析的规则,比如,我将搜索引擎的搜索关键词显示数量由10个提示到50个,并将127.0.0.1排出在统计之外等。
八、用crontab来自动更新日志分析
确认无误后,最后一个工作,就是让crontab自动进行日志分析的更新。我设定的时每小时自动更新一次。
Crontab -e
加入如下一条
0 * * * * * /usr/bin/chkHourly
就可以了。
脚本ChkHourly很简单:
#!/bin/bash
MON=`date +%m`
cd /usr/local/awstats/wwwroot/cgi-bin
perl awstats.pl -config=www.zhuoda.org -update -output > $MON.html
mv $MON.html /app/jboss/server/default/deploy/usage.war/awstats/2005