Squid服務日誌分析html
Apache 和 Squid 是兩種著名的代理緩存軟件,但Squid 較 Apache 而言是專門的代理緩存服務器軟件,其代理緩存的功能強大,支持 HTTP/1.1 協議,其緩存對象也較多;而且 Squid 的緩存管理模塊和訪問控制模塊功能很強大。它們有必定的類似之處,因此在分析完Apache日誌後再看Squid日誌就容易多了。緩存
Squid的日誌系統相對比較完善,經常使用日誌分爲以下兩個:分別是access.log 和cache.log。服務器
做用:網絡
access.log;客戶端使用代理服務器的記錄文件,訪問日誌位置在squid.conf中修改;併發
cache.log; 緩存在運行時的狀態信息和調試信息,通常狀況下容量不大。緩存日誌位置在squid.conf中修改。ide
當代理服務器運行時,全部客戶提出的請求,以及Squid處理的結果都會被記錄在/var/log/squid/access.log文件裏,使得access.log文件的增加速度很快,一般會mount一個比較大的磁盤做爲存儲空間。工具
注意:squid下還有一類日誌,store.log它記錄每一個進入和離開緩存的目標信息,參考價值不大,這裏不作介紹。ui
下面給出一條典型的Squid訪問日誌:google
對這條日誌的分析見表1。url
結果/狀態碼 TCP_MISS 表示沒有命中緩存,TCP_HIT 表示命中。
下面經過一個實用的Shell命令獲取比較詳細的命中狀況:
# cat access.log|awk '{print$4}'|sort|uniq -c|sort -nr
33 TCP_MISS/200
2 TCP_MISS/302
2 TCP_MEM_HIT/302
1 TCP_MISS/503
固然狀態信息(TCP_MISS、TCP_MEM等)不止這幾個。總的來講,HIT表示命中,而TCP_MISS表示未命中。
下列標籤可能出如今access.log文件的第四個域。
TCP_HIT :Squid發現請求資源最新的拷貝,並當即發送到客戶端。
TCP_MISS :Squid沒有請求資源的cache拷貝。
TCP_REFERSH_HIT :Squid發現請求資源舊拷貝,併發送確認請求到原始服務器。
TCP_IMS_HIT:客戶端發送確認請求,Squid發送更新的內容到客戶端,而不聯繫原始服務器。
TCP_NEGATIVE_HIT:在對原始服務器的請求致使HTTP錯誤時,Squid會緩存這個響應。在短期內對這些資源的重複請求,致使了是否命中。negative_ttl指令控制這些錯誤被Cache的時間數量。
TCP_MEM_HIT :Squid在內存cache裏發現請求資源的有效拷貝,並將其當即發送到客戶端。
TCP_DENIED :由於http_access或http_reply_access規則,客戶端的請求被拒絕了。
TCP_REDIRECT :重定向程序告訴Squid產生一個HTTP重定向到新的URI,這一功能比較常見,例如能夠用來實現訪問控制、移除廣告、本地鏡像等,用個實例來講,某個用戶請求http://www.example.com/a.htm重定向程序將請求改變成另外一個URI,http://www.example.com/b.htm。如下是重定向日誌的實例:
TCP_REDIRECT/301 277 GET http://redirector.you.com/videoplayback?3257|0|3|8 HIER_NONE comp3
(1).Squid 時間戳(1356693954.014)看起來有點彆扭,下面經過腳本將時間戳換算成咱們認識的時間:
#perl -pe's/^\d+\.\d+/localtime($&)/e;' access.log
通過Perl程序變化後的的時間直觀的顯示出來,便於查看。
(2).將Squid輸出日誌格式變形的腳本
有時須要動態顯示squid日誌的第三、八、7列內容,以便更符合咱們平常瀏覽習慣,就可使用以下命令:
# tail -f /var/log/squid/access.log |awk'{print$3 "" $8""$7}'
192.168.150.148-http://safebrowsing-cache.google.com/safebrowsing/rd/ChFnb29nLXBoaXNoLXNoYXZhchAAGMPiDyDM4g8yBkPxAwD_Aw
192.168.150.148-http://safebrowsing-cache.google.com/safebrowsing/rd/ChFnb29nLXBoaXNoLXNoYXZhchAAGM3iDyDg4g8qB1DxAwD__wEyBU3xAwAH
192.168.150.148-http://en-us.fxfeeds.mozilla.com/en-US/firefox/headlines.xml
192.168.150.148-http://fxfeeds.mozilla.com/firefox/headlines.xml
192.168.150.148-http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xm
(3).能夠將一個squid日誌記錄行分割成多個字段,使用參數傳回須要的字段。
# tail -f/var/log/squid/access.log | awk '{print$3 " " $8 " " $7}'
這裏選擇的是客戶IP及取回內容字段,顯示以下:
192.168.150.146-http://jump.qq.com/clienturl_simp_80192.168.150.147- http://mm.china.com/zh_cn/images/tit_liangzhuang.gif192.168.150.148 -http://ly.zzip.com.cn/movie/list.aspx?
(4).還能夠根據日誌分析緩存命中率:
#cat access.log|awk ‘{print$4}’|sort|uniq -c|sort -nr
9568 TCP_IMS_HIT/304
6313 TCP_HIT/200
2133 TCP_MISS/200
1568 TCP_MISS/206
587 TCP_MEM_HIT/200
Squid的配置文件位於/etc/squid/squid.conf,可在這個文件加入以下一行內容,以定義日誌文件的存儲位置。
Access_log/var/log/squid/access.log squid
下面以RHEL5爲例,/var/log/squid/access.log
除了命令行方式之外,採用Squid報告分析產生器(SARG)也是一種更直觀的方法。
1)使用Scalar腳本分析squid日誌
scalar腳本使用簡單,速度快,報告詳細,免去手工分析的麻煩。分析功能包括:每小時流量、文件大小比例、文件擴展名比例、狀態碼比例、命中率比例等。其格式與流量統計報告分別如圖二、圖3所示。Scalar的下載地址是http://scalar.risk.az/scalar095/scalar.awk。
SARG是一款Squid日誌分析工具,它採用html格式輸出,詳細列出了每一位用戶訪問Internet的站點信息、時間佔用信息、排名、鏈接次數及訪問量等。其效果如圖4所示。
圖4 Webmin下調用SARG輸出Squid日誌
Firewall Analyzer是另外一個分析Squid日誌工具,如圖5所示。圖中顯示了Squid Cache的使用狀況,TCP_HIT表示發現請求資源的拷貝,而TCP_MISS表示沒有請求資源的緩存拷貝,TCP_MISS達到了76.79%,正常狀況下TCP_HIT的數值要遠大於TCP_MISS的值若是反過來那麼說明代理服務器出現故障應當即檢查。
圖 5用FirewallAnalyzer分析Squid日誌
在access.log文件當前路徑下輸入如下命令也能夠輸出統計信息:
#cat access.log|gawk ‘{print $4}’|sort|uniq -c|sort-nr
此外,還有幾款squid專用日誌分析工具也比較易用,例如LightSquid、Calamari、Squid-Graph以及Squid Analyzer。不過它們最近已不升級這裏就不作介紹,感興趣的讀者能夠去網上查閱資料。最後,統一利用OSSIM分析日誌你們能夠參閱《UNIX/Linux網絡日誌分析與流量監控》一書。