WEB日志格式及分析工具
WEB日志是网站分析和网站数据数据整理最基础的数据,了解其格式和组成将有利于更好地进行数据的收集、处理和分析。
一、日志格式类型
目前常见的WEB日志格式主要由两类,一类是Apache的NCSA日志格式,另一类是IIS的W3C日志格式。NCSA格式又分为NCSA普通日志格式(CLF)和NCSA扩展日志格式(ECLF)两类,目前最常用的是NCSA扩展日志格式(ECLF)及基于自定义类型的Apache日志格式;而W3C扩展日志格式(ExLF)具备了更为丰富的输出信息,但目前的应用并不广泛,所以这里主要介绍的是NCSA扩展日志格式(ECLF)。
二、常见日志格式的组成
这是一个最常见的基于NCSA扩展日志格式(ECLF)的Apache日志样例:
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)即在网站上通过何种方式获取了哪些信息,也是日志中较为重要的一项,主要包括以下三个部分:
- 请求类型(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等。
三、日志格式扩展
apache日志格式可以自定义来配置其输出格式,常见的基于NCSA扩展日志格式(ECLF)自定义添加的包括域名(domain)和cookie。其中域名在一个网站拥有二级域名或者子域名时,可以更好地区分日志;而cookie可以作为用户的身份标识。其他具体的自定义信息详见:Custom Log Formats
四、导入日志数据到MySQL中
访问分析是SEO的一项重要工作,但统计、分析工具毕竟功能是针对大众的,很多时候SEO需要一些特定的数据,是统计分析软件、程序所不能提供的。这样,直接的Web日志分析就是最合适的了,日志中会记录每一个访问情况,只要按自己的意愿提取、组合,就能得到想要的数据。使用SQL语句分析是最方便的,需要什么样的数据,只要使用相应的SQL命令就能实现。
导入Web日志到MySQL数据库的实现
1、修改Apache日志格式
修改Web日志格式为:
Logformat combined %>a,%ui,%un,[%tl],”%rm %ru HTTP/%rv”,%Hs,%h”,”%{User-Agent}>h”,%Ss:%Sh
SQL需要导入的内容有特定的分隔符,Apache的日志默认是以空格分隔的,而有些内容(如状态码中的 200 610)也包含空格,这就无法准确的导入。将日志格式修改为以逗号分隔,就能准确的导入了。还可以根据自己的需要,取消日志格式中不需要的内容,减少日志文件大小。
2、建立MySQL数据表
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中
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/