8.6. Files di log, memoria e cache

I log sono una fonte importante di informazioni relative alle attività svolte da Squid e consentono di misurare le prestazioni del nostro proxy server. I log di sistema registrano non soltanto le informazioni relative all'accesso, ma anche gli eventuali errori di configurazione del sistema ed il consumo delle risorse, come la memoria e lo spazio su disco. Alcuni file di log devono essere attivati in maniera esplicità durante la compilazione di Squid, atri possono essere disattivati durante l'esecuzione del processo Squid, il linea di principio nessuno dei files di log deve essere cancellato quando il Squid è in esecuzione.

8.6.1. Files di log principali

vediamo ora come sia possibile gestire i files di log di Squid, i TAG più importanti relativi all'attivazione dei files di log all'interno del file squid.conf sono

il TAG cache_access_log

cache_access_log /usr/local/squid/var/logs/access.log
   

nel file access.log vengono registrate tutte le transazioni effettuate dai client, vedremo in seguito ulteriori informazioni

il TAG cache_log

cache_log /usr/local/squid/var/logs/cache.log
   

nel file cache.log vengono registrate tutte le informazioni sullo stato della cache, vedremo in seguito ulteriori informazioni

il TAG cache_store_log

cache_store_log /usr/local/squid/var/logs/store.log 
   

nel file store.log vengono registrate tutte le attività eseguite dallo storage manager di Squid, vedremo in seguito ulteriori informazioni

il TAG cache_swap_log

cache_swap_log /usr/local/squid/var/cache/swap.state
   

nel file swap.state viene memorizzato il file di log dello swap, si tratta di un file binario che include un checksum MD5 e che contiene i campi dello store entry. Non è necessario indicarlo in squid.conf in quanto verrà scritto automaticamente nella top level directory della cache_dir

8.6.2. Files di log accessori

vi sono anche alcune opzioni relative ad alcuni files di log che devono essere esplicitamente compilate per essere supportate attivamente da Squid proxy server

il TAG useragent_log

useragent_log /usr/local/squid/var/logs/useragent.log
   

nel file useragent.log viene registrato il campo user-agent per ogni richiesta HTTP. Questa opzione è disponibile solo se Squid viene compilato con l'opzione di ./configure

%./configure --enable-useragent-log
   

questa opzione è utile per generare dei report sulle tipologie dei browser utilizzati dagli utenti e viene disabilitata di default

il TAG referer_log

referer_log /usr/local/squid/var/logs/referer.log
   

nel file referer.log viene registrato il campo referer per ogni richiesta HTTP. Questa opzione è disponibile solo se Squid viene compilato con l'opzione di ./configure

%./configure --enable-referer-log
   

questa opzione è utile per generare dei report sui link esterni ed i vari motori di ricerca, viene disabiliata di default.

8.6.3. Formati dei files di log

In fase di configurazione possiamo anche definire il formato dei files di logs, tale formato può essere suddiviso in file di log nativi ed in file di log che emulano lo schema transazionale di un server web, il TAG da utilizzare è emulate_httpd_log [on|off] il cui valore di default è off

emulate_httpd_log on 
   

in questo esempio emuliamo il file di log di un server web, questa funzionalità può essere utile nel caso in cui si decida di utilizzare il proxy server con funzionalità di Reverse Proxy.

8.6.4. Ruotare i files di log

con il TAG logfile_rotate è possibile specificare il numero massimo di rotazione per un file di log

logfile_rotate 10
   

la rotazione dei file di log può essere effettuata con il comando

% squid -k rotate
   

i comando squid -k rotate invia un segnale USR1 al processo Squid, viene utilizzato per ruotare dei file di log di dimensioni notevoli (Linux con ext2 non supporta files che superano 2 GB). Il processo di rotazione chiude un file, lo rinomina ed apre un nuovo file di log. E' prassi inserire questo comando nella tabella di crontab(8)[1] del sistema (file /etc/crontab) per ruotare automaticamente i log di Squid, nell'esempio seguente prevediamo una rotazione ogni mese alle ore 01:01

01 1 * 1 * /usr/local/squid/sbin/squid -k rotate
   

il valore di default per il TAG logfile_rotate è 10, impostando questo valore i file di log verranno ruotati e gli verrà assegnata una estensione che va da 0 a 9. Il file cache.log diverrà cache.log.0, ed ancora cache.log.0 diverrà cache.log.1, successivamente cache.log.1 diverrà cache.log.2 e così via. La rotazione dei files di log riguarderà anche il file swap.state

logfile_rotate 0
   

Impostando il TAG logfile_rotate 0 verrà disabilitata la rotazione dei file di log.

8.6.5. Disabilitare i files di log

se si persegue l'obiettivo delle prestazioni è possibile disabilitare totalmente o parzialmente il sistema di logging ricorrendo ad alcuni TAG nel file squid.conf

ecco un esempio valido per squid-2.4

cache_access_log /dev/null
cache_store_log none
cache_log /dev/null
   

se invece utilizzate squid-2.5

cache_access_log none
cache_store_log none
cache_log /dev/null
useragent_log none 
referer_log none 
   

è decisamente una cattiva idea disabilitare il file cache.log, questo file contiene diversi messaggi sullo stato di funzionamento di Squid ed altri messaggi per il debugging. Se viene specificato il percorso /dev/null per disabilitare il logging di Squid, è necessario impostare il TAG logfile_rotate 0. Disabilitando il logging è anche possibile migliorare le performance del disk I/O, in seguito vedremo come sia possibile creare un proxy server anonimizzante.

8.6.6. Mime tipe e file di processo

è anche previsto un TAG che consente di definire un file che identifichi la tabella dei mime type[2]

il TAG mime_table

mime_table /usr/local/squid/etc/mime.conf 
   

questa tabella contiene gli esempi standard di mime type nella loro formattazione più comune

il TAG pid_filename

pid_filename /usr/local/squid/var/run/squid.pid 
   

questo TAG identifica il nome del file che contiene il numero di processo che viene attivato da Squid con il suo avviamento.

8.6.7. Memoria e cache_dir

il TAG cache_mem consente di impostare la quantità di memoria RAM massima che potrà essere utilizzata dal processo Squid

cache_mem 64 MB 
   

questo TAG non dovrebbe mai superare 1/4 della memoria fisica installata sul sistema, vedremo i dettagli in seguito. Non dimentichiamo che è possibile utilizzare anche il TAG high_memory_warning per tenere sotto controllo l'utilizzo della memoria

high_memory_warning 80 MB
   

se l'utilizzo della memoria supera i valori da noi impostati, Squid registra un WARNING nel file cache.log anche se il TAG debug level è impostato a 0.

ufs è il tipo di Disk Storage che viene utilizzato storicamente da Squid, come vedremo successivamente è proprio questo il sistema che si occupa di gestire il processo di disk-I/O. Il TAG cache_dir definisce il percorso su disco dove verrà ubicata la cache di Squid

cache_dir ufs /squid/cache 100 16 256 
   

la sintassi di questo TAG verrà approfondita nel capitolo dedicato al Disk Storage

Note

[1]

l'utility crontab è l'applicazione che viene utilizzata per installare o disinstallare una serie di procedure automatiche attivabili tramite la tabella di cron(8) nel Vixie Cron

[2]

MIME è l'acronimo di Multimedia Internet Mail Extension e consente a Squid di determinare il tipo di file in base alla sua estensione, la lista dei mime type viene generalmente inclusa in un file dal nome mime.conf, una lista aggiornata di mime type può essere prelevata alla URLs http://www.isi.edu/in-notes/iana/assignments/media-types/media-types