ホームページ  >  記事  >  データベース  >  Web服务器日志统计分析完全解决方案 (2)

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

WBOY
WBOYオリジナル
2016-06-07 15:14:021568ブラウズ

4.2 使用apache自带的rotatelogs实现日志轮循 apache提供了将不把日志直接写入文件,而是通过管道发送给另外 一个程序的能力,这样就大大的加强了对日志进行处理的能力,这个通过管道得到的程序可以是任何程序:如日志分析,压缩日志等。要实现将日志写到管

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

apache提供了将不把日志直接写入文件,而是通过管道发送给另外 一个程序的能力,这样就大大的加强了对日志进行处理的能力,这个通过管道得到的程序可以是任何程序:如日志分析,压缩日志等。要实现将日志写到管道只需要将配置中日志文件部分的内容替换为“|程序名“即可,例如:


# compressed logs

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访问日志被发送给程序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@mail root]# tar 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下。

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


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



这里%w表示按照日期星期几在不同的目录下保存日志,这种方式会保存一周的日志。为了进行日志分析,需要每天将该日志文件拷贝(或移动,如果不希望保存一周的日志)到一个固定的位置以方便日志分析统计文件进行处理,实用crontab –e,如下添加定时任务:


5 0 * * * /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://www.linuxaid.com.cn/engineer/ideal/article /rsync.htm),然后将每个服务器每天的安装配置文件通过rsync下载到专门进行访问统计分析的服务器上进行合并。

合并多个服务器的日志文件,例如:log1 log2 log3并输出到log_all中的方法是:


sort -m -t " " -k 4 -o log_all log1 log2 log3

 

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


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

webalizer是一个高效的、免费的web服务器日志分析程序。其分析结果是HTML文件格式,从而可以很方便的通过web服务器进行浏览。Internet上的很多站点都使用webalizer进行web服务器日志分析。Webalizer具有以下一些特性:

1、是用C写的程序,所以其具有很高的运行效率。在主频为200Mhz的机器上,webalizer每秒钟可以分析10000条记录,所以分析一个40M大小的日志文件只需要15秒。

2、webalizer支持标准的一般日志文件格式(Common Logfile Format);除此之外,也支持几种组合日志格式(CombinedLogfile Format)的变种,从而可以统计客户情况以及客户操作系统类型。并且现在webalizer已经可以支持wu-ftpd xferlog日志格式以及squid日志文件格式了。

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

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

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

上图是webalizer生成的访问统计分析报表第一页的内容,这里包含每个月的平均访问量的表格和条形图统计分析情况。点击每个月分,可以得到这个月每天的详细统计信息。

5.1 安装

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

[root@mail root]# rpm -qa|grep gdgd-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包方式安装非常简单,从rpmfind.net找到webalizer包,下载以后:

  rpm –ivh webalizer-2.01_10-1.i386.rpm

即可实现安装。

对于源代码方式首先需要从http://www.mrunix.net/webalizer/下载,然后安装,首先解开源代码包:

tar xvzf webalizer-2.01-10-src.tgz

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

cd webalizer-2.01-10./configuremake --with-language=Chinesemake install

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

5.2 配置和运行

对webalizer运行的控制可以通过配置文件或者在命令行指定参数的两种方式进行。而使用配置文件方式是比较简单和灵活的,适用于自动web服务器日志统计分析的应用环境。

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

LogFile /www/logs/secfocus/access_log

用来指示配置文件的路径信息,webalizer会将该日志文件作为输入进行统计分析;

OutputDir /www/htdocs/secfocus/usage

用来指示生成的统计报表的保存目录,在前面我们使用alias,使得用户可以使用http://www.secfocus.com/usage/来访问统计报表。

HostName www.secfocus.com

用来指示主机名,统计报表中会引用该主机名。

其他选项就无需修改,配置文件修改完毕以后,就需要在定时webalizer,每天生成当日的统计分析。

以root身份运行:crontab –e 进入定时运行任务编辑状态,加入如下任务:

5 0 * * * /usr/local/bin/webalizer –f /etc/secfocus.webalizer.conf15 0 * * * /usr/local/bin/webalizer –f /etc/tomorrowtel.webalizer.conf

我们这里假设系统运行有两个虚拟主机,并分别定义了日志分析配置文件 secfocus.webalizer.conf和tomorrowtel.webalizer.conf。这样我们定义在凌晨00:05对 secfocus的日志进行统计分析;在凌晨00:15对tomorrowtel的日志进行统计分析。

然后第二天分别使用http://www.secfocus.com/usage/和http://www.tomorrowtel.com/usage来察看各自的日志分析报表。

六、保护日志统计分析报告不被未授权用户访问

我们肯定不会希望自己网站访问统计信息随意被别人浏览,因此需要将usage目录保护起来,只允许合法用户访问。这里可以采用apache自带的基本的认证机制,配置以后再连接这个地址就会需要用户提供密码才能访问该页面:

1、条件

在配置文件中对目录"/"应该设置为:

DocumentRoot /www/htdocs/secfocus/AccessFileName .htaccessAllowOverride All

2、需求

需求:限制对http://www.secfocus.com/usage/的访问,要求用户认证才能访问。这里设置用户为"admin",口令为"12345678"。

3、使用htpasswd建立用户文件

htpasswd -c /www/.htpasswd admin

此程序会询问用户"admin"的口令,你输入"12345678",两次生效。

4、建立.htaccess文件

用vi在/www/logs/secfocus/usage/目录下建立一个文件.htaccess,写入以下几行:

AuthName admin-onlyAuthType BasicAuthUserFile /www/.htpasswdrequire user admin

5、测试

这时候通过浏览器访问http://www.secfocus.com/usage就会弹出框请求输入用户名和口令,这时候输入admin、12345678就可以才可以访问访问日志统计分析报表。

 


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。