一、前言
二、awstats 简介
三、awstats 特点
四、awstats 运行原理
五、awstats 安装与配置详解
六、awstats 执行日志分析
七、awstats 进行多站点日志分析
八、awstats 问题汇总
IP 地址国家、区域显示问题
中文乱码问题
九、awstats 总结
注,操作系统 CentOS 6.4 x86_64,软件版本 awstats 7.2(稳定版),软件下载 http://sourceforge.net/projects/awstats/ 。
一、前言
在上一篇博客中我们讲解了日志切割工具cronolog,若有不清楚有博友可以先参考上一篇博客http://freeloda.blog.51cto.com/2033581/1346076,在这一篇博客中我们主要来讲解日志分析工具awstats,下面我们就和大家来详细的说一说。
二、awstats 简介
AWStats is a free powerful and featureful server logfile analyzer that shows you all your Web/Mail/FTP statistics including visits, unique visitors, pages, hits, rush hours, os, browsers, search engines, keywords, robots visits, broken links and more Drag screenshots to sort.
AWStats 软件是一个免费的强大的服务器的日志文件分析工具,显示你所有的网页/邮件/ FTP统计包括访问,访问者,页面,点击,高峰时间,操作系统,浏览器,搜索引擎,关键字,机器人访问,断开的链接和更多的阻力截图排序。
三、awstats 特点
Awstats 是在 SourceForge 上发展很快的一个基于 Perl 的 WEB 日志分析工具,一个充分的日志分析让 Awstats 显示您下列资料:
访问次数、独特访客人数,
访问时间和上次访问,
使用者认证、最近认证的访问,
每周的高峰时间(页数,点击率,每小时和一周的千字节),
域名/国家的主机访客(页数,点击率,字节,269域名/国家检测, geoip 检测),
主机名单,最近访问和未解析的 IP 地址名单
大多数看过的进出页面,
档案类型,
网站压缩统计表(mod_gzip 或者 mod_deflate),
使用的操作系统 (每个操作系统的页数,点击率 ,字节, 35 OS detected),
使用的浏览器,
机器人访问(检测 319 个机器人),
蠕虫*** (5 个蠕虫家族),
搜索引擎,利用关键词检索找到你的地址,
HTTP 协议错误(最近查阅没有找到的页面),
其他基于 URL 的个性报导,链接参数, 涉及综合行销领域目的.
贵网站被加入"最喜爱的书签".次数.
屏幕大小(需要在索引页补充一些 HTML 标签).
浏览器的支持比例: Java, Flash, RealG2 reader, Quicktime reader, WMA reader, PDF reader.
负载平衡服务器比率集群报告.
Awstats 的运行是需要 PERL 环境的支持,从 awstats 的文档来看,它对 Apache HTTP Server 的支持是非常完美的,而当我们把 Web 服务器换成 Nginx 后,要运行 awstats 变得很麻烦。首先 Nginx 本身对 Perl 的支持是比较弱的,甚至官方也不建议使用;另外在日志格式上有需要修改后才能运行。
四、awstats 运行原理
(1).工作原理
AWStats的功能很多,我在此主要用它来分析apache服务器的日志。安装使用之前还是说说大致的工作原理,AWStats提供一系列的perl脚本实现:服务配置,日志读取,报表生成等功能。而功能实现的具体执行过程是:首先,当然是apache将访问情况记录到日志中,AWStats每次执行更新时读取这些日志,分析日志数据,将结果存储到数据库中,(这个数据库是AWStats自带的(就是一文本文件),并不需要第三方软件支持。),最后AWStats提供一个cgi程序通过web页面来显示数据库中所统计的数据。
(2).工作模式
AWStats的工作模式是这样的:
分析日志:运行后将这样的日志统计结果归档到一个AWStats的数据库(纯文本)里;
输出日志:分两种形式
一种是通过cgi程序读取统计结果数据库输出(Linux中);
一种是运行后台脚本将输出导出成静态文件(Windows中);
五、awstats 安装与配置详解
1.环境准备
(1).安装yum源
[root@node6 src]# wget http://ftp.sjtu.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm [root@node6 src]# rpm -ivh epel-release-6-8.noarch.rpm warning: epel-release-6-8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Preparing... ########################################### [100%] 1:epel-release ########################################### [100%]
(2).安装cronolog日志切割工具
[root@node6 src]# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz [root@node6 src]# tar xf cronolog-1.6.2.tar.gz [root@node6 src]# cd cronolog-1.6.2 [root@node6 cronolog-1.6.2]# ./configure [root@node6 cronolog-1.6.2]# make && make install [root@localhost ~]# which cronolog /usr/local/sbin/cronolog
2.时间同步
[root@node6 src]# yum install -y ntp [root@node6 src]# ntpdate 202.120.2.101 28 Dec 17:59:17 ntpdate[1413]: step time server 202.120.2.101 offset -25666.776448 sec
3.安装awstats
(1).yum直接安装
[root@node6 ~]# yum install -y awstats
(2).源码包安装
首先,我们要下载awstats软件包,并将其放在常规目录(/usr/local)下。
[root@node6 src]# wget http://jaist.dl.sourceforge.net/project/awstats/AWStats/7.2/awstats-7.2.tar.gz [root@node6 src]# tar xf awstats-7.2.tar.gz [root@node6 src]# mv awstats-7.2 /usr/local/awstats [root@node6 src]# cd /usr/local/awstats [root@node6 awstats]# ls docs README.TXT tools wwwroot
注,由于wget下载下来的包中权限是非root的,所以这里要修改权限,否则稍后*.pl将无法运行。
[root@node6 awstats]# chown -R root.root /usr/local/awstats [root@node6 awstats]# ll 总用量 20 drwx------. 4 root root 4096 7月 10 04:01 docs -rw-------. 1 root root 6790 7月 10 03:50 README.TXT drwx------. 5 root root 4096 7月 10 04:01 tools drwx------. 7 root root 4096 7月 10 04:01 wwwroot [root@node6 awstats]# chmod +x /usr/local/awstats/tools/*.pl [root@node6 awstats]# cd tools/ [root@node6 tools]# ls awstats_buildstaticpages.pl awstats_exportlib.pl geoip_generator.pl logresolvemerge.pl nginx webmin awstats_configure.pl awstats_updateall.pl httpd_conf maillogconvert.pl urlaliasbuilder.pl xslt [root@node6 tools]# chmod +x /usr/local/awstats/wwwroot/cgi-bin/*.pl [root@node6 tools]# cd .. [root@node6 awstats]# cd wwwroot/cgi-bin/ [root@node6 cgi-bin]# ls awdownloadcsv.pl awredir.pl awstats.model.conf awstats.pl lang lib plugins
(3).接下来,我们要执行/usr/local/awstats/tools下的awstats_configure.pl配置向导,用来生成awstats的配置文件,awstats配置文件的命名规则是awstats.website.conf。
[root@node6 ~]# cd /usr/local/awstats/tools/ [root@node6 tools]# ./awstats_configure.pl 此时会出现如下提示, ----- AWStats awstats_configure 1.0 (build 1.9) (c) Laurent Destailleur ----- This tool will help you to configure AWStats to analyze statistics for one web server. You can try to use it to let it do all that is possible in AWStats setup, however following the step by step manual setup documentation (docs/index.html) is often a better idea. Above all if: - You are not an administrator user, - You want to analyze downloaded log files without web server, - You want to analyze mail or ftp log files instead of web log files, - You need to analyze load balanced servers log files, - You want to 'understand' all possible ways to use AWStats... Read the AWStats documentation (docs/index.html). -----> Running OS detected: Linux, BSD or Unix -----> Check for web server install Enter full config file path of your Web server. Example: /etc/httpd/httpd.conf Example: /usr/local/apache2/conf/httpd.conf Example: c:\Program files\apache group\apache\conf\httpd.conf Config file path ('none' to skip web server setup): > /usr/local/apache2/conf/httpd.conf #这里让你输入apache配置文件的目录,我这里的apache是源码安装的,所以我的路径是/usr/local/apache2/conf/httpd.conf Your web server config file(s) could not be found. You will need to setup your web server manually to declare AWStats script as a CGI, if you want to build reports dynamically. See AWStats setup documentation (file docs/index.html) -----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf' File awstats.model.conf updated. -----> Need to create a new config file ? Do you want me to build a new AWStats config/profile file (required if first install) [y/N] ? y #询问是否创建一个新的配置文件,这里填y即可。 -----> Define config file name to create What is the name of your web site or profile analysis ? Example: www.mysite.com Example: demo Your web site, virtual server or profile name: > www.test.com #这里让填写你的网站域名,虚拟主机名或者随便一个配置名。 -----> Define config file path In which directory do you plan to store your config file(s) ? Default: /etc/awstats Directory path to store config file(s) (Enter for default): > #这里要填写你配置文件存放路径,我们使用它默认的路径/etc/awstats,所以直接回车即可。 -----> Create config file '/etc/awstats/awstats.www.test.com.conf' Config file /etc/awstats/awstats.www.test.com.conf created. -----> Add update process inside a scheduler Sorry, configure.pl does not support automatic add to cron yet. You can do it manually by adding the following command to your cron: /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.test.com Or if you have several config files and prefer having only one command: /usr/local/awstats/tools/awstats_updateall.pl now Press ENTER to continue... #提示不能自动加入crontab定时任务,需要稍后自己添加,我们按回车继续即可。 A SIMPLE config file has been created: /etc/awstats/awstats.www.test.com.conf You should have a look inside to check and change manually main parameters. You can then manually update your statistics for 'www.test.com' with command: > perl awstats.pl -update -config=www.test.com You can also build static report pages for 'www.test.com' with command: > perl awstats.pl -output=pagetype -config=www.test.com Press ENTER to finish... #提示配置文件创建完成和如何更新配置及建立静态报告页,这里我们回车即可结束这个配置向导。
(4).结束这个向导以后,我们对www.test.com站点的awstats配置文件已经配置好了。下面我们来查看并修改一下这个配置文件。
[root@node6 tools]# cd /etc/awstats/ [root@node6 awstats]# ls awstats.www.test.com.conf [root@node6 awstats]# vim awstats.www.test.com.conf #这个配置文件有很多配置,我们这里只讲解重点配置。 LogFile="/log/www/access_%YYYY-24%MM-24%DD-24.log" #日志文件存放路径,其中%YYYY-24%MM-24%DD是指年月日模式 DirData="/var/lib/awstats" #创建生成的数据路径 Lang="cn" #默认语言中文 SkipHosts="127.0.0.1 REGEX[^192\.168\.]" #本地及内部的访问不做分析统计 LevelForWormsDetection=2 #日志等级,不对警告日志进行统计
好了,到这里我们awstats配置文件就修改完成。
(5).下面我们来修改一下apache配置文件
[root@node6 www]# vim /usr/local/apache2/conf/httpd.conf #CustomLog logs/access_log combined CustomLog "|/usr/local/sbin/cronolog /log/www/access_%Y%m%d.log" combined
(6).新建apache日志目录
[root@node6 ~]# mkdir -pv /log/www/ mkdir: 已创建目录 "/log" mkdir: 已创建目录 "/log/www/" [root@node6 ~]# cd /log/www/ [root@node6 www]# chmod -R 755 /log/www/ [root@node6 www]# chown -R daemon /log/www/
(7).重新启动apache服务器
[root@node6 www]# /usr/local/apache2/bin/apachectl restart
(8).创建awstats的数据存放目录
[root@node6 www]# mkdir -pv /var/lib/awstats [root@node6 www]# chmod 755 /var/lib/awstats
好了,到这里我们的awstats配置就全部完成了,下面我们来执行一下日志分析。
六、awstats 执行日志分析
在上面的我们讲解了awstats的yum安装与源码安装,同时配置了一个监控实例,下面我们就执行一下这个监控实例www.test.com。
1.现在我们需要用awstats来生成对apache日志的统计分析信息。由于我们用的awstats是支持perl的FCGI动态化访问页面,所以此处我们只需要直接更新数据库即可。FCGI程序会自动将数据库以动态页面的形式展现出来,无须再手动生成静态页面了。
[root@node6 ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.test.com Create/Update database for config "/etc/awstats/awstats.www.test.com.conf" by AWStats version 7.2 (build 1.992) From data in log file "/log/www/access_20131228.log"... Phase 1 : First bypass old records, searching new record... Direct access to last remembered record has fallen on another record. So searching new records from beginning of log file... Phase 2 : Now process new records (Flush history on disk after 20000 hosts)... Jumped lines in file: 0 Parsed lines in file: 155446 Found 8 dropped records, Found 0 comments, Found 0 blank records, Found 1 corrupted records, Found 0 old records, Found 155437 new qualified records.
2.查看一下awstats数据库文件
[root@web ~]# cd /var/lib/awstats/ [root@web awstats]# ls awstats122013.www.test.com.txt
3.接下来我们来查看一下分析结果
注,如果,你顺利的执行了上面的所有操作。那么OK,现在你已经可以通过访问:http://www.test.com/awstats/awstats.pl?config=www.test.com ,效果如下图:
好了,到这里awstats工具对一个站点的监控(我们这里是www.test.com站点,博友可以根据自己的实际情况进行自定义)就全部配置完成了,下面我们来演示一下awstats工具怎么对多个Web站点进行监控。
七、awstats 进行多站点日志分析
1.站点说明
www.test.com (主站点)
club.test.com (论坛)
2.配置多站点监控
注,配置club.test.com的配置文件,步骤和上面www.test.com一样,只是在域名的地方做更改即可。下面我们就再来演示一下,
[root@node6 ~]# cd /usr/local/awstats/tools/ [root@node6 tools]# ./awstats_configure.pl 此时会出现如下提示, ----- AWStats awstats_configure 1.0 (build 1.9) (c) Laurent Destailleur ----- This tool will help you to configure AWStats to analyze statistics for one web server. You can try to use it to let it do all that is possible in AWStats setup, however following the step by step manual setup documentation (docs/index.html) is often a better idea. Above all if: - You are not an administrator user, - You want to analyze downloaded log files without web server, - You want to analyze mail or ftp log files instead of web log files, - You need to analyze load balanced servers log files, - You want to 'understand' all possible ways to use AWStats... Read the AWStats documentation (docs/index.html). -----> Running OS detected: Linux, BSD or Unix -----> Check for web server install Enter full config file path of your Web server. Example: /etc/httpd/httpd.conf Example: /usr/local/apache2/conf/httpd.conf Example: c:\Program files\apache group\apache\conf\httpd.conf Config file path ('none' to skip web server setup): > /usr/local/apache2/conf/httpd.conf Your web server config file(s) could not be found. You will need to setup your web server manually to declare AWStats script as a CGI, if you want to build reports dynamically. See AWStats setup documentation (file docs/index.html) -----> Update model config file '/usr/local/awstats/wwwroot/cgi-bin/awstats.model.conf' File awstats.model.conf updated. -----> Need to create a new config file ? Do you want me to build a new AWStats config/profile file (required if first install) [y/N] ? y -----> Define config file name to create What is the name of your web site or profile analysis ? Example: www.mysite.com Example: demo Your web site, virtual server or profile name: > club.test.com #我们这里配置域名就是club.test.com,其它地方与www.test.com没有什么不同。 -----> Define config file path In which directory do you plan to store your config file(s) ? Default: /etc/awstats Directory path to store config file(s) (Enter for default): > #这里要填写你配置文件存放路径,我们使用它默认的路径/etc/awstats,所以直接回车即可。 -----> Create config file '/etc/awstats/awstats.www.test.com.conf' Config file /etc/awstats/awstats.www.test.com.conf created. -----> Add update process inside a scheduler Sorry, configure.pl does not support automatic add to cron yet. You can do it manually by adding the following command to your cron: /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.test.com Or if you have several config files and prefer having only one command: /usr/local/awstats/tools/awstats_updateall.pl now Press ENTER to continue... #提示不能自动加入crontab定时任务,需要稍后自己添加,我们按回车继续即可。 A SIMPLE config file has been created: /etc/awstats/awstats.www.test.com.conf You should have a look inside to check and change manually main parameters. You can then manually update your statistics for 'www.test.com' with command: > perl awstats.pl -update -config=www.test.com You can also build static report pages for 'www.test.com' with command: > perl awstats.pl -output=pagetype -config=www.test.com Press ENTER to finish... #提示配置文件创建完成和如何更新配置及建立静态报告页,这里我们回车即可结束这个配置向导。
好了,下面我们看一下我们生成的配置文件。
3.查看一下生成的配置文件
[root@node6 ~]# cd /etc/awstats/ [root@node6 awstats]# ls awstats.club.test.com.conf awstats.www.test.com.conf
好了,下面步骤和上面www.test.com配置步骤一样,我这里就不重复说明。下面我们说一下,在使用awstats工具过程中出现的一些小问题。
八、awstats 问题汇总
1.IP 地址国家、区域显示问题
Awstats默认安装之后是不具有识别访问者的国家和地区信息的,所以需要安装插件支持Awstats列出访问者的国家和地区,便于分析GeoIP免费的是国家/IP的数据表,GeoIPCityLite是地区的数据表。
(1).MaxMind目前免费提供了GeoIP和GeoIPCityLite数据包:可以定期每个月从以下地址下载
[root@node6 src]# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz [root@node6 src]# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz [root@node6 src]# ls GeoIP.dat.gz GeoLiteCity.dat.gz
注,下载下来用gunzip解压即可。
[root@node6 src]# gunzip GeoIP.dat.gz [root@node6 src]# gunzip GeoLiteCity.dat.gz [root@node6 src]# ls GeoIP.dat GeoLiteCity.dat
(2).新建的目录,把两个文件移入新建的目录
[root@node6 src]# mkdir /var/geoip [root@node6 src]# mv GeoIP.dat GeoLiteCity.dat /var/geoip
(3).安装GeoIP与GeoIP perl库
[root@node6 src]# yum install –y GeoIP perl-Geo-IP
(4).修改awstats配置文件
[root@node6 ~]# vim /etc/awstats/awstats.www.test.com.conf #LoadPlugin="geoip GEOIP_STANDARD /pathto/GeoIP.dat" #1429行 #LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /pathto/GeoIPCity.dat" #1438行 修改为: LoadPlugin="geoip GEOIP_STANDARD /var/geoip/GeoIP.dat" LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /var/geoip/GeoLiteCity.dat"
(5).删除旧的统计数据库
[root@node6 ~]# rm -rf /var/lib/awstats/*
(6).重新生成一下数据库
[root@node6 ~]# /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.test.com
(7).我们再次查看一下造成的分析结果
好了,到这里我们的IP 地址国家、区域显示问题解析,下面我们来解决一下中文乱码问题。
2.中文乱码问题
Awstats是一套非常好用的免费的日志分析软件,他是用perl实现的,支持web log、ftp log和mail log;而且它还能自动根据你浏览器的字符设置来选取语言(支持中文)。但是缺省安装的话有个问题,就是用来搜索的关键字如果是中文的话显示出来是乱码的。 之所以搜索的关键字句会变成乱码的原因,主要是因为现在的搜索引擎都是使用UTF8,而Awstats是使用decodeUTFkeys这个plugin来处理搜索引擎的UTF8关键字,默认是没有打开的,所以在显示上会出现乱码。要解决中文乱码问题,方法也很简单,
在配置文件中把decodeutfkeys这个plugin打开就可以了。在配置文件中找到:
#LoadPlugin="decodeutfkeys"
去掉前面的#就可以了。
[root@node6 ~]# vim /etc/awstats/awstats.www.test.com.conf #LoadPlugin="decodeutfkeys" #1300 行 LoadPlugin="decodeutfkeys"
好了,下面我们来重新访问一下,效果图如下:
这样我们的中文就显示完成了,但是打开LoadPlugin="decodeutfkeys"这个插件在一些机器上会报错,下面我们来演示一下报错的情况。
从上面的报错可以看出这是缺少 Perl 的 URI:Escape模块,下面我们解决一下这个问题:
[root@node6 src]# wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/URI-1.60.tar.gz [root@node6 src]# tar xf URI-1.60.tar.gz [root@node6 src]# cd URI-1.60 [root@node6 src]# perl Makefile.PL [root@node6 src]# make && make install
下面我们再重新访问一下,效果图如下:
好了,到这里我们的awstats中文乱码问题就解决了。下面我们来总结一下awstats日志分析工具!
九、awstats 总结 (来自于百度百科)
AWStats是在Sourceforge上发展很快的一个基于Perl的WEB日志分析工具。相对于另外一个非常优秀的开放源代码的日志分析工具Webalizer,AWStats的优势在于:
1.界面友好:可以根据浏览器直接调用相应语言界面(有简体中文版)
2.基于Perl:并且很好的解决了跨平台问题,系统本身可以运行在GNU/Linux上或Windows上(安装了ActivePerl后);分析的日志直接支持Apache格式 (combined)和IIS格式(需要修改)。Webalizer虽然也有Windows平台版,但目前已经缺乏 维护;AWStats完全可以实现用一套系统完成对自身站点不同WEB服务器:GNU/Linux/Apache和Windows/IIS服务器的统一统计。
3.效率比较高:AWStats输出统计项目比Webalizer丰富了很多,速度仍可以达到Webalizer的1/3左右,对于一个日访问量 百万级的站点,这个速度都是足够的;
4.配置/定制方便:系统提供了足够灵活但缺省也很合理的配置规则,需要修改的缺省配置不超过3,4项就可以开始运行,而且修改和扩展的插件还是 比较多的;
5.AWStats的设计者是面向精确的"Human visits"设计的,因此很多搜索引擎的机器人访问都被过滤掉了,因此有可能比其他日志统计工具统计的数字要低,来自公司内部的访问也可以通过IP过滤 设置过滤掉。
6.提供了很多扩展的参数统计功能:使用ExtraXXXX系列配置生成针对具体应用的参数分析会对产品分析非常有用。
AWStats 是一个免费的强大而有个性的工具,带来先进的网络,流量,FTP或邮件服务器统计图. 本日志分析器作为CGI或从命令行在数个图形网页中显示你日志中包含的所有可能信息. 它利用一部分档案资料就能经常很快地处理大量日志档案, 它能分析日志文件来自从各大服务器工具 ,如 Apache日志档案 s (NCSA combined/XLF/ELF log format or common/CLF log format), WebStar, IIS (W3C的日志格式)及许多其他网站,Proxy(代理服务器)、Wap、流量服务器、邮件服务器和一些 FTP服务器。
看一看这个比较表在最著名统计工具 (AWStats, Analog, Webalizer,...)之间有何特点和不同的想法。AWStats 是一个在GNU通用公共许可证下发行的免费软件. 你可以看看这个许可证图表而知道你可以/不可以做。由于AWStats工程来自网上信息,但也作为CGI、 它可以与允许进入Perl、CGI与日志的大型网站主办提供商一起工作。
好了,今天的博客就到这里吧,最后希望大家有所收获^_^……