May 162012
 

Varnish è uno strumento eccezionale capace di accelerare le prestazione del vostro sito con una semplice configurazione e con un uso modesto di risorse, rispetto al risultato che otterrete. Proprio perchè Varnish è pensato e progettato per essere veloce non scrive di default dei log su disco, scandaloso penserete…in realtà i logs sono disponibili per un certo periodo in un’area di memoria, quando quest’area di memoria viene riempita, Varnish riparte dall’inizio e sovrascrive i dati più vecchi, in un ciclo infinito.

Quindi in realtà i log ci sono e sono disponibili per un certo tempo e questa soluzione è molto, molto più veloce di accedere a un file e non richiede spazio su disco ma come metterli su file, magari divisi per Virtual host come fanno Apache o Nginx ?

Il primo strumento che possiamo usare per vedere i log è varnishlog, dal sito di Varnish :

varnishlog è uno dei programmi che è possibile utilizzare per guardare ciò che Varnish sta registrando. Varnishlog ti dà i log grezzi, tutto ciò che viene scritto nei log. Ci sono pure altri client, che vi mostreremo più avanti.

Nella finestra del terminale in cui è stato avviato varnish scrivete varnishlog ed ora e premete Invio.
….

11 SessionOpen  c 127.0.0.1 58912 0.0.0.0:8080
11 ReqStart     c 127.0.0.1 58912 595005213
11 RxRequest    c GET
11 RxURL        c /
11 RxProtocol   c HTTP/1.1
11 RxHeader     c Host: localhost:8080
11 RxHeader     c Connection: keep-alive

La prima colonna è un numero arbitrario, definisce la richiesta. Le righe con lo stesso numero fanno parte della stessa transazione HTTP. La seconda colonna è il tag del messaggio di log. Tutte le voci di log sono contrassegnate da un tag che indica il tipo di attività che viene registrata. I Tags che iniziano con Rx indicano che Varnish sta ricevendo dati mentre Tx indica l’invio di dati.

La terza colonna ci dirà se si tratta di dati provenienti o che vanno al client (c) o da/per il backend (b). Nella quarta colonna ci sono i dati che vengono registrati.

Quindi varnishlog è uno strumento interessante per una sessione dal vivo quando si desidera verificare se il vostro Varnish sta facendo quello che vi aspettate, ma non così utile quando si desidera inserire i log in un file.

Quindi passiamo a Varnishncsa, un altro strumento di Varnish che può essere molto più utile per il nostro obiettivo, Varnishncsa mostra i logs di Varnish nel formato dei log combined di Apache / NCSA

Il suo uso base da linea di comando è :

varnishncsa -a -w /var/log/varnish/access.log -D -P /var/run/varnishncsa.pid

-a: Per aggiungere i log in un file già esistente
-w: Per scrivere i log nel file /var/log/varnish/access.log
-D: Per eseguire varnishncsa come demone
-P: Per scrivere il file PID nella directory /var/run/

Il problema con questo comando è che avremo solo 1 file access.log che è una buona soluzione finché gestiamo con varnish solo 1 virtuali host, ma potrebbe non essere così utile se vogliamo avere 1 file per ogni virtuale host del nostro web server.

Una buona soluzione che ho trovato nel blog blox.xcir.net è quella di avere un demone dedicato per ogni host virtuale e utilizzare il flag -m che viene utilizzato per eseguire una ricerca con espressione regolare nel campo tag dei log, quindi se abbiamo 2 virtual host: linuxaria.com e linuxaria.org potremmo far partire 2 demoni con:

varnishncsa -m "RxHeader:^Host: linuxaria.com$" -a -w /var/log/varnish/linuxaria.com.access_log -D
varnishncsa -m "RxHeader:^Host: linuxaria.org$" -a -w /var/log/varnish/linuxaria.org.access_log -D

E questi 2 demoni genereranno 2 files access_log con i log solo per i virtual host indicati, ora è possibile utilizzare logrotate per ruotare i log ogni giorno, basta ricordarsi di riavviare il demone in questo caso, o software di statistiche come awstats.

Popular Posts:

Flattr this!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*