一款經常使用的 Squid 日誌分析工具

一款經常使用的 Squid 日誌分析工具
做 者:JackTian
微信公衆號:傑哥的IT之旅(ID:Jake_Internet)html

在上一篇文章中,咱們介紹了Squid代理服務器的基本概念,代理工做機制,代理基本類型,安裝 Squid 服務,構建傳統代理,透明代理以及 ACL 訪問控制,文章連接可參考:《萬字長文帶你瞭解最經常使用的開源 Squid 代理服務器》,那麼今天,給你們介紹一款經常使用的 Squid 日誌分析軟件,但願對有所幫助的同窗在從此的平常工做中可以運用的上。node

Sarg:全名:Squid Analysis Report Generator,是一款Squid日誌分析工具,採用HTML的格式將用戶所訪問的 Internet 網站信息、時間佔用信息、排名、鏈接次數、訪問量等相關信息進行羅列;web

Squid 日誌分析軟件:http://www.squid-cache.org/Misc/log-analysis.html
一款經常使用的 Squid 日誌分析工具apache

1、Sarg 部署過程
安裝 GD 庫vim

# yum -y install gd gd-devel

安裝 sarg安全

# mkdir /usr/local/sarg
# cd /usr/local/sarg/
# tar zxf sarg-2.3.7.tar.gz
# cd sarg-2.3.7
# ./configure --prefix=/usr/local/sarg/ -sysconfdir=/etc/sarg --enable-extraprotection && make && make install

配置項含義:bash

  • -sysconfdir=/etc/sarg:配置文件目錄服務器

  • --enable-extraprotection:添加額外的安全保護

配置微信

# vi /etc/sarg/sarg.conf 
7 access_log /usr/local/squid/var/logs/access.log       // 指定 squid 的訪問日誌文件
25 title "Squid User Access Reports"                    // 網頁 title 標題
120 output_dir /var/www/html/sarg                       // sarg 報告的輸出目錄
178 user_ip no                                          // 使用用戶名顯示
184 topuser_sort_field connect reverse                  // 在 top 排序中,指定鏈接次數,訪問字節數,採用降序排列
190 user_sort_field connect reverse                     // 對於用戶訪問記錄,鏈接次數按降序排列
206 exclude_hosts /usr/local/sarg/noreport              // 指定不計入排序的站點列表文件
257 overwrite_report no                                 // 當那個日期報告已經存在,是否覆蓋報告
289 mail_utility mailq.postfix                          // 發送郵件報告的命令
434 charset UTF-8                                       // 使用字符集
518 weekdays 0-6                                        // 指定 top 排序時的星期週期,0 爲週日
525 hours 9-12,14-16,18-20                              // 指定 top 排序時的時間週期
633 www_document_root /var/www/html                     // 網頁根目錄

運行
在上述的配置中,添加了不計入排序的站點,須要存在/usr/local/sarg/noreport文件中,添加的域名將不被顯示在排序中。直接執行 sarg 便可啓動一次記錄,建議設置符號連接,而後執行 sarg,會有輸出信息顯示。ide

# touch /usr/local/sarg/noreport
# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
# sarg
SARG: 紀錄在文件: 0, reading: 100.00%
SARG: 沒有找到紀錄
SARG: 結束

2、Sarg 相關命令幫助

  • -a:指定不計入排序的主機名稱或地址

  • -b:用戶代理日誌文件輸出

  • -c:指定不計入排序的站點列表文件名爲 /usr/local/sarg/norecords,對於客戶端訪問的這些站點,將不會被 top 排序中;

  • -d:指定日期範圍

  • -e:指定報告接收者郵件

  • -f:指定配置文件

  • -g:指定輸入的日期格式

  • -h:幫助信息

  • -i :指定客戶端排序採用用戶名或者 IP 地址

  • -l :指定 squid 日誌文件絕對路徑。

  • -o:指定網頁報告文件輸出路徑,推薦使用 webmaster 或其餘非 admin 用戶運行 sarg。

  • -p:使用 IP 地址做爲 userid 域

  • -w:指定臨時文件目錄,確認該目錄所在的分區足夠大,1G 以上。

3、計劃任務
可將 sarg 作成計劃任務,按期執行。

# vim /usr/local/sarg/daily.sh                       // 每日日報
#!/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
/usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0

# chmod +x /usr/local/sarg/daily.sh
# crontab -e                                         // 添加定時任務,天天 0 點執行
00 00 * * * /usr/local/sarg/daily.sh          
# chkconfig crond on

除了日報之外,還可寫週報、月報、郵件的方式發送報告,可參考以下腳本:

週報告:

-------------------------------------
#!/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date --date "1 week ago" +%d/%m/%Y)
/usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -o /usr/local/apache/htdocs/reports/weekly -z -d $YESTERDAY-$TODAY
exit 0

月報告:
-------------------------------------
#!/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date --date "1 month ago" +%d/%m/%Y)
/usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -o /usr/local/apache/htdocs/reports/monthly -z -d $YESTERDAY-$TODAY
/usr/local/squid/bin/squid -k rotate
exit 0

經過郵件發送報告:
-------------------------------------
#!/bin/bash
#Get current date
TODAY=$(date +%d/%m/%Y)
#Get one week ago today
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
/usr/local/bin/sqmgrlog -l /usr/local/squid/logs/access.log -e user@site.com -z -d $YESTERDAY-$TODAY
exit 0

4、常見問題
rpm 包安裝時,沒法安裝,報錯

warning: *.rpm: Header V3 RSA/SHA256 Signature, keykey ID c105b9de:

解決方法:

在 rpm 語句結尾加上 --force --nodeps,將rpm -ivh .rpm改爲rpm -ivh .rpm --force --nodeps就能夠了。

nodeps 的意思是忽視依賴關係,在 Linux 環境下各軟件間或多或少都會存在相關依賴關係,有了這兩個設置選項便可忽略這些依賴關係,強制安裝或者卸載。

例如:

rpm -ivh gd-devel-2.0.35-11.el6.x86_64.rpm --force --nodeps

或者嘗試卸載:

經過man rpm,發現--allmatches能夠解決這個問題。

例如:

# rpm -e --allmatches --nodeps gd*

執行 sarg 命令時,報錯

# sarg
SARG: Unknown sort order "BYTES" for parameter "topuser_sort_field"

解決方法:

編輯sarg.conf配置文件,將文件中第 184 行的內容爲:topuser_sort_field connect BYTES reverse中的BYTES去掉;

# vi /etc/sarg/sarg.conf 
184 topuser_sort_field connect BYTES reverse

而後執行命令sarg便可;

# sarg
SARG: 紀錄在文件: 0, reading: 100.00%
SARG: 沒有找到紀錄
SARG: 結束
相關文章
相關標籤/搜索