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:ZZ
WWW服务模型非常简单(见图1):
5w tI^,N"k%cZ0DOIT博客x9}7E]0_K-z3C6~2Dt
图1 Web访问机制
)j8D.g C6{"lc9B0DOIT博客8T} _6W D/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博客O e 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/e7p V}n0从代码中可以看到,在客户机的请求里包含了很多有用的信息,如客户端类型等。Web服务器会将请求的Web页内容发送返回给客户机。
BZ)z N0j3Gg0DOIT博客Cg/S#~^[["md
目前常用的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_\!H8GC0"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-nSe-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博客 WTDH&l`
HTTP/1.1" 304 0 "http://www2.beareyes.com.cn/bbs/b.htm" "Mozilla/4.0 (compatible;
(z)k;yd9tgr0MSIE 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 al9ku
"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^dQz0Apache日志的配置和管理
A iA:Rx0YYH0
j\ t v7?!UE0本文中假设Apache运行有两个虚拟主机:www.secfocus.com和www.tomorrowtel.com。我们需要对这两个虚拟主机分别进行访问日志分析和统计。DOIT博客mGX8S|.b1QZO
DOIT博客HQR&R/S*x8K'z
Apache配置文件中,需要关心的和日志相关配置有两个:DOIT博客G'd+UOy k(VT
DOIT博客]]Wxz"T
$ CustomLog /www/logs/access_log commonDOIT博客gCKJcv
$ 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博客&N
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:ZZ
WWW服务模型非常简单(见图1):
5w tI^,N"k%cZ0DOIT博客x9}7E]0_K-z3C6~2Dt
图1 Web访问机制
)j8D.g C6{"lc9B0DOIT博客8T} _6W D/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博客O e 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/e7p V}n0从代码中可以看到,在客户机的请求里包含了很多有用的信息,如客户端类型等。Web服务器会将请求的Web页内容发送返回给客户机。
BZ)z N0j3Gg0DOIT博客Cg/S#~^[["md
目前常用的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_\!H8GC0"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-nSe-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博客 WTDH&l`
HTTP/1.1" 304 0 "http://www2.beareyes.com.cn/bbs/b.htm" "Mozilla/4.0 (compatible;
(z)k;yd9tgr0MSIE 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 al9ku
"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^dQz0Apache日志的配置和管理
A iA:Rx0YYH0
j\ t v7?!UE0本文中假设Apache运行有两个虚拟主机:www.secfocus.com和www.tomorrowtel.com。我们需要对这两个虚拟主机分别进行访问日志分析和统计。DOIT博客mGX8S|.b1QZO
DOIT博客HQR&R/S*x8K'z
Apache配置文件中,需要关心的和日志相关配置有两个:DOIT博客G'd+UOy k(VT
DOIT博客]]Wxz"T
$ CustomLog /www/logs/access_log commonDOIT博客gCKJcv
$ 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博客&N