AWStats的千万级日志解决方案

Felix Shang

 QQ :279379936  QQ群:249086255

1.命令行统计增加:-databasebreak=day

例如:perl awstats.pl -config=test.jiankong.com -update -lang=cn -databasebreak=day

2.报表输出时增加:&databasebreak=day&day=DD

例如http://10.1.22.28/awstats/awstats.pl?config=test.jiankong.com&databasebreak=day&day=21

即可按天进行统计解决按月统计,归档数据过大导致统计过慢/失败的问题。

问题:

很多网站在流量从10万级增加到百万级以后就放弃了awstats作为统计,具体表现就是到月底的时候,统计数据会运行1天都运行不完。于是就改为webalizer或者analog了。其实这并非awstats统计效率不高:awstats很多丰富的统计指标:蜘蛛识别浏览器识别,文件类型统计等,都是比Webalizer丰富的,Webalizer要实现类似的统计力度也会出现性能问题。

原因分析:

性能的瓶颈在哪里呢:awstats统计缺省时按月统计,到月底时候记住的头20多天的历史IP等累计统计指标,会使得DUMP数据文件变得很大(数百M),而awstats运行时,需要的内存量是dump数据文件的34倍。当这个monthly积累的数据导致awstats统计脚本载入内存的数据量过大,用到系统文件交换做内存的时候日志统计效率就会降低了(处理速度会低2-3个数量级),于是出现了运行一天都统计不完前一天日志的现象。

解决:

AWStats丰富的统计指标还是很有用的,而一个网站已经达到日千万级的访问请求,按天的详细的数据统计也是必须的了。所以:索性牺牲一下按月的独立IP统计,将日志改成按天统计,如果需要按月的汇总,可以利用awstatsdump数据成为一个中间数据源汇总统计。

其他问题:

按天统计后,awstats的输出文件会变成awstatsMMYYYYDD.confname.txt 每天一个统计文件,而报表的输出需要增加&databasebreak=day&day=DD 来指定某一天的数据。增加了日期后,awstats的报表输出有些不方便,awstats本身没有提供按日的浏览,

可以添加两个js脚本完成

http://www.internetofficer.com/awstats/day-by-day/  介绍和下载

http://www.internetofficer.com/awstats/day-by-day/install/  安装.

本人配置:

1.httpd.conf配置:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

#awstats

<VirtualHost *:8000>

        ServerPath /opt/webapps/awstats/wwwroot

        DocumentRoot /opt/webapps/awstats/wwwroot

        Alias /awstatsclasses "/opt/webapps/awstats/wwwroot/classes/"

        Alias /awstatscss "/opt/webapps/awstats/wwwroot/css/"

        Alias /awstatsicons "/opt/webapps/awstats/wwwroot/icon/"

        ScriptAlias /awstats/ "/opt/webapps/awstats/wwwroot/cgi-bin/"

        <Directory "/opt/webapps/awstats/wwwroot">

                Options None

                AllowOverride None

                AuthName "voole awstats Access"

                AuthType Basic

                AuthUserFile  /opt/webapps/awstats/.htpasswd

                Require valid-user

                Order Deny,Allow

                Deny from all

                Allow From 202.106.92.0/24

                Allow From 10.1.22.0/24

                Allow From 127.0.0.1

        </Directory>

        CustomLog "|/opt/apache/bin/rotatelogs   /opt/logs/apache/awstats.access_%Y-%m-%d.log 86400 480" combined

</VirtualHost>

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以上配置需生成密码:htpasswd -c /opt/webapps/awstats/.htpasswd admin

2.vim /etc/awstats/awstats.test.jiankong.com.conf

HTMLHeadSection="<script language=javascript src="/js/day-by-day-head.js"></script>"

HTMLEndSection="<script language=javascript src="/js/day-by-day-end.js"></script>"

3.两个js文件的存放位置:

 

342ac65c10385343ac50b8099213b07eca80887e

4.重启apache

5.更改awstats_updateall.pl文件

vim /opt/webapps/awstats/tools/awstats_updateall.pl

如截图151行改为:my $command="\"$AwstatsDir/$AwstatsProg\" -update -lang=cn -databasebreak=day -config=$domain";

 

95eef01f3a292df56c93933dbd315c6034a87341

6.重新生成报表/opt/webapps/awstats/tools/awstats_updateall.pl now -awstatsprog="/opt/webapps/awstats/wwwroot/cgi-bin/awstats.pl"

7测试访问:

 

9825bc315c6034a8cf7787a9ca13495409237604


你可能感兴趣的:(浏览器,update,解决方案,力度,天都)