1、前言
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)
- fast and simple install
- fast log parser generatesmall per user data file
- perl based cgi script for dynamic generated report pages
- html template for design
- no database required
- no additional perl module
- various reports
- user groups support
- graphics report (v 1.6+)
- real name (v 1.6+)
- multilangual interface
文章目錄
1、前言2、實作環境
3、安裝及設定
步驟1.下載 lightsquid 及安裝 perl-GD 套件
步驟2.修改 lightsquid 設定檔
步驟3.產生 lightsquid 分析圖表
步驟4.連結分析結果網頁
步驟5.加入排程自動分析
4、補充:自動化 Squid Log Rotate 及分析
5、參考
2、實作環境
- CentOS 5.1 (Linux 2.6.18-53.1.4.el5)
- lightsquid-1.7.1.tgz
- perl-GD-2.35-1.el5.rf (支援 GD 圖顯示)
3、安裝及設定
步驟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://www.weithenn.org/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", //取消此行註解 (支援 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", //取消此行註解
".cgi" => "/usr/bin/perl" ) //
取消此行註解步驟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
4、補充:自動化 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}