天天看點

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

Linux NAT + Squid + SARG 制作使用者上網記錄表

http://cha.homeip.net/blog/archives/2005/06/linux_nat_squid.html

鳥哥簡易Proxy server假設

http://linux.vbird.org/linux_server/0420squid.php

Squid 中文權威指南(總16章)   

 http://home.arcor.de/jeffpang/squid/

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. 本地端口調整

a)   echo "minport maxport" > /proc/sys/net/ipv4/ip_local_port_range

b) 這個值同樣是暫時生效的,機器重新啟動後,這些參數會丢失,是以也需要将這些參數寫入Squid的啟動腳本裡面。

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

#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

vi /usr/local/sarg/bin/weekly

#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

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

然後運作

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

好了現在你就可以等着第二天一大早來檢視你的網絡前一天的上網情況

http://x.x.x.x/sarg/

漢化

将附件chinese.txt的字尾去掉變為chinese儲存在/usr/local/sarg/languages/即可

配置檔案執行個體

将sarg.txt改名為sarg.conf并儲存在/usr/local/sarg/下

-------------------------------------------------------------------------

FYI: http://blog.chinaunix.net/u/2620/showart_335274.html

        http://apps.hi.baidu.com/share/detail/885911

繼續閱讀