AWStats: 跨平台的日志分析工具
——在GNU/Linux和Windows平台上的使用简介
作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com
写于:2003/04 最后更新:
document.write(document.lastModified)
04/19/2003 11:42:54
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/awstats.html
关键词:awstats web log analysis apache iis 日志 分析 open source
内容摘要:AWStats的使用简介和配置一些改进说明。
日志统计系统在站点的用户行为分析中扮演了重要的角色,尤其是对于来自搜索引擎的关键词访问统计:是很有效的用户行为分析数据来源。随着互联网多年的发展,WEB日志统计工具已经越来越成熟,功能也越来越丰富。其中有很多是开放源代码的,AWStats就是其中非常优秀的一款。
AWStats: Advanced Web Statistics
AWStats是最近发展很快的一个基于Perl的WEB日志分析工具。相对于另外一个非常优秀的开放源代码的日志分析工具Webalizer,AWStats的优势在于:
- 界面友好:可以根据浏览器直接调用相应语言界面(有简体中文版)
参考输出样例:http://awstats.sourceforge.net/cgi-bin/awstats.pl
- 基于Perl:并且很好的解决了跨平台问题,系统本身可以运行在GNU/Linux上或Windows上(安装了ActivePerl后);分析的日志直接支持Apache格式(combined)和IIS格式(需要修改)。Webalizer虽然也有Windows平台版,但目前已经缺乏维护;
AWStats完全可以实现用一套系统完成对自身站点不同服务器:GNU/Linux/Apache和Windows/IIS服务器的统一统计。
- 效率比较高:AWStats输出统计项目比Webalizer丰富了很多,速度仍可以达到Webalizer的1/3左右,对于一个日访问量百万级的站点,这个速度都是足够的;
- 配置/定制方便:系统提供了足够灵活但缺省也很合理的配置规则,需要修改的缺省配置不超过3,4项就可以开始运行,而且修改和扩展的插件还是比较多的;
- AWStats的设计者是面向精确的"Human visits"设计的,因此很多搜索引擎的机器人访问都被过滤掉了,因此有可能比其他日志统计工具统计的数字要低,来自公司内部的访问也可以通过IP过滤设置过滤掉。
- 提供了很多扩展的参数统计功能:使用ExtraXXXX系列配置生成针对具体应用的参数分析会对产品分析非常有用。
更多与其他工具:Webalizer, analog的比较请参考:
http://awstats.sourceforge.net/#COMPARISON
AWStats安装备忘
AWStats的运行模式是这样的:
- 分析日志:运行后将这样的日志统计结果归档到一个AWStats的数据库(纯文本)里;
- 然后是输出:分两种形式
- 一种是通过cgi程序读取统计结果数据库输出;
- 一种是运行后台脚本将输出导出成静态文件;
以下是2个针对单个站点日志统计例子:
一个是在GNU/Linux上通过CGI方式的输出,
一个是在Windows 2000上的基于静态页面的导出
下载/安装
http://sourceforge.net/projects/awstats/ 下载安装包后:
GNU/Linux:tar zxf awstats-5.4.tgz
#部署awstats cgi程序到/path/to/apache/cgi-bin/awstats
mv awstats-5.4/wwwroot/cgi-bin /path/to/apache/cgi-bin/awstats
#把图标icon目录复制到WEB发布目录下:/path/to/apache/htdocs/icon/
Windows 2000: 直接解包,然后移动到D:\AWStats目录下
把图标icon目录复制到IIS的发布目录下:inetpub/icon
数据源日志格式和按天的截断规则
- 对于Apache:日志格式好设置:设置成combined格式即可,日志截断麻烦一点:需要安装cronolog工具,将日志设置成按天截断:
CustomLog "|/usr/local/sbin/cronolog /path/to/apache/logs/access_%y%m%d.log" combined
比如:logs/access_030327.log logs/access_030326.log
- 对于IIS:缺省有比较好的日志按天截断规则,但是IIS的日志格式比较不适合AWStats统计,
因此最好直接去掉所有日志字段,然后严格按照以下列表设置
- 日期 date
- 时间 time
- 客户IP地址 c-ip
- 用户名 cs-username
- 方法 cs-method
- URI资源 cs-uri-stem
- 协议状态 sc-status
- 发送字节数 sc-bytes
- 协议版本 cs-version
- 用户代理 cs(User-Agent)
- 参照 cs(Referer)
相比IIS缺省设置:
配置文件的命名规则:awstats.sitename.conf
AWStats的主程序awstats.pl会自动根据站点名调用相应站点的配置文件:awstats.sitename.conf
比如:运行./awstats.pl -config=chedong 调用的就是同目录下的 awstats.chedong.conf 配置文件;
如果没有指定-config,还会找当前目录下的awstats.conf或者/etc/awstats.conf作为缺省配置文件。
所以最好把缺省的awstats.model.conf 重命名成 awstats.yoursite.conf;比如:awstats.chedong.conf,
对于多个站点的统计,AWStats的配置文件包含功能还是非常有用的,我们可以把通用的配置放在一个文档中,然后用5.4开始支持的Include配置将通用配置包含在各个具体配置文件的头部,然后用其他配置覆盖通用配置中的相应属性,比如:
Include="chedong.common.conf"
LogFile="/path/to/bbs/access_log"
SiteName="bbs.chedong.com"
最少的配置文件修改:LogFile SiteDomainLogFormat
对于在GNU/Linux上统计Apache日志只需修改:LogFile SiteDomain这2个选项
- GNU/Linux LogFile="/path/to/apache/logs/access_%YY-24%MM-24%DD-24.log"
Windows 2000 LogFile="d:\iis_logs\W3SV3\ex%YY-24%MM-24%DD-24.log"
这个配置的意思是用24小时前的年份,月份,日期拼出的日志文件名;
- SiteDomain="www.chedong.com"
站点的名称,缺省是空的,如果为空,AWStats将拒绝运行;
- 对于统计IIS日志需要多修改一个:
LogFormat=2
缺省值是1:Apache日志,2是IIS日志
其他需要注意的事项:
AWStats缺省不过滤swf文件,会把.swf算成PageView,所以如果站点上swf文件主要是广告的话最好还是要过滤掉:
日志分析
./awstats.pl -update -config=sitename
比如:./awstats.pl -update -config=chedong
统计输出
GNU/Linux http://localhost/cgi-bin/awstats/awstats.pl?config=chedong
Windows 2000 http://localhost/awstats/awstats.chedong.html
日志统计自动运行
GNU/Linux上:crontab -e: 每天8点10分运行
#update awstats
10 8 * * * (cd /path/to/apache/cgi-bin/awstats/; ./awstats.pl -update -config=chedong)
Windows 2000上:设置每天8点10分运行
D:\Perl\bin\perl.exe d:\AWStats\tools\awstats_buildstaticpages.pl -update -config=chedong -lang=cn -dir=c:\inetpub\awstats\ -awstatsprog=d:\awstats\wwwroot\cgi-bin\awstats.pl
多站点日志统计
AWStats自带了一个批处理工具:tools/awstats_updateall.pl,可以批量地遍历一个目录下所有地配置文件并运行统计。因此剩下的工作就主要是日志的同步问题了。
针对多个站点,很多配置选项是重复的,如果每个配置文件都修改维护起来会很麻烦,AWStats从5.4开始提供了配置文件包含的功能,所以我们可以配置一个通用配置,比如:chedong.common.conf
然后其他站点的配置设置为:可以通过后面的选项覆盖和缺省不一致的配置。
awstats.bbs.chedong.conf
Include "chedong.common.conf"
LogFile "/path/to/bbs_log"
SiteName "bbs.chedong.com"
awstats.www.chedong.conf
Include "chedong.common.conf"
LogFile "/path/to/www_log"
SiteName "www.chedong.com"
HostAliases="chedong.com"
统计指标说明
- 参观者:按来访者不重复的IP统计,一个IP代表一个参观者;
- 参观次数:一个参观者可能1天之内参观多次(比如:上午一次,下午一次),所以按一定时间内(比如:1个小时),不重复的IP数统计,参观者的访问次数;
- 网页数:不包括图片,CSS, JavaScript文件等的纯页面访问总数,但如果一个页面使用了多个帧,每个帧都算一个页面请求;
- 文件数:来自浏览器客户端的文件请求总数,包括图片,CSS,JavaScript等,用户请求一个页面是,如果页面中包含图片等,所以对服务器会发出多次文件请求,文件数一般远远大于文件数;
- 字节:传给客户端的数据总流量;
- 来自REFERER中的数据:日志中的参考(REFERER)字段,记录了访问相应网页之前地址,因此如果用户是通过搜索引擎的搜索结果点击进入网站的,日志中就会有用户在相应搜索引擎的查询地址,这个地址中就可以通过解析将用户查询使用的关键词提取出来:
比如:
2003-03-26 15:43:58 123.123.123.123 - GET /index.html 200 192 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) http://www.google.com/search?q=chedong
AWStats在搜索引擎的关键短语和关键词统计方面的功能还是比较完整的:可以对全世界3百多种机器爬虫进行识别,并且可以识别大部分主流国际化搜索引擎和很多地区的本地语言搜索引擎。
Hacking AWStats
IIS按GMT时间的补丁:awstats.pl
IIS的日志时间是格林威治之间,中国本地时间和GMT有+8个小时差距,如果直接用TIMEZONE插件从格林威治时间转换会有40%的性能下降,这里有一个将时间按本地时间修改时间坐标的补丁:
7696d7695
< my $TIME_ZONE = 8;
7698,7702c7697
< my $ix_local = $ix + $TIME_ZONE;
< if ($ix_local >= 24) {
< $ix_local = $ix_local - 24;
< }
< print "<TH width=19>$ix_local</TH>\n"; # width=19 instead of 18 to avoid a MacOS browser bug.
---
> print "<TH width=19>$ix</TH>\n"; # width=19 instead of 18 to avoid a MacOS browser bug.
7708,7712c7703
< my $ix_local = $ix + $TIME_ZONE;
< if ($ix_local >= 24) {
< $ix_local = $ix_local - 24;
< }
< my $hr= $ix_local + 1 ; if ($hr>12) { $hr=$hr-12; }
---
> my $hr=($ix+1); if ($hr>12) { $hr=$hr-12; }
针对中文搜索引擎的补丁:
AWStats的搜索引擎中缺省没有中文搜索引擎的定义,因此会漏掉很多来自国内主流搜速引擎的统计:3721,搜狐,新浪,百度,网易等,以下是针对这些的补丁:cgi-bin/lib/search_engine.pm
58a59,60
> # Minor Chinese search engines
> "baidu\.", "163\.com", "sohu\.","sina\.","3721\.com",
140a143,148
> # Minor Chinese search engines
> "baidu\.","word=",
> "sina\.", "word=",
> "sohu\.","word=",
> "163\.com","q=",
> "3721\.com","name=",
228a237,238
> # Minor Chinese search engines
> "baidu\.","Baidu", "163\.com","NetEase","sina\.","Sina","sohu\.","Sohu","3721\.com","3721",
针对Google的Unicode查询补丁:
因为Google对于Windows 2000上的IE浏览器缺省发送的查询都是UTF-8格式的,而其他搜索引擎大部分使用的是系统本地编码:GB2312,因此需要将查询URI解码后,还要根据是否使用UTF-8进行到GB2312的转码,否则同样的单词会在统计中留有UTF-8和GB2312两条记录。
15,16c15,16
< use Encode;
< use URI::Escape;
---
>
>
5692,5694d5691
< #UTF-8 encoding detection
< my $UnicodeDetected = 0;
< my $SearchQuery = "";
5696,5701d5692
< # Google use: ie=utf-8
< # AllTheWeb use: cs=utf-8
< if ($param eq "ie=utf-8" || $param eq "cs=utf-8") {
< $UnicodeDetected = 1;
< }
<
5704d5694
< $param = uri_unescape($param);
5708,5712c5698,5700
< $param =~ s/^ +//;
< $param =~ s/ +$//;
< $param =~ tr/ /\+/s;
< $param =~ s/\+/ /s;
< $SearchQuery = $param;
---
> $param =~ s/^ +//; $param =~ s/ +$//; $param =~ tr/ /\+/s;
> if ((length $param) > 0) { $_keyphrases{$param}++; }
> last;
5714,5719d5701
<
< }
< #decoding unicode to GBK
< if ( $UnicodeDetected ) {
< $SearchQuery = decode("utf-8", $SearchQuery);
< $SearchQuery = encode("euc-cn", $SearchQuery);
5721,5722d5702
< print "$SearchQuery\n";
< if ((length $SearchQuery) > 0) { $_keyphrases{$SearchQuery}++; }
AWStats本身也包含了很多插件,包括将多个站点的统计再次汇总输出,IIS日志时间转换,URL的标题映射等;
http://awstats.sourceforge.net/awstats_contrib.html
参考资料:
AWStats:
http://awstats.sourceforge.net/
Webalizer:
http://www.webalizer.org/
日志分析工具:
http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Log_Analysis/
商业日志统计/分析工具
http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Log_Analysis/Commercial/
多站点的日志合并统计:
http://www.chedong.com/tech/rotate_merge_log.html
原文出处:<a href="http://www.chedong.com/tech/awstats.html">http://www.chedong.com/tech/awstats.html</a>
<<返回
分享到:
相关推荐
1. AWStats:AWStats是一款广泛使用的开源日志分析软件,其图形界面友好,支持多种操作系统,包括Windows、Unix和Linux。AWStats的优点在于它的报告结构清晰,易于理解,并且支持中文。它能够快速更新,增加对中文...
**awstats-7.2:跨平台日志分析系统的深度解析** AWStats是一款强大的日志分析工具,其版本7.2在业界广受好评。它不仅适用于Windows操作系统,还能够无缝运行在Linux平台上,体现了其高度的兼容性和灵活性。这款...
AWStats是一个功能强大且流行的Web服务器日志分析工具,它可以很好地支持中文,跨平台运行,报告架构逻辑清晰,易读性较强,配置安装较简单,不需要本地编译安装。AWStats的主要优点是使用跨平台的Perl CGI语言,...
此外,awstats支持多种数据库存储统计结果,如MySQL、PostgreSQL,这使得数据的长期保存和跨平台查询成为可能。 在功能上,awstats提供了丰富的报表展示,包括但不限于: 1. **总体统计**:总访问量、独立IP、唯一...
使用grep、awk和sed等命令行工具,可以对日志进行过滤、格式化和搜索,以提高分析效率。 然后,我们讨论Web日志分析。Web服务器如Apache和Nginx会生成详细的访问日志,记录每个HTTP请求的详细信息,包括客户端IP、...
1. **多平台支持**:AWStats不仅可以在Linux环境下运行,还兼容其他Unix-like系统如FreeBSD、OpenBSD以及Windows系统,具备良好的跨平台性。 2. **实时统计**:AWStats能够实时分析服务器日志,无需手动刷新,确保...
AWStats兼容多种服务器环境,包括Apache、IIS、Nginx等,这使得它成为跨平台的通用统计工具。 10. **维护与更新**: 定期更新AWStats至最新版本可以确保持续获取新功能和安全补丁,保持其对现代网络环境的适应性...
- **日志分析**:使用工具如`awstats`或`webalizer`对日志进行统计分析,了解网站流量、访问者信息等。 通过本章的学习,你应该能够掌握Apache服务器的基本操作,包括安装、配置、安全管理和日志分析。这些知识对于...
手册将介绍如何配置日志格式,使用工具如AWStats或Logrotate进行日志分析和管理。 6. **错误处理与调试**:遇到问题时,理解HTTP状态码和错误消息是关键。手册会解释各种错误情况,提供解决策略,并介绍如何使用mod...
- **AWStats**:是一个强大的Web日志分析工具,能够生成详细的统计报告。 - **Webalizer**:另一个常用的日志分析工具,支持多种日志格式。 #### 六、小结 Apache作为最流行的Web服务器之一,在Linux环境下拥有非常...
- **日志工具**:如AWStats、Webalizer等,可以方便地对日志文件进行统计分析,获取有价值的数据。 #### 九、Apache与PHP集成 - **配置文件修改**:在`httpd.conf`中启用PHP模块,设置PHP执行文件路径。 - **测试...
6. **日志分析工具**:如awstats或webalizer,帮助分析服务器日志,了解流量和用户行为。 7. **文档**:包括官方手册、教程、最佳实践和问题解答,帮助用户学习和解决遇到的问题。 通过深入学习和理解这些资源,IT...
5. **日志与监控**:介绍如何配置日志记录,理解访问日志格式,以及使用工具如AWStats进行日志分析和网站监控。 6. **故障排查**:提供常见问题的解决方案,如错误日志解析、配置错误检查、性能瓶颈识别等。 7. **...
6. **日志和监控**:了解如何配置日志文件和使用工具如AWStats或Logrotate进行分析和管理。 7. **故障排查**:当遇到问题时,如何查看错误日志,使用命令行工具诊断问题,以及查阅官方文档和社区资源寻求帮助。 综...
文档还提到了如何部署 AWStats 分析系统,这是一种用于分析 Web 日志的工具,能够帮助管理员更好地了解网站流量和访问情况。部署步骤包括: 1. **安装 AWStats**:确保未安装 httpd 之后,将 AWStats 解包至 `/usr/...
6. **日志和监控**:理解如何配置日志文件格式、使用日志分析工具(如AWStats或Logrotate)以及如何设置警报和监控,对于故障排查和性能分析非常重要。 7. **虚拟主机**:Apache支持在同一台服务器上托管多个网站,...
Perl在某些特定应用如日志分析和小型工具开发中仍表现出色,例如Movable Type和Awstats这两个知名项目就采用了Perl。 PHP,全称Hypertext Preprocessor,是一种嵌入HTML的脚本语言,语法与C和Perl相似,但更简化。...
此外,还可以使用第三方工具(如AWStats或Logwatch)对日志进行分析。 七、与PHP和MySQL的集成 Apache经常与PHP和MySQL一起使用,构建动态的Web应用程序,如WordPress、Drupal和 Joomla等。Apache通过mod_php模块...