站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

Lightsquid-利用SquidLog達成流量統計圖表化

前言

[LightSquid - lite and fast log analizer for squid proxy] 為利用 Squid Access Log 來分析 Proxy Client 使用情形。當然能分析 Squid Log 的軟體不只一套有興趣的話可到 [Squid-cache.org Squid: Logfile Analysis List] 看看。

LightSquid 特色如下: [LightSquid Analysis ScreenShot]

實作環境

安裝及設定

步驟1.下載 lightsquid 及安裝 perl-GD 套件

使用 yum 安裝 perl-DG 套件來支援 GD 圖能正常顯示

 #yum -y install perl-GD                                 //安裝 perl-GD 套件

[LightSquid - lite and fast log analizer for squid proxy] 下載 lightsquid-1.7.1.tgz 並上傳到本機家目錄上,我習慣把東西放在 /home 下集中,所以就把目錄 cp -rp 到 /home 下吧。

 #tar zxvf lightsquid-1.7.1.tgz                          //解開壓縮檔
 #cp -r ~/lightsquid-1.7.1 /home/web/lightsquid          //複製至網頁根目錄下
 #cd /home/web/lightsquid                                //切換至 lightsquid 目錄
 #cp lightsquid.cfg lightsquid.cfg.default               //複製預設檔 (免得日後修錯忘了預設值是什)

步驟2.修改 lightsquid 設定檔

以下僅列出跟預設值不同的設定 (要更進階的請自行研究吧!!)

 #vi /home/web/lightsquid/lightsquid.cfg
 $cfgpath             ="/home/web/lightsquid";           //指定 lightsquid.cfg 設定檔路徑
 $tplpath             ="/home/web/lightsquid/tpl";       //指定 tpl 路徑 (存取屆時顯示 html、圖檔)
 $langpath            ="/home/web/lightsquid/lang";      //指定語系檔路徑
 $reportpath          ="/home/web/lightsquid/report";    //指定分析完資料放置路徑
 $logpath             ="/home/log/squid";                //指定要讀取 squid log 路徑
 $ip2namepath         ="/home/web/lightsquid/ip2name";   //指定要讀取 ip2name 路徑

修改完設定檔後我們可以跑一下 check-setup.pl 指令來檢查設定檔內語法的正確性

 #chmod 755 /home/web/lightsquid/check-setup.pl          //改變一下權限吧,預設為 644
 #/home/web/lightsquid/check-setup.pl              
 LightSquid Config Checker, (c) 2005 Sergey Erokhin GNU GPL
 LogPath   : /home/log/squid
 reportpath: /home/web/lightsquid/report
 Lang      : /home/web/lightsquid/lang/eng
 Template  : /home/web/lightsquid/tpl/base
 Ip2Name   : /home/web/lightsquid/ip2name/ip2name.simple
 all check passed, now try access to cgi part in browser  //檢查 OK

步驟3.產生 lightsquid 分析圖表

接下來為利用 lightparser.pl 分析 Squid Access Log 若分析成功會有分析資料輸出到你指定的 reportpath (此例我設的路徑為 /home/web/lightsquid/report),注意不用打路徑只要打 access log 名稱就好,因為會自動幫你套設定的 LogPath 路徑

 #/home/web/lightsquid/lightparser.pl access.log.0            //access log 不用在打路徑了 (套用 LogPath: /home/log/squid)

步驟4.連結分析結果網頁

在如下路徑應該連結到您的 LightSuqid 分析網頁

[http://your_host/lightsquid/index.cgi]

因為 lightsquid 是使用 Perl Language 撰寫的而我使用的 web server 是 lighttpd 所以也要設定一下支援 CGI Module 才連得上 index.cgi 不然會變成下載 index.cgi 檔案,設定 lighttpd.conf 內容如下修改完後記得 restart lighttpd 哦!!

 #vi /etc/lighttpd/lighttpd.conf
 server.modules = (
                   "mod_cgi",                                              //這行的 mark 要拿掉 (支援 CGI Module)
                  )
 index-file.names            = ( "index.php", "index.html", 
                                "index.htm", "index.cgi", "default.htm" )  //加上 index.cgi
 #### CGI module
 cgi.assign                 = ( ".pl"  => "/usr/bin/perl",                 //這行的 mark 要拿掉
                                ".cgi" => "/usr/bin/perl" )                //這行的 mark 要拿掉

步驟5.加入排程自動分析

我們定於每天凌晨三點執行 squid rotate 來產生 squid access.log.0 然後凌晨四點使用 lightsquid 來分析 squid log 檔並產生統計圖表

 #crontab -e
 0 3 * * * root /usr/local/sbin/squid -k rotate   
 0 4 * * * root /home/web/lightsquid/lightparser.pl access.log.0

補充:自動化 Squid Log Rotate 及分析

寫個簡單的 shell script 來自動化進行每天的 Squid Log Rotate 及分析,把寫好的 shell script (lightsquid.sh) 放到 /etc/cron.daily 即可每天自動執行。其中有個 sleep 10 就是執行完 Squid Log Rotate 後停止 10 秒? 為何要停止 10 秒 (視您的 access.log 大小),因為若不執行 sleep 的話則當您的系統還在執行 Squid Log Rotate 但下一行 lightsquid 已經分析了 (因為 cache.log 會先產生然後系統就繼續執行下一行了,但此時 access.log 還在產生中)。

 #cat /etc/cron.daily/lightsquid.sh
 #!/bin/sh
 #$Id: lightsquid.sh,v 0.1 2008/1/28 weithenn Exp $
 #Daily Analysis Squid Log Script
 TODAY=`date +%Y%m%d`
 DESDIR="/home/log/squid/backup"
 ROTATE="/usr/sbin/squid -k rotate"
 ANALYSIS="/home/web/lightsquid/lightparser.pl access.log.0"
 ${ROTATE}
 sleep 10                      
 ${ANALYSIS}
 mkdir -p ${DESDIR}/${TODAY}
 mv /home/log/squid/*.log.0 ${DESDIR}/${TODAY}

參考

[LightSquid - lite and fast log analizer for squid proxy]

[LightSquid Home Site : How It Work]

[LightSquid Home Site : Ip2Name]

[Squid: Logfile Analysis]

[LightSquid Home Site : graph report]

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com