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数据文件的3-4倍。当这个monthly积累的数据导致awstats统计脚本载入内存的数据量过大,用到系统文件交换做内存的时候日志统计效率就会降低了(处理速度会低2-3个数量级),于是出现了运行一天都统计不完前一天日志的现象。
解决:
AWStats丰富的统计指标还是很有用的,而一个网站已经达到日千万级的访问请求,按天的详细的数据统计也是必须的了。所以:索性牺牲一下按月的独立IP统计,将日志改成按天统计,如果需要按月的汇总,可以利用awstats的dump数据成为一个中间数据源汇总统计。
其他问题:
按天统计后,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文件的存放位置:
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";
6.重新生成报表:/opt/webapps/awstats/tools/awstats_updateall.pl now -awstatsprog="/opt/webapps/awstats/wwwroot/cgi-bin/awstats.pl"
7测试访问: