【杂谈】日志对于任何一个服务器来说都是至关重要的,对于我们今天要介绍的Apache亦是如此。当服务器运行正常时,维护人员可以通过运行日志来观察服务器的运行状态(流量分析、数据统计、日常维护等),当服务器出现一些运行错误时,我们也可以通过日志来查看那些地方出现的什么类型的错误,以便我们的网站维护人员来及时,准确的定位错误,及时恢复,来保证用户的正常的网络访问。详细的日志分析工具对于网站的快速分析问题,解决问题来说更是至关重要的,今天给大家介绍几种现在使用比较多的日志分析工具。

【日志简介】

1、日志格式类型

目前常见的WEB日志格式主要由两类一类是Apache的NCSA日志格式,另一类是IIS的W3C日志格式。NCSA格式又分为NCSA普通日志格式(CLF)和NCSA扩展日志格式(ECLF)两类,目前最常用的是NCSA扩展日志格式(ECLF)及基于自定义类型的Apache日志格式;而W3C扩展日志格式(ExLF)具备了更为丰富的输出信息,但目前的应用并不广泛,所以这里主要介绍的是NCSA扩展日志格式(ECLF)。

2、常见日志格式的组成

访问主机(remotehost)显示主机的IP地址或者已解析的域名。

标识符(Ident) 由identd或直接由浏览器返回浏览者的EMAIL或其他唯一标示,因为涉及用户邮箱等隐私信息,目前几乎所有的浏览器就取消了这项功能。

授权用户(authuser)用于记录浏览者进行身份验证时提供的名字,如果需要身份验证或者访问密码保护的信息则这项不为空,但目前大多数网站日志这项也都是为空的。

日期时间(date一般的格式形如[22/Feb/2010:09:51:46 +0800],即[日期/月份/年份:小时:分钟:秒钟 时区],占用的的字符位数也基本固定。

请求(request)即在网站上通过何种方式获取了哪些信息,也是日志中较为重要的一项,主要包括以下三个部分:请求类型(METHOD)常见的请求类型主要包括GET/POST/HEAD这三种;请求资源(RESOURCE)显示的是相应资源的URL,可以是某个网页的地址,也可以是网页上调用的图片、动画、CSS等资源;协议版本号(PROTOCOL)显示协议及版本信息,通常是HTTP/1.1或HTTP/1.0。

状态码(status)用于表示服务器响应状态,通常1xx的状态码表示继续消息;2xx表示请求成功;3xx表示请求的重定向;4xx表示客户端错误;5xx表示服务器错误。

传输字节数(bytes)即该次请求中一共传输的字节数。

来源页面(referrer)用于表示浏览者在访问该页面之前所浏览的页面,只有从上一页面链接过来的请求才会有该项输出,如果是新开的页面则该项为空。上例中来源页面是google,即用户从google搜索的结果中点击进入。

用户代理(agent)用于显示用户的详细信息,包括IP、OS、Bowser等。

3、日志格式扩展

apache日志格式可以自定义来配置其输出格式,常见的基于NCSA扩展日志格式(ECLF)自定义添加的包括域名(domain)cookie。其中域名在一个网站拥有二级域名或者子域名时,可以更好地区分日志;而cookie可以作为用户的身份标识。

【日志分析工具】

系统环境:Red Hat Enterprise Linux Server release 5.4 

基本环境Httpd-2.2.3-31.el5

一、Webalizer

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

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

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

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

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

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

配置详细步骤:

Red Hat光盘上自带版本(webalizer-2.01_10-30.1.i386

我们用的是最新源码(webalizer-2.23-05-src.tgz)

Step1:

tar zxvf webalizer-2.23-05-src.tgz -C /usr/local/src/

cd  /usr/local/src/webalizer-2.23-05

./configure  --sysconfdir=/etc

make && make install 

Step2:编辑Apache配置脚本,添加测试域(www.wpp.com)

vim /etc/httpd/conf/httpd.cnf

Step3:编辑计划任务,监控Apache的日志(/var/log/httpd/目录)

vim  /etc/crontab(为了实验效果,任务为给分钟执行一次)

创建新计划任务的目录cron.web,并编写可执行计划任务脚本web。

mkdir /etc/cron.web    cd  /etc/cron.web      

vim  web(内容如下图)

chmod  a+x  web  

service  crond  restart(重启计划任务服务,让新计划任务生效)

创建监控日志存放目录. mkdir /var/www/html/alog

Step4:Web方式测试访问流量情况.

修改主机的Hosts文件,添加www.wpp.com域,用于域名解析.

(C:\Windows\System32\drivers\etc\hosts)

浏览器地址栏输入(http://www.wpp.com/alog)

注意:第一次访问时,可能只会出现目录浏览,原因是还没有人访问过该站点。此时可以先访问站点主目录,过一分钟后刷新后,再次访问alog目录,即出现访问流量统计信息.(下图)

给过一分钟刷新页面,数值都会有所变化,点击日期有详细的说明.

二、AWStatus

Awstats 是在Sourceforge上发展很快的一个基于Perl的WEB日志分析工具是一个免费非常简洁而且强大有个性的网站日志分析工具。它可以统计您站点的如下信息:访问量,访问次数,页面浏览量,点击数,数据流量等精确到每月、每日、每小时的数据 访问者国家 访问者IP Robots/Spiders的统计访客持续时间对不同Files type 的统计信息Pages-URL的统计访客操作系统浏览器等信息其它信息(搜索关键字等等)

相对于刚才介绍的日志分析工具Webalizer,AWStats的优势在于:

界面友好:可以根据浏览器直接调用相应语言界面(有简体中文版)

基于Perl:并且很好的解决了跨平台问题,系统本身可以运行在GNU/Linux上或Windows上(安装了ActivePerl后);分析的日志直接支持Apache格式 (combined)和IIS格式(需要修改)。Webalizer虽然也有Windows平台版,但目前已经缺乏 维护;AWStats完全可以实现用一套系统完成对自身站点不同WEB服务器:GNU/Linux/Apache和Windows/IIS服务器的统一统计。

效率比较高:AWStats输出统计项目比Webalizer丰富了很多,速度仍可以达到Webalizer的1/3左右,对于一个日访问量 百万级的站点,这个速度都是足够的;

配置/定制方便:系统提供了足够灵活但缺省也很合理的配置规则,需要修改的缺省配置不超过3,4项就可以开始运行,而且修改和扩展的插件 比较多;

AWStats的设计者是面向精确的"Human visits"设计的,因此很多搜索引擎的机器人访问都被过滤掉了,因此有可能比其他日志统计工具统计的数字要低,来自公司内部的访问也可以通过IP过滤 设置过滤掉。

提供了很多扩展的参数统计功能:使用ExtraXXXX系列配置生成针对具体应用的参数分析会对产品分析非常有用。

配置详细步骤:

我们用的是最新版源码:awstats-7.1.1.tar.gz

Step1:

tar -zxvf awstats-7.1.1.tar.gz -C /usr/local/src/

cd  /usr/local/src/awstats-7.1.1/tools/

perl  awstats_configure.pl 

Step2:编辑生成的主配置文档.

vim  /etc/awstats/awstats.www.wpp.com.conf

Step3:创建Web方式查看流量的主目录test,拷贝显示网页需要的图形工具(icon、css)

mkdir  /var/www/html/test

cd   /usr/local/src/awstats-7.1.1/wwwroot/

cp -R  icon  /var/www/html/test/

cp -R  css  /var/www/html/test/

Step4:编辑原来的计划任务脚本(/etc/cron.web/web)添加如下;

service  crond  restart(重启计划任务服务,让新计划任务生效)

至于目录访问安全性问题,在此不作详述,根据安全需要,自行添加.

Step4:进行Web方式的流量监控测试.(记得修改主机Hosts文件)

浏览器地址栏输入(http://www.wpp.com/test)

 

三、ApacheTop

ApacheTop可以动态的查看apache的日志文件,还可以直观的看到访问的每个地址的请求数、速度及流量等信息。

配置详细步骤:

我们用的是最新版源码:apachetop-0.12.6.tar.gz

Step1:

tar zxvf  apachetop-0.12.6.tar.gz -C /usr/local/src/

cd /usr/local/src/apachetop-0.12.6

./configure && make && make install 

Step2:使用参数说明.

Step3:启动监控(T 值设定大一点,d 值小一点,用于监控)

apachetop -f /var/log/httpd/access_log -T 1000 -d  2

Step4:q键退出监控.

四、GoAccess

GoAccess 是一个用来统计 Apache Web 服务器的访问日志的工具,可即时生成统计报表,速度非常快。

配置详细步骤:

我们用的是最新版源码:goaccess-0.5.tar.gz

Step1:

tar zxvf  goaccess-0.5.tar.gz -C /usr/local/src/

cd /usr/local/src/goaccess-0.5

./configure && make && make install 

Step2:使用参数说明.(goaccess回车/ man  goaccess)

Step3:启动监控

Common Log Format (CLF) 格式的日志显示结果:

②NCSA Combined Log Format 格式的日志显示结果:

Step4:q键退出监控.

 

如果您也有好的流量监控软件推荐,请留言。。。。