【杂谈】日志对于任何一个服务器来说都是至关重要的,对于我们今天要介绍的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键退出监控.
如果您也有好的流量监控软件推荐,请留言。。。。