squid+sarg的安裝和使用(轉)

Linux NAT + Squid + SARG 製作使用者上網記錄表
鳥哥簡易Proxy server假設
Squid 中文權威指南(總16章)   
 
Squid配置管理指南
1. Web Cache技術簡介。
2. Squid安裝的硬件要求。
3. Squid安裝前的系統優化。
4. Squid安裝時補丁管理。
5. Squid configure參數含義。
6. Squid命令參數的含義。
7. Squid的conf配置參數的含義。(在這一部分,將其分類進行描述)
8. Squid下一步的發展。
9. 常用Squid配置舉例。
10. 參考資料

一. Web Cache技術簡介

       WWW技術是當今Internet上發展最快,使用最廣泛的技術; WWW應用也早已取代E-mail成爲Internet上數據流量最大的應用。Internet 的飛速發展,對網絡的帶寬建設提出更高要求。如何在現有帶寬的條件下,更有效的使用WWW資源,是Internet世界關注的焦點之一。在此種迫切需求下,Web Cache技術應運而生。
       Web Cache的作用和個人電腦上網頁瀏覽器所帶的緩存一樣,主要是對網絡信息進行緩存。當用戶第一次向一個網頁發出訪問請求,網頁從遠端服務器傳送給用戶時,該網頁內容被存在緩存服務器中。第二個用戶在對同一個網頁發出訪問請求時,就可以直接從緩存服務器中得到網頁,而不必連接到遠端服務器。這樣對那些訪問頻繁的網頁,訪問速度會大大提高。而這一切對用戶都是透明的。

Cache Hit:當用戶發起請求時,Cache服務器首先會在快取緩衝區內尋找該數據。如果欲查詢的數據恰好已存在於緩衝區內(這樣的情況我們稱之爲cache hit ),就直接從內存讀出數據。
Cache Miss:當用戶發起請求時,Cache服務器首先會在快取緩衝區內尋找該數據。如果欲查詢的數據恰好已存在於緩衝區內(這樣的情況我們稱之爲cache Miss ),那麼Cache服務器需要到遠端服
務器進行請求,然後重新進行緩存。
Uncachable:不允許Cache服務器對該數據進行緩存。
Cache Validation:保證Cache服務器不提供給用戶過期信息的一種機制。

二. Squid安裝時硬件需求

       相對於其它系統而言,Web Cache系統更依賴於硬件資源。雖然Web Cache系統的高性能關鍵來自整個軟硬件系統的高性能,但下列因素對Web Cache系統性能的影響非常明顯,按照重要性按由高到低排列爲:
   磁盤隨機訪問時間
   系統內存的容量
       磁盤的持續吞吐量
  
CPU能力
上述任何一個要素的不足,都將明顯影響緩存系統性能。爲了保證系統能夠穩定高效的運行,系統冗餘是必不可少的。以便於在出現硬件故障情況下,有預先準備的替換部件。如果你的Web Cache服務器非常重要,應該有一個(正在運行的)安裝了操作系統和squid的冗餘機器,以便於可以進行瞬時切換。下面我們來詳細描述如何確定Web Cache服務器所需要的硬件資源:
硬盤
Web Cache服務器需要使用一個隨機訪問速度快且高吞吐量的硬盤。但是如果我們設定很少的Web緩存數據,那麼它即使是世上最快的硬盤也沒什麼用處。爲了提高緩存的效率,硬盤需要保存大量的下載數據。在硬盤的選擇上,硬盤的查找時間(Seek time)是一個很關鍵的性能參數。我們可以在硬盤的說明文檔中查看該參數定義。這個數值越小越好:它是磁頭從一個隨機磁道移到另一個磁道的平均時間(以毫秒爲單位)。 只有一個硬盤的緩存處理一次請求至少訪問一次硬盤(忽略硬盤的RAM緩衝和結點更新次數). 如果只有一個硬盤, 我們可以通過下面的公式來計算一秒內硬盤查找次數(由此而得一秒內的請求數):
       每秒請求數 = 1000/查找時間
       當我們在Web Cache服務器中使用多個硬盤時,那麼操作系統會在不同的硬盤間交叉寫盤,因此如果你在Web Cache服務器中使用多個硬盤,那麼每個硬盤的每秒查找次數會低一些。 幾乎所有的操作系統,當增加硬盤後,隨機查找時間呈半線性方式增加. 如果你在等式中增加磁盤的數量,每秒請求數會更接近! 同時爲了簡化,我們假定你用的硬盤都有相同的查找時間,從而公式變爲:
每秒請求數的理論值 = 1000/(查找時間)/(硬盤數)
如果我們有3個硬盤 - 它們的查找時間都是12ms.,因而理論上的請求處理速度,
每秒請求次數 = 1000/(12/3) = 1000/4 = 250 次/秒
另外由於目前IDE技術的發展使得IDE硬盤的查找時間與SCSI硬盤的非常接近,所以(帶有DMA兼容的IDE控制器)數據傳輸速度不會降低整個機器的運行速度。在確定了使用的硬盤類型之後,我們需要確定爲Web Cache服務器分配多大的硬盤空間。當決定分配給緩存的硬盤空間數量時,應該確定每天經過緩存的數據的大概容量。如果你不能確定這個數值,那麼你可以使用平均傳輸速度爲基礎來計算該數值。一個 10Mb/s 的線纜每秒大約傳輸1,250,000字節. 如果所有客戶端都來訪問這個緩存, 硬盤將以每秒1250k的速度被使用,如果全速運轉一天(24小時),你大約傳輸了36 G字節. 那麼我們則要分配給Web Cache服務器一個36G的空間。
使用RAID系統來建造緩存系統. 這可以顯著地增加數據的可用性,但一個RAID-5系統嚴重地降低硬盤的吞吐量。如果你非常關心繫統的正常運行時間,選擇一個RAID系統確實不錯. 但是,由於緩存中存儲的數據並不重要,你可手工清除這些數據,重新格式化或替換磁盤。

RAM 需求

       Squid在內存中維護着一個對象對列。由於Squid需要檢查一個對象是否已經緩存,所以這個表的快速查找非常重要。當由於系統內存不足,這個表的一部分被放在交換分區中時,squid的性能就會顯著下降。這時因爲squid是一個很大的進程,所以對它做進程切換將嚴重影響其性能。並且由於操作系統在切換進程時,squid會被放入'睡眠任務'隊列中, 它將暫時不能處理已經建立的請求連接。
       每一個硬盤上的Cache對象,其索引項大約佔用75個字節的內存。據統計Web Service中每個對象的平均大小約爲3K, 因此如果你有一個1G的硬盤空間,你可以存放大約350000個Web Service對象。而一個Web Service對象需要佔用75字節RAM, 80 000對象大約需要30M內存。如果你有8G硬盤空間,則需要250M內存來建立對象索引。但是這些內存需求並不包括操作系統、Squid進程以及系統其他使用的內存,明白這一點很重要。

硬盤持續吞吐量
Squid傾向於取小的數據塊,所以吞吐量的重要性不比隨機訪問時間。通常,能快速查找的硬盤一般具備很大的吞吐量,而硬盤越多(在現在,即使是IDE硬盤) 能傳輸越多的數據,從而超過客戶端所能從緩存下載數據的速度。

CPU 能力
一般說來,Squid不是一個多CPU敏感程序,在啓動時,Squid會使用大量的CPU資源來查找緩存裏有哪些內容,一個低速的CPU會降低Squid剛啓動後幾分鐘內的緩存訪問速度。一個多處理器的機器通常不會明顯地增加訪問速度: 雖然一部分Squid代碼可以跑多線程,但是這個代碼片段也不是CPU密集的。
由上面的分析可以瞭解更多的內存或更多的硬盤會更大幅度的提升Squid的性能。

三. Squid安裝前的系統優化。

Squid的系統優化包括Squid運行操作系統的選擇和操作系統性能參數的調整兩個部分:
選擇操作系統
Squid支持大部分的類Unix操作系統,這些操作系統列表可以在Squid的官方網站上看到。不過據Squid的作者推薦,一般採用FreeBSD和Linux系統。
系統性能參數調整

1. FD調整
Linux:
a) 打開/usr/include/bits/typesize.h ,修改#define __FD_SETSIZE爲你想要的數值。
b) echo 8192 > /proc/sys/fs/file-max
c) Ulimit –Hn 8192
d) 然後再開始編譯Squid。(這些參數都是暫時生效的,機器重新啓動後,這些參數會丟失,你需要把這些寫在squid的啓動腳本中。
FreeBSD:
a) 修改Kernel的配置文件,將Maxfile改爲”options    MAXFILES=8192”
b) 重新編譯內核,使用新的內核啓動。

2. 本地端口調整
Linux:
a)   echo "minport maxport" > /proc/sys/net/ipv4/ip_local_port_range
b) 這個值同樣是暫時生效的,機器重新啓動後,這些參數會丟失,所以也需要將這些參數寫入Squid的啓動腳本里面。
FreeBSD:
a) sysctl -w net.inet.ip.portrange.last=maxport

四. Squid的補丁管理。

Squid目前的版本是2.5.STABLE5,但是隨着Squid的使用,大家不斷的對Squid進行修改,不斷的發行補丁,而這些補丁往往都沒有集成到用戶下載的軟件包中,所以我們需要在編譯之前,首先對
現有的Squid打補丁,具體步驟爲:
1. 下載所需補丁。
2. 進入Squid的源代碼目錄。
3. 運行patch –p1 < Squid補丁存放路徑。
在完成系統調整、給Squid進行補丁安裝後,我們就可以開始編譯安裝了。

五. Squid Configure參數含義。

在正式開始編譯、運行Squid之前,我們需要對Squid進行一系列的配置。下面我們分別解釋其參數的具體含義:
   --cache-file=FILE       把運行configure時的輸出信息放置到指定文件中。
   --help                輸出幫助信息
   --no-create              只是檢測系統是否可以安裝Squid,而不生成任何文件。
   --quiet, --silent       不顯示運行configure時輸出信息
   --site-file=FILE       use FILE as the site file
   --version             顯示生成configure腳本的autoconf版本號
Directory and file names:
   --prefix=PREFIX       將Squid的安裝文件放置到此目錄下
   --bindir=DIR          將Squid安裝目錄的bin目錄放置在此目錄下
   --sbindir=DIR           將Squid安裝目錄的sbin目錄放置在此目錄下
   --libexecdir=DIR       將Squid安裝目錄的libexec目錄放置在此目錄下
   --datadir=DIR           將Squid安裝目錄的share目錄放置在此目錄下
   --sysconfdir=DIR        將Squid安裝目錄的etc目錄放置在此目錄下
   --localstatedir=DIR     將Squid安裝目錄的var目錄放置在此目錄下
   --libdir=DIR          將Squid安裝目錄的lib目錄放置在此目錄下
   --includedir=DIR        C header files in DIR [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
   --infodir=DIR           info documentation in DIR [PREFIX/info]
   --mandir=DIR          將Squid安裝目錄的man目錄放置在此目錄下
--enable and --with options recognized:
   --enable-dlmalloc[=LIB] 使用新的malloc函數
   --enable-gnuregex    支持GNUregex
   --enable-xmalloc-statistics 支持在統計頁面中顯示malloc統計
   --enable-carp           支持CARP協議
   --with-aufs-threads=N_THREADS 設定aufs所使用的線程數
   --with-pthreads       支持POSIX Threads
   --with-aio              使用POSIX AIO
   --with-dl             使用動態鏈接
   --enable-storeio="list of modules" 選擇支持的存儲種類
   --enable-delay-pools 支持帶寬管理功能
   --disable-wccp       不支持WCCP協議
   --enable-kill-parent-hack   在關閉child進程時同時關閉父進程。
   --enable-snmp           支持SNMP監控
   --enable-cachemgr-hostname[=hostname] 設定cachemgr.cgi缺省名稱
   --enable-arp-acl        支持ARP ACL功能
   --enable-htcp           支持HTCP協議
   --enable-ssl          支持SSL協議。
   --with-openssl[=prefix] 設定Openssl的開發庫路徑。
   --enable-cache-digests   使用緩存摘要
   --enable-default-err-language=lang   設定缺省的錯誤語言
   --enable-err-languages="lang1 lang2.." 選擇支持的語言種類
   --with-coss-membuf-size 設定COSS membuf 大小 (缺省爲1048576 bytes)
   --enable-poll           使用poll()代替select()。
   --disable-poll       不使用poll
   --disable-http-violations 不支持HTTP標準不兼容的命令
   --enable-linux-netfilter   支持透明代理
   --disable-internal-dns   禁止Squid進行DNS解析,由外部程序”dnsserver”來完成。
   --enable-truncate       使用truncate()代替unlink()。
   --disable-hostname-checks 支持在主機名中使用特殊字符。
   --enable-underscores 支持帶“_”的域名。
   --enable-auth="list of auth scheme modules"   配置支持的認證模塊種類

六. Squid命令參數含義。

下面介紹squid的運行命令:
Usage: squid [-dhsvzCDFNRVYX] [-f config-file] [-[au] port] [-k signal]
   -a port 指定Squid使用的Http端口號.
   -d level   設定Squid調試信息等級。
   -f file 指定Squid所使用的配置文件
   -h    輸出幫助信息
   -k reconfigure 重新載入新的配置文件而不重新啓動Squid進程。
Rotate   進行日誌回滾
Shutdown 等待所有請求完成後再停止Squid。
Interrupt   拒絕Squid接受新的請求,立即結束Squid。
Check   檢查Squid當前的運行狀態
Kill 直接停止Squid。
Debug 調試模式
Parse 檢查配置文件是否正確
   -s        將信息輸出到syslog中.
   -u port 設定ICP端口,0表示禁止使用ICP.
   -v        打印Squid版本號
   -z        創建Squid Swap目錄。
   -C        不捕捉錯誤信號.
   -D        禁止進行初始化DNS解析
   -F        在Store沒有建立之前不接受任何請求。
   -N        不作爲Damon形式運行。
   -V        設定主機的Http加速模式爲Virtual,直接設定http_accel_host值。
   -X        輸出完整的調試信息
   -Y        在快速reload時只輸出UDP_HIT或 UDP_MISS_NOFETCH信息。

七. Squid Conf配置參數含義。

Squid配置文件中的參數主要分爲以下幾類:
1. 通用參數。
2. 訪問控制參數。
3. Cache相關參數。
4. 服務器加速模式相關參數。
5. ICP參數。
6. 日誌文件相關參數。
7. Squid監控相關參數

一. 通用參數
Http_port:Squid缺省監聽端口,可以設定多個監聽端口。
Icp_port:發送和接收ICP的端口號。
Htcp_port:發送和接收HTCP端口號。
Mcast_groups:接收ICP多播地址範圍。
Visible_hostname:設定Squid的本地主機名。(必須設定)
cache_effective_user:Squid進程所使用的用戶。
cache_effective_group:Squid進程所使用的組。

二. 訪問控制參數。

訪問控制條目語法爲:
acl name type value1 value2 ……
其中acl爲關鍵字,name是用戶定義的名稱,type是表明acl的類型,value1 and value2是具體值。
在大多數情況下,下面兩種形式是等效的:
Acl http_ports port 80 8000 8080與
Acl http_ports port 80
Acl http_ports port 8000
Acl http_ports port 8080是等效的。

Acl主要的類型包括:
1. IP地址:src, dst, myip。
2. 域名:srcdomain, dstdomain,和the cache_host_domain
3. 用戶名:ident, proxy_auth
4. 正則表達式:srcdom_regex, dstdom_regex, url_regex, urlpath_regex, browser, referer_regex, ident_regex, proxy_auth_regex, req_mime_type, rep_mime_type。
5. 端口號:port, myport。
6. 其他:method, proto, time, snmp_community, maxconn, arp,
在Squid-2.5以後,引入了一種新的模式――ACL支持使用外部應用程序,這使得用戶可以更加自主的定義ACL列表,並進行相關的操作。
另外,如果用戶所定義的ACL元素過多,Squid還支持將這些數值寫入一個文件,並且在acl中直接指定該文件:例如:如下的acl列表就可以修改爲
Acl test port 80 90 8080 8000 8100 21 23 445
Acl test port “/usr/local/squid/etc/portlist”
其中portlist文件格式如下:
80
90
8080
……
訪問控制規則定義語法爲:
(Rule) deny|allow (ACL 名稱)

三. Cache相關參數。

cache_mem:設定Squid所使用的內存數量。
maximum_object_size:設定Squid可以緩存的Object最大大小。
minimum_object_size:設定Squid可以緩存的Object最小大小。
maximum_object_size_in_memory:設定Squid內存中可以緩存的Object最大大小。
cache_replacement_policy:Cache中的Object更新策略,包括(lru、heap GDSF、heap LFUDA和heap LFU)
memory_replacement_policy:代理服務器內存中Object更新策略,類型同上。
cache_dir:設定Cache的存儲路徑以及存儲類型。
Ufs:傳統的UNIX文件系統存取方式。
Aufs:使用多線程技術進行文件存取。
Diskd:使用額外的獨立進程進行文件存取。
Coss:最新開發的專爲Squid優化的文件系統,還處於試驗階段。
下面是這幾種文件系統性能的比較:
Table D-1. Linux benchmarking results
Storage scheme Filesystem Mount options Throughput (xact/sec) Response time (sec) Hit ratio (%)
coss     326.3 1.59 53.9
aufs(1) ext2fs noatime 168.5 1.45 56.3
diskd(1) ext2fs noatime 149.4 1.53 56.1
aufs(2) ext2fs 110.0 1.46 55.6
ufs(1) ext2fs 54.9 1.52 55.6
ufs(2) ext3fs 48.4 1.49 56.8
ufs(3) xfs 40.7 1.54 55.3
ufs(4) reiserfs notail, noatime 29.7 1.55 55.0
ufs(5) reiserfs 21.4 1.55 55.1
request_header_max_size:用戶請求的HTTP頭大小。
refresh_pattern:用戶可以單獨指定某種文件的更新策略。

四. 服務器加速模式相關參數。

httpd_accel_host:指定目標主機IP地址。
httpd_accel_port:指定目標主機Web服務IP地址。
httpd_accel_uses_host_header:是否使用用戶請求中的header。
httpd_accel_single_host:是否將所有用戶請求都轉發到目標主機。
httpd_accel_with_proxy:是否在提供加速模式時同時提供代理功能。

五. Cache服務器互聯相關參數

這些選項是在使用Squid建立大型的緩存服務器集羣時使用的。
Cache_peer:設定該緩存服務器可以與之互通的其他Cache服務器。
Cache_peer_domain:設定某個特定的域名(如:.net)到指定的Cache服務器去讀取緩存信息。
Neighbor_type_domain:設定該緩存服務器的鄰近服務器類型。
Icp_query_timeout:ICP請求過期時間。
Maxium_icp_query_timeout:最大ICQ請求時間。
Dead_peer_timeout:判斷某個端點是否失效時間。

六. 日誌文件相關參數。

cache_access_log:用戶訪問記錄Log。
cache_log:Squid本身進程的日誌記錄。
cache_store_log:記錄Cache緩存信息。
cache_swap_log:記錄cache交換信息。
emulate_httpd_log:改變Squid日誌格式。
log_mime_hdrs:記錄所有Accept頭信息。
useragent_log:記錄用戶客戶端信息。
referer_log:記錄用戶請求日誌
log_fqdn:記錄用戶完整的主機名。
client_netmask:是否屏蔽用戶的真實IP地址
strip_query_terms:是否屏蔽用戶的詳細請求信息。
logfile_rotate:設定日誌回滾時間。

七. Squid監控相關參數。

snmp_port:設定SNMP監聽端口。
snmp_access:爲了安全考慮,用戶可以設定SNMP的訪問範圍。
high_response_time_warning:設定響應事件報警。(如果響應時間過長,可以通知用戶)
high_page_fault_warning:設定頁面錯誤事件報警。
high_memory_warning:設定Squid內存使用報警。

八. Squid的下一步發展
Squid 3.0的主要變化包括:
1.完全使用C++。
2.支持64位系統。
3.更加完善的帶寬管理功能。
4.支持動態文件句柄數。

九. 常用Squid配置舉例

下面介紹一個我們配置hexun首頁加速的實例。
預先設定了cache的存儲路徑爲/cache,log的存儲路徑爲/log/,squid程序的存放路徑爲/squid/。
1.首先下載最新版本的Squid和相應的補丁。
2.解壓Squid,打上所有補丁。
3.運行
./configure --prefix=/squid/ --enable-gnuregex --enable-async-io=30 --with-aufs-threads=16 --enable-storeio="ufs,aufs,diskd,coss" --enable-heap-replacement --enable-snmp --disable-internal-dns --enable-underscores --enable-useragent-log --enable-referer-log

進行配置。
4.make; make install;
5.修改/log和/cache的所有者爲nobody.nobody
Chown nobody.nobody /log/
Chown nobody.nobody /cache/

6.安裝完畢後,按照如下方式配置squid.conf,

http_port 80
cache_mem 1228 MB           (最大內存爲2GB)
maximum_object_size 5096 KB
maximum_object_size_in_memory 5096 KB
cache_replacement_policy heap LFUDA          (採取這兩種方式性能更高效)
memory_replacement_policy heap LRU
cache_dir aufs /cache 27970 16 256
cache_access_log /log/access.log
cache_log /log/cache.log
cache_store_log none       (不需要store.log,如有必要,可以設定其存放路徑)
emulate_httpd_log on       (由於日誌分析需要,將其日誌類型設定爲和Apache一致)
cache_dns_program /squid/libexec/dnsserver        (使用外部DNS程序,這樣可以加快Squid請求處理速度)
dns_children 30                                (設定外部DNS程序數量(0-32))
request_header_max_size 70 KB       (用戶請求的HTTP頭大小可以自行調整)
acl PURGE method PURGE
http_access allow PURGE localhost
http_access deny PURGE all
cache_effective_user nobody
cache_effective_group nobody
visible_hostname squid-3
httpd_accel_port 80    (設定需要加速的服務器服務端口)
httpd_accel_host 192.168.158.81    (需要加速服務器IP地址)
httpd_accel_single_host on    (用戶的所有請求都轉發到真正的服務器上)
httpd_accel_with_proxy off       (不允許用戶將此加速服務器作爲代理服務器使用,訪問其他網站)
httpd_accel_uses_host_header on    (由於該加速服務器上有多個域名,所以需要打開該選項以便對不同的用戶請求進行區分)
logfile_rotate 5    (保存5天內的日誌)
forwarded_for on     (將用戶的真實IP地址通過X-Forwarded-For中傳遞下去,主要是爲了保證正確顯示lucene.com.cn網站中的用戶評論的真實IP地址)
snmp_port 3401     (設定SNMP端口爲3401)
acl snmp src 202.99.16.0/24     (只允許這個網段的用戶進行SNMP請求)
snmp_access allow snmp
strip_query_terms off    (由於咱們的日誌統計系統需要獲得用戶的具體請求內容,而Squid缺省配置中,日誌記錄是不記錄用戶的具體請求,所以需要關閉該項,這樣就可以顯示用戶的整個請求內容)

7.運行/squid/sbin/squid –z來創建/cache/目錄。
8.運行/squid/sbin/squid –F –D –s來啓動Squid進程。
------------------------------------------------
一,sarg日誌分析軟件的安裝
#下載了sarg的最新安裝包以後,進入下載的目錄,執行以下的操作進行安裝:
tar zxvf sarg-2.0.3.tar.gz #解壓縮安裝軟件包
cd sarg-2.0.2 #進入解壓後的目錄,
./configure --prefix=/usr/local/sarg --enable-bindir=/usr/local/sarg/bin
make
make install
cp /usr/local/sarg/bin/sarg /usr/bin/ #將sarg的命令拷貝到系統目錄中去以後執行sarg就可以不要加路徑了
#安裝成功後,在/usr/local/sarg/目錄中,有一個配置文件爲sarg.conf,我們通過修改配置文件的參數,來達到對日誌進行有規則的分析。也可以通過命令行參數實現。
#sarg配置文件的方法和squid配置文件的配置方法類似,只要修改帶有關鍵字的行:
"language english"
    指定網頁報告文件的語言類型,很可惜不支持中文網頁。
"access_log /var/log/squid/access.log"
    指定squid日誌文件絕對路徑。
"title "squid 使用報告"
    指定網頁標題。
"temporary_dir /var/tmp"
    指定臨時文件目錄,請確認該目錄所在的分區足夠大先,1g以上。
"output_dir /var/www/html/sarg"
    指定網頁報告文件輸出路徑。
"topuser_sort_field connect reverse bytes reverse"
    在top排序中,指定連接次數(connect),訪問字節數(bytes)採用降序排列,升序請使用normal替代reverse
"user_sort_field connect reverse"
    對於每個用戶的訪問紀錄,連接次數按降序排列
"exclude_hosts /usr/local/sarg/norecords"
    指定不計入排序的站點列表文件名爲/usr/local/sarg/norecords,對於客戶端 訪問的這些站點,將不會被top排序中,norecords文件樣本:
    google.com
    csdn.net
    microsoft.com
"date_format e"
    啓動sarg進程是如果使用日期參數-d時,請使用和配置文件一致的日期格:
    e (europe=dd/mm/yy),
    u (usa=mm/dd/yy),
    w (weekly=yy.ww)
"topuser_fields num date_time userid connect bytes %bytes in-cache-out used_time milisec %time total average"
    指定top排序的域,可以取掉一些不關緊要的域:in-cache-out used_time等
"weekdays 1-5"
    指定top排序星期週期爲星期一到星期五,0表示星期天
"hours 9-11,13-16"
    指定top排序的時間週期爲9:00-11:59,13:00-16:59,
    至此,sarg.conf文件的配置基本完成了,也可以直接參考附件。
還建立一個存放記錄的地方
mkdir /var/www/html/sarg/
mkdir /var/www/html/sarg/daily
mkdir /var/www/html/sarg/weekly
mkdir /var/www/html/sarg/monthly
sarg的命令行解釋如下:
   sarg -h
  sarg: usage [options...]
  -a hostname or ip address
  指定不計入排序的主機名稱或地址
  -b useragent log
  用戶代理日誌文件輸出
  -c exclude file
  指定不計入排序的站點列表文件名爲/usr/local/sarg/norecords,對於客戶端訪問的這
  些站點,將不會被top排序中
  -d date dd/mm/yyyy-dd/mm/yyyy
  指定日期範圍
  -e email address to send reports (stdout for console)
  指定報告接收者郵件
  -f config file (/usr/local/sarg/sarg.conf)
  指定配置文件
  -g date format [e=europe -> dd/mm/yy, u=usa -> mm/dd/yy]
  指定輸入的日期格式
  -h help (this...)
  列幫助信息
  -i reports by user and ip address
  指定客戶端排序採用用戶名或者ip地址
  -l input log
  指定squid日誌文件絕對路徑。
  -o output dir
  指定網頁報告文件輸出路徑,推薦使用webmaster或其他非admin用戶運行
  sarg。
  -p use ip address instead userid (reports)
  使用ip地址作爲userid域
  -w temporary dir
  指定臨時文件目錄,請確認該目錄所在的分區足夠大先,1g以上。
之後再運行:/usr/local/sarg/sarg   生成報表。就可以通過 http://ip/sarg 打開報表了
 
記得要先安裝apache軟件。。。。
 
二,sarg日誌分析軟件的運行
    一般來說,我們希望系統可以自動生成報告在sarg的主頁上可以找到日/月/年的自動生成腳本
sarg -d 日/月/年-日/月/年 #執行sarg的這個命令就可生成你想要的時間段的上網情況
也可以使用crontab來每日自動執行
首先建立執行腳本分爲日、周、月三個文件
vi /usr/local/sarg/bin/daily
內容如下:
#!/bin/bash
#Get yesterday date
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
export LC_ALL=C
/usr/local/sarg/bin/sarg -o /var/www/html/sarg/daily -d $YESTERDAY > /dev/null 2>&1
exit 0
vi /usr/local/sarg/bin/monthyl
內容如下:
#!/bin/bash
#Get yesterday date
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
#Get 1 month ago date
MONTHAGO=$(date --date "1 month ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -o /var/www/html/sarg/monthly -d $MONTHAGO-$YESTERDAY  > /dev/null 2>&1
/usr/local/squid/sbin/squid -k rotate
exit 0
vi /usr/local/sarg/bin/weekly
內容如下:
#!/bin/bash
#Generate Access.log for correct weekly reports
cat /var/log/squid/access.log.0 /var/log/squid/access.log > /var/log/squid/access.log.week
#Get yesterday date
YESTERDAY=$(date --date "1 days ago" +%d/%m/%Y)
#Get one week ago date
WEEKAGO=$(date --date "7 days ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /var/log/squid/access.log.week -o /var/www/html/sarg/weekly -d $WEEKAGO-$YESTERDAY > /dev/null 2>&1
/usr/local/squid/sbin/squid -k rotate
exit 0
然後運行
crontab -e
內容如下:
30 1 * * * /usr/local/sarg/bin/daily
01 0 * * 1 /usr/local/sarg/bin/weekly
01 3 1 * * /usr/local/sarg/bin/monthly
這樣在每天都會自動生成一個配置文件來查看
爲文件曾加刻執行的權限
chmod 755 /usr/local/sarg/bin/daily
chmod 755 /usr/local/sarg/bin/weekly
chmod 755 /usr/local/sarg/bin/monthly
好了現在你就可以等着第二天一大早來查看你的網絡前一天的上網情況
漢化
將附件chinese.txt的後綴去掉變爲chinese保存在/usr/local/sarg/languages/即可
配置文件實例
將sarg.txt改名爲sarg.conf並保存在/usr/local/sarg/下
 
-------------------------------------------------------------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章