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-aliveLa 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:
- None Found