Webalizer - 分析 Apache Log 產生流量圖表

1、前言

webalizer 為一套遵循 GPL 協議的開放源始碼 Log 分析器,它能夠幫助您分析包括使用者、使用者資訊、訪問頁面數、點擊數、更新時間、作業系統、瀏覽器版本、搜索引擎、關鍵字、錯誤鏈接...等等,支援所有的 Web 伺服器所產生的 Log。


webalizer 可分析的 Log 類型如下:

  • 標準日誌格式 (CLF,Common Logfile Format)
  • FTP Log: Wu-ftpd / Proftpd Xferlog Format Logs
  • Proxy Log: Squid Proxy Server Native Format Logs
  • W3C Extended Log Formats
  • 支援 gzip (.gz) 及 bzip2 (.bz2) 壓縮格式 Logs 檔案,不需要解壓縮即可分析



文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.安裝 libiconv 套件
          步驟2.安裝 webalizer 套件
          步驟3.修改 webalizer 設定檔 (webalizer.conf)
          步驟4.建立 webalizer 分析結果存放資料夾
          步驟5.執行 webalizer 流量統計
          步驟6.設定排程
4、參考





2、實作環境

  • FreeBSD 6.x-RELEASE
  • FreeBSD 5.x-RELEASE
  • webalizer-2.1.x
  • libiconv-1.9.2_2





3、安裝及設定

步驟 1、安裝 libiconv 套件

切換至 Ports Tree 路徑安裝 libiconv 套件。

cd /usr/ports/converters/libiconv    //切換至安裝路徑
make install clean                   //安裝並清除暫存檔案 




步驟 2、安裝 webalizer 套件

在安裝 webalizer 套件以前請先將 顏國雄老師中文亂碼修正檔-webalizer_patch.pl 下載至 /usr/ports/www/webalizer 目錄下,先安裝完預設的中文語系檔,但因為 GD 圖表無法正確顯示中文所以這時便可執行顏國雄老師中文亂碼修正檔將 GD 圖表內中文字改回英文便不會造成之後 GD 圖表內中文字為亂碼的現象,至於安裝前為何要將語系檔轉換為 UTF-8 格式? 因為若是不轉換的話當執行完流量統計後你會發現 Search String 內容會為亂碼,瞭解後請切換至 Ports Tree 路徑安裝 webalizer 套件。

cd /usr/ports/www/webalizer                                      //切換至安裝路徑
make clean fetch extract patch configure WEBALIZER_LANG=chinese  //安裝中文語系
perl webalizer_patch.pl work/webalizer-2.01-10                   //執行中文修正檔消除亂碼
cd work/webalizer-2.01-10/lang                                   //切換至語系檔目錄
cp webalizer_lang.chinese webalizer_lang.chinese.big5            //將原 Big5 語系檔複製一份
iconv -f BIG5 -t UTF-8 webalizer_lang.chinese.big5 ; webalizer_lang.chinese  //轉換語系檔成為 UTF-8 格式
make install  clean                                              //安裝套件並清除暫存檔案




步驟3.修改 webalizer 設定檔 (webalizer.conf)

安裝相關套件完成後開始進行 webalizer 設定檔 (webalizer.conf) 修改其內容如下:

cd /usr/local/etc                       //切換路徑
cp webalizer.conf-dist webalizer.conf   //複製範例檔來修改
vi webalizer.conf                       //修改內容如下
 LogFile      /var/lib/httpd/logs/access_log          //預設值,讀取 Log 路徑
 LogFile      /home/log/httpd-access.log              //修改後
 OutputDir    /var/lib/httpd/htdocs/usage             //預設值,指定資料輸出資料夾
 OutputDir    /usr/local/www/data/analysis/webalizer  //修改後
 Incremental  no                                      //預設值,只更新增加的部份不再分析舊有資料
 Incremental  yes                                     //修改後
 ReportTitle  Usage Statistics for                    //預設值,網頁標題說明文字
 ReportTitle  Webs Site 流量統計:                      //修改後
 HostName     localhost                              //預設值,設定主機名稱
 HostName     www.weithenn.org                       //修改後




步驟4.建立 webalizer 分析結果存放資料夾

建立屆時存放 webalizer 分析結果圖表的資料夾。

cd /usr/local/www/data/analysis     //切換預放置分析流量的路徑
mkdir webalizer                     //建立資料夾


步驟5.執行 webalizer 流量統計

因為此次實作中 Apache Access Log 為每天產生,所以可先將舊有的 Log 先串成一個之後在修改為每天自動分析,下列 cat 指令即為將每天產生的 Apache Log 串成月份後來進行分析。
 
cat 2007_05*-access.log > 200705.log     //將五月份 Apache Access Log 串成一個檔

串成一個月份的 Apache Access Log 便可執行 webalizer 進行流量分析統計。

/usr/local/bin/webalizer /home/log/200705.log     //分析五月份 Apache Access Log
 Webalizer V2.01-10 (FreeBSD 6.2-RELEASE-p5) English
 Using logfile 200705.log (clf)
 Creating output in /usr/local/www/data/analysis/webalizer
 Hostname for reports is 'www.weithenn.org'
 Reading history file... webalizer.hist
 Reading previous run data.. webalizer.current
 Warning: Truncating oversized referrer field 8679
 ...略
 Warning: Truncating oversized referrer field 715059
 Saving current run data... 06/20/2007 23:59:59
 Generating report for June 2007
 Generating summary report
 Saving history information...
 735502 records in 9.73 seconds, 75617/sec




步驟6.設定排程

因為此次實作主機其 Web Log 為每天產生的,所以就寫個簡單的 Shell Script 來自動分析每天的 Web Log 吧,至於分析的 Apache Log 路徑是因為此次實作主機每天凌晨才將營運網站主機的 Web Log 同步到此台分析主機,因此分析的 Web Log 為前一天的。

vi /usr/local/sbin/webalizer.sh     //編輯 Shell Script 內容如下
 #!/bin/sh
 /usr/local/bin/webalizer /home/backup/log/`date -v-1d +%Y_%m_%d`-access.log > /dev/null 2>&1


修改排程使系統每天早上六點半自動執行分析 Web Log 的工作。

crontab -e
 30 6 * * * /usr/local/sbin/webalizer.sh   //每天早上六點半執行 webalizer.sh






4、參考