WEB日志格式及分析工具

作者: seasun  發布時間: 2010-09-26 22:14  閱讀: 5209 次  推薦: 0   原文鏈接   [收藏]  
摘要:了解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/

  http://www.lesishu.com/net/import-weblog-to-mysql/

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()