SARG
/etc/crontab:
### SQUID-Monitoring via Sarg: 00 06-19/1 * * * root /usr/local/chhaas-skripts/sarg-reports.sh today > /dev/nul 00 00 * * * root /usr/local/chhaas-skripts/sarg-reports.sh daily > /dev/nul 00 01 * * 1 root /usr/local/chhaas-skripts/sarg-reports.sh weekly > /dev/nul 30 02 1 * * root /usr/local/chhaas-skripts/sarg-reports.sh monthly > /dev/nul
/usr/local/chhaas-skripts/sarg-reports.sh:
#!/bin/sh
# SARG - Daily/Weekly/Monthly Squid usage reports creation tool # Written by Ugo Viti ugo.viti@initzero.it
# —————————————————————————- # # Copyright (C) 2005 Ugo Viti # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # —————————————————————————- # Thanks for enanchements to: # - martijn # - Stas Degteff https://sourceforge.net/users/stas_degteff/
VER=20050202
## What is this? # sarg-reports (this file) is a simple bash script written to automate # the SARG (a powerful squid log analyzer) reports and log management. # Sarg it self, provide to end user a generic interface to create # reports based on squid access log (begin of log to current date). # sarg-reports (this script) is useful because it allow you to easly # create and manage Daily, Weekly and Monthly reports. # Try it, within 5 minutes you will be ready to rule # using sarg-reports is very easy, read the following 3 steps to know how
## Requirements # a) An unix system with bash shell (like GNU/Linux, FreeBSD, etc…) # b) Squid - http://www.squid-cache.org # c) Sarg - http://web.onda.com.br/orso/sarg.html ## ## Installation guide and configuration parameters ##
# 1) Download Squid and Sarg, Install, Configure and Tune # they before continue reading
# 2) In root crontab (crontab -e) insert the following lines: # (the today report creation time depend mostly of your squid server # load average, tune it): # # — BEGIN ROOT CRONTAB — # PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin # 00 08-18/1 * * * sarg-reports today # 00 00 * * * sarg-reports daily # 00 01 * * 1 sarg-reports weekly # 30 02 1 * * sarg-reports monthly # — END ROOT CRONTAB — # # REMEMBER: if you use logrotate, configure it to rotate the logs within MONTHLY basis, # AFTER sarg-reports created the monthly html report. # 3) Customize the following variables: # (Please, configure accurately the sarg.conf file before) # # (SARG) The sarg executable location # (CONFIG) The sarg main configuration file location # (HTMLOUT) Location where will be saved the reports # (PAGETITLE) The title of main index page # (LOGOIMG) Image logo to view in main index page # (LOGOLINK) HTTP web page link of logo # (DAILY) Word 'daily' translation, translate it to your language # (WEEKLY) Word 'weekly' translation, translate it to your language # (MONTHLY) Word 'monthly' translation, translate it to your language # (EXCLUDELOG1) Exclude text from cron emails # + (normally, sarg, during cron activity, if it don't find any valid records, # (EXCLUDELOG2) it will output an error message (usually on 'today' reports). # I don't want to be warned by email about this, so, i wrote the 'text' # that will be never logged. # This is useful to receive email of real problems only (enjoy that)
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SARG=/usr/bin/sarg CONFIG=/etc/sarg.conf HTMLOUT=/srv/www/htdocs/sarg PAGETITLE="Proxy (Squid) Statistiken von $(hostname), generiert von Sarg" LOGOIMG=http://vw01.uk-bw.de:8686/grafik/ukbw-logo.gif LOGOLINK=http://www.uk-bw.de DAILY=Taeglich WEEKLY=Woechentlich MONTHLY=Monatlich
EXCLUDELOG1=„SARG: Keine Eintraege ausgewertet.“ EXCLUDELOG2=„SARG: Fertig“ #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
###################################################################### ## The configuration is end, so don't touch anything bellow
# TEMP Files TMPFILE=/tmp/sarg-reports.$RANDOM ERRORS=„${TMPFILE}.errors“
# Date Calc MANUALDATE=$2 case „$(uname)“ in „FreeBSD“)
TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date -v-1d +%d/%m/%Y)
WEEKAGO=$(date -v-1w +%d/%m/%Y)
MONTHAGO=$(date -v-1m +01/%m/%Y)-$(date -v-1m +31/%m/%Y)
;;
„OpenBSD“)
TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date -r $((`date +%s` - 86400 )) +%d/%m/%Y)
WEEKAGO=$(date -r $((`date +%s` - 604800)) +%d/%m/%Y)
MONTHAGO=$(perl -e '@t=localtime(time); $y=$t[4]==0?$t[5]+1899:$t[5]+1900; $m=$t[4]==0?12:$t[4]; print "1/$m/$y-",$m==2?$y%4>0?28:29:$m==4||$m==6||$m==9||$m==11?30:31 ,"/$m/$y\n";')
;;
*)
TODAY=$(date --date "today" +%d/%m/%Y) YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y) WEEKAGO=$(date --date "1 week ago" +%d/%m/%Y) MONTHAGO=$(date --date "1 month ago" +01/%m/%Y)-$(date --date "1 month ago" +31/%m/%Y) ;;
esac
# Fix for Red Hat 9 systems and coreutils prior to 5.0 version export LC_ALL=C
# Main index.html creation create_index_html () {
echo -e "\ <html>\n\ <head>\n\ <title>$PAGETITLE</title>\n\ </head>\n\ <body>\n\ <div align=center>\n\ <a href=$LOGOLINK><img border=0 src=$LOGOIMG></a>\n\ <table border=0 cellspacing=6 cellpadding=7>\n\ <tr>\n\ <th align=center nowrap><b><font face=Arial size=4 color=green>$PAGETITLE</font></b></th>\n\ </tr>\n\ <tr>\n\ <td align=center bgcolor=beige><font face=Arial size=3><a href=$DAILY>$DAILY</a></font></td>\n\ </tr>\n\ <tr>\n\ <td align=center bgcolor=beige><font face=Arial size=3><a href=$WEEKLY>$WEEKLY</a></font></td>\n\ </tr>\n\ <tr>\n\ <td align=center bgcolor=beige><font face=Arial size=3><a href=$MONTHLY>$MONTHLY</a></font></td>\n\ </tr>\n\ </table>\n\ </div>\n\ </body>\n\ </html>" > $HTMLOUT/index.html
}
# Functions exclude_from_log () {
cat $ERRORS | grep -v "$EXCLUDELOG1" | grep -v "$EXCLUDELOG2" rm -f $TMPFILE*
}
manual () {
DAILYOUT=$HTMLOUT/$DAILY mkdir -p $DAILYOUT create_index_html if [ -z "$MANUALDATE" ] then echo "No date given, please specify a valid date (DD/MM/YYYY)" else $SARG -f $CONFIG -d $MANUALDATE -o $DAILYOUT fi
}
today () {
DAILYOUT=$HTMLOUT/$DAILY
mkdir -p $DAILYOUT
create_index_html
$SARG -f $CONFIG -d $TODAY -o $DAILYOUT >$ERRORS 2>&1
exclude_from_log
}
daily () {
DAILYOUT=$HTMLOUT/$DAILY mkdir -p $DAILYOUT create_index_html $SARG -f $CONFIG -d $YESTERDAY -o $DAILYOUT >$ERRORS 2>&1 exclude_from_log
}
weekly () {
WEEKLYOUT=$HTMLOUT/$WEEKLY mkdir -p $WEEKLYOUT create_index_html $SARG -f $CONFIG -d $WEEKAGO-$YESTERDAY -o $WEEKLYOUT >$ERRORS 2>&1 exclude_from_log
}
monthly () {
MONTHLYOUT=$HTMLOUT/$MONTHLY mkdir -p $MONTHLYOUT create_index_html $SARG -f $CONFIG -d $MONTHAGO -o $MONTHLYOUT >$ERRORS 2>&1 exclude_from_log
}
case $1 in
manual) manual ;; today) today ;; daily) daily ;; weekly) weekly ;; monthly) monthly ;; *) echo "SARG - Daily / Weekly / Monthly - Squid proxy usage reports creation tool" echo "Written by Ugo Viti <ugo.viti@initzero.it>" echo "Version: $VER" echo echo "Usage: $0 [OPTIONS]" echo echo "Allowed options:" echo " manual, Create Manual report" echo " today, Create Today report" echo " daily, Create Daily report" echo " weekly, Create Weekly report" echo " montly, Create Monthly report" exit 0
esac
## HISTORY: # 20050502 - Stas Degteff added support for non latin Charset and added support for OpenBSD # 20030826 - FreeBSD support (thanks to martijn to let me coding on your FreeBSD server ) # 20030715 - Some cleanups # 20030623 - Manual report creation # 20030620 - Main Index creation # 20030619 - Solved 'sort' bug on Red Hat 9 systems # 20030618 - First Version
## TODO: # - Smarty weekly recognition… # Like „begin of last week to end of last week“, # doesn't like this script do: „7 days ago to yesterday“ # - Monthly recognition isn't so elegant (is very ugly, i know) # - Suggestions are welcome # - If you Rotate the squid logs before sarg-reports will run, # it will not create any html reports # (TIPS: Rotate the logs after sarg-reports)
segmentation-fault when running sarg
Hello Vitaliy,
in your post on the SARG-forum you mentioned a "fix for segmentation fault in sarg-2.2.3.1"-patch.
Where can this patch be downloaded?
I have trouble running SARG because of sementation faults(see my posting
https://sourceforge.net/forum/forum.php?thread_id=1672310&forum_id=363374 )
Thanks
Christoph.
← index