Archivio

Archivio per 28 Dicembre 2009

analisi delle prestazioni del proxy con sarg e l’utility sarg-report

28 Dicembre 2009

La domanda è: è possibile pulire i log di squid in modo che, quando vado a far eun report con sarg non mi riporti l’era dei tempi?

Per i vincoli dovuti alle norme sulla privacy occorre configurare il server proxy in modo che vengano mantenuti i file di log per almeno un anno e nel contempo attivare una procedura di backup e salvataggio degli stessi a livello trimestrale. Il programma da configurare per il salvataggio dei log si chiama logrotate che nel caso di squid sarà configurato come segue:

# /etc/logrotate.d/squid
# Logrotate fragment for squid
/var/log/squid/*.log {
        daily
        compress
        delaycompress
        rotate 400
        missingok
        nocreate
        sharedscripts
        prerotate
                test ! -x /usr/sbin/sarg-maint || /usr/sbin/sarg-maint
        endscript
        postrotate
                test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
        endscript
}

Per l’analisi delle prestazioni del proxy tramite il programma sarg è preferibile settare la raccolta differenziata per mese:

# /etc/cron.monthly/squid
#Get current date
TODAY=$(date +%d/%m/%Y)

#Get current date
TD=$(date --date "1 month ago" +%Y-%m)

#Get one month ago today
YESTERDAY=$(date --date "1 month ago" +%d/%m/%Y)

#Get one month ago today (4touch)
YD=$(date --date "1 month ago" +%m/%d/%Y)

touch -d $YD /tmp/a
cat /var/log/squid/access.log.1 > /var/log/squid/monthly/squid-$TD
find /var/log/squid/ -newer /tmp/a -name access.log\*gz | \
  xargs zcat >> /var/log/squid/monthly/squid-$TD

ln -f -s /var/log/squid/monthly/squid-$TD /var/4sarg
sarg -o /var/www/squid-reports/monthly -d $YESTERDAY-$TODAY

Attenzione che i log contengono dati sensibili e quindi quelli relativi agli utenti non possono essere consultati senza infrangere la Legge Italiana.

LOG SQUID con SARG-REPORT

Configurazione di sarg

Cercare in /etc/squid/sarg.conf la direttiva language English e sostituire a English il linguaggio voluto. es.:

language Italian

Assicurarsi che la direttiva access_log punti correttamente al file contenente i logs di squid (solitamente /var/log/squid/access.log) e verificare che coincida con la direttiva access_log presente in /etc/squid.conf.

Configurazione di sarg-reports

La configurazione di /etc/squid/sarg-reports.conf di default dovrebbe andare benone, modificarla eventualmente per rispondere alle proprie esigenze.

sarg e sarg-reports

sarg-report è un shell script che permette di parsare il contenuto dei logs di squid relativi ad un certo periodo di tempo e, utilizzando sarg, generare automaticamente del codice html. Il codice html, di default, viene salvato in /var/www/https/squid-reports/. Sarà necessario dunque modificare la configurazione di apache per assicurarsi che venga pubblicata.

Nota

Si farà riferimento esclusivamente all’uso di sarg-report. I più curiosi, dopo una rapida consultazione del suo help, potranno provare a generare con sarg qualche statistica personalizzata.

L’help di sarg-reports è abbastanza esplicativo:

sarg-reports --help

SARG - Daily / Weekly / Monthly - Squid proxy usage reports creation tool
Written by Ugo Viti <ugo.viti@initzero.it>
Version: 20050202

Usage: /usr/sbin/sarg-reports [OPTIONS]

Allowed options:
    manual,  Create Manual report
     today,  Create Today report
     daily,  Create Daily report
    weekly,  Create Weekly report
    montly,  Create Monthly report

Come riportato dall’help, se volessimo generare logs per una data specifica potremmo usare:

sarg-reports manual 18/12/2008

Tutte le informazioni relative al giorno 18/12/2008 trovate in /var/log/squid/access.log verranno parsate e verrà generato un output html in /vaar/www/squid-reports/

Per verificare il risultato, si potrà provare a puntare con lynx a /var/www/squid-reports/index.html come segue:

lynx /var/www/squid-reports/index.html

Automatizzare la creazione dei logs con Crontab

Aggiungere la creazione dei logs a Cron, per eseguirle in modo automatico alla cadenza voluta:

crontab -e

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
00 00      * * * sarg-reports daily
00 01      * * 1 sarg-reports weekly
30 02      1 * * sarg-reports monthly

Per chi non conoscesse Cron e la sintassi di definizione del tempo: http://www.adminschoice.com/docs/crontab.htm#Crontab%20file

Share

Tips Linux e Microsoft