web站点服务器日志管理及分析

管理Web网站不只是监视Web的速度和Web的内容传送。它不仅要关注服务器每天的吞吐量,还要了解这些Web网站的外来访问,了解网站各页面的访问情况。根据各页面的点击频率来改善网页的内容和质量,提高内容的可读性,以及跟踪包含有商业交易的步骤及管理Web网站“幕后”的数据等。

为了更好地提供WWW服务,监控Web服务器的运行情况、了解网站内容的详细访问状况就显得越来越重要和迫切了。而这些要求都可以通过对Web服务器日志文件的统计和分析来实现。本文将对Web服务器日志分析的原理和技术进行讨论。

文章内相关工具软件下载地址如下:

Webalizer

Cronolog

Apache

Web日志分析的原理

网站服务器日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对日志进行统计、分析和综合,就能有效地掌握服务器的运行状况、发现和排除错误原因、了解客户访问分布等,更好地加强系统的维护和管理。

WWW服务模型非常简单:

1.客户端(浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型、请求的URL等一系列信息。

2. Web服务器收到请求后,将客户端要求的页面内容返回到客户端。如果出现错误,那么返回错误代码。

3. 服务器端将访问信息和错误信息记录到日志文件里。

下面是客户端发送给Web服务器请求的数据报的内容:

GET /engineer/ideal/list.htm HTTP/1.1

Accept: image/gif, image/x-xbitmap,image/jpeg, image/pjpeg,

application/vnd.ms-powerpoint,application/vnd.ms-excel, application/msword, */*

Referer:

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.0)

Host:

Connection: Keep-Alive

从代码中可以看到,在客户机的请求里包含了很多有用的信息,如客户端类型等。Web服务器会将请求的Web页内容发送返回给客户机。

目前常用的Web服务器有Apache、Netscape Enterprise Server、MS IIS等。而现在互联网上常用的Web服务器就是Apache,因此本文所做的讨论都将以Linux+Apache环境讨论(其它的应用环境与此类似)。对于Apache来说,支持多种日志文件格式,最常见的是common和combined两种模式。其中,combined方式比common方式日志信息中的Referer(表示该请求来自于哪里,例如来自于yahoo的搜索引擎)和User-agent(用户客户端类型,如Mozilla或IE)多。下面是common类型的日志示例:

218.242.102.121 – -[06/Dec/2002:00:00:00 +0000] "GET

/2/face/shnew/ad/via20020915logo.gifHTTP/1.1" 304 0 ""

"Mozilla/4.0 (compatible; MSIE6.0; Windows 98)"

61.139.226.47 – – [06/Dec/2002:00:00:00+0000] "GET /cgi-bin/guanggaotmp.cgi?1

HTTP/1.1" 200 178"" "Mozilla/4.0

(compatible; MSIE 5.0; Windows 98;DigExt)"

218.75.41.11 – – [06/Dec/2002:00:00:00+0000] "GET

/2/face/shnew/ad/via20020915logo.gifHTTP/1.1" 304 0 ""

"Mozilla/4.0 (compatible; MSIE5.0; Windows 98; DigExt)"

61.187.207.104 – -[06/Dec/2002:00:00:00 +0000] "GET /images/logolun1.gif

HTTP/1.1" 304 0"" "Mozilla/4.0(compatible;

MSIE 6.0; Windows NT 5.1)"

211.150.229.228 – -[06/Dec/2002:00:00:00 +0000] "GET /2/face/pub/image_top_l.gif

HTTP/1.1" 200 260""

"Mozilla/4.0 (compatible; MSIE5.5; Windows NT 5.0)"

从上面的日志文件可以看出,日志记录会记录客户端的IP地址、访问发生的时间、访问请求的页面、Web服务器对于该请求返回的状态信息、返回给客户端的内容的大小(以字节为单位)、该请求的引用地址、客户浏览器类型等信息。

Apache日志的配置和管理

本文中假设Apache运行有两个虚拟主机:和。我们需要对这两个虚拟主机分别进行访问日志分析和统计。

Apache配置文件中,需要关心的和日志相关配置有两个:

$ CustomLog /www/logs/access_log common

$ ErrorLog /www/logs/error_log

CustomLog用来指示Apache的访问日志存放的位置(这里保存在/www/logs/access_log中)和格式(这里为common);ErrorLog用来指示Apache错误信息日志存放的位置。

对于不配置虚拟主机的服务器来说,只需直接在httpd.conf中查找CustomLog配置进行修改即可。而对于具有多个虚拟服务器的Web服务器来说,需分离各个虚拟服务器的访问日志,以便对各个虚拟服务器进行访问统计和分析。因此就需要在虚拟服务器配置中进行独立的日志配置,示例如下:

NameVirtualHost 75.8.18.19

ServerName

ServerAdmin secfocus@secfocus.com

DocumentRoot /www/htdocs/secfocus/

CustomLog "/www/log/secfocus"combined

Alias /usage/"/www/log/secfocus/usage/"

ServerName

ServerAdmin tomorrowtel @tomorrowtel.com

DocumentRoot /www/htdocs/ tomorrowtel

CustomLog "/www/log/tomorrowtel" combined

Alias /usage/"/www/log/tomorrowtel/usage/"

这里需要注意的是,每个虚拟主机的定义都有一个CustomLog命令,用来指定该虚拟主机访问日志的存放文件;而Alias命令用来让日志分析生成的报表能通过的方式来访问。通过上面的配置就完成了日志文件的保存。

接下来遇到的一个问题就是日志文件的轮循。因为日志一直在增大,如果不进行处理那么日志文件越来越大,就会影响Web服务器运行效率、速率,还可能耗尽服务器硬盘空间,导致服务器无法正常运行。另外,如果单个日志文件大于操作系统单文件尺寸的的限制,从而会进一步影响Web服务的运行。而且,日志文件如果不进行轮循,也不便于日志统计分析程序的运行。因为日志统计分析都是以天为单位进行统计分析的,跨越很长时间日志会使得统计分析程序运行特别慢。因此这里就需要对Web服务器日志文件每天进行轮循。

Web服务器日志轮循最糟糕的行为是抱怨,最易见效 的努力是从自己做起。

web站点服务器日志管理及分析

相关文章:

你感兴趣的文章:

标签云: