linux:commserv:squid: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@i10;itzero.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

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • linux/commserv/squid/sarg.txt
  • Zuletzt geändert: 2014-08-15 20:46
  • von 127.0.0.1