awstats - 利用 Apache Log 達成流量統計圖表化

1、前言

Advanced Web Statistics (AWStats) 是一個免費且功能強大的 Log 分析器,它能夠幫助你分析包括使用者,使用者資訊、訪問頁面數,點擊數,更新時間,作業系統,瀏覽器版本,搜索引擎,關鍵字,錯誤鏈接等等,支援所有的 Web 伺服器。



文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.安裝 awstats 套件
          步驟2.修改 awstats 設定檔
          步驟3.複製 awstats 資料夾或修改 web server 設定檔
          步驟4.產生分析圖表
          步驟5.解決顯示搜尋的關鍵字句亂碼問題
          步驟6.觀看成果
          步驟7.設定排程
4、參考

AWStats 可分析的 Log 類型如下:
  • web log:Apache (NCSA combined/XLF/ELF or common/CLF log format)、Microsoft's IIS (W3C log format)。
  • streaming log:Darwin streaming server、Windows Media Server。
  • mail log:Qmail、Sendmail、Postfix。
  • ftp log:ftp server。

AWStats 官網展示畫面:



2、實作環境

  • CentOS 5.1 (Linux 2.6.18-53.el5)
  • awstats-6.7-1.el5.rf



3、安裝及設定

步驟1.安裝 awstats 套件

利用 yum 安裝 awstats 套件。
yum -y install awstats


步驟2.修改 awstats 設定檔

複製範例檔來修改,為何會命名為 awstats.www.conf?因為 AWStats 可以分析很多不同的 log 所以我把分析 web 設定檔就叫 awstats.www.conf,至於分析我的 apache log 路徑是因為我都每天凌晨將網站主機的 log 同步到分析主機,因此我分析的是前一天的 log。
cd /etc/awstats                             //切換路徑
cp awstats.model.conf awstats.www.conf  //複製預設檔來修改
vi awstats.www.conf                        //修改 awstats.conf 設定(內容如下)

設定讀取的 Apache Log 路徑。
 LogFile="/var/log/apache/access_log"                       //預設 Log 檔路徑
 LogFile="/home/backup/log/%YYYY-0_%MM-0_%DD-24-access.log" //修改為 apache log 檔路徑

設定主機名稱。
 SiteDomain="localhost.localdomain"    //預設主機名稱
 SiteDomain="www.weithenn.org"         //填入您主機的 Domain name 

設定 Data 資料夾。
 DirData="/var/www/awstats"            //預設資料夾路徑
 DirData="/home/web/awstats"           //修改為屆時存放分析結果的資料夾

設定 CGI 路徑 (awstats.pl 執行檔所在目錄)。
 DirCgi="/awstats"                     //修改為適合你環境設定
設定網頁語系。
 Lang="auto"                          //預設值(自動尋找適當的語言)
 Lang="tw"                             //若 auto 有問題的話,就改為 tw 吧 



步驟3.複製 awstats 資料夾或修改 web server 設定檔

步驟3-1.複製 awstats 資料夾

因為我習慣將會呈現網頁的部份都放到 /home/web 下,因此我將 awstats 預設安裝的資料夾複製到 /home/web 下,這樣就不需修改 web server 設定檔。
cp -rp /var/www/awstats /home/web/

步驟3-2.使用 Apache 的話修改 Apache 設定檔

若不想複製 awstats 預設安裝的資料夾的話就修改 httpd.conf 並重新啟動 apache,將下列內容加入至 httpd.conf 內:
 Alias /awstats/icon/ /var/www/awstats/icon/
 ScriptAlias /awstats/ /var/www/awstats/
 <Directory /var/www/awstats/>
        DirectoryIndex awstats.pl
        Options ExecCGI
        order deny,allow
        deny from all
        allow from 127.0.0.1
 </Directory>

修改完成後重新啟動 apache 讓修改生效。
/etc/rc.d/init.d/httpd restart

步驟3-3.使用 Lighttpd 的話修改 Lighttpd 設定檔

若不想複製 awstats 預設安裝的資料夾的話就修改 lighttpd.conf 並重新載入 lighttpd 設定,將下列內容加入至 lighttpd.conf 內。
#               "mod_alias",     //預設值
                "mod_alias",     //修改後(取消註解)
#### CGI module
 cgi.assign = ( ".pl"  => "/usr/bin/perl",
                ".cgi" => "/usr/bin/perl" )
#### Alias (在 CGI 下加入如下這幾行)
 alias.url  = ( "/awstats/" => "/var/www/awstats/",
                "/awstats/icon/" => "/var/www/awstats/icon/" )

修改完成後重新啟動 lighttpd 讓修改生效。
/etc/rc.d/init.d/lighttpd restart
 Stopping lighttpd:                                [OK]
 Starting lighttpd:                                [OK]  


步驟4.產生分析圖表

為何產生分析圖表時指定的設定檔是 -config=www ? 因為我們在前面已經命名設定檔為 awstats.www.conf 了,當你執行指令時可看到有正確找到你的設定檔。
/home/web/awstats/awstats.pl -config=www -update
 Create/Update database for config "/etc/awstats/awstats.www.conf" by AWStats version 6.7 (build 1.892)
 From data in log file "/home/log/awstats/2008_04_20-access.log"...
 Phase 1 : First bypass old records, searching new record...
 Searching new records from beginning of log file...
 Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
 //這邊會停頓一下(正在分析製作圖表中..)
 Jumped lines in file: 0
 Parsed lines in file: 318290
 Found 26 dropped records,
 Found 696 corrupted records,
 Found 0 old records,
 Found 317568 new qualified records.



步驟5.解決顯示搜尋的關鍵字句亂碼問題

若未做此步驟的話當你觀看分析圖表時可能會發現所有中文都正常,但 搜尋的關鍵字句 的內容會變成亂碼,會有這個問題是因為顯示的文字是 UTF-8 格式,但網頁顯示格式是 Big5 所以就產生亂碼的問題了,因為我們去把翻譯檔修改及儲存為 UTF-8 格式。
cd /home/web/awstats/lang
cp awstats-tw.txt awstats-tw.txt.big5  //將原本的 big5 格式複製
vi awstats-tw.txt.big5
 PageCode=big5     //預設值網頁編碼為 Big5
 PageCode=utf-8    //修改網頁編碼為 UTF-8

修改完成後因為檔案還是 Big5 格式,因此我們使用 libiconv 來將檔案轉換為 UTF-8 格式。
iconv -f BIG5 -t UTF-8 awstats-tw.txt.big5 > awstats-tw.txt  //轉換為 UTF-8 格式


步驟6.觀看成果

輸入如下範例網址路徑,以觀看分析結果:
http://www.weithenn.org/awstats/awstats.pl?config=www

步驟7.設定排程

最後設定,每天早上六點執行排程作業 (自動執行 Apache Log 分析)。
crontab -e
 0 6 * * * /home/web/awstats/awstats.pl -config=www -update > /dev/null 2>&1




4、參考