Nginx





Stringa di formato per i log di accesso



File di configurazione


Il file di configurazione è generalmente:


/usr/local/etc/nginx/nginx.conf

La linea usata per configurare i log di accesso è quella che inizia con "log_format main" seguita dalla lista dei codici dei campi.




Formato di default


Di default, la stringa di formato è:


log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent"'


Formati suggeriti


La stringa di formato suggerita, per usare a pieno le funzionalità di LogDoctor, è:


log_format main '$time_iso8601 "$request" $status $request_length $bytes_sent $request_time "$http_referer" "$http_user_agent" $remote_addr'


Nota sulle stringa di formato


QUando copi-incolli la stringa, ricordati di rimuovere le identazioni (se presenti) e di incollare solamente la stringa di formato che ne risulta.




Nota sui caratteri di controllo


Nonostante Nginx supporti l'uso di alcuni caratteri di controllo (a.k.a. sequenze di escape), la raccomandazione è di non usarli nella stringa di formato.
In particolare, il carriage return potrebbe causare una sovrascrittura dei dati dei campi precedenti, rendendo molto difficile capire dove inizia il campo corrente (specialmente per campi come URI, query, user-agent, ecc) e praticamente impossibile il recupero dei dati sovrascritti, cosa che porta ad avere un database errato, statistiche non realistiche e/o crash durante l'esecuzione.
In riferimento al carattere new line (a.k.a. a capo), non ha praticamente senso usarlo, se non per propositi di test. La stessa cosa vale per il tab orizzontale, al posto del quale è più opportuno usare un singolo spazio.
I caratteri di controllo supportati da Nginx sono \n, \t e \r. Gli altri caratteri cerranno ignorati ed usati come testo.








Campi dei log di accesso



Campi considerati da LogDoctor


Gli unici campi considerati sono quelli che seguono, ovvero solo i dati di questi campi verranno salvati nel database ed usati per le statistiche.


CodiceInformazioni
$time_local Data e orario in formato CLF (NCSA).
$time_iso8601 Data e orario in formato ISO 8601.
$msec Tempo Unix (in secondi, con risoluzione in millisecondi) nel momento di scrittura del log.
$request Prima linea della richiesta, equivalente a: $request_method $request_uri $server_protocol.
$server_protocol Il protocollo della richiesta (HTTP/v, HTTPS/v).
$request_method Il metodo della richiesta (GET, POST, HEAD, ...).
$request_uri L'URI richiesto, inclusa la stringa di query (se presente).
$uri L'URI richiesto, senza la stringa di query.
$query_string La stringa di query (se presente).
$status Codice dello Status HTTP.
$request_length Numero di Byte recevuti (include la linea di richiesta, l'header, e il corpo della richiesta).
$bytes_sent Numero di Byte inviati al client.
$request_time Il tempo necessario per processare la richiesta, in secondi con risoluzione in millisecondi: il tempo trascorso dal momento in cui i primi Byte provenienti dal client sono stati letti ed il momento di scrittura del log dopo che gli ultimi Byte sono stati inviati.
$http_referer Hostname del sito referente.
$cookie_NOME Il Cookie della richiesta con il NOME dato.
$http_user_agent Stringa di identificazione del browser o del bot.
$remote_addr Indirizzo IP del visitatore (client).
$realip_remote_addr Indirizzo IP originale del client.



Campi scartati da LogDoctor


Ogni campo eccetto i precedenti verrà scartato da LogDoctor.
Nella generazione di una stringa di log di esempio, questi campi appariranno come 'DISCARDED'.
Se non utilizzi i log per altri propositi, è consigliato rimuovere questi campi per velocizzare il processo e ridurre le possibilità di errore.





Riferimenti