AWStats的千万级日志解决方案(按日、月统计)

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


让其可同时展示按日统计、与按月统计思路与方法:

1、 一个按月统计的配置文件  /etc/awstats/awstats.site-m.conf,生成分析数据时,使用 /usr/local/awstats/wwwroot /cgi-bin/awstats.pl -update -config=site-m 生成数据到  /var/lib/awstats/awstatsMMYYYY.site-m.txt

2、一个按日统计的配置文件 /etc /awstats/awstats.site-d.conf,生成分析数据时,使用 /usr/local/awstats/wwwroot/cgi- bin/awstats.pl -update -config=site-d -databasebreak=day 生成数据到  /var/lib/awstats/awstatsMMYYYYDD.site-d.txt

3、使用计划任务在每月1号3-4点时生成快捷方式,ln -s /var/lib/awstats/awstats`date +%m%Y`.site-m.txt /var/lib/awstats/awstats`date +%m%Y%d`.site-d.txt

建议不要间隔矿长时间来生产分析数据,当数据过多时分析耗时很久的,正常情况下分析1G日志大概需要8分钟,所以可以第隔10分钟分析一次日志,这样生产分析数据也及时,对服务器影响也不大


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