 |
Web服务器日志统计分析完全解决方案 |
|
|
| Web服务器日志统计分析完全解决方案 |
|
| 作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-23 21:04:31 |
|
webalizer http://w
|
ww.mrunix.net/webalizer/
|
cronolog http:
|
//www.cronolog.org/
|
| Apache http://www.apache.org/ |
随着Internet上Web服务的发展,几 构建或正在建设自己的网站。而与此同时 题,那么对web服务器的运行和访问情况 网站存在的不足,促进网站的更好发展重
|
乎各个政府部门、公司、大专院校、科研院所等都在 ,在构建网站建设中各个单位都会遇到各种各样的问 进行详细和周全的分析对于了解网站运行情况,发现 要性是不言而喻的。
|
管理Web网站不只是监视Web的速度和 吐量,还要了解对这些Web网站的外来访 频率来改善网页的内容和质量、提高内容 网站“幕后”的数据等。
|
Web的内容传送,它要求不仅仅关注服务器每天的吞 问,了解网站各页面的访问情况,根据各页面的点击 的可读性,跟踪包含有商业交易的步骤以及管理Web
|
为了更好地提供WWW服 越来越显得重要和迫切了。 到。
|
务,监控WEB服务器的运行情况 而这些要求都可以通过对web服
|
、了解网站内容的详细访问状况就 务器的日志文件的统计和分析来做
|
网站服务器日志记录了web服务器接 日志进行统计、分析、综合,就能有效地 客户访问分布等,更好的加强系统的维护
|
收处理请求以及运行时错误等各种原始信息。通过对 掌握服务器的运行状况,发现和排除错误原因、了解 和管理。
|
1) 客户端(浏览器)和w 求(如:get),根据HTTP 等一系列信息。
|
eb服务器建立tcp连接,连接建 协议该请求中包含了客户端的IP
|
立以后,向web 服务器发出访问请 地址、浏览器的类型、请求的URL
|
) web服务器收到请求 返回错误代码。
|
后,将客户端要求的页面内容返
|
回到客户端。如果出现错误,那么
|
3) 服务器端将访问信 请求的数据报的内容:
|
息和错误信息纪录到日志文件里
|
。下面是客户端发送给web服务器
|
| GET /engineer/ideal/list.htm HTTP/1.1 |
Accept: image/gif, image/x-xbitm
|
ap, image/jpeg, image/pjpeg,
|
application/vnd.ms-powerpoint, a */*
|
pplication/vnd.ms-excel, application/msword,
|
Referer: http://www.
|
linuxaid.com.cn/engineer/ide
|
al/
|
| Accept-Encoding: gzip, deflate |
User-Agent: Mozilla/
|
4.0 (compatible; MSIE 6.0; W
|
indows NT 5.0)
|
| Host: www.linuxaid.com.cn |
可以看到,在客户机的请求里包含了 务器就会将请求的web页内容发送返回给
|
很多有用的信息,例如:客户端类型等等。而web服 客户机。
|
目前最常用的web服务 联网上最常用的web服务器 其他的应用环境类似。对于 combined两种模式,其中co 于哪里,例如来自于yahoo 。我们这里讨论combined类
|
器有Apache、Netscape enterpr 就是apache,因此我们这里的讨 Apache来说,支持多种日志文件 mbined方式比common方式的日志 的搜索引擎)和User-agent(用 型。下面是common类型的日志示
|
ise server、MS IIS等。而目前互 论都以Linux+apache环境讨论, 格式,最常见的是common和 的信息要多Referer(该请求来自 户客户端类型,如mozilla或IE) 例:
|
218.242.102.121 - -
|
[06/Dec/2002:00:00:00 +0000]
|
|
"GET /2/face/shnew/ad/via2002091 "http://www.mpsoft.net/"
|
5logo.gif HTTP/1.1" 304 0
|
"Mozilla/4.0 (compat
|
ible; MSIE 6.0; Windows 98)"
|
61.139.226.47 - - [06/Dec/2002:0
|
0:00:00 +0000]
|
"GET /cgi-bin/guang beareyes.com.cn/1/index.
|
gaotmp.cgi?1 HTTP/1.1" 200 1 php"
|
78 "http://www3.
|
"Mozilla/4.0 (compa
|
tible; MSIE 5.0; Windows 98;
|
DigExt)"
|
218.75.41.11 - - [06/Dec/2002:00
|
:00:00 +0000]
|
"GET /2/face/shnew/
|
ad/via20020915logo.gif HTTP/
|
1.1" 304 0
|
"Mozilla/4.0 (compatible; MSIE 5
|
.0; Windows 98; DigExt)"
|
61.187.207.104 - - [06/Dec/2002:
|
00:00:00 +0000]
|
"GET /images/logolun
|
1.gif HTTP/1.1" 304 0
|
| "http://www2.beareyes.com.cn/bbs/b.htm" |
"Mozilla/4.0 (compa
|
tible; 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
|
"http://www.beareyes
|
.com/2/lib/200201/12/2002011
|
2004.htm"
|
"Mozilla/4.0 (compat
|
ible; MSIE 5.5; Windows NT 5
|
.0)"
|
从上面的日志文件可以 的页面、web服务器对于该 )、该请求的引用地址、客
|
看出日志记录会记录客户端的IP 请求返回的状态信息、返回给客 户浏览器类型等信息。
|
地址、访问发生的时间、访问请求 户端的内容的大小(以字节为单位
|
本文中我们假设我们的 www.tomorrowtel.com。我
|
apache运行有两个虚拟主机:ww 们需要对这两个虚拟主机分别进
|
w.secfocus.com和 行访问日志分析和统计。
|
| Apache配置文件中,我们需要关心的和日志相关的配置有两个: |
| CustomLog /www/logs/access_log common |
| ErrorLog /www/logs/error_log |
CustomLog用来指示apa )和格式(这里为common)
|
che的访问日志的存放位置(这 ;ErrorLog用来指示apache错误
|
里保存在/www/logs/access_log中 信息日志的存放位置。
|
对于不配置虚拟主机的服务器来说, 行修改即可;而对于具有多个虚拟服务器 日志,以便对各个虚拟服务器进行访问统 立的日志配置,示例:
|
只需要直接在httpd.conf中查找CustomLOg的配置进 的web服务器来说,需要分离各个虚拟服务器的访问 计和分析。因此这就需要在虚拟服务器配置中进行独
|
| NameVirtualHost 75.8.18.19 |
| ServerName www.secfocus.com |
| ServerAdmin secfocus@secfocus.com |
| DocumentRoot /www/htdocs/secfocus/ |
| CustomLog "/www/log/secfocus" combined |
Alias /usage/ "/www/
|
log/secfocus/usage/"
|
| ServerName www.tomorrowtel.com |
ServerAdmin tomorrow
|
tel @ tomorrowtel.com
|
| DocumentRoot /www/htdocs/ tomorrowtel |
CustomLog "/www/log/tomorrowtel
|
" combined
|
Alias /usage/ "/www/
|
log/tomorrowtel/usage/"
|
这里需要注意的是每个虚拟主机的定 问日志的存放文件;而Alias命令用来让 www.secfocus.com/usage/的方式来访问
|
义都有一个CustomLog命令,用来指定该虚拟主机访 日志分析生成的报表能通过 。通过上面的配置就完成了日志文件的保存。
|
但是下来遇到的一个问 理那么日志文件会越来越大 空间,导致服务器无法正常 从而更进一步影响web服务 的运行,因为日志统计分析 计分析程序运行特别慢。因
|
题就是日志文件的轮循,因为日 ,会影响web服务器运行效率; 运行,另外如果单个日志文件大 的运行。而且日志文件如果不进 都是以天为单位进行统计分析的 此这里就需要对web服务器日志
|
志是一直在增大的,如果不进行处 速率,还可能过大耗尽服务器硬盘 于操作系统单文件尺寸的的限制, 行轮循也不变于日志统计分析程序 ,跨越很长时间日志会使得日志统 文件每天进行轮循。
|
web服务器日志轮循比 轮循机制:logrotate;第 使用在apache的FAQ中推荐
|
较好的方式有三种:第一种方法 二种方法是利用apache自带的日 发展已经比较成熟的一个日志轮
|
是利用Linux系统自身的日志文件 志轮循程序rotatelogs;第三种是 循工具cronolog。
|
对于大型的WEB服务来说,其往往使 台有多个服务器提供WEB服务,这大大方 就需要对日志进行合并统一进行统计分析 时段来自动生成日志文件。
|
用实用负载均衡技术提高web站点服务能力,这样后 便了服务的分布规划和扩展性,但多个服务器的分布 。因此为了保证统计的精确性就需要严格按照每天的
|
4.1 logrotate实现日 logrotate的方法。Logrota 志(syslogd,mail)进行 行的,可以在/etc/cron.da
|
志轮循首先我们讨论采用Linux te是Linux系统自身带的一个日 轮循的程序。该程序是由运行程 ily目录下可以看到logrotate文
|
系统自身的日志文件轮循机制: 志轮循程序,是专门对各种系统日 序的服务crond来每天凌晨4:02运 件,其内容如下: #!/bin/sh
|
| /usr/sbin/logrotate /etc/logrotate.conf |
可以看到每天清晨crond都会启动/et 循。
|
c/cron.daily目录下的logrotate脚本来进行日志轮
|
| 而在/etc/logrorate.conf中可以看到内容如下: |
| # see "man logrotate" for details |
| # rotate log files weekly |
| # keep 4 weeks worth of backlogs |
# create new (empty) log files a
|
fter rotating old ones
|
# uncomment this if
|
you want your log files comp
|
ressed
|
# RPM packages drop log rotation
|
information into this directory
|
# no packages own wtmp -- we'll
|
rotate them here
|
# system-specific logs may be al
|
so be configured here.
|
从logrotate的配置文件中可以看到 /etc/logroate.d目录下。因此我们只需 示logrotate如何轮循web服务器的日志文
|
除了wtmp以外,需要滚动的日志的配置都保存在 要在该目录下创建一个名为apache的配置文件,来指 件即可,下面是一个示例:
|
| /usr/bin/killall -HUP httpd 2> /dev/null || true |
| /usr/bin/killall -HUP httpd 2> /dev/null || true |
这里“rotate 2”表示轮循时只包括 access_log.1、access_log.2三个日志备 的轮循。后面我们会讨论如何使用日志统
|
两个备份文件,也就是只有:access_log、 份文件。就这样就实现了对两个虚拟主机的日志文件 计分析软件对日志文件进行处理。
|
这种方法的优点是不需 和使用负载均衡技术的web 一个-HUP重启命令来实现日
|
要其他第三方工具就可以实现日 服务器来说这种方法就不是很实 志的截断归档的,这样会影响服
|
志轮循,但是对于重负载的服务器 用。因为它是对相应服务进程发出 务的连续性。
|
| 4.2 使用apache自带的rotatelogs实现日志轮循 |
apache提供了将不把日 就大大的加强了对日志进行 析,压缩日志等。要实现将 名“即可,例如:
|
志直接写入文件,而是通过管道 处理的能力,这个通过管道得到 日志写到管道只需要将配置中日
|
发送给另外一个程序的能力,这样 的程序可以是任何程序:如日志分 志文件部分的内容替换为“|程序
|
| CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" common |
这样就可以实用apache自带的轮循工 基本是用来按时间或按大小控制日志的。
|
具:rotatelogs来对日志文件进行轮循。rotatelogs
|
CustomLog "|/www/bin/rotatelogs
|
/www/logs/secfocus/access_log 86400" common
|
上面的示例中apache访问日志被发送 /www/logs/secfocus/access_log,并每 的文件名为/www/logs/secfocus/access_ 了将日志按天对齐就需要在凌晨00:00启 日志,以提供给访问统计分析程序进行处 的日志就是access_log.0000。
|
给程序rotatelogs,rotatelogs将日志写入 隔86400秒(一天)对日志进行一次轮循。轮循以后 log.nnnn,这里nnn是开始记录日志的时间。因此为 动服务,使得每天轮循得到的日志刚好是完整一天的 理。如果是00:00开始生成新的日志,那么轮循得到
|
首先需要下载和安装cronolog,可以 cronolog。下载完毕以后,解压安装即可
|
到http://www.cronolog.org下载最新版本的 ,方法如下所示:
|
[root@mail root]# ta
|
r xvfz cronolog-1.6.2.tar.gz
|
| [root@mail root]# cd cronolog-1.6.2 |
| [root@mail cronolog-1.6.2]# ./configure |
| [root@mail cronolog-1.6.2]# make |
| [root@mail cronolog-1.6.2]# make check |
[root@mail cronolog-1.6.2]# make
|
install
|
这就完成了cronolog的配置和安装,
|
默认情况下cronolog是安装在/usr/local/sbin下。
|
CustomLog "|/usr/loc d
|
al/sbin/cronolog /www/logs/s
|
ecfocus/%w/access_log" combine
|
这里%w表示按照日期星期几在不同的 进行日志分析,需要每天将该日志文件拷 定的位置以方便日志分析统计文件进行处
|
目录下保存日志,这种方式会保存一周的日志。为了 贝(或移动,如果不希望保存一周的日志)到一个固 理,实用crontab –e,如下添加定时任务:
|
5 0 * * * /bin/mv /w
|
ww/logs/secfocus/`date -v-1d
|
+/%
|
w`/access_log /www/logs/secfocus
|
/access_log_yesterday
|
这样再使用日志统计分析程序的对文
|
件access_log_yesterday进行处理。
| , ,
对于使用负载均衡技术 这种情况,各个服务器定义 上服务器编号了,例如服务 服务rsyncd(参考文章” id.com.cn/engineer/ideal 过rsync下载到专门进行访
|
的大型站点,就存在多个服务器 或移动日志文件时就不能使用ac 器IP地址等信息以区分。然后在 用rsync实现网站镜像和备份”, /article/rsync.htm),然后将 问统计分析的服务器上进行合并
|
的访问日志的合并处理问题.对于 cess_log_yesterday了,就应该带 各个服务器上运行网站镜像和备份 ttp://www.linuxa 每个服务器每天的安装配置文件通 。
|
合并多个服务器的日志文件,例如:
|
log1 log2 log3并输出到log_all中的方法是:
|
sort -m -t " " -k 4 -o log_all l
|
og1 log2 log3
|
-m: 使用 merge优化算 文件中。
|
法,-k 4表示根据时间进行排序
|
,-o表示将排序结果存放到指定的
|
| 五、日志统计分析程序webalizer的安装和配置 |
webalizer是一个高效的、免费的web 从而可以很方便的通过web服务器进行浏 服务器日志分析。Webalizer具有以下一
|
服务器日志分析程序。其分析结果是HTML文件格式, 览。Internet上的很多站点都使用webalizer进行web 些特性:
|
1、是用C写的程序,所 每秒钟可以分析10000条记
|
以其具有很高的运行效率。在主 录,所以分析一个40M大小的日
|
频为200Mhz的机器上,webalizer 志文件只需要15秒。
|
2、webalizer支持标准的一般日志文 持几种组合日志格式(Combined Logfile 作系统类型。并且现在webalizer已经可 格式了。
|
件格式(Common Logfile Format);除此之外,也支 Format)的变种,从而可以统计客户情况以及客户操 以支持wu-ftpd xferlog日志格式以及squid日志文件
|
5、支持多种平台,比如UNIX、linux
|
、NT, OS/2 和 MacOS等。
|
上图是webalizer生成 的表格和条形图统计分析情
|
的访问统计分析报表第一页的内 况。点击每个月分,可以得到这
|
容,这里包含每个月的平均访问量 个月每天的详细统计信息。
|
| 在安装以前首先需要确保系统已经安装有gd库,可以使用: |
| [root@mail root]# rpm -qa|grep gd |
| 来确认系统已经安装有gd-deve和gd两个rpm包。 |
安装webalizer有两种
|
方式,一种是下载源代码来安装
|
,一种是直接使用rpm包来安装。
|
使用rpm包方式安装非
|
常简单,从rpmfind.net找到web
|
alizer包,下载以后:
|
| rpm –ivh webalizer-2.01_10-1.i386.rpm |
对于源代码方式首先需要从http://w 开源代码包:
|
ww.mrunix.net/webalizer/下载,然后安装,首先解
|
| tar xvzf webalizer-2.01-10-src.tgz |
在生成的目录中有个lang目录,该目 可以自己转换成简体,或者自己重新翻译
|
录中保存了各种语言文件,但是只有繁体中文版本, 一下。然后进入生成的目录:
|
| make --with-language=Chinese |
编译成功后,会在/usr
|
/local/bin/目录下安装一个web
|
alizer可执行文件。
|
对webalizer运行的控 用配置文件方式是比较简单
|
制可以通过配置文件或者在命令 和灵活的,适用于自动web服务
|
行指定参数的两种方式进行。而使 器日志统计分析的应用环境。
|
webalizer的默认配置 “选项时,Webalizer就会 件(当服务器有虚拟主机时 webalizer使用不同的配置
|
文件为/etc/webalizer.conf, 寻找文件/etc/webalizer.conf ,就需要配置多份不同的webali 文件。Webalizer.conf配置文件
|
当启动Webalizer时没有使用“-f ,也可以使用“-f”来指定配置文 zer配置文件,不同的虚拟主机的 中需要修改的配置选项如下:
|
| LogFile /www/logs/secfocus/access_log |
用来指示配置文件的路
|
径信息,webalizer会将该日志
|
文件作为输入进行统计分析;
|
| OutputDir /www/htdocs/secfocus/usage |
用来指示生成的统计报表的保存目录 http://www.secfocus.com/usage/来访问
|
,在前面我们使用alias,使得用户可以使用 统计报表。
|
| HostName www.secfocus.com |
其他选项就无需修改, 的统计分析。
|
配置文件修改完毕以后,就需要
|
在定时webalizer,每天生成当日
|
以root身份运行:cron
|
tab –e 进入定时运行任务编辑
|
状态,加入如下任务:
|
5 0 * * * /usr/local/bin/webaliz
|
er –f /etc/secfocus.webalizer.conf
|
15 0 * * * /usr/loca
|
l/bin/webalizer –f /etc/tom
|
orrowtel.webalizer.conf
|
我们这里假设系统运行 secfocus.webalizer.conf secfocus的日志进行统计分
|
有两个虚拟主机,并分别定义了 和tomorrowtel.webalizer.conf 析;在凌晨00:15对tomorrowtel
|
日志分析配置文件 。这样我们定义在凌晨00:05对 的日志进行统计分析。
|
然后第二天分别使用ht orrowtel.com/usage来察看
|
tp://www.secfocus.com/usage/ 各自的日志分析报表。
|
和http://www.tom
|
我们肯定不会希望自己网站访问统计 来,只允许合法用户访问。这里可以采用 地址就会需要用户提供密码才能访问该页
|
信息随意被别人浏览,因此需要将usage目录保护起 apache自带的基本的认证机制,配置以后再连接这个 面:
|
| DocumentRoot /www/htdocs/secfocus/ |
需求:限制对http://www.secfocus. 置用户为"admin",口令为"12345678"。
|
com/usage/的访问,要求用户认证才能访问。这里设
|
| htpasswd -c /www/.htpasswd admin |
| 此程序会询问用户"admin"的口令,你输入"12345678",两次生效。 |
用vi在/www/logs/secfocus/usage/
|
目录下建立一个文件.htaccess,写入以下几行:
|
| AuthUserFile /www/.htpasswd |
这时候通过浏览器访问http://www.s 令,这时候输入admin、12345678就可以
|
ecfocus.com/usage就会弹出框请求输入用户名和口 才可以访问访问日志统计分析报表。
| 【转自世纪安全网 http://www.21safe.com】
|
|
| 文章录入:admin 责任编辑:admin |
|
|
上一篇文章: 反垃圾邮件新思路:交换机防御解决方案 下一篇文章: 无线局域网的安全风险分析和解决方案 |
|
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|
|