Web服务器日志统计分析完全解决方案.docx

上传人:b****0 文档编号:18423407 上传时间:2023-08-16 格式:DOCX 页数:9 大小:23.74KB
下载 相关 举报
Web服务器日志统计分析完全解决方案.docx_第1页
第1页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第2页
第2页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第3页
第3页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第4页
第4页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第5页
第5页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第6页
第6页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第7页
第7页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第8页
第8页 / 共9页
Web服务器日志统计分析完全解决方案.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Web服务器日志统计分析完全解决方案.docx

《Web服务器日志统计分析完全解决方案.docx》由会员分享,可在线阅读,更多相关《Web服务器日志统计分析完全解决方案.docx(9页珍藏版)》请在冰点文库上搜索。

Web服务器日志统计分析完全解决方案.docx

Web服务器日志统计分析完全解决方案

Web服务器日志统计分析完全解决方案

hc360慧聪网通信行业频道2003-06-0314:

49:

37

摘要:

对于所有的ICP来说,除了保证网站稳定正常运行以外,一个重要的问题就是网站访问量的统计和分析报表,这对于了解和监控网站的运行状态,对提高各个网站的服务能力和服务水平是必不可少的。

通过对Web服务器的日志文件进行分析和统计,能够有效掌握系统运行情况以及网站内容的受访问情况、加强对整个网站及其内容的维护与管理。

本文对Web服务器日志分析的原理和技术进行讨论。

   

   文章相关软件:

   

   webalizercronologhttp:

//www.cronolog.org/Apachehttp:

//www.apache.org/

   

   一、前言

   

   随着Internet上Web服务的发展,几乎各个政府部门、公司、大专院校、科研院所等都在构建或正在建设自己的网站。

而与此同时,在构建网站建设中各个单位都会遇到各种各样的问题,那么对web服务器的运行和访问情况进行详细和周全的分析对于了解网站运行情况,发现网站存在的不足,促进网站的更好发展重要性是不言而喻的。

   

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

   

   为了更好地提供WWW服务,监控WEB服务器的运行情况、了解网站内容的详细访问状况就越来越显得重要和迫切了。

而这些要求都可以通过对web服务器的日志文件的统计和分析来做到。

   

   二、WEB日志分析的原理

   

   网站服务器日志记录了web服务器接收处理请求以及运行时错误等各种原始信息。

通过对日志进行统计、分析、综合,就能有效地掌握服务器的运行状况,发现和排除错误原因、了解客户访问分布等,更好的加强系统的维护和管理。

   

   在WWW服务模型是非常简单的(见图1):

   

   1)客户端(浏览器)和web服务器建立tcp连接,连接建立以后,向web服务器发出访问请求(如:

get),根据HTTP协议该请求中包含了客户端的IP地址、浏览器的类型、请求的URL等一系列信息。

   

   图1web访问机制

   

   2)web服务器收到请求后,将客户端要求的页面内容返回到客户端。

如果出现错误,那么返回错误代码。

   

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

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

   

   GET/engineer/ideal/list.htmHTTP/1.1Accept:

image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/vnd.ms-powerpoint,application/vnd.ms-excel,application/msword,*/*Referer:

zh-cnAccept-Encoding:

gzip,deflateUser-Agent:

Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.0)Host:

Connection:

Keep-Alive

   

   可以看到,在客户机的请求里包含了很多有用的信息,例如:

客户端类型等等。

而web服务器就会将请求的web页内容发送返回给客户机。

   

   目前最常用的web服务器有Apache、Netscapeenterpriseserver、MSIIS等。

而目前互联网上最常用的web服务器就是apache,因此我们这里的讨论都以Linux+apache环境讨论,其他的应用环境类似。

对于Apache来说,支持多种日志文件格式,最常见的是common和combined两种模式,其中combined方式比common方式的日志的信息要多Referer(该请求来自于哪里,例如来自于yahoo的搜索引擎)和User-agent(用户客户端类型,如mozilla或IE)。

我们这里讨论combined类型。

下面是common类型的日志示例:

   

   218.242.102.121--[06/Dec/2002:

00:

00:

00+0000]"GET/2/face/shnew/ad/via20020915logo.gifHTTP/1.1"3040""Mozilla/4.0(compatible;MSIE6.0;Windows98)"61.139.226.47--[06/Dec/2002:

00:

00:

00+0000]"GET/cgi-bin/guanggaotmp.cgi?

1HTTP/1.1"200178""Mozilla/4.0(compatible;MSIE5.0;Windows98;DigExt)"218.75.41.11--[06/Dec/2002:

00:

00:

00+0000]"GET/2/face/shnew/ad/via20020915logo.gifHTTP/1.1"3040""Mozilla/4.0(compatible;MSIE5.0;Windows98;DigExt)"61.187.207.104--[06/Dec/2002:

00:

00:

00+0000]"GET/images/logolun1.gifHTTP/1.1"3040""Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1)"211.150.229.228--[06/Dec/2002:

00:

00:

00+0000]"GET/2/face/pub/image_top_l.gifHTTP/1.1"200260""Mozilla/4.0(compatible;MSIE5.5;WindowsNT5.0)"

   

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

   

   三、apache日志的配置和管理

   

   本文中我们假设我们的apache运行有两个虚拟主机:

和。

我们需要对这两个虚拟主机分别进行访问日志分析和统计。

   

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

   

   CustomLog/www/logs/access_logcommonErrorLog/www/logs/error_log

   

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

   

   对于不配置虚拟主机的服务器来说,只需要直接在httpd.conf中查找CustomLOg的配置进行修改即可;而对于具有多个虚拟服务器的web服务器来说,需要分离各个虚拟服务器的访问日志,以便对各个虚拟服务器进行访问统计和分析。

因此这就需要在虚拟服务器配置中进行独立的日志配置,示例:

   

   NameVirtualHost75.8.18.19ServerNameServerAdminsecfocus@DocumentRoot/www/htdocs/secfocus/CustomLog"/www/log/secfocus"combinedAlias/usage/"/www/log/secfocus/usage/"ServerNameServerAdmintomorrowtel@DocumentRoot/www/htdocs/tomorrowtelCustomLog"/www/log/tomorrowtel"combinedAlias/usage/"/www/log/tomorrowtel/usage/"

   

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

   

   但是下来遇到的一个问题就是日志文件的轮循,因为日志是一直在增大的,如果不进行处理那么日志文件会越来越大,会影响web服务器运行效率;速率,还可能过大耗尽服务器硬盘空间,导致服务器无法正常运行,另外如果单个日志文件大于操作系统单文件尺寸的的限制,从而更进一步影响web服务的运行。

而且日志文件如果不进行轮循也不变于日志统计分析程序的运行,因为日志统计分析都是以天为单位进行统计分析的,跨越很长时间日志会使得日志统计分析程序运行特别慢。

因此这里就需要对web服务器日志文件每天进行轮循。

   

   四、web服务器日志轮循

   

   web服务器日志轮循比较好的方式有三种:

第一种方法是利用Linux系统自身的日志文件轮循机制:

logrotate;第二种方法是利用apache自带的日志轮循程序rotatelogs;第三种是使用在apache的FAQ中推荐发展已经比较成熟的一个日志轮循工具cronolog。

   

   对于大型的WEB服务来说,其往往使用实用负载均衡技术提高web站点服务能力,这样后台有多个服务器提供WEB服务,这大大方便了服务的分布规划和扩展性,但多个服务器的分布就需要对日志进行合并统一进行统计分析。

因此为了保证统计的精确性就需要严格按照每天的时段来自动生成日志文件。

   

   4.1logrotate实现日志轮循

   

   首先我们讨论采用Linux系统自身的日志文件轮循机制:

logrotate的方法。

Logrotate是Linux系统自身带的一个日志轮循程序,是专门对各种系统日志(syslogd,mail)进行轮循的程序。

该程序是由运行程序的服务crond来每天凌晨4:

02运行的,可以在/etc/cron.daily目录下可以看到logrotate文件,其内容如下:

   

   #!

/bin/sh/usr/sbin/logrotate/etc/logrotate.conf

   

   可以看到每天清晨crond都会启动/etc/cron.daily目录下的logrotate脚本来进行日志轮循。

   

   而在/etc/logrorate.conf中可以看到内容如下:

   

   #see"manlogrotate"fordetails#rotatelogfilesweeklyweekly#keep4weeksworthofbacklogsrotate4#createnew(empty)logfilesafterrotatingoldonescreate#uncommentthisifyouwantyourlogfilescompressed#compress#RPMpackagesdroplogrotationinformationintothisdirectoryinclude/etc/logrotate.d#nopackagesownwtmp--wellrotatethemhere/var/log/wtmp{monthlycreate0664rootutmprotate1}#system-specificlogsmaybealsobeconfiguredhere.

   

   从logrotate的配置文件中可以看到除了wtmp以外,需要滚动的日志的配置都保存在/etc/logroate.d目录下。

因此我们只需要在该目录下创建一个名为apache的配置文件,来指示logrotate如何轮循web服务器的日志文件即可,下面是一个示例:

   

   /www/log/secfocus{rotate2dailymissingoksharedscriptspostrotate/usr/bin/killall-HUPhttpd2>/dev/null||trueendscript}/www/log/tomorrowtel{rotate2dailymissingoksharedscriptspostrotate/usr/bin/killall-HUPhttpd2>/dev/null||trueendscript}

   

   这里“rotate2”表示轮循时只包括两个备份文件,也就是只有:

access_log、access_log.1、access_log.2三个日志备份文件。

就这样就实现了对两个虚拟主机的日志文件的轮循。

后面我们会讨论如何使用日志统计分析软件对日志文件进行处理。

   

   这种方法的优点是不需要其他第三方工具就可以实现日志轮循,但是对于重负载的服务器和使用负载均衡技术的web服务器来说这种方法就不是很实用。

因为它是对相应服务进程发出一个-HUP重启命令来实现日志的截断归档的,这样会影响服务的连续性。

   

   4.2使用apache自带的rotatelogs实现日志轮循

   

   apache提供了将不把日志直接写入文件,而是通过管道发送给另外一个程序的能力,这样就大大的加强了对日志进行处理的能力,这个通过管道得到的程序可以是任何程序:

如日志分析,压缩日志等。

要实现将日志写到管道只需要将配置中日志文件部分的内容替换为“|程序名“即可,例如:

   

   #compressedlogsCustomLog"|/usr/bin/gzip-c>>/var/log/access_log.gz"common

   

   这样就可以实用apache自带的轮循工具:

rotatelogs来对日志文件进行轮循。

rotatelogs基本是用来按时间或按大小控制日志的。

   

   CustomLog"|/www/bin/rotatelogs/www/logs/secfocus/access_log86400"common

   

   上面的示例中apache访问日志被发送给程序rotatelogs,rotatelogs将日志写入/www/logs/secfocus/access_log,并每隔86400秒(一天)对日志进行一次轮循。

轮循以后的文件名为/www/logs/secfocus/access_log.nnnn,这里nnn是开始记录日志的时间。

因此为了将日志按天对齐就需要在凌晨00:

00启动服务,使得每天轮循得到的日志刚好是完整一天的日志,以提供给访问统计分析程序进行处理。

如果是00:

00开始生成新的日志,那么轮循得到的日志就是access_log.0000。

   

   4.3使用cronolog实现日志轮循

   

   首先需要下载和安装cronolog,可以到http:

//www.cronolog.org下载最新版本的cronolog。

下载完毕以后,解压安装即可,方法如下所示:

   

   [root@mailroot]#tarxvfzcronolog-1.6.2.tar.gz[root@mailroot]#cdcronolog-1.6.2[root@mailcronolog-1.6.2]#./configure[root@mailcronolog-1.6.2]#make[root@mailcronolog-1.6.2]#makecheck[root@mailcronolog-1.6.2]#makeinstall

   

   这就完成了cronolog的配置和安装,默认情况下cronolog是安装在/usr/local/sbin下。

   

   修改apache日志配置命令如下所示:

   

   CustomLog"|/usr/local/sbin/cronolog/www/logs/secfocus/%w/access_log"combined

   

   这里%w表示按照日期星期几在不同的目录下保存日志,这种方式会保存一周的日志。

为了进行日志分析,需要每天将该日志文件拷贝(或移动,如果不希望保存一周的日志)到一个固定的位置以方便日志分析统计文件进行处理,实用crontab–e,如下添加定时任务:

   

   50***/bin/mv/www/logs/secfocus/`date-v-1d+\%w`/access_log/www/logs/secfocus/access_log_yesterday

   

   这样再使用日志统计分析程序的对文件access_log_yesterday进行处理。

   

   对于使用负载均衡技术的大型站点,就存在多个服务器的访问日志的合并处理问题.对于这种情况,各个服务器定义或移动日志文件时就不能使用access_log_yesterday了,就应该带上服务器编号了,例如服务器IP地址等信息以区分。

然后在各个服务器上运行网站镜像和备份服务rsyncd(参考文章”用rsync实现网站镜像和备份”,ttp:

//

   

   合并多个服务器的日志文件,例如:

log1log2log3并输出到log_all中的方法是:

   

   sort-m-t""-k4-olog_alllog1log2log3-m:

使用merge优化算法,-k4表示根据时间进行排序,-o表示将排序结果存放到指定的文件中。

   

   五、日志统计分析程序webalizer的安装和配置

   

   webalizer是一个高效的、免费的web服务器日志分析程序。

其分析结果是HTML文件格式,从而可以很方便的通过web服务器进行浏览。

Internet上的很多站点都使用webalizer进行web服务器日志分析。

Webalizer具有以下一些特性:

   

   1、是用C写的程序,所以其具有很高的运行效率。

在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。

   

   2、webalizer支持标准的一般日志文件格式(CommonLogfileFormat);除此之外,也支持几种组合日志格式(CombinedLogfileFormat)的变种,从而可以统计客户情况以及客户操作系统类型。

并且现在webalizer已经可以支持wu-ftpdxferlog日志格式以及squid日志文件格式了。

   

   3、支持命令行配置以及配置文件。

   

   4、可以支持多种语言,也可以自己进行本地化工作。

   

   5、支持多种平台,比如UNIX、linux、NT,OS/2和MacOS等。

   

   上图是webalizer生成的访问统计分析报表第一页的内容,这里包含每个月的平均访问量的表格和条形图统计分析情况。

点击每个月分,可以得到这个月每天的详细统计信息。

   

   5.1安装

   

   在安装以前首先需要确保系统已经安装有gd库,可以使用:

   

   [root@mailroot]#rpm-qa|grepgdgd-devel-1.8.4-4gdbm-devel-1.8.0-14gdbm-1.8.0-14sysklogd-1.4.1-8gd-1.8.4-4

   

   来确认系统已经安装有gd-deve和gd两个rpm包。

   

   安装webalizer有两种方式,一种是下载源代码来安装,一种是直接使用rpm包来安装。

   

   使用rpm包方式安装非常简单,从找到webalizer包,下载以后:

   

   rpm–ivhwebalizer-2.01_10-1.i386.rpm

   

   即可实现安装。

   

   对于源代码方式首先需要从

   

   tarxvzfwebalizer-2.01-10-src.tgz

   

   在生成的目录中有个lang目录,该目录中保存了各种语言文件,但是只有繁体中文版本,可以自己转换成简体,或者自己重新翻译一下。

然后进入生成的目录:

   

   cdwebalizer-2.01-10./configuremake--with-language=Chinesemakeinstall

   

   编译成功后,会在/usr/local/bin/目录下安装一个webalizer可执行文件。

   

   5.2配置和运行

   

   对webalizer运行的控制可以通过配置文件或者在命令行指定参数的两种方式进行。

而使用配置文件方式是比较简单和灵活的,适用于自动web服务器日志统计分析的应用环境。

   

   webalizer的默认配置文件为/etc/webalizer.conf,当启动Webalizer时没有使用“-f“选项时,Webalizer就会寻找文件/etc/webalizer.conf,也可以使用“-f”来指定配置文件(当服务器有虚拟主机时,就需要配置多份不同的webalizer配置文件,不同的虚拟主机的w

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2