AWStats: Apache/IIS的日誌分析工具——在GNU/Linux和Windows平台上的使用簡介

來源:互聯網
上載者:User
文章目錄
  • 下載/安裝
  • 設定檔的命名規則:awstats.sitename.conf
  • 最少的設定檔修改:LogFile SiteDomain LogFormat
  • 日誌分析
  • 統計輸出
  • 日誌統計自動運行
  • 多網站日誌統計
  • 統計指標說明
  • Hacking AWStats

作者: 車東 Email: chedongATbigfoot.com/chedongATchedong.com

寫於:2003/04 最後更新:
09/02/2004 16:00:20 Feed Back >> 

著作權聲明:可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本聲明
http://www.chedong.com/tech/awstats.html

關鍵詞:awstats web log analysis apache iis 日誌 分析 open source

內容摘要:AWStats的使用簡介和配置一些改進說明。
附:包含了針對Google UTF-8查詢和國內主要門戶網站定義補丁的AWStats 6.0 補丁下載(解包後覆蓋原程式目錄即可)

日誌統計系統在網站的使用者行為分析中扮演了重要的角色,尤其是對於來自搜尋引擎的關鍵詞訪問統計:是很有效使用者行為分析資料來源。隨著互連網多年的發展,WEB日誌統計工具已經越來越成熟,功能也越來越豐富。其中有很多是開放原始碼的, AWStats就是其中非常優秀的一款。

AWStats: Advanced Web Statistics

AWStats是在Sourceforge上發展很快的一個基於Perl的WEB日誌分析工具。相對於另外一個非常優秀的開放原始碼的日誌分析工具Webalizer,AWStats的優勢在於:

  1. 介面友好:可以根據瀏覽器直接調用相應語言介面(有簡體中文版)
    參考輸出範例:http://awstats.sourceforge.net/cgi-bin/awstats.pl
    一般日誌的輸出地址是:awstats.pl?config=sitename
  2. 基於Perl:並且很好的解決了跨平台問題,系統本身可以運行在GNU/Linux上或Windows上(安裝了ActivePerl後);分析的日誌直接支援Apache格式 (combined)和IIS格式(需要修改)。Webalizer雖然也有Windows平台版,但目前已經缺乏維護;
    AWStats完全可以實現用一套系統完成對自身網站不同WEB伺服器:GNU/Linux/Apache和Windows/IIS伺服器的統一統計。
  3. 效率比較高:AWStats輸出統計項目比Webalizer豐富了很多,速度仍可以達到Webalizer的1/3左右,對於一個日訪問量百萬級的網站,這個速度都是足夠的;
  4. 配置/定製方便:系統提供了足夠靈活但預設也很合理的配置規則,需要修改的預設配置不超過3,4項就可以開始運行,而且修改和擴充的外掛程式還是比較多的;
  5. AWStats的設計者是面向精確的"Human visits"設計的,因此很多搜尋引擎的機器人訪問都被過濾掉了,因此有可能比其他日誌統計工具統計的數字要低,來自公司內部的訪問也可以通過IP過濾設定過濾掉。
  6. 提供了很多擴充的參數統計功能:使用ExtraXXXX系列配置產生針對具體應用的參數分析會對產品分析非常有用。

更多與其他工具:Webalizer, analog的比較請參考:
http://awstats.sourceforge.net/#COMPARISON

AWStats安裝備忘

AWStats的運行模式是這樣的:

  1. 分析日誌:運行後將這樣的日誌統計結果歸檔到一個AWStats的資料庫(純文字)裡;
  2. 然後是輸出:分兩種形式
      • 一種是通過cgi程式讀取統計結果資料庫輸出;
      • 一種是運行後台指令碼將輸出匯出成靜態檔案;

      以下是2個針對單個網站日誌統計例子:
      一個是在GNU/Linux上通過CGI方式的輸出,
      一個是在Windows 2000上的基於靜態頁面的匯出

      下載/安裝

      http://sourceforge.net/projects/awstats/ 下載安裝包後:

      GNU/Linux:tar zxf awstats-version.tgz
      #部署awstats cgi程式到/path/to/apache/cgi-bin/awstats
      mv awstats-version/wwwroot/cgi-bin /path/to/apache/cgi-bin/awstats
      #把表徵圖icon目錄複寫到WEB發布目錄下:/path/to/apache/htdocs/icon/

      Windows 2000: 直接解包,然後移動到D:/AWStats目錄下
      把表徵圖icon目錄複寫到IIS的發布目錄下:inetpub/icon

      資料來源日誌格式和按天的截斷規則
      1. 對於Apache:日誌格式好設定:設定成combined格式即可,日誌截斷麻煩一點:需要安裝cronolog工具,將日誌設定成按天截斷:
        CustomLog "|/usr/local/sbin/cronolog /path/to/apache/logs/access_log.%Y%m%d" combined
        比如:logs/access_log.20030326
      2. 對於IIS:預設有比較好的日誌按天截斷規則,但是IIS的日誌格式比較不適合AWStats統計,
        因此最好直接去掉所有日誌欄位,然後嚴格按照以下列表設定
        • 日期 date
        • 時間 time
        • 客戶IP地址 c-ip
        • 使用者名稱 cs-username
        • 方法 cs-method
        • URI資源 cs-uri-stem
        • 協議狀態 sc-status
        • 發送位元組數 sc-bytes
        • 協議版本 cs-version
        • 使用者代理程式 cs(User-Agent)
        • 參照 cs(Referer)

        相比IIS預設設定:減少的有:

        • 伺服器IP地址
        • 伺服器連接埠
        • URI查詢

        增加的有:

        • 發送位元組數
        • 協議版本
        • 參照 
      設定檔的命名規則:awstats.sitename.conf

      AWStats的主程式awstats.pl會自動根據網站名調用相應網站的設定檔:awstats.sitename.conf
      比如:運行./awstats.pl -config=chedong 調用的就是同目錄下的 awstats.chedong.conf 設定檔;
      如果沒有指定-config,還會找目前的目錄下的awstats.conf或者/etc/awstats.conf作為預設設定檔。
      所以最好把預設的awstats.model.conf 重新命名成 awstats.yoursite.conf;比如:awstats.chedong.conf,

      對於多個網站的統計,AWStats的設定檔包含功能還是非常有用的,我們可以把通用的配置放在一個文檔中,然後用(5.4版本以後開始支援) Include配置將通用配置包含在各個具體設定檔的頭部,然後用其他配置覆蓋通用配置中的相應屬性,比如:
      Include="common.conf"
      LogFile="/path/to/bbs/access_log"
      SiteName="bbs.chedong.com"

      最少的設定檔修改:LogFile SiteDomain LogFormat

      對於在GNU/Linux上統計Apache日誌只需修改:LogFile SiteDomain這2個選項

      1. GNU/Linux LogFile="/path/to/apache/logs/access_log.%YYYY-24%MM-24%DD-24"
        Windows 2000 LogFile="d:/iis_logs/W3SV3/ex%YY-24%MM-24%DD-24.log"
        這個配置的意思是用24小時前的年份,月份,日期拼出的記錄檔名;
      2. SiteDomain="www.chedong.com"
        網站的名稱,預設是空的,如果為空白,AWStats將拒絕運行;
      3. 對於統計IIS日誌需要多修改一個:
        LogFormat=2
        預設值是1:Apache日誌,2是IIS日誌

      其他需要注意的事項:
      AWStats預設不過濾swf檔案,會把.swf算成PageView,所以如果網站上swf檔案主要是廣告的話最好還是要過濾掉:
      日誌分析

      ./awstats.pl -update -config=sitename -lang=cn
      比如:./awstats.pl -update -config=chedong
      會自動調用awstats.chedong.conf這個設定檔
      統計輸出

      GNU/Linux    http://localhost/cgi-bin/awstats/awstats.pl?config=chedong
      Windows 2000 http://localhost/awstats/awstats.chedong.html
      日誌統計自動運行

      GNU/Linux上:crontab -e: 每天8點10分運行
      #update awstats
      10 8 * * * (cd /path/to/apache/cgi-bin/awstats/; ./awstats.pl -update -config=chedong)

      Windows 2000上:設定每天8點10分運行
      D:/Perl/bin/perl.exe d:/AWStats/tools/awstats_buildstaticpages.pl -update -config=chedong -lang=cn -dir=c:/inetpub/awstats/ -awstatsprog=d:/awstats/wwwroot/cgi-bin/awstats.pl

      多網站日誌統計

      AWStats內建了一個批處理工具:tools/awstats_updateall.pl,可以批量地遍曆一個目錄下所有地設定檔並運行統計。因此剩下的工作就主要是日誌的同步問題了。

      針對多個網站,很多配置選項是重複的,如果每個設定檔都修改維護起來會很麻煩,AWStats從5.4版本開始提供了設定檔包含的功能,所以我們可以配置一個通用配置,比如:common.conf

      然後其他網站的配置設定為:可以通過後面的選項覆蓋和預設不一致的配置。
      awstats.bbs.chedong.conf
      Include "chedong.common.conf"
      LogFile "/path/to/bbs_log"
      SiteName "bbs.chedong.com"

      awstats.www.chedong.conf
      Include "chedong.common.conf"
      LogFile "/path/to/www_log"
      SiteName "www.chedong.com"
      HostAliases="chedong.com" 

      統計指標說明
      • 參觀者:按來訪者不重複的IP統計,一個IP代表一個參觀者;
      • 參觀次數:一個參觀者可能1天之內參觀多次(比如:上午一次,下午一次),所以按一定時間內(比如:1個小時),不重複的IP數統計,參觀者的訪問次數;
      • 網頁數:不包括圖片,CSS, JavaScript檔案等的純頁面訪問總數,但如果一個頁面使用了多個幀,每個幀都算一個頁面請求;
      • 檔案數:來自瀏覽器用戶端的檔案請求總數,包括圖片,CSS,JavaScript等,使用者請求一個頁面是,如果頁面中包含圖片等,所以對伺服器會發出多次檔案請求,檔案數一般遠遠大於檔案數;
      • 位元組:傳給用戶端的資料總流量;
      • 來自REFERER中的資料:日誌中的參考(REFERER)欄位,記錄了訪問相應網頁之前地址,因此如果使用者是通過搜尋引擎的搜尋結果點擊進入網站的,日誌中就會有使用者在相應搜尋引擎的查詢地址,這個地址中就可以通過解析將使用者查詢使用的關鍵詞提取出來:
        比如:
        2003-03-26 15:43:58 123.123.123.123 - GET /index.html 200 192 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) http://www.google.com/search?q=chedong
        AWStats在搜尋引擎的關鍵短語和關鍵詞統計方面的功能還是比較完整的:可以對全世界3百多種機器爬蟲進行識別,並且可以識別大部分主流國際化搜尋引擎和很多地區的本地語言搜尋引擎。
      Hacking AWStats

      IIS按GMT時間的補丁:awstats.pl
      IIS的日誌時間是格林威治之間,中國本地時間和GMT有+8個小時差距,如果直接用TIMEZONE外掛程式從格林威治時間轉換會有40%的效能下降,這裡有一個將時間按本地時間修改時間座標的補丁:
      7696d7695
      <                       my $TIME_ZONE = 8;
      7698,7702c7697
      <                           my $ix_local = $ix + $TIME_ZONE;
      <                           if ($ix_local >= 24) {
      <                               $ix_local = $ix_local - 24;
      <                         } 
      <                         print "$ix_local

      /n";        # width=19 instead of 18 to avoid a MacOS browser bug.
      ---
      >                         print "$ix

      /n";      # width=19 instead of 18 to avoid a MacOS browser bug.
      7708,7712c7703
      <                               my $ix_local = $ix + $TIME_ZONE;
      <                               if ($ix_local >= 24) {
      <                                       $ix_local = $ix_local - 24;
      <                               }
      <                               my $hr= $ix_local + 1 ; if ($hr>12) { $hr=$hr-12; }
      ---
      >                               my $hr=($ix+1); if ($hr>12) { $hr=$hr-12; }

      在Awstats 5.5以後中已經加入了針對中文主要搜尋引擎的定義:這裡是補充後的完整列表(包括了主要入口網站搜尋和搜尋門戶)
      62c60
      < "baidu/.com","search/.sina/.com","search/.sohu/.com",
      ---
      > "baidu/.com","sina/.com","3721/.com","163/.com","tom/.com","sohu/.com",

      153c144
      < "baidu/.com","word=", "search/.sina/.com", "word=", "search/.sohu/.com","word=",
      ---
      > "baidu/.com","word=", "sina/.com", "word=", "3721/.com", "name=","163/.com","q=","tom/.com","word=","sohu/.com","word=",

      250c234
      < "baidu/.com","Baidu", "search/.sina/.com","Sina", "search/.sohu/.com","Sohu",
      ---
      > "baidu/.com","Baidu", "sina/.com","Sina", "3721/.com","3721","163/.com","NetEase","tom/.com","Tom","sohu/.com","Sohu",

      對Google的Unicode查詢還是需要一些查詢補丁:
      因為Google對於Windows 2000以上的IE瀏覽器預設發送的查詢都是UTF-8格式的,而其他搜尋引擎大部分使用的是系統本地編碼:GB2312,因此需要將查詢URI解碼後,還要根據是否使用UTF-8進行到GB2312的轉碼,否則同樣的單詞會在統計中留有UTF-8和GB2312兩條記錄。

      我增加了以下函數用於Google UTF-8字元的解碼和類似於“/xc4/xbe/xd7/xd3/xc3/xc0”這樣查詢的解碼
      sub Utf8_To_Ascii {
           my $string = shift;
           my $encoding = shift;

           # change /xc4/xbe/xd7/xd3/xc3/xc0 into %c4%be%d7%d3%c3%c0
           $string =~ s///x(/w{2})/%/1/gi;

           # uri unescape
           $string = uri_unescape($string);

           if ( $string =~ m/^([/x00-/x7f]|[/xc2-/xdf][/x80-/xbf]|/xe0[/xa0-/xbf][/x80-/xbf]|[/xe1-/xef][/x80-/xbf][/
      x80-/xbf]|/xf0[/x90-/xbf][/x80-/xbf][/x80-/xbf]|[/xf1-/xf7][/x80-/xbf][/x80-/xbf][/x80-/xbf])*$/ )
           {
               $string = decode("utf-8", $string);
               $string = encode($encoding, $string);
           }

           # trim space
           $string =~ s/^/s+//;
           $string =~ s//s+$//;

           # reverse "+", ";" to space
           $string =~ s/;+//g;
           $string =~ s//s+//+/g;
          
           #print $string."/n";
           return $string;
      }

      這裡有更多關於GOOGLE UTF-8查詢的補丁。

      基於地理資訊的外掛程式安裝:

      GeoIP 和 Geo::IPfree(awstats 5.5+)
      GeoIP和Geo::IPfree都免費的是國家/IP的影射表,比通過DNS反相解析網域名稱得到的統計準確,而且速度快。GeoIP的API都是免費的,預設庫是免費的,收費的是它的資料更新服務。Geo::IPfree不僅代碼是公開的,而且庫資料也是公開的,因此可以自己定製,我曾經設想做一個中國城市到IP的映射。

      GeoIP安裝:
      先下載C庫:GeoIP C解包後
      %./configure; make
      #make install

      然後下載Perl庫:GeoIP Perl解包後
      %perl MakeFile.PL; make
      #make install

      Geo::IPfree安裝:
      下載Geo::IPfree解包後
      %perl Makefile
      %make
      #make install

      配置:通過在設定檔中啟用外掛程式GeoIP或者Geo::IPfree

      參考資料:

      AWStats
      http://awstats.sourceforge.net/

      Webalizer
      http://www.webalizer.org/

      日誌分析工具
      http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Log_Analysis/

      商業日誌統計/分析工具
      http://directory.google.com/Top/Computers/Software/Internet/Site_Management/Log_Analysis/Commercial/

      多網站的日誌合并統計:
      http://www.chedong.com/tech/rotate_merge_log.html

      日誌統計對於分析搜尋引擎對網站的影響具有非常重要的意義
      http://www.chedong.com/tech/google.html

      AWStats 本身也包含了很多外掛程式,包括將多個網站的統計再次匯總輸出,IIS日誌時間轉換,URL的標題映射等http://awstats.sourceforge.net/awstats_contrib.html

      原文出處:http://www.chedong.com/tech/awstats.html

      相關文章

      聯繫我們

      該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

      如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

      A Free Trial That Lets You Build Big!

      Start building with 50+ products and up to 12 months usage for Elastic Compute Service

      • Sales Support

        1 on 1 presale consultation

      • After-Sales Support

        24/7 Technical Support 6 Free Tickets per Quarter Faster Response

      • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.