AWStats是一款强大的日志分析工具,可以从你保存的服务器日志中分析出类似51.la统计的信息,当然,他的功能可不仅仅是web服务器的日志分析,还可以分析其他服务器比如mail服务器的日志呢。
awstats的官方安装说明繁琐了一些,其实没那么复杂的,也就下面几步。我使用的环境为ubuntu linux,apache2。
首先是awstats的安装,ubuntu直接apt就能装上了,也有用源码包或者源代码安装的,不过其实只是一些文件和perl程序而已,不用编译,放到合适的位置就可以了。/usr/share/awstats是一些语言文件、图标文件、库和插件,/etc/awstats下面是配置文件,核心程序awstats.pl放在/usr/lib/cgi-bin目录下,也就是常用的cgi程序目录,并且设置可执行权限。
然后就要对apache进行一番配置了,首先强烈建议把日志类型从默认的common更改为combined,这样日志文件会记录更详细的信息,便于分析:
CustomLog /var/log/apache2/access.log combined
如果服务器有多个虚拟主机的话,一般建议每个虚拟主机的log文件分别存放,不过awstats也能处理混合在一起的log,前提是需要使用自定义log格式,并且把在log中记录主机名,比较麻烦,不建议使用。iis系列的设定还是参照官方安装说明吧,我不熟悉。下面来设置apache,配置web访问相关的设置,根据我的环境,apache的conf中添加如下内容即可:
Alias /awstatsicons “/usr/share/awstats/icon”
ScriptAlias /cgi-bin /usr/lib/cgi-bin
RewriteRule ^/awstats[/]? /cgi-bin/awstats.pl [R]
<Directory “/usr/lib/cgi-bin”>
Options +ExecCGI
</Directory>
加上那句RewriteRule我只是为了访问更方便,以前几乎没有用过cgi程序,习惯http://domain.com/awstats这样的网址了。对apache的更改其实就是cgi运行环境的设定而已。
最后,我们还要针对要统计日志的每个网站,创建配置文档。/etc/awstats/awstats.conf是默认的配置文档模板,里面所有的选项都有详细说明和例子,所以只给出我的一个配置实例(awstats.localhost.conf):
# Basic
# —–
# 要分析的log文件地址
LogFile=”/var/log/apache2/access.log”
# W – web log file
LogType=W
# Log format, 1-combined, 4-common
LogFormat=1
# Separator char in log file, default is ” ”
LogSeparator=” ”
# 主机名和别名
SiteDomain=”localhost”
HostAliases=”127.0.0.1″
# DNS Lookup, 0-no, 1-full, 2-only from static dns cache
DNSLookup=2
# 结果数据存放地点
DirData=”/big2/awstats_data/localhost”
# AWStats web-access url
DirCgi=”/cgi-bin”
# 图标文件的apache虚拟目录
DirIcons=”/awstatsicons”
# Allow update state from web interface, 1 to enable
AllowToUpdateStatsFromBrowser=1
# Allow full-year view function
AllowFullYearView=3
# Optinal
# ——-
# Create a lock file when update stats result, not open when no shell priv
EnableLockForupdate=1
# Static DNS file
DNSStaticCacheFile=”/big2/awstats_data/dnscache.txt”
# 只能从以下ip地址访问
AllowAccessFromWebToFollowingIPAddresses=”127.0.0.1″
# Xhtml report file instead of html
BuildReportFormat=xhtml
# Purge log file after use
PurgeLogFile=0
# Pic, file only marked hit and not download
NotPageList=”css js class gif jpg jpeg png bmp ico swf”
# Include url parameters, but count only some param
URLWithQuery=1
URLWithQueryWithOnlyFollowingParameters=””
# Keep param in referrer urls
URLReferrerWithQuery=1
# Show problems in setup conf file
WarningMessages=1
# Use frame
UseFramesWhenCGI=1
# Open report in new window,0-no, 1-except using frame, 2-always
DetailedReportsOnNewWindows=1
# Show language change link
ShowFlagLinks=”en cn”
常用的配置项应该就这么多,稍微重要一点的我都用中文注释上了,注意要确定log文件和储存结果的文件存在并且能够被apache用户www-data访问,配置到这里就基本上结束了,现在打开浏览器,http://localhost/awatats就可以访问了,当然默认是没有数据的,因为还没有进行分析,如果设置了相应的选项,可以从web页面直接下达更新指令,也可以使用如下命令更新:
perl /usr/lib/cgi-bin/awstats.pl -config=localhost -update
分析完成的结果就可以通过web页面观看了。
在实际应用当中,如果apache日志是不截断的,也就是说所有时间的日志都保存在access.log文件当中,虽然awstats能够自动辨识上次处理的进度,只处理新产生的那一部分日志,但堆一个大文件在这里还是会有些不方便,所以建议把apache日志截断,linux下可以直接把access.log改名,windows下则需要改名并重启apache,不然apache会很聪明的把日志写到改名以后的文件中。这样我们的log文件名中就带有日期了,在conf文件中可以这样指定:
LogFile=”/var/log/apache2/access.%YYYY-24%MM-24%DD-24.log”
在这个例子中,我的log文件名类似access.20070206.log的模式,并且把awstats.pl放到cron中,每天都自动处理前一天的日志,所以用“%YYYY-24%MM-24%DD-24”来指定24小时以前日期的年、月、日,只要7号的某个时间执行更新脚本,得到的日期就肯定是6号了。
LogFile理论上还可以识别多个log文件和gz格式的log文件,不过我也不知道怎么写才合适,只有请教过路大侠了。
参考:
Configuring Awstats with Apache 2 on Ubuntu
我也遇见了这样的问题。
LogFile理论上还可以识别多个log文件和gz格式的log文件,不过我也不知道怎么写才合适,只有请教过路大侠了。
从百度找了好几遍文章都没有搜索到如何更新指定日期的统计数据,貌似freebsd的自动更新有问题