Do My Space, Do My Life!

统计分析Web服务器日志

上一篇 / 下一篇  2007-01-08 13:44:38 / 个人分类:我的工作

随着Internet上Web服务的发展,几乎各个政府部门、公司、大专院校、科研院所等都在打算构建或正在建设自己的网站。在这个过程中,大家会遇到各种各样的问题。对Web服务器的运行和访问情况进行详细和周全地分析,可以及时了解网站运行情况,发现网站存在的不足,促进网站更好地发展,它的重要性是不言而喻的。DOIT博客,W|/F4f[q w
DOIT博客NM_H S'd3L] Q
管理Web网站不只是监视Web的速度和Web的内容传送。它不仅要关注服务器每天的吞吐量,还要了解这些Web网站的外来访问,了解网站各页面的访问情况。根据各页面的点击频率来改善网页的内容和质量,提高内容的可读性,以及跟踪包含有商业交易的步骤及管理Web网站“幕后”的数据等。DOIT博客 {;GVq^e3D{
DOIT博客 [u~h8b/n)~ |#ujL3@
为了更好地提供WWW服务,监控Web服务器的运行情况、了解网站内容的详细访问状况就显得越来越重要和迫切了。而这些要求都可以通过对Web服务器日志文件的统计和分析来实现。本文将对Web服务器日志分析的原理和技术进行讨论。DOIT博客Jj%E%Vo

j5KX\1dd"\6n a0文章内相关工具软件下载地址如下:
3OC]M!n8X0
&n)C1rf yWI/Pe8HBF0Webalizer http://www.mrunix.net/webalizer/DOIT博客.V U6eHk
Cronolog http://www.cronolog.org/
;N/Z3V$HEH\-JgS0Apachehttp://www.apache.org/
6s&K0W5NqG"fLw1No%L0DOIT博客 y S+Hn2e:^l
Web日志分析的原理DOIT博客h*_2p:^4eg3N*D @,T#q

%s&W4Si3Ec-f(XR5P I0网站服务器日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对日志进行统计、分析和综合,就能有效地掌握服务器的运行状况、发现和排除错误原因、了解客户访问分布等,更好地加强系统的维护和管理。
J4{+M[{"w(zv0DOIT博客3iW I5d:Z Z
WWW服务模型非常简单(见图1):
5w tI^,N"k%cZ0DOIT博客x9}7E]0_K-z3C6~2Dt
图1 Web访问机制
)j8D.g C6{"lc9B0DOIT博客8T} _6WD/m Y
1.客户端(浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型、请求的URL等一系列信息。
TJd1y#] RL@0
I%E+qL:Q| c2Z02. Web服务器收到请求后,将客户端要求的页面内容返回到客户端。如果出现错误,那么返回错误代码。DOIT博客_Zyx'If8k)E

i2{6Kx2["sG03. 服务器端将访问信息和错误信息记录到日志文件里。
h3T8b2w3[?H0DOIT博客9Ve\-z/Sg
下面是客户端发送给Web服务器请求的数据报的内容:DOIT博客 UY8V$PY`h
DOIT博客 b?sC1X
GET /engineer/ideal/list.htm HTTP/1.1DOIT博客Oe A o&N,r%T
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,DOIT博客2^L8H4}$Duxx
application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*DOIT博客!aMJ1^6OJb#V-IO0E
Referer: http://www.linuxaid.com.cn/engineer/ideal/
L&okRj3@L0Accept-Language: zh-cnDOIT博客/C!n'D&B^ GB
Accept-Encoding: gzip, deflate
*O{~F0p*Z0User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)DOIT博客5J!W+T\#a|I
Host: www.linuxaid.com.cnDOIT博客!N;U(s m5\S4P.ij+u-` t
Connection: Keep-Alive
)b!sI3KP3W0
L Xa/e7pV}n0从代码中可以看到,在客户机的请求里包含了很多有用的信息,如客户端类型等。Web服务器会将请求的Web页内容发送返回给客户机。
BZ)z N0j3Gg0DOIT博客Cg/S#~^[["m d
目前常用的Web服务器有Apache、Netscape Enterprise Server、MS IIS等。而现在互联网上常用的Web服务器就是Apache,因此本文所做的讨论都将以Linux+Apache环境讨论(其它的应用环境与此类似)。对于Apache来说,支持多种日志文件格式,最常见的是common和combined两种模式。其中,combined方式比common方式日志信息中的Referer(表示该请求来自于哪里,例如来自于yahoo的搜索引擎)和User-agent(用户客户端类型,如Mozilla或IE)多。下面是common类型的日志示例:
SXFpAr0DOIT博客T#?ZE]o-T
218.242.102.121 - - [06/Dec/2002:00:00:00 +0000] "GETDOIT博客2Qv_T N.fA?(j
/2/face/shnew/ad/via20020915logo.gif HTTP/1.1" 304 0 "http://www.mpsoft.net/"
m,s%d\g_\!H8G C0"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
&O'J"O%Zg5B&\*[] ?061.139.226.47 - - [06/Dec/2002:00:00:00 +0000] "GET /cgi-bin/guanggaotmp.cgi?1DOIT博客3a6x8Yj{*C2p
HTTP/1.1" 200 178 "http://www3.beareyes.com.cn/1/index.php" "Mozilla/4.0DOIT博客b{E ~3tXEb
(compatible; MSIE 5.0; Windows 98; DigExt)"DOIT博客*eew T-E|z+v1IL7w
218.75.41.11 - - [06/Dec/2002:00:00:00 +0000] "GET
_vt V/dwZ } O0/2/face/shnew/ad/via20020915logo.gif HTTP/1.1" 304 0 "http://www.mpsoft.net/"
sl-n Se-jP7B&` o0"Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)"DOIT博客'ZD t!`R3M/C |
61.187.207.104 - - [06/Dec/2002:00:00:00 +0000] "GET /images/logolun1.gifDOIT博客 WTD H&l`
HTTP/1.1" 304 0 "http://www2.beareyes.com.cn/bbs/b.htm" "Mozilla/4.0 (compatible;
(z)k;y d9tgr0MSIE 6.0; Windows NT 5.1)"DOIT博客7Of$zJB`
211.150.229.228 - - [06/Dec/2002:00:00:00 +0000] "GET /2/face/pub/image_top_l.gif
?iZ H^5PwN0HTTP/1.1" 200 260 "http://www.beareyes.com/2/lib/200201/12/20020112004.htm"DOIT博客+`M"prz a l9ku
"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"DOIT博客s y.R,B{;Uzb v
DOIT博客v Y;E0e2y-y$~.U
从上面的日志文件可以看出,日志记录会记录客户端的IP地址、访问发生的时间、访问请求的页面、Web服务器对于该请求返回的状态信息、返回给客户端的内容的大小(以字节为单位)、该请求的引用地址、客户浏览器类型等信息。
"H-kB Gr0
GzRT6x^d Q z0Apache日志的配置和管理
A iA:Rx0Y YH0
j\ t v7?!UE0本文中假设Apache运行有两个虚拟主机:www.secfocus.com和www.tomorrowtel.com。我们需要对这两个虚拟主机分别进行访问日志分析和统计。DOIT博客mGX8S|.b1QZ O
DOIT博客HQR&R/S*x8K'z
Apache配置文件中,需要关心的和日志相关配置有两个:DOIT博客G'd+UOy k(VT
DOIT博客]]Wxz"T
$ CustomLog /www/logs/access_log commonDOIT博客g C KJcv
$ ErrorLog /www/logs/error_logDOIT博客+c,EveT.@"H0]0F:P

bGa/|#X `0CustomLog用来指示Apache的访问日志存放的位置(这里保存在/www/logs/access_log中)和格式(这里为common);ErrorLog用来指示Apache错误信息日志存放的位置。DOIT博客V(w A7b%w:X
DOIT博客&NFK!RMX"b"d3n
对于不配置虚拟主机的服务器来说,只需直接在httpd.conf中查找CustomLog配置进行修改即可。而对于具有多个虚拟服务器的Web服务器来说,需分离各个虚拟服务器的访问日志,以便对各个虚拟服务器进行访问统计和分析。因此就需要在虚拟服务器配置中进行独立的日志配置,示例如下:
L _IUkc0
@ l8^nJ;`#`0NameVirtualHost 75.8.18.19
Q,^L6U6G0DOIT博客8e|'u)Ma&O
ServerName www.secfocus.com
"M(Lx?4K2a0ServerAdmin secfocus@secfocus.comDOIT博客:u8u7_'A7v@q:S
DocumentRoot /www/htdocs/secfocus/DOIT博客)Wqz!RIrbT
CustomLog "/www/log/secfocus" combined
SvG"~1w;RQ8d0Alias /usage/ "/www/log/secfocus/usage/"
a9\ pg5i3z-K0DOIT博客,{(d'EDV'Zp G
ServerName www.tomorrowtel.com
+xe.{-@.v0ServerAdmin tomorrowtel @ tomorrowtel.comDOIT博客i#wJ%]`3qDy d
DocumentRoot /www/htdocs/ tomorrowtelDOIT博客lm`)gk(xl*M
CustomLog "/www/log/tomorrowtel " combined
u Q(I p\'OaW&F8_0Alias /usage/ "/www/log/tomorrowtel/usage/"
+dX3yU$qw,r0W0DOIT博客k-D}0N;?'n
这里需要注意的是,每个虚拟主机的定义都有一个CustomLog命令,用来指定该虚拟主机访问日志的存放文件;而Alias命令用来让日志分析生成的报表能通过www.secfocus.com/usage/的方式来访问。通过上面的配置就完成了日志文件的保存。
;u cN9pB.G0
#he9X G-b;eE*hX$r0接下来遇到的一个问题就是日志文件的轮循。因为日志一直在增大,如果不进行处理那么日志文件越来越大,就会影响Web服务器运行效率、速率,还可能耗尽服务器硬盘空间,导致服务器无法正常运行。另外,如果单个日志文件大于操作系统单文件尺寸的的限制,从而会进一步影响Web服务的运行。而且,日志文件如果不进行轮循,也不便于日志统计分析程序的运行。因为日志统计分析都是以天为单位进行统计分析的,跨越很长时间日志会使得统计分析程序运行特别慢。因此这里就需要对Web服务器日志文件每天进行轮循。DOIT博客+D/e5A,{*ro bwu
DOIT博客E%R5VTN,uKq
Web服务器日志轮循DOIT博客A!J OR9IW*t
DOIT博客YCv#I3{
Web服务器日志轮循比较好的方式有三种:第一种方法是利用Linux系统自身的日志文件轮循机制logrotate;第二种方法是利用Apache自带的日志轮循程序rotatelogs;第三种是使用在Apache的FAQ中推荐发展已经比较成熟的一个日志轮循工具 cronolog。DOIT博客e6T~&l ~n7gO Pd U

't7\4qwj0对于大型的Web服务来说,往往使用实用负载均衡技术提高Web站点服务能力,这样后台有多个服务器提供Web服务,大大方便了服务的分布规划和扩展性。如果有多个服务器的分布需要对日志进行合并,统一进行统计分析。因此为了保证统计的精确性,需要严格按照每天的时段来自动生成日志。
/q.A8Z.U9@]9L \0
}d/A$o8xC0用logrotate实现日志轮循DOIT博客{^3L.bN

.Se k4a6`+^\&Y4a0首先讨论采用Linux系统自身的日志文件轮循机制logrotate的方法。logrotate是Linux系统自身带的一个日志轮循程序,是专门对各种系统日志(syslogd、mail)进行轮循的程序。该程序是由运行程序的服务crond每天凌晨4:02运行的。在/etc/cron.daily目录下可以看到logrotate文件,其内容如下:DOIT博客6`j2G.z5EcOw
DOIT博客#kehr pEW~
#!/bin/sh/DOIT博客xGox$[J&n:]
$ usr/sbin/logrotate /etc/logrotate.conf
w [b:|R0DOIT博客Gx C\ b H)T(s
每天清晨crond都会启动/etc/cron.daily目录下的logrotate脚本来进行日志轮循。
(bNM}$xN#{0DOIT博客}YliK+Nss~,W:C
在/etc/logrorate.conf中可以看到如下内容:DOIT博客K V9_~k_h)l
DOIT博客l+T6Xj6V ?"G@o
# see "man logrotate" for detailsDOIT博客 ?\hVy]!q3v]7]cr
# rotate log files weeklyDOIT博客 VwCc,[ ^ m
weekly
5lNm Qn!\T0# keep 4 weeks worth of backlogsDOIT博客L'w#]JH q*q ~(VR
rotate 4
L1\J*UMs S0# create new (empty) log files after rotating old onesDOIT博客2N&P\-{BO0i5k
create
0c-r9C ~ Y j2H[*_0# uncomment this if you want your log files compressedDOIT博客/h9W Q#E^[[Rl/X0J
#compress
,nI Il/}4Ter0# RPM packages drop log rotation information into this directory
'G!k!C8M3T+{-U0include /etc/logrotate.d
?S d'p!df9C&\EK0# no packages own wtmp -- we'll rotate them here
O],Ky2db O1W(f0/var/log/wtmp {DOIT博客/i y!^ Hyp5z8| m
monthlyDOIT博客(k\xK4\(Y!Q9_7q
create 0664 root utmp
/P)`1] fE6R r0rotate 1DOIT博客0JMIw2I {*x[
}DOIT博客!O2KOI&_-k r
# system-specific logs may be also be configured here.DOIT博客(J3K9DTfl1Gv2V\x
DOIT博客Wa;D5J(Rh{T2zH
从 logrotate的配置文件中可以看到,除了wtmp以外,需要滚动的日志的配置都保存在/etc/logroate.d目录下。因此只需要在该目录下创建一个名为apache的配置文件,来指示logrotate如何轮循Web服务器的日志文件即可。下面是一个示例:DOIT博客,F I3XE&x

f _+mN c2OkP0/www/log/secfocus {DOIT博客v&{k(Y`;Y9uf]
rotate 2DOIT博客Y)f_+Y~6g(Q
dailyDOIT博客 QD U z9J;WF@pH_
missingokDOIT博客3Y/O_%T$T:] i
sharedscrīpts
H"Bu d9pv+}0postrotate
S/qX%l2V0@i l4vr`0/usr/bin/killall -HUP httpd 2> /dev/null || trueDOIT博客 C8KCH5O5Z
endscrīpt
:u+AY(w/wFSD0}
7CR$lU8m#VzqG0/www/log/tomorrowtel {DOIT博客yKG(P_9Cu[
rotate 2
7Z&td(['^+N8d/{h0daily
*x%mi'A^y9kZ B0missingok
(H"t.\@4WrL U0sharedscrīpts
{v#v}9[W4z D0postrotateDOIT博客"cg$_0\EP
/usr/bin/killall -HUP httpd 2> /dev/null || trueDOIT博客_;H0Y O*Pu
endscrīpt
0E:pUik'X0}DOIT博客9oV|S8~i V dH _z
DOIT博客)T,j8|M|z.`g
这里“rotate 2”表示轮循时只包括两个备份文件,也就是只有access_log、access_log.1和access_log.2三个日志备份文件。这样就实现了对两个虚拟主机的日志文件的轮循。本文后面会讨论如何使用日志统计分析软件对日志文件进行处理。
'P]G D#@t0
+y9a hD#k#h fu0这种方法的优点是不需要其它第三方工具就可以实现日志轮循。但是对于重负载的服务器和使用负载均衡技术的Web服务器来说,这种方法不是很实用。因为它是对相应服务进程发出一个-HUP重启命令来实现日志的截断归档的,这样会影响服务的连续性。DOIT博客QS8kM$kz8l

^5mC1g? Nf0用rotatelogs实现日志轮循
.c%G3r#M d N8l0d0
}p x-AO0\ Rs0Apache 提供了不把日志直接写入文件,而是通过管道发送给另外一个程序的能力。这样就大大加强了对日志进行处理的能力。这个通过管道得到的程序可以是任何程序,如日志分析、压缩日志等。要实现将日志写到管道的操作,只需要将配置中日志文件部分的内容替换为“|程序名”即可,例如:DOIT博客,h+m1ow7e

|&P{ X-qap,a"|0# compressed logsDOIT博客Hy)y@i!O$byt
$ CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" commonDOIT博客n6k+b2Ei(N)Dn G

{ w1g+^l_m[0这样就可以使用Apache自带的轮循工具rotatelogs来对日志文件进行轮循。rotatelogs基本是按时间或大小来控制日志的。DOIT博客 \@G|2b#M0_}

*ml1AOmk"e,^ Z0$ CustomLog "|/www/bin/rotatelogs /www/logs/secfocus/access_log 86400" common
H rdq4Li3K%uD0
kb%M dHL2Tc/uK_0上面的示例中,Apache访问日志被发送给程序rotatelogs;rotatelogs将日志写入 /www/logs/secfocus/access_log,并每隔86400秒(1天)对日志进行一次轮循。轮循以后的文件名为 /www/logs/secfocus/access_log.nnn,这里nnn是开始记录日志的时间。因此,为了将日志按天对齐需要在凌晨00:00 启动服务,使得每天轮循得到的日志刚好是完整一天的日志,以提供给访问统计分析程序进行处理。如果是00:00开始生成新的日志,那么轮循得到的日志就是 access_log.0000。
`}#{:z_PEN0
:DiIHP/~:s^1EU0用cronolog实现日志轮循DOIT博客m,Y}B#J n
DOIT博客&G,xm7tXg j
首先需要下载和安装cronolog,可以到http://www.cronolog.org下载最新版本的cronolog。下载完毕以后,解压安装即可。方法如下所示:
~?o+?E*Ny0DOIT博客 tmM8bT~1l+X
tar xvfz cronolog-1.6.2.tar.gz
^.v-~0|/a }.~0cd cronolog-1.6.2DOIT博客y,Vj+Co@!h6l-O$I r
./configure
4JRi8` E&dP0make
Dro ykq0make checkDOIT博客6v/Js?;TqQ|t`F
make installDOIT博客:Xl Q_H@x

u` P-^|0这样就完成了cronolog的配置和安装,默认情况下cronolog是安装在/usr/local/sbin下。DOIT博客ZlG2S6Y ?
DOIT博客 EH I"a!S)LT9|(^:\8Oz
修改Apache日志配置命令如下所示:DOIT博客9Gp1\*\?-LM

1]l%t-v_/r3Ve0$ CustomLog "|/usr/local/sbin/cronolog /www/logs/secfocus/%w/access_log" combinedDOIT博客U/S4F:mi

f _*O S,^ ]}+H0这里%w表示按照日期在不同的目录下保存日志,这种方式会保存一周的日志。DOIT博客u;kG };|i

6R`YhXn0为了进行日志分析,需要每天将该日志文件拷贝(或移动,如果不希望保存一周的日志)到一个固定的位置,以方便日志分析统计文件进行处理(使用crontab -e)。添加定时任务如下:
sg;X-K5Z W!y&y0DOIT博客nK ^W*D+Z
$ 5 0 * * * /bin/mv /www/logs/secfocus/`date -v-1d +\%w`/access_logDOIT博客_k}UU{:YXwSP
/www/logs/secfocus/access_log_yesterday
1e.\ D7tcTl0DOIT博客jn1Y8fV/q7miV L
再使用日志统计分析程序,对文件access_log_yesterday进行处理。
E&h\Sl E$_0DOIT博客Q[*u;k*y t#x,}W
对于使用负载均衡技术的大型站点,就存在多个服务器的访问日志的合并处理问题。对于这种情况,各个服务器定义或移动日志文件时就不能使用 access_log_yesterday了,而应该带上服务器编号(例如服务器IP地址等信息)加以区分。然后在各个服务器上运行网站镜像和备份服务 rsyncd,再将每个服务器每天的安装配置文件通过rsync下载到专门进行访问统计分析的服务器上进行合并。
)V rt DZ WKC0
S9D)L+Ljd^-o3l0合并多个服务器的日志文件(如log1、log2、log3),并输出到log_all中的方法是:DOIT博客/r&i+F&~Q.N

z/}T1nN0$ sort -m -t " " -k 4 -o log_all log1 log2 log3
u,HK5qGv+@`dJ0
[zo ?/bd0-m表示使用merge优化算法;-k 4表示根据时间进行排序;-o表示将排序结果存放到指定的文件中。DOIT博客6]O]7jF}
DOIT博客Z5_['E?*B,sCdY
日志统计分析程序webalizer的安装和配置DOIT博客\D8Zt/p"s
DOIT博客D^]tY0d
webalizer是一个高效、免费的Web服务器日志分析程序。其分析结果是HTML文件格式的,从而可以很方便地通过Web服务器进行浏览。Internet上的很多站点都使用webalizer进行Web服务器日志分析。Webalizer具有以下一些特性。DOIT博客;@9O H?} jv[ ~

G7z$UpV)t0◆ 它是用C语言写的程序,具有很高的运行效率。在CPU主频为200MHz的机器上,webalizer每秒钟可以分析1万条记录,所以分析一个40MB大小的日志文件只需要15秒。
!RcI"u'DmQP#[0
!A8D9MJ h0◆ webalizer支持标准的一般日志文件格式(Common Logfile Format)。除此之外,也支持几种组合日志格式的变种,从而可以统计客户情况及客户操作系统类型。现在webalizer已经可以支持wu-ftpd xferlog日志格式及squid日志文件格式。DOIT博客 c;cus2}4Q8D5K9a9C m
DOIT博客5~Tk|J,[;Z
◆ 支持命令行配置及配置文件。DOIT博客4z(b C.k |'h _

_BX#uhW0◆ 可以支持多种语言,也可以自己进行本地化工作。
j'{rT1{{g0
g)k$w#E4bxf3|0◆ 支持多种平台,比如Unix、Linux、NT、OS/2和MacOS等。
A%q8K [.]8NT1h0DOIT博客WVw%`5?C
如图2所示,这是webalizer生成的访问统计分析报表第一页的内容。里面包含每个月的平均访问量的表格和条形图统计分析情况。点击每个月份,可以得到这个月每天的详细统计信息。
Ia8X },nt0DOIT博客(hkPn e7F.jM
图2 webalizer生成的访问统计分析报表第一页的内容DOIT博客1CqE p jV:C-ED

'fuX&GMdd01.安装DOIT博客/Q#|9H2D*TI2\'E
DOIT博客Be3L)Xt W
在安装以前,首先需要确保系统已经安装有gd库,可以使用下段代码:DOIT博客8a*QlT,~'Ycm

+Fm O6?iVTb5i0# rpm -qa|grep gdDOIT博客,H+R&^M kI
# gd-devel-1.8.4-4DOIT博客n h_!~R5du n(Si
# gdbm-devel-1.8.0-14DOIT博客\)_/E0w*H} X
# gdbm-1.8.0-14DOIT博客 PU2}Y-I
# sysklogd-1.4.1-8
r D,k.mVL#p @Q0# gd-1.8.4-4DOIT博客 x1Ae0bY*~,O"x L
DOIT博客0k0TaP/A'x2G
用来确认系统已经安装有gd-deve和gd两个RPM包。DOIT博客-k,c+]9_h

k.\ ye0TF1U `0安装webalizer有两种方式:一种是下载源代码来安装;一种是直接使用RPM包来安装。
&aj+ib9RM+A0DOIT博客9Xn"vQfa-jFz
使用RPM包方式安装非常简单,从rpmfind.net找到webalizer包,下载以后运行以下代码,即可实现安装:
zB5f.f@0DOIT博客{"|!Sy/wh:{:B
$ rpm -ivh webalizer-2.01_10-1.i386.rpm
G5C$tT ?'`z0DOIT博客-e P G6` s}MkPd
对于源代码方式需要从http://www.mrunix.net/webalizer/下载,然后安装。首先解开源代码包:
*_9F;Wu2iK#l/oa8[1[0
Q g%r3^3O^ z0$ tar xvzf webalizer-2.01-10-src.tgz
/a1f)Hj-C9Z^Vs+?:W0
[ZS1KG4B`0在生成的目录中有个lang目录。该目录中保存了各种语言文件,但是只有繁体中文版本,可以自己转换成简体,或者重新翻译一下,然后进入生成的目录:DOIT博客Q"N;L}ZR(w

s7Em Kt0`0$ cd webalizer-2.01-10
)Veg[`o~k0$ ./configureDOIT博客4`~7Q W_cJ
$ make --with-language=Chinese
*~YTO%n7r\?u0$ make install
5fPKJu)U&HTF0DOIT博客 P1G:q_4N-H*qr&_igm
编译成功后,会在/usr/local/bin/目录下安装一个webalizer可执行文件。DOIT博客.Z5^1oq)QkHv$^
DOIT博客;V)r i K?
2.配置和运行
o Ka;O P1X0
|A#L"^Vv-yx7n"D0对webalizer运行的控制可以通过配置文件或在命令行指定参数的两种方式进行。使用配置文件方式比较简单和灵活,适用于自动Web服务器日志统计分析的应用环境。DOIT博客yY]5mA#_!i6p

+y;L5d:OL2^/APL+E0webalizer 的默认配置文件为/etc/webalizer.conf,当启动webalizer时没有使用“-f“选项时,webalizer就会寻找文件 /etc/webalizer.conf,也可以使用“-f”来指定配置文件(当服务器有虚拟主机时,需要配置多份不同的webalizer配置文件。不同的虚拟主机的webalizer使用不同的配置文件。webalizer.conf配置文件中需要修改的配置选项如下:
+Uor/`(MJ0DOIT博客,J L1y9BY} k{y
LogFile /www/logs/secfocus/access_logDOIT博客L(h.Yo"G
DOIT博客He6W%M+B8|$mFK4Z
用来指示配置文件的路径信息,webalizer会将该日志文件作为输入进行统计分析:
/FI?/p:a/s_ p3k0DOIT博客j%TH B1N.|o7Q
OutputDir /www/htdocs/secfocus/usage
i`,Qt'?;w.w{.l0
gVGm@ L0用来指示生成的统计报表的保存目录,在前面使用alias,使用户可以使用http://www.secfocus.com/usage/来访问统计报表。
} f%F1C#Wn8z0
,t,y!t y9B/W"d2~S;D0HostName www.secfocus.com
D}wZ.V0DOIT博客5DEjJ}Z!C7a
上述代码用来指示主机名,统计报表中会引用该主机名。DOIT博客U5Y*xZ2T
DOIT博客lho(cR0p k7gq(O
其它选项无需修改。配置文件修改完毕以后,需要定时webalizer,每天生成当日的统计分析。DOIT博客~5rr(Y ?@

&w!x3?S2K4O/b@0以root身份运行crontab -e进入定时运行任务编辑状态,加入如下任务:
F I,rDt p7D0DOIT博客&Uw}K5fwZ-c
$ 5 0 * * * /usr/local/bin/webalizer -f /etc/secfocus.webalizer.confDOIT博客 ` u5r`c-YZ;N2h
$ 15 0 * * * /usr/local/bin/webalizer -f /etc/tomorrowtel.webalizer.confDOIT博客zm*Vz$e@e2i

1qF3Q&c{$J0这里假设系统运行有两个虚拟主机,并分别定义了日志分析配置文件secfocus.webalizer.conf和 tomorrowtel.webalizer.conf。这样定义在凌晨00:05对secfocus的日志进行统计分析;在凌晨00:15对 tomorrowtel的日志进行统计分析。
1KEmMl,l`&L0
h8Yt mv;B0第二天分别使用http://www.secfocus.com/usage和http://www.tomorrowtel.com/usage来查看各自的日志分析报表。
)_I[/L;g-{#TG/\2Gl3G0
U(_cVB.H3L1~p O!P1_0保护日志统计分析报告不被未授权用户访问DOIT博客GY!{9?)fy

)`e"yp/B*Q@0我们都不希望自己网站访问统计信息随意被别人浏览,因此需要将usage目录保护起来,只允许合法的用户访问。这里可以采用Apache自带的基本认证机制。配置以后再连接这个地址需要用户提供密码才能访问该页面(如图3所示):
Tq"CjQ3w]9KX0
1lbcOs0图3 设置认证机制后的密码提示界面
Ub/s%ACvw"VO0DOIT博客%JSgxWUMKs^
1.条件DOIT博客qI"uuB\!n K4u;j

+?zs;o/^*l?0在配置文件中对目录“/”应该设置为:DOIT博客2YZ+Zk}6P
DOIT博客/u?yye
DocumentRoot /www/htdocs/secfocus/
|k9ox+Qt`+G2i0AccessFileName .htaccess
FG8t#[PV%z A0AllowOverride AllDOIT博客$O a+w.`-g_"t"x e`

,uMdj+GBI%o&v02.需求
/Hz+U/f{.RF6U a0
Sz4YH {&h)k0需求是限制对http://www.secfocus.com/usage/的访问,要求用户认证才能访问。这里设置用户为“admin”,口令为“12345678”。DOIT博客_,S7Y-O!LBa'S
DOIT博客&Y5~&k0Y0i R0d7Q M4w
使用htpasswd建立用户文件:
+z1Jq*s2PQ*`4q2O0
I,nRwi HC6J0$ htpasswd -c /www/.htpasswd adminDOIT博客H9QyhX^

\3p9d^X2W0此程序会询问用户“admin”的口令,输入“12345678”两次生效。DOIT博客l#y/P1mht
DOIT博客 r-K9] N*`YQ H2r
3.建立.htaccess文件DOIT博客9x~&@7B| j
DOIT博客"i2cSm8B.i3Y.] |p
用vi在/www/logs/secfocus/usage/目录下建立一个文件.htaccess,写入以下几行代码:
yUE$|w(zijz0DOIT博客I%hF5x4@E:r
AuthName admin-only
&qm;HK`#^J0AuthType BasicDOIT博客nlF7H!y9N9[w/Aty
AuthUserFile /www/.htpasswdDOIT博客RZH1@&~)}![
require user adminDOIT博客7]B3b+b5U

5J$h,]jb l.d0测试
rvRu s%g ]kU,d,b0
9Qg+C/]H T0通过浏览器访问http://www.secfocus.com/usage,就会弹出框请求输入用户名和口令,输入“admin”、“12345678”就可以访问访问日志统计分析报表。DOIT博客7h-D*t*Jx#F(Qlu$lk
[返回列表]

TAG: 我的工作

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-09  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 10882
  • 日志数: 48
  • 图片数: 7
  • 建立时间: 2006-08-21
  • 更新时间: 2008-08-06

RSS订阅

Open Toolbar