Squid

sarg報告錯誤

  • February 4, 2014

我有一個執行 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 但似乎問題是由您的日誌文件引起的。這可能是由兩件事引起的:

  1. squid 配置的隨機字元/二進制數據/更改的日誌格式
  2. sarg 可能有由旋轉的日誌文件的問題logrotate

基於http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=369693>以及<https://bugs.launchpad.net/ubuntu/+source/squid/+bug/268816我認為問題可能是由 logrotate 引起的。

引用自:https://unix.stackexchange.com/questions/41250