sarg報告錯誤
我有一個執行 Ubuntu Server 11.10、Squid 2.7.STABLE9 的代理伺服器。我安裝了 sarg(版本 2.3.1 Sep-18-2010)以使用普通的 apt-get 安裝生成報告,並添加了一個 cron 作業以每 5 分鐘生成一份當天的報告(這將覆蓋 5 分鐘前的一):
*/5 * * * * /root/proxy_report.sh
的內容
/root/proxy_report.sh
是:#!/bin/bash /usr/bin/sarg -nd `date +"%d/%m/%Y"` > /dev/null 2>&1
我添加了另一個 cron 作業,以每小時 :32 生成一份完整的報告(不要與 5 分鐘的作業衝突):
*/32 * * * * /root/proxy_report_full.sh
的內容
/root/proxy_report_full.sh
是:#!/bin/bash /usr/bin/sarg -n > /dev/null 2>&1
我添加了一個小腳本來刪除昨天的完整報告(昨天結束的完整報告不會被新的今天的完整報告覆蓋)在
/etc/rc.local
啟動時執行:/usr/bin/rm_yesterday.sh &>> /var/log/rm_yesterday
哪裡
/usr/bin/rm_yesterday.sh
:#!/bin/bash find /var/www/sarg/ | grep `date -d Apr1 +"%Y%b%d"`-* | grep -v `date +"%Y%b%d"` | xargs rm -rf
- Apr1 是代理的開始日期…
** 我已將其放入
/usr/bin
以便在啟動時儘早安裝…這種安排在大約一個半月內順利進行,除了有一次我注意到一些錯誤並且沒有生成報告,並通過製作偏移量(第二個 cron 作業的 32 分鐘內的兩分鐘)來解決這個問題。但是,它開始不再生成報告。通過手動嘗試生成它會出現以下錯誤:
root@proxy-server:~# sarg -n SARG: getword_atoll loop detected after 3 bytes. SARG: Line="154 192.168.10.40 TCP_MISS/200 39 CONNECT www.google.com" SARG: Record="154 192.168.10.40 TCP_MISS/200 39 CONNECT www.google.com" SARG: searching for 'x2f' SARG: getword backtrace: SARG: 1:sarg() [0x8050a4a] SARG: 2:sarg() [0x8050c8b] SARG: 3:sarg() [0x804fc2e] SARG: 4:/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x129113] SARG: 5:sarg() [0x80501c9] SARG: Maybe you have a broken date in your /var/log/squid/access.log file
當我查看
/var/log/squid/
文件夾時,我注意到它包含一些旋轉的日誌:root@proxy-server:~# ls /var/log/squid/ access.log access.log.1 cache.log cache.log.1 store.log store.log.1
那麼也許 sarg 安裝了 logrotate 呢?或者它帶有標準的 Ubuntu?我不記得我是手動安裝的。
問題是:可能出了什麼問題?它與旋轉日誌有關嗎?如何跟踪錯誤並重新開始生成報告?
首先我不知道 sarg 但似乎問題是由您的日誌文件引起的。這可能是由兩件事引起的:
- squid 配置的隨機字元/二進制數據/更改的日誌格式
- sarg 可能有由旋轉的日誌文件的問題
logrotate
基於http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=369693>以及<https://bugs.launchpad.net/ubuntu/+source/squid/+bug/268816我認為問題可能是由 logrotate 引起的。