欢迎各位兄弟 发布技术文章
这里的技术是共享的
【杂谈】日志对于任何一个服务器来说都是至关重要的,对于我们今天要介绍的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键退出监控.
来自 http://tywangpanpan.blog.51cto.com/6264315/1176447
WEB日志是网站分析和网站数据数据整理最基础的数据,了解其格式和组成将有利于更好地进行数据的收集、处理和分析。
一、日志格式类型
目前常见的WEB日志格式主要由两类,一类是Apache的NCSA日志格式,另一类是IIS的W3C日志格式。NCSA格式又分为NCSA普 通日志格式(CLF)和NCSA扩展日志格式(ECLF)两类,目前最常用的是NCSA扩展日志格式(ECLF)及基于自定义类型的Apache日志格 式;而W3C扩展日志格式(ExLF)具备了更为丰富的输出信息,但目前的应用并不广泛,所以这里主要介绍的是NCSA扩展日志格式(ECLF)。
二、常见日志格式的组成
这是一个最常见的基于NCSA扩展日志格式(ECLF)的Apache日志样例:
1 | 58.61.164.141 – – [22/Feb/2010:09:51:46 +0800] “GET / HTTP/1.1″ 206 6326 ” http://www.google.cn/search?q=webdataanalysis” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)” |
可以看到这个日志主要由以下几个部分组成:
访问主机(remotehost)显示主机的IP地址或者已解析的域名。
标识符(Ident)由identd或直接由浏览器返回浏览者的EMAIL或其他唯一标示,因为涉及用户邮箱等隐私信息,目前几乎所有的浏览器就取消了这项功能。
授权用户(authuser)用于记录浏览者进行身份验证时提供的名字,如果需要身份验证或者访问密码保护的信息则这项不为空,但目前大多数网站的日志这项也都是为空的。
日期时间(date)一般的格式形如[22/Feb/2010:09:51:46 +0800],即[日期/月份/年份:小时:分钟:秒钟时区],占用的的字符位数也基本固定。
请求(request)即在网站上通过何种方式获取了哪些信息,也是日志中较为重要的一项,主要包括以下三个部分:
状态码(status)用于表示服务器的响应状态,通常1xx的状态码表示继续消息;2xx表示请求成功;3xx表示请求的重定向;4xx表示客户端错误;5xx表示服务器错误。
传输字节数(bytes)即该次请求中一共传输的字节数。
来源页面(referrer)用于表示浏览者在访问该页面之前所浏览的页面,只有从上一页面链接过来的请求才会有该项输出,如果是新开的页面则该项为空。上例中来源页面是google,即用户从google搜索的结果中点击进入。
用户代理(agent)用于显示用户的详细信息,包括IP、OS、Bowser等。
三、日志格式扩展
apache日志格式可以自定义来配置其输出格式,常见的基于NCSA扩展日志格式(ECLF)自定义添加的包括域名(domain)和cookie。其中域名在一个网站拥有二级域名或者子域名时,可以更好地区分日志;而cookie可以作为用户的身份标识。其他具体的自定义信息详见:Custom Log Formats
四、导入日志数据到MySQL中
访问分析是SEO的一项重要工作,但统计、分析工具毕竟功能是针对大众的,很多时候SEO需要一些特定的数据,是统计分析软件、程序所不能提供 的。这样,直接的Web日志分析就是最合适的了,日志中会记录每一个访问情况,只要按自己的意愿提取、组合,就能得到想要的数据。使用SQL语句分析是最 方便的,需要什么样的数据,只要使用相应的SQL命令就能实现。
导入Web日志到MySQL数据库的实现
1、修改Apache日志格式
修改Web日志格式为:
1 | Logformat combined %>a, %ui , %un ,[ %tl ],” %rm %ru HTTP/ %rv ”, %Hs , %h ”,”%{User-Agent}>h”, %Ss : %Sh |
SQL需要导入的内容有特定的分隔符,Apache的日志默认是以空格分隔的,而有些内容(如状态码中的 200 610)也包含空格,这就无法准确的导入。将日志格式修改为以逗号分隔,就能准确的导入了。还可以根据自己的需要,取消日志格式中不需要的内容,减少日志 文件大小。
2、建立MySQL数据表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | drop table if exists weblog; create table weblog ( id int unsigned auto_increment PRIMARY KEY not null , l_date date , l_time time , c_ip varchar (15), s_ip varchar (15), s_port varchar (5), method varchar (10), path varchar (255), query varchar (255), status varchar (3), domain varchar (50), system varchar (200) ); |
注:上面只是一个MySQL数据表结构范例,没有与上一步日志格式对应,请勿直接复制使用!
新建一个数据库,数据表结构与日志格式对应起来。
3、导入日志到MySQL中
1 | LOAD DATA INFILE ’/日志位置/日志文件’ INTO TABLE weblog FIELDS TERMINATED BY ‘,’; |
weblog 对应上面的数据表名。
另外,乐思蜀从网上找到一个将IIS日志导入到MySQL数据库的.pl程序,需要的点这里下载(Readme.txt为使用说明)。
五、常用日志分析工具
1.awstats
2.analog
3.webalizer
4.PHPMyVisites
本文参考:
http://webdataanalysis.net/reference-and-source/weblog-format/