歡迎您光臨本站 註冊首頁

Slackware下安裝SARG - HOW-TO

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

Slackware下安裝SARG - HOW-TO


一.前言
sarg是一個非常小巧卻很強大的squid日誌分析程序。分別在兩台機器上部署, slackware 10.2.0和slackware 12.0.0,這版本的差距咋就和做人的差距一樣,這麼大捏?為了兄弟們以後安裝時少走彎路,特編寫此文檔。
註:在兩個版本的slackware上安裝sarg時主要發現了以下幾個問題
1.slack12和slack10安裝時需要不同的依賴包2.源碼安裝和二進位包安裝效果不同3.squid log文件的格式對sarg處理有很大的影響以上內容會在下面提到。
二.安裝sarg 1. slackware 10.2.0 Sarg的安裝沒什麼可說的,就是configure, make, make install。但是他的依賴包太煩人了。sarg的依賴包官方網站居然沒有,也有可能是我木有找到。反正我也是偶然在這裡找到的http://www.tuxjm.net/downloads/source/slackware-10.2/sarg/requiressarg依賴兩個包squid和gd。 squid我們fw本來就有,廢話。需要安裝gd。順便說一句,如果只裝了squid而沒裝gd的話,編譯sarg時,會出現:checking gd.h usability... nochecking gd.h presence... nochecking for gd.h... nochecking gdfontl.h usability... nochecking gdfontl.h presence... nochecking for gdfontl.h... nochecking gdfontt.h usability... nochecking gdfontt.h presence... nochecking for gdfontt.h... nochecking gdfonts.h usability... nochecking gdfonts.h presence... nochecking for gdfonts.h... nochecking gdfontmb.h usability... nochecking gdfontmb.h presence... nochecking for gdfontmb.h... nochecking gdfontg.h usability... nochecking gdfontg.h presence... nochecking for gdfontg.h... no 儘管如此,還是可以順利make, make install來安裝sarg,只是生成的頁面沒有graphics罷了。開始我沒注意,後來發現slackware12.0上裝好sarg后,發現他的頁面居然能顯示圖,而11.2卻木有。這點我絕不能容忍。後來經過比較發現是編譯時沒有裝gd。 安裝gd可費了勁了,下載了gd-2.0.33-i486-2cf.tgz,安裝后,再編譯時,又報錯了:checking for gdImagePng in -lgd... no 死活也make不了,更別提make install了。 咋辦?趕快請教google老師,可是他老人家數次拒絕了我,搜索了好多網站,都沒有此類問題的解決辦法,最牛逼的答案是讓我重裝系統解決,我日。最後還是在這裡http://www.tuxjm.net/downloads/source/slackware-10.2/gd/requires 找到了答案原來gd依賴libpng,libjpeg和x11,前兩個我系統里已經有了,就差x11,裝上之後,編譯過程如果吃了半斤瀉藥一樣順暢;Make和make install也一馬平川。 2. slackware 12.0.0編譯時報的錯簡直太多了,沒辦法,裝個現成的sarg-2.0.9-i486-2stb.tgz裝上,看看到底缺啥包。每次運行sarg,都會報一個xxx.h或xxx.o木有找到。日,咋辦?搜唄。最後發現是缺了如下幾個包:fontconfig-2.4.2-i486-2.tgz
libXau-1.0.3-i486-1.tgz
libXpm-3.5.6-i486-1.tgzlibX11-1.1.1-i486-4.tgz
libXdmcp-1.0.2-i486-1.tgz
libxcb-1.0-i486-2.tgz
之後安裝過程還算順利,編譯安裝均沒報啥錯,還算仁義。

三.配置

配置文件是/usr/local/sarg/sarg.conf。 大部分默認選項都不用改,簡要介紹一下最常用的幾個:
language English
#界面語言,可以自己把language/english的內容翻譯成中文,然後就可以顯示中文鳥,不會又讓我翻譯吧?
access_log /var/squid/logs/access.log
#squid log的位置
graphs yes
#是否要顯示graphics
graph_days_bytes_bar_color orange
#選擇graphics的柱狀圖顏色
title "Squid User Access Reports"
#標題
font_face Tahoma,Verdana,Arial
#字體
header_color darkblue
#啥叫header? 就是下面這個文字的顏色
header_font_size 12px
#標題字體大小,就是下面的字體大小


font_size 10px
#下面字體的大小
title_font_size 20px
#標題字體的大小,惡俗吧
background_color green
#背景顏色,惡俗吧
title_color yellow
#標題字體顏色,更惡俗吧
logo_image http://news.sohu.com/logo.gif
#太惡俗了,不能說了
image_size 804 75
#圖片大小
temporary_dir /tmp
output_dir /var/www/htdocs/reports
#生成頁面存放位置
topuser_sort_field BYTES reverse
#是top_user表的排列順序,紅框部分
user_sort_field BYTES reverse

exclude_users /usr/local/sarg/sarg.users
#這個是幹啥用的捏?你不想顯示哪個用戶的訪問記錄,就把它的名字放到裡面
exclude_hosts /usr/local/sarg/sarg.hosts
#同理,你不想顯示哪台機器的訪問記錄,就把ip放進去
date_format u
per_user_limit none
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
topsites_num 100


topsites_sort_order BYTES D
#是top_sites表的排列順序,紅框部分


index_sort_order D
#索引頁的排列順序
exclude_codes /usr/local/sarg/sarg.exclude_codes
#作用不詳,有待研究
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
#生成的圖表類型
usertab /usr/local/sarg/sarg.usertab
# ip和username對應表
long_url no
date_time_by elap
charset Latin1
show_successful_message yes
show_read_statistics yes
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
bytes_in_sites_users_report no
topuser_num 0
site_user_time_date_type table
squidguard_conf none
show_sarg_info no
show_sarg_logo no
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"

sarg.conf里還包括許多選項,比如支持數據導出,結合squiduard等,大家自己去研究。







source: http://blog.chinaunix.net/u/20003/showart_709458.html
《解決方案》

四.美化

從網上下載了一個老外寫的腳本,可以放到crontab里定期的生成report,比如daily, weekly, monthly等。我自己做了一些修改,通過dhcpd.reg和message,將username和他們機器的ip一一對應,這樣打開網頁,我就可以一目了然了。知道是誰在敲打我窗,是誰在撩動琴弦。那一段,被遺忘的時光,漸漸的,回升出我心坎。
該腳本可以從介里下載
http://www.initzero.it/products/opensource/sarg-reports/download/sarg-reports

我編輯過的腳本如下:

# Modified by Kevin - To generate sarg.usertab from dhcp reg file and system log messgae

dhcpreg="/etc/dhcpd/dhcpd.reg"
message="/var/log/messages"
ipmac="/tmp/ipmac.txt"
out="/usr/local/sarg/sarg.usertab"

echo > $out
cat $message |grep "DHCPACK" |grep -v "^$" |grep -v "^#"|awk '{ print $8 " " $10}' |sort -u > $ipmac
for usermac in `cat $dhcpreg |grep -v "^$" |grep -v "^#" |sort -u |tr "" ""`; do
user=`echo $usermac|cut -d ',' -f 1`
mac=`echo $usermac|cut -d ',' -f 2`
#echo "mac address for $user is $mac"
sed -n s/$mac/$user/p $ipmac >> $out
done

加到上面下載的腳本里就可以

五. 後記

還有幾個問題需要注意:

1. sarg 源碼安裝vs 二進位包安裝

建議使用源碼安裝,因為二進位包一方面版本比較陳舊,另外安裝后貌似不可以顯示graphics,啥叫graphics?就是這個:擎天一柱,嘎嘎

2. squid log格式: emulate http or not ?

Squid log的默認格式是醬紫的:
1211780135.987     13 10.0.11238 TCP_IMS_HIT/304 259 GET http://pics.taobao.com/2k7/sys/- NONE/- image/gif

如果在/etc/squid/squid.conf里選擇了emulate_httpd_log on,則log格式會變成:
10.0.11.237 - - "POST http://60.28.205.54/HTTP/1.0" 200 185 TCP_MISS:DIRECT

這兩種格式選擇哪種好呢?
根據我個人的體會,各有利弊。
如果選擇的默認格式,則sarg的各個版本均會順利讀取,但較高版本比如2.2.5分析log時可能會報錯segment fault。而且其他的log分析軟體,比如awstats,也會使用http類型的log,因此如果為了測試其他的log分析軟體,可以考慮不用這種log格式。
如果選用http類型的格式,則在slackware10.2.0上安裝sarg 2.2.5版本會報錯segment fault;但在slackware 12.0.0上裝則不會。不知是我的人品有問題,還是真的有這種bug?我相信后一種解釋。

一旦在執行sarg命令是出現錯誤,可以運行
#sarg –z –x
觀察輸出結果,看看是哪裡的問題,一般都是log格式的問題。

3. 關於slackware包管理的技巧
這次安裝sarg的過程也是我偶然了解到,slackware下面也有像debian一樣的apt-get包管理模式,叫做slapt-get; 還有一個軟體叫swaret
這兩個軟體也是各有利弊,可以參考下面的鏈接。
不過該軟體確實很好地解決了到處找tgz的麻煩,雖然和其他發行版本比還有一定差距,但確實便利了許多。

slapt-get配置文件/etc/slapt-get/slapt-getrc
參數:
slapt-get [選項(可多選)] [目的]

目的:
--update|-u - 從鏡像上檢索軟體包數據
--upgrade - 升級已安裝軟體包
--dist-upgrade - 升級至更新的 release 版本
--install|-i [軟體包名稱(可多選)] - 安裝軟體包
--install-set [磁碟集合(可多選)] - 安裝選定的磁碟集合
--remove [軟體包名稱(可多選)] - 刪除軟體包
--show [軟體包名稱] - 顯示軟體包描述
--search [表達式] - 查找可用的軟體包
--list - 列出軟體包
--available - 列出可用軟體包
--installed - 列出已安裝軟體包
--clean - 清空緩存的軟體包
--autoclean - 只清除過時和無法獲取的軟體包
--add-keys - retrieve GPG keys for sources
--version - 顯示版本和版權信息

Swaret配置文件/etc/swaret.conf
參數
swaret --ACTION

--update - 從鏡像上檢索軟體包數據
--upgrade [-a] - 升級已安裝軟體包[自動]
--install [-a|-p|-ap] - 安裝軟體包[自動|打補丁|自動打補丁]
--reinstall [-a|-p|-ap] - 重新安裝軟體包[自動|打補丁|自動打補丁]
--remove KEYWORD [-a] - 卸載軟體包[自動]
--get [-a|-p|-ap|-s|-as|-u|-au] - 獲取軟體包[自動|打補丁|自動打補丁|......]
--compile KEYWORD - 編譯軟體包
--dep [-a] --解決依賴關係[自動]
--resume [-p|-s] --恢復軟體包
--list [-p|-s|-i|-u|-n|-np] --軟體包列表
--search KEYWORD [-p|-s|-i|-u|-n|-np] - 查找可用的軟體包
--show [-p|-i] - 顯示軟體包描述
--changelog -軟體包變化信息
--set KEYWORD -設置
--extra -額外軟體包
--rollback NUMBER -降級
--gpg [-i] -密鑰
--log [-t|-c] -信息
--purge [-s|-d #|-ds #|-w #|-ws #|-v] - 清空緩存的軟體包
--config -配置軟體包
--faq -軟體包FAQ
--htus -?
--manual [-c] -軟體包Manual
--help -幫助,顯示此頁
--morehelp -更多幫助
--version -版本信息

六. 參考鏈接

Sarg:
http://sarg.sourceforge.net/sarg.php
http://www.software-mirror.com/linuxpackages/Slackware-10.2/Console/sarg/
http://www.tuxjm.net/downloads/source/slackware-10.2/
http://212.17.30.65/sarg/

slackware包管理
http://blog.chinaunix.net/u1/55011/showart_441859.html
http://software.jaos.org/#slapt-get
http://swaret.sourceforge.net/index.php
http://slack.linuxsir.org/main/node/37

字數限制,沒辦法,還是看博客吧
source: http://blog.chinaunix.net/u/20003/showart_709458.html
《解決方案》

寫得很詳細,謝謝。
《解決方案》

請問,你說的那個老外的那個腳本放在哪個目錄呢?

http://www.initzero.it/products/ ... wnload/sarg-reports

是放在/etc/cron.daily/目錄下還是放在什麼地方?

另外,他這個腳本對squid日誌是否有要求?是否支持壓縮的日誌呢?
他這個腳本對已經輪轉的日誌是否能讀取,因為我有看到你列出的例子:http://212.17.30.65/sarg/ 對日、周、月都有做出分析;

我目前所做的僅僅是每天有一個日誌,每周,及每月的沒有用好腳本(都是網上找的,自己沒有滲透),我的日誌是設置每周輪轉一次,事實上,這樣已經是很大的日誌文件了。。

以上煩請賜教,謝謝。
《解決方案》

根據作者備註,使用日誌輪轉的要創建月報表和周報表有些問題;

## TODO:
# - Smarty weekly recognition...
#   Like "begin of last week to end of last week",
#   doesn't like this script do: "7 days ago to yesterday"
# - Monthly recognition isn't so elegant (is very ugly, i know)
# - Suggestions are welcome :-)
# - If you Rotate the squid logs before sarg-reports will run,
#   it will not create any html reports
#   (TIPS: Rotate the logs after sarg-reports)
《解決方案》

REMEMBER: if you use logrotate, configure it to rotate the logs within MONTHLY basis,
#              AFTER sarg-reports created the monthly html report.


儘管這句話很簡單,還是不能很好理解:em16:
《解決方案》

回復 #6 zenglingping 的帖子

這句話是啥意思呢?就是說,一般squid在logrote里設置的是一個月打包一次,因此,如果sarg-reports腳本在log文件打包后才執行的話,那肯定分析不出來,因為舊的log文件已經打包了。因此必須在舊的squid log打包之前執行sarg-reports monthly。比我我每月1號凌晨1點執行logrotate,那我的sarg-reports montyly就會安排在00:30左右執行。不知道我解釋的明不明白。
《解決方案》

原帖由 zenglingping 於 2008-6-10 16:34 發表 http://bbs.chinaunix.net/images/common/back.gif
請問,你說的那個老外的那個腳本放在哪個目錄呢?

http://www.initzero.it/products/ ... wnload/sarg-reports

是放在/etc/cron.daily/目錄下還是放在什麼地方?

另外,他這個腳本對squid日誌是否有要 ...

是這樣的,理論上來說,這個腳本可以放在任何地方,但是放在/etc/cron.daily不太好,因為sarg-reports這個腳本後面可以跟許多參數
比如:
sarg-reports daily
sarg-reports weekly
sarg-reports monthly
等等
所以,我習慣放在/usr/local/sarg/下面,在crontab里分別加上
00 09-18/1 * * * /usr/local/sarg/runsarg.sh today
00 00 * * * /usr/local/sarg/runsarg.sh daily
00 01 * * 1 /usr/local/sarg/runsarg.sh weekly
00 01 1 * * /usr/local/sarg/runsarg.sh monthly
這樣就可以分時採集數據。
另外如果有個人的需要,可以改一下sarg-reports腳本的內容。

關於對squid日誌格式有何要求,我文章中寫到了這點,是我親身實踐的,但不知是不是大家都這樣,另外sarg不支持壓縮的log

還有啥問題,歡迎討論。

thanks
《解決方案》

原帖由 zenglingping 於 2008-6-10 18:38 發表 http://bbs.chinaunix.net/images/common/back.gif
REMEMBER: if you use logrotate, configure it to rotate the logs within MONTHLY basis,
#              AFTER sarg-reports created the monthly html report.


儘管這句話很簡單,還是不能很好理解:em16:


這句話是啥意思呢?就是說,一般squid在logrote里設置的是一個月打包一次,因此,如果sarg-reports腳本在log文件打包后才執行的話,那肯定分析不出來,因為舊的log文件已經打包了。因此必須在舊的squid log打包之前執行sarg-reports monthly。比我我每月1號凌晨1點執行logrotate,那我的sarg-reports montyly就會安排在00:30左右執行。不知道我解釋的明不明白。

[火星人 ] Slackware下安裝SARG - HOW-TO已經有372次圍觀

http://coctec.com/docs/service/show-post-29826.html