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

1、前言

Visitors - fast web log analyzer 設計為可快速分析 Linux、Windows、Unix-link 等架設 Web 伺服器的 Log,使用方式很簡單只要使用命令列並指定 Log 名稱及輸出流量分析報告格式 (Txt / Html) 即可,因此很適合線上即時查看流量。




文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.下載 visitors 套件
          步驟2.產生 visitors 執行檔
          步驟3.產生分析圖表
          步驟4.設定排程
4、參考
5、Me FAQ
          Q1.make: cc: Command not found?
          Q2.gcc: error trying to exec 'cc1plus': execvp: No such file or directory?

Visitors 特色如下:

  • 不需安裝,每秒可處理 150,000 行 (視機器效能而定,但至少比其它分析軟體快多了)。
  • 設計上採用指令模式並可輸出 (Txt / Html),因此使用 SSH 登入主機時能夠非常方便且即時查看流量。
  • 從 Visitors v0.3 以後便支援即時統計、遊客流量統計。
  • 可清鬆指定產生的流量分析報表項目,相對應參數請參考 Visitors on line documentation
  • Visitors 為可攜式 C 語言程序,因此可方便使用在不同的系統中。
  • 產生的 HTML 報表並不包含圖片或外部的 CSS,因此能方便的將報表透過電子郵件來寄送。
  • Visitors 為使用 GPL 授權的自由軟體,所以使用它並不用付費,如果您有興趣想訂製符合您需要的報表歡迎與原作者連絡 antirez (at) invece (dot) org。

Visitors 官網資源:




2、實作環境

  • CentOS 5.1 (Linux 2.6.18-53.1.4.el5)
  • gcc-c++-4.1.2-14.el5
  • visitors-0.7



3、安裝及設定

步驟1.下載 visitors 套件

至 Visitors 下載 visitors-0.7.tar.gz。
wget http://www.hping.org/visitors/visitors-0.7.tar.gz  //下載套件
tar zxvf ~/visitors-0.7.tar.gz                             //解開 visitors 壓縮檔  



步驟2.產生 visitors 執行檔

若無安裝 C+ compiler 就利用 yum -y install gcc-c++ 安裝吧,否則等一下將無法產生 visitors 執行檔。
rpm -qa gcc-c++     //確認是否安裝 C+ compiler
 gcc-c++-4.1.2-14.el5

產生 (編譯 complier) visitors。
cd ~/cd visitors_0.7
make
 cc -c -O2 -Wall -W -g  visitors.c
 cc -c -O2 -Wall -W -g  aht.c
 cc -c -O2 -Wall -W -g  antigetopt.c
 cc -c -O2 -Wall -W -g  tail.c
 cc -o visitors -O2 -Wall -W -g visitors.o aht.o antigetopt.o tail.o
cp visitors /usr/local/bin/    //複製執行檔至 /usr/local/bin 下



步驟3.產生分析圖表

接下來就是開始分析報表吧,相關參數說明如下:
  • -A:分析所有報表項目。
  • -m 10:項目最多顯示 10 行 (Requested pages、Requested images and CSS...)。
  • Web Log:200801.log。
  • -o html:輸出的報表格式。
  • /home/web/200801.html:報表輸出的路徑及檔案名稱。

若在你的 web log 中有您不想分析的網站時 (例如自已的網站),可加上參數 (ex. -P http://www.weithenn.org) 即可。
/usr/local/bin/visitors -A -m 10 200801.log  -o html > /home/web/200801.html
 --
 7055 lines processed in 1 seconds
 0 invalid lines, 0 blacklisted referers

此次實作環境中所使用的機器處理效能,大概是每秒 10.6 萬行左右。
 CPU0: Intel(R) Xeon(R) CPU            5130  @ 2.00GHz *2
 Mem:  2075284k total 


以下是測試分析不同行數的 web log 分析速度

分析 Log 內容為 5.6 萬行,分析時間花費為 1 秒
wc -l 200708.log | awk '{print$1}'
 56133                                       //5.6 萬行
/usr/local/bin/visitors -A -m 50 200708.log -o html > /home/web/200708.html
 --
 56133 lines processed in 1 seconds          //分析時間花費 1 秒
 0 invalid lines, 0 blacklisted referers

分析 Log 內容為 31 萬行,分析時間花費為 3 秒
wc -l 2007.log | awk '{print$1}'
 318290                                      //31 萬行
/usr/local/bin/visitors -A -m 100 2007.log -o html > /home/web/2007.html
 --
 318290 lines processed in 3 seconds         //分析時間花費 3 秒
 0 invalid lines, 0 blacklisted referers



步驟4.設定排程

因為我的 web log 都是每天產生的,所以就寫個簡單的 shell script 然後排程執行吧。
vi /usr/local/sbin/visitors.sh    //建立 shell 檔內容如下
 #!/bin/sh
 TODAY=`date +%Y%m%d`
 LOG="/home/log/apache"
 DES="/home/web"
 VISITORS=/usr/local/bin/visitors
 SHOW="50"
 ${VISITORS} -A -m ${SHOW} ${LOG}/${TODAY}.log -o html > ${DES}/${TODAY}.html
chmod +x /usr/local/sbin/visitors.sh

最後設定排程作業。
crontab -e
 55 23 * * * /usr/local/sbin/visitors.sh       //每天 23:55 執行




4、參考


5、Me FAQ

Q1.make: cc: Command not found?

Error Message:
當執行 make 欲產生 visitors 執行檔時發生錯誤 make: cc: Command not found?
make
 cc -c -O2 -Wall -W -g  visitors.c
 make: cc: Command not found      
 make: *** visitors.o Error 127

Ans:
在 Google 上找到這篇 HowtoForge Forums - CentOS 4.4 ~ cc: Command not found,原因是因為機器沒有裝 C compiler 所以就無法順利執行了。(The C compiler is missing on your server. Install the GCC packages) 安裝 gcc-c++ 套件後就可以順利產生了。
yum -y install gcc-c++

Q2.gcc: error trying to exec 'cc1plus': execvp: No such file or directory?

Error Message:
當執行 make 欲產生 visitors 執行檔時發生錯誤 gcc: error trying to exec 'cc1plus': execvp: No such file or directory ?
make
 gcc: error trying to exec 'cc1plus': execvp: No such file or directory

Ans:
應該也是沒有安裝 gcc-c++ 造成的,請安裝吧。相關資訊請參考 gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory | MDLog:/sysadmin
# yum -y install gcc-c++