-
這幾天由於幾個不同的流量統計工具在統計數據上出現了很大差異,當時就想到了應該分析一下apache的access log,那裡的數據應該是最權威的。剛開始為了應急寫了一個簡單分析工具,統計了一下簡單的數據。而開源的Awstats應該是目前應用比較廣泛,功能比較完全的工具。
Awstats的安裝和配置都是相當簡單,不過我還是走了一些彎路,其中最慘痛的教訓就是:最好按照預設的方式進行配置。下面記錄我安裝和設定的過程。先交待一下環境:64位元的CentOS 5.6 + Apache Httpd 2.2
1. 設定Apache的log輸出方式。
預設情況下apache的access.log到一定大小會被壓縮,有些舊的也會被刪除。在Apache的文檔中沒有找到關於access log管理的相關內容,希望有知道的同學不吝賜教。這裡我把配置為每天一個文件,以便於日後分析和備份。開啟httpd.conf,找到access log配置的位置,將
CustomLog logs/access_log common
改為
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_log.%Y%m%d 86400" combined
其中rotatelogs是Apache提供的日誌工具,可以透過which rotatelogs找出該工具的路徑。另外一個改動時,將log的內容由common改為了combined,使得log中包含了更多了信息,而這也是Awstats所需要的。如果日誌配置在Virtual Hosts中,也同樣修改就可以了。
修改後重新啟動httpd服務,就會看到在/var/log/httpd下產生了類似access_log.20110612的日誌檔。
2. 安裝Awstats
首先下載Awstats的安裝包:awstats-7.0.tar.gz,也可以在下載頁面上找到適合自己環境的安裝檔。
]# wget http://PRdownloads.sourceforge.net/awstats/awstats-7.0.tar.gz
]# tar xzvf awstats-7.0.tar.gz
]# mv awstats-7.0 /var/
以下就可以依照Awstats的官方指南進行安裝了: http://awstats.sourceforge.net/docs/awstats_setup.html 。其中有幾點要注意的:
(1)當詢問apache的設定檔路徑時,要寫入目前環境中真實的apache設定檔路徑,例如,我的就是:/etc/httpd/conf/httpd.conf
(2)在詢問Awstats設定檔存放的路徑時,一定要使用預設的路徑,否則後面會有意想不到的麻煩。
(3)當要新建Awstats的設定檔時,會問設定檔的名稱,其實這個時候是問要分析的log屬於哪個域名,例如你的網站是www.mysite.com ,就可以輸入: www.mysite .com 。
在安裝過程中,我一直是一路yes。安裝結束時,會在/etc下方產生一個新的目錄awstats,並且在下面有一個名稱為awstats.www.mysite.com.conf。
這是再開啟httpd.conf發現在最下面多了一些和Awstats相關的配置。
在/var/lib下新建一個名為awstats的文件,用來存放分析日誌後產生的資料檔。
3. 配置Awstats
安裝完成後,還需要進行簡單的配置,才能夠開始使用Awstats。開啟上面產生的設定檔awstats.www.mysite.com.conf,找到LogFile,將其改為實際的日誌檔案的路徑。需要注意的時,在第一步中,已經把日誌檔改為每天一個以當天日期命名的名字,那麼這裡的配置就是:
LogFile=/var/log/httpd/access_log.%YYYY-0%MM-%DD
表示分析的是目前最新的日誌檔。關於這個配置可以參考其註解中的詳細解釋。
4. 驗證安裝
配置基本算完成了,下面進行驗證:
]# cd /var/awstats/wwwroot/cgi-bin
]# perl awstats.pl -config=www.mysite.com -update
如果你嚴格執行了上面的步驟,這一步就應該沒有問題,可以看到類似下面的輸出:
Create/Update database for config "/etc/awstats/awstats.www.mysite.com.conf" by AWStats version 7.0 (build 1.971)
>From data in log file "/var/log/httpd/access_log.20110611"...
Phase 1 : First bypass old records, searching new record...
Direct access after last parsed record (after line 545194)
Jumped lines in file: 545194
Found 545194 already parsed records.
Parsed lines in file: 1677
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 0 old records,
Found 1677 new qualified records.
為了安全起見,我沒有打開網頁上的更新鏈接,而是在crontab配置了每10分鐘運行一次上面的程式:
*/10 * * * * root cd /var/awstats/wwwroot/cgi-bin/;perl awstats.pl -config=www.mysite.com -update
這樣在頁面就可以看到每10分鐘刷新一次的統計結果了。
5. 安裝ip位址轉換的插件
在Awstats的統計報表中,有一個是顯示IP所對應的實際位址,這個需要透過插件來實現。網路上比較通用的方式是使用QQWry.dat來實現。但為了找到這個插件是花了很久的功夫,因為很多地方都只能下載IP資料庫,而不能下載插件。
IP資料庫可透過: http://www.cz88.net/fox/ipdat.shtml下載。注意:這裡下載的是一個ext的安裝文件,安裝後會有一個qqwry.dat文件,它就是要用到的ip資料庫。這個IP資料庫是會常常更新,所以我們也要保持更新。
外掛相關的檔案可以透過: http://blogimg.chinaunix.net/blog/upfile/070103141422.rar下載(不知道這個網址何時會失效)。解壓縮後裡面有三個檔案:qqhostinfo.pm、qqwry.pl和QQWry.Dat,其中第一個是插件文件,第二個真正的執行轉換的perl程序,第三個就是資料庫了,可以用上面最新的資料庫覆蓋這個。將這個三個檔案複製到/var/awstats/wwwroot/cgi-bin/plugins/目錄下,做以下修改:
]# chmod 755 qqhostinfo.pm
]# vim qqwry.pl
將其中的./QQWry.Dat改為/var/awstats/wwwroot/cgi-bin/plugins/qqwry.dat。
編輯Awstats的設定檔awstats.www.mysite.com.conf,找到
#LoadPlugin="hostinfo"
在其後新增一行
LoadPlugin="qqhostinfo"
完成以上所有步驟後,應該就可以在網頁上看到了統計結果了。中文可能會顯示成亂碼,只要要把瀏覽器語言設為中文就可以了。
(來源:CSDN部落格)