Il server HTTP Nginx ha una fenomenale funzione di registrazione altamente personalizzabile. In questo articolo, spiegheremo come configurare i propri formati per l’accesso e i registri degli errori per Nginx in Linux.
Lo scopo di questa guida è aiutare a capire come vengono generati i log, in modo da configurare formati di log personalizzati per scopi di debug, risoluzione dei problemi o analisi di ciò che si svolge all’interno del server Web e delle applicazioni Web (come le richieste di tracciamento).,
Leggi anche: 4 Buoni strumenti di monitoraggio e gestione dei log open Source per Linux
Questo articolo è composto da tre sezioni che ti chiariranno sulla configurazione dei log di accesso/errore e su come abilitare la registrazione condizionale in Nginx.
Configurazione dei log di accesso in Nginx
Sotto Nginx, tutte le richieste client al server vengono registrate nel log di accesso in un formato specificato utilizzando il modulo ngx_http_log_module.
Il file di log predefinito è log / access.,log (solitamente / var / log / nginx / access_log su sistemi Linux) e il formato predefinito per la registrazione è normalmente il formato combinato o principale (questo può variare da una distro all’altra).
La direttiva access_log (applicabile in http, server, location, if in location e limit except context) viene utilizzata per impostare il file di log e la direttiva log_format (applicabile solo in contesto http) viene utilizzata per impostare il formato di log. Il formato del registro è descritto da variabili comuni e variabili generate solo nel momento in cui viene scritto un registro.,
La sintassi per la configurazione di un formato di log è:
log_format format_name 'set_of_variables_to_define_format';
e la sintassi per la configurazione del log di accesso è:
Il seguente è un estratto dal file di configurazione predefinito Nginx /etc/nginx/nginx.conf su CentOS 7.
Questo formato di registro produce la seguente voce di registro.
Il seguente è un altro formato di registrazione utile che usiamo per tracciare le richieste alle nostre applicazioni Web utilizzando alcune delle variabili predefinite, soprattutto ha l’ID della richiesta e registra i dettagli della posizione del client (paese, codice paese, regione e città).,
Puoi usarlo in questo modo:
access_log /var/log/nginx/access.log custom;
Questo produrrà una voce di registro che appare come questa.
È possibile specificare diversi registri utilizzando le direttive access_log sullo stesso livello, qui stiamo usando più di un file di registro nel contesto http.
Di seguito sono riportati esempi di configurazioni di registrazione più avanzate, utili per i formati di log che contengono variabili correlate alla compressione e per la creazione di file di log compressi:
access_log /var/log/nginx/custom_log custom buffer 32k;access_log /path/to/log.gz compression gzip flush=5m;
Configurazione dei log degli errori in Nginx
Nel caso in cui Nginx riscontri problemi, registra le informazioni che li riguardano nel log degli errori. Questi problemi rientrano in diversi livelli di gravità: debug, info, notice, warn, error (questo è il livello predefinito e funziona a livello globale), crit, alert o emerg.
Il file di registro predefinito è log / error.,log, ma normalmente si trova in/var/log/ nginx / sulle distribuzioni Linux. La direttiva error_log viene utilizzata per specificare il file di registro e può essere utilizzata nel contesto principale, http, mail, stream, server, location (in quell’ordine).
Dovresti anche notare che:
- Le configurazioni nel contesto principale sono sempre ereditate da livelli inferiori nell’ordine sopra.
- e le configurazioni nei livelli inferiori sostituiscono le configurazioni ereditate dai livelli superiori.,
È possibile configurare la registrazione degli errori utilizzando la seguente sintassi:
error_log /path/to/log_file log_level;
Per esempio:
error_log /var/log/nginx/error_log warn;
Questo istruire Nginx per registrare tutti i messaggi di tipo warn e più grave livello di log crit, allerta, e emerg messaggi.
Nell’esempio successivo verranno registrati i messaggi dei livelli crit, alert e emerg.
error_log /var/www/example1.com/log/error_log crit;
Considera la configurazione qui sotto, qui, abbiamo definito la registrazione degli errori su diversi livelli (nel contesto http e server)., In caso di errore, il messaggio viene scritto in un solo registro degli errori, quello più vicino al livello in cui è apparso l’errore.
Se si utilizzano più direttive error_log come nella configurazione sottostante (stesso livello), i messaggi vengono scritti in tutti i log specificati.
Configurazione della registrazione condizionale in Nginx
In alcuni casi, è possibile che Nginx esegua la registrazione condizionale dei messaggi., Non tutti i messaggi devono essere registrati da Nginx, quindi possiamo ignorare voci di registro insignificanti o meno importanti dai nostri registri di accesso per particolari istanze.
Possiamo usare il modulo ngx_http_map_module che crea variabili i cui valori dipendono da valori di altre variabili. I parametri all’interno di un blocco mappa (che dovrebbe esistere solo nel contenuto http) specificano una mappatura tra i valori di origine e quelli risultanti.
Per questo tipo di impostazione, una richiesta non verrà registrata se la condizione restituisce "0”
o una stringa vuota., Questo esempio esclude le richieste con i codici di stato HTTP 2xx e 3xx.
http{map $status $condition {~^ 0; default 1;}server{access_log /path/to/access.log custom if=$condition;}}
Ecco un altro esempio utile per il debug di un’applicazione web in fase di sviluppo. Questo ignorerà tutti i messaggi e solo le informazioni di debug del registro.
Puoi trovare ulteriori informazioni, inclusa la registrazione su syslog qui.
Questo è tutto per ora! In questa guida, abbiamo spiegato come configurare il formato di registrazione personalizzato per i registri di accesso e di errore in Nginx., Utilizzare il modulo di feedback qui sotto per porre domande o condividere pensieri su questo articolo.