Package: sarg
Version: 2.3.6-1+b1
Severity: normal
Tags: patch
sarg-reports is a very useful script called by sarg script in
cron.{daily,weekly,monthly}
to create Squid analysis reports under the respective Daily, Weekly, or Monthly
directory.
However, as the warning in the script says, logrotate needs to be
applied only AFTER the monthly report is generated.
This is unacceptable since the access log after a month will have grown
to a very large size, and regardless the logrotate shipped with sarg
specifies weekly rotation, so a monthly report is NEVER generated in
the unmodified Debian installation.
However for quite some time, sarg supports multiple input log files
and these can even be in compressed format, so a simple modification
to the sarg-reports script results in Daily, Weekly, and Monthly
reports generated from multiple files including the compressed ones.
This patch also allows the passing of additional parameters, if desired,
using the "${@}" shell parameter to the respective functions.
The patch assumes that the rotated log files are variations on the
access log file specified with access_log in /etc/sarg/sarg.conf, eg
access_log /var/log/squid3/access.log
and the logrotate files will match this path with a wildcard "*" appended, eg
ll /var/log/squid3/access.log*
1436 -rw-r----- 1 proxy proxy 1463629 2016-03-17 00:12
/var/log/squid3/access.log
528 -rw-r----- 1 proxy proxy 540356 2016-01-31 15:36
/var/log/squid3/access.log-20160131.bz2
596 -rw-r----- 1 proxy proxy 608083 2016-02-07 16:40
/var/log/squid3/access.log-20160207.bz2
544 -rw-r----- 1 proxy proxy 556129 2016-02-15 15:10
/var/log/squid3/access.log-20160215.bz2
680 -rw-r----- 1 proxy proxy 692678 2016-02-21 17:16
/var/log/squid3/access.log-20160221.bz2
608 -rw-r----- 1 proxy proxy 620463 2016-02-29 05:22
/var/log/squid3/access.log-20160229.bz2
476 -rw-r----- 1 proxy proxy 486777 2016-03-06 04:11
/var/log/squid3/access.log-20160306.bz2
5576 -rw-r----- 1 proxy proxy 5702654 2016-03-14 16:01
/var/log/squid3/access.log-20160314
--------------------------<snip><Start of
patch><snip>----------------------------
--- sarg-reports.ORIG 2011-02-17 01:25:22.000000000 +0100
+++ sarg-reports 2011-02-17 01:25:22.000000000 +0100
@@ -218,7 +218,7 @@
then
echo "No date given, please specify a valid date (DD/MM/YYYY)"
else
- $SARG -f $CONFIG -d $MANUALDATE -o $DAILYOUT
+ $SARG -f $CONFIG -d $MANUALDATE -o $DAILYOUT ${@} ${ACCESS_LOG}*
fi
}
@@ -227,7 +227,7 @@
DAILYOUT=$HTMLOUT/$DAILY
mkdir -p $DAILYOUT
create_index_html
- $SARG -f $CONFIG -d $TODAY -o $DAILYOUT >$ERRORS 2>&1
+ $SARG -f $CONFIG -d $TODAY -o $DAILYOUT ${@} ${ACCESS_LOG}*
>$ERRORS 2>&1
exclude_from_log
}
@@ -236,7 +236,7 @@
DAILYOUT=$HTMLOUT/$DAILY
mkdir -p $DAILYOUT
create_index_html
- $SARG -f $CONFIG -d day-1 -o $DAILYOUT >$ERRORS 2>&1
+ $SARG -f $CONFIG -d day-1 -o $DAILYOUT ${@} ${ACCESS_LOG}* >$ERRORS 2>&1
exclude_from_log
}
@@ -245,7 +245,7 @@
WEEKLYOUT=$HTMLOUT/$WEEKLY
mkdir -p $WEEKLYOUT
create_index_html
- $SARG -f $CONFIG -d week-1 -o $WEEKLYOUT >$ERRORS 2>&1
+ $SARG -f $CONFIG -d week-1 -o $WEEKLYOUT ${@} ${ACCESS_LOG}*
>$ERRORS 2>&1
exclude_from_log
}
@@ -254,25 +254,32 @@
MONTHLYOUT=$HTMLOUT/$MONTHLY
mkdir -p $MONTHLYOUT
create_index_html
- $SARG -f $CONFIG -d month-1 -o $MONTHLYOUT >$ERRORS 2>&1
+ $SARG -f $CONFIG -d month-1 -o $MONTHLYOUT ${@} ${ACCESS_LOG}*
>$ERRORS 2>&1
exclude_from_log
}
+ACCESS_LOG=$(sed -ne 's|^access_log[[:space:]]*||p' /etc/sarg/sarg.conf)
+
case $1 in
manual)
- manual
+ shift 1
+ manual "${@}"
;;
today)
- today
+ shift 1
+ today "${@}"
;;
daily)
- daily
+ shift 1
+ daily "${@}"
;;
weekly)
- weekly
+ shift 1
+ weekly "${@}"
;;
monthly)
- monthly
+ shift 1
+ monthly "${@}"
;;
*)
echo "SARG - Daily / Weekly / Monthly - Squid proxy usage
reports creation tool"
---------------------------<snip><End of
patch><snip>----------------------------
/bin/sh /usr/sbin/sarg-reports monthly
SARG: Ignoring old log file /var/log/squid3/access.log-20160131.bz2
SARG: Decompressing log file "/var/log/squid3/access.log-20160207.bz2"
with bzcat
SARG: Decompressing log file "/var/log/squid3/access.log-20160215.bz2"
with bzcat
SARG: Decompressing log file "/var/log/squid3/access.log-20160221.bz2"
with bzcat
SARG: Decompressing log file "/var/log/squid3/access.log-20160229.bz2"
with bzcat
SARG: Decompressing log file "/var/log/squid3/access.log-20160306.bz2"
with bzcat
SARG: Period covered by log files: 01/02/2016-29/02/2016
ll /srv/www/squid-reports/Monthly/
total 24
4 drwxr-sr-x 4 root www-data 4096 2016-03-17 00:18 ./
4 drwxr-sr-x 6 root www-data 4096 2016-03-16 23:06 ../
4 drwxr-sr-x 4 root www-data 4096 2016-03-17 00:18 01Feb2016-29Feb2016/
4 drwxr-sr-x 2 root www-data 4096 2016-03-17 00:18 images/
8 -rw-r--r-- 1 root www-data 4438 2016-03-17 00:18 index.html
And finally a Monthly report is generated ...