赵峰之城-我是做技术的,又没有坏心眼,发不了财,咋办?
前言  预习  配置详解  最近更新  关于 返回 返回中文centOS攻略首页

<基于日志的站点统计系统的构建(Awstats)>(最近更新日:2006/09/13)

前  言

通过我们构建的HTTP服务器将Web发布后,随着不断被访问,Apache会记下每个访客的基本信息。CentOS的情况下,这些信息通常保存在位于/var/log/httpd/下的相应日志文件中。对于一个管理员,养成经常查看日志的习惯是当然的。但Apache单调的日志,除了提供给我们一些最基本的服务器被访信息、以及出错信息之外,我们很难单纯的通过日志文件得到更多、更系统的关于时间、规律性、地点方面的信息。这也使得不少的管理员疏忽或者说懒得去关注日志。

但通过Awstats,我们可以把Apache的日志作为一种有效资源,获得更加系统化的信息。

实质上,Awstats是一套分析系统,它将日志文件统计学式的进行分析与统计,然后提供一个能够反映规律性的界面给我们。Awstats不仅仅用于分析Apache的日志,但在这一节,只介绍在Web服务器中运用Awstats建立统计系统的方法。

下载并安装Awstats

首先下载并安装Awstats。

[root@sample~]#wgethttp://nchc.dl.sourceforge.net/sourceforge/awstats/awstats-6.5-1.noarch.rpm ←下载Awstats的rpm包

--15:34:59--http://nchc.dl.sourceforge.net/sourceforge/awstats/awstats-6.5-1.noarch.rpm
=>`awstats-6.5-1.noarch.rpm'
Resolvingnchc.dl.sourceforge.net...211.79.61.10
Connectingtonchc.dl.sourceforge.net|211.79.61.10|:80...connected.
HTTPrequestsent,awaitingresponse...200OK
Length:1,095,131(1.0M)[text/plain]

100%[====================================>]1,095,131155.28K/sETA00:00

15:35:06(158.94KB/s)-`awstats-6.5-1.noarch.rpm'saved[1095131/1095131]

[root@sample~]#rpm-ivhawstats-6.5-1.noarch.rpm ←安装Awstats

Preparing...###########################################[100%]
1:awstats###########################################[100%]

-----AWStats6.5-LaurentDestailleur-----
AWStatsfileshavebeeninstalledin/usr/local/awstats

Iffirstinstall,followinstructionsindocumentation
(/usr/local/awstats/docs/index.html)tosetupAWStatsin3steps:
Step1:InstallandSetupwithawstats_configure.pl(ormanually)
Step2:Build/UpdateStatisticswithawstats.pl
Step3:ReadStatistics

然后删除安装后的遗留源文件。

[root@sample~]#rm-fawstats-6.5-1.noarch.rpm ←删除安装后的遗留源文件

配置Awstats

接下来对Awstats进行初始配置。

[root@sample~]#/usr/local/awstats/tools/awstats_configure.pl ←运行初始配置脚本

-----AWStatsawstats_configure1.0(build1.6)(c)LaurentDestailleur-----
ThistoolwillhelpyoutoconfigureAWStatstoanalyzestatisticsfor
onewebserver.Youcantrytouseittoletitdoallthatispossible
inAWStatssetup,howeverfollowingthestepbystepmanualsetup
documentation(docs/index.html)isoftenabetteridea.Aboveallif:
-Youarenotanadministratoruser,
-Youwanttoanalyzedownloadedlogfileswithoutwebserver,
-Youwanttoanalyzemailorftplogfilesinsteadofweblogfiles,
-Youneedtoanalyzeloadbalancedserverslogfiles,
-Youwantto'understand'allpossiblewaystouseAWStats...
ReadtheAWStatsdocumentation(docs/index.html).

----->RunningOSdetected:Linux,BSDorUnix
Warning:AWStatsstandarddirectoryonLinuxOSis'/usr/local/awstats'.
Ifyouwanttousestandarddirectory,youshouldfirstmoveallcontent
ofAWStatsdistributionfromcurrentdirectory:
/root
tostandarddirectory:
/usr/local/awstats
Andthen,runconfigure.plfromthislocation.
DoyouwanttocontinuesetupfromthisNONstandarddirectory[yN]?
y ←选择y,同意安装到默认目录下

----->Checkforwebserverinstall

EnterfullconfigfilepathofyourWebserver.
Example:/etc/httpd/httpd.conf
Example:/usr/local/apache2/conf/httpd.conf
Example:c:\Programfiles\apachegroup\apache\conf\httpd.conf
Configfilepath('none'toskipwebserversetup):
>
/etc/httpd/conf/httpd.conf ←指定Apache配置文件所在位置

----->Checkandcompletewebserverconfigfile'/etc/httpd/conf/httpd.conf'
Add'Alias/awstatsclasses"/root/wwwroot/classes/"'
Add'Alias/awstatscss"/root/wwwroot/css/"'
Add'Alias/awstatsicons"/root/wwwroot/icon/"'
Add'ScriptAlias/awstats/"/root/wwwroot/cgi-bin/"'
Add'<Directory>'directive
AWStatsdirectivesaddedtoApacheconfigfile.

----->Updatemodelconfigfile'/etc/awstats/awstats.model.conf'
Fileawstats.model.confupdated.

----->Needtocreateanewconfigfile?
DoyouwantmetobuildanewAWStatsconfig/profile
file(requirediffirstinstall)[y/N]?
y ←选择y,同意创建一个新的对象配置文件

----->Defineconfigfilenametocreate
Whatisthenameofyourwebsiteorprofileanalysis?
Example:www.mysite.com
Example:demo
Yourwebsite,virtualserverorprofilename:
>
www.centospub.com ←为统计对象创建代号(推荐以网站URL作为代号)

----->Defineconfigfilepath
Inwhichdirectorydoyouplantostoreyourconfigfile(s)?
Default:/etc/awstats
Directorypathtostoreconfigfile(s)(Enterfordefault):
>
 ←直接按回车,接受将Awstats的配置文件置于/etc/awstats下

----->Createconfigfile'/etc/awstats/awstats.www.centospub.com.conf'
Configfile/etc/awstats/awstats.www.centospub.com.confcreated.

----->RestartWebserverwith'/sbin/servicehttpdrestart' ←HTTP服务重新启动

Stoppinghttpd:              [OK]
Startinghttpd:              [OK]

----->Addupdateprocessinsideascheduler
Sorry,configure.pldoesnotsupportautomaticaddtocronyet.
Youcandoitmanuallybyaddingthefollowingcommandtoyourcron:
/root/wwwroot/cgi-bin/awstats.pl-update-config=www.centospub.com
Orifyouhaveseveralconfigfilesandpreferhavingonlyonecommand:
/root/tools/awstats_updateall.plnow
PressENTERtocontinue...
 ←按回车继续进行配置

ASIMPLEconfigfilehasbeencreated:/etc/awstats/awstats.www.centospub.com.conf
Youshouldhavealookinsidetocheckandchangemanuallymainparameters.
Youcanthenmanuallyupdateyourstatisticsfor'www.centospub.com'withcommand:
>perlawstats.pl-update-config=www.centospub.com
Youcanalsoreadyourstatisticsfor'www.centospub.com'withURL:
>http://localhost/awstats/awstats.pl?config=www.centospub.com

PressENTERtofinish... ←按回车结束初始配置

然后对刚刚创建的对象配置文件进行配置。

[root@sample~]#vi/etc/awstats/awstats.www.centospub.com.conf ←修改对象配置文件(文件名与上一步初始配置中设置的域名对应)

LogFile="/var/log/httpd/mylog.log" ←找到这一行,修改日至文件所在位置(指定Apache的日志文件)
 ↓
LogFile="/var/log/httpd/access_log"←变为此状态

DirData="/var/lib/awstats" ←找到这一行,更改Awstats数据的保存位置

DirData="." ←变为此状态,让数据与awstats.pl脚本在同目录下

Lang="auto" ←找到这一行,将auto改为cn
 ↓
Lang="cn"←变为此状态,让语言默认为中文

SkipHosts="" ←找到这一行,在""之间添加无效访问规则

SkipHosts="127.0.0.1REGEX[^192\.168\.]"←变为此状态,本地及内部的访问不做分析统计

LevelForWormsDetection=0 ←找到这一行,将0改为2

LevelForWormsDetection=2 ←变为此状态,将来自Worm的访问也不做分析统计

接下来,再对httpd.conf中面向Awstats的部分进行必要设置。

[root@sample~]#vi/etc/httpd/conf/httpd.conf ←编辑Apache的配置文件

#
#DirectivestoallowuseofAWStatsasaCGI
#

----------------------------------------------------
Alias/awstatsclasses"/root/wwwroot/classes/"
Alias/awstatscss"/root/wwwroot/css/"
Alias/awstatsicons"/root/wwwroot/icon/"
ScriptAlias/awstats/"/root/wwwroot/cgi-bin/"
----------------------------------------------------


找到以上水平线间的语句群,对相应路径进行正确修改。变为下面水平线间状态:

----------------------------------------------------
Alias/awstatsclasses"
/usr/local/awstats/wwwroot/classes/"
Alias/awstatscss"
/usr/local/awstats/wwwroot/css/"
Alias/awstatsicons"
/usr/local/awstats/wwwroot/icon/"
ScriptAlias/awstats/"
/usr/local/awstats/wwwroot/cgi-bin/"
----------------------------------------------------


#
#ThisistopermitURLaccesstoscripts/filesinAWStatsdirectory.
#

<Directory"/root/wwwroot"> ←找到这一行,对相应路径进行正确修改

<Directory"/usr/local/awstats/wwwroot"> ←变为此状态

然后,重新启动HTTP服务,使新的设置生效。

[root@sample~]#/etc/rc.d/init.d/httpdrestart ←重新启动HTTP服务,使设置生效

Stoppinghttpd:              [OK]
Startinghttpd:[
OK]

对日志进行分析统计

配置完毕后,我们可以通过各种适用于自己的方式,定义统计的方式以及输出的结果。在这里,介绍最简单,也是最广泛的统计方法,如下:

[root@sample~]#vi/root/awstats.sh ←建立统计用脚本如下:

#!/bin/bash
/usr/local/awstats/wwwroot/cgi-bin/awstats.pl-update-config=
www.centospub.com
(以上紫色字体部分的域名请根据实际情况设置)

[root@sample~]#chmod700/root/awstats.sh←赋予脚本可被执行的属性

[root@sample~]#/root/awstats.sh←运行脚本,开始进行统计(如日志量比较大的话,要花一段时间)

Updateforconfig"/etc/awstats/awstats.www.centospub.com.conf"
Withdatainlogfile"/var/log/httpd/access_log"...
Phase1:Firstbypassoldrecords,searchingnewrecord...
Searchingnewrecordsfrombeginningoflogfile...
Phase2:Nowprocessnewrecords(Flushhistoryondiskafter20000hosts)...
Jumpedlinesinfile:0
Parsedlinesinfile:55
Found52droppedrecords,
Found0corruptedrecords,
Found0oldrecords,
Found3newqualifiedrecords.

然后在客户端的浏览器上访问http://服务器IP地址(或你的域名)/awstats/awstats.pl?config=www.centospub.com即可看到详细的分析统计资料,如下图:



定制统计分析规则及相应外观设置

[1]完成以上配置,我们已经可以通过客户端的浏览器,掌握Web服务器的访问量、来路等等详细的信息,但由于Awstats的统计是基于Apache日志的,我们必须通过awstats.pl对当前最新的日志文件进行统计才能得到最新的统计结果。也就是说,在我们运行自行创建的awstats.sh脚本之前,当前在客户端能够看到的统计分析结果,只是上一次运行awstats.sh脚本时统计的结果。想得到最新的统计结果,必须再次运行awstats.sh。在这里,我们将其设置为每天定时自动运行,以便于每天都能查看到最新的信息。如下:

[root@sample~]#crontab-e ←对定期任务执行时间表进行编辑,添加如下一行:

0000***/root/awstats.sh←添加此行到其中,让统计分析在每天0点更新

(以上操作方法与vi编辑器相同)

[2]在一些情况,可能并不希望外界看到日志统计分析的结果。对此,我们可以为Apache添加面向于Awstats的访问限制,如下:

[root@sample~]#vi/etc/httpd/conf.d/awstats.conf ←创建面向于Awstats的配置文件

<Files"awstats.pl">
AllowOverrideNone
Orderdeny,allow
Denyfromall
Allowfrom192.168.0 
←只允许局域网内访问
</Files>



[root@sample~]#/etc/rc.d/init.d/httpdrestart ←重新启动HTTP服务,使设置生效

Stoppinghttpd:[
OK]
Startinghttpd:[
OK]


[3]用Firefox浏览分析结果时,字体会显得很难看(因为Firefox和IE识别11px字体不一样),所以用Firefox浏览器的情况,可以通过修改awstats.pl输出css的相关字体尺寸进行修改,而达到用Firefox浏览时也和IE一样能够正确显示出适当尺寸的字体。方法就是直接编辑"/usr/local/awstats/wwwroot/cgi-bin/awstats.pl",将文件中所有“11px”的地方都替换为“12px。

<<<返回顶端