Come installare Logrotate e configurare la rotazione dei registri Nginx

Logrotate è un’utilità progettata per facilitare l’amministrazione di sistemi che generano un gran numero di file di registro. Gestisce la rotazione automatica dei file di registro, la compressione, la cancellazione e l’invio per posta dei file di registro. Tutti i servizi o le applicazioni distribuiti sul server generano registri in un file per ogni azione eseguita sul sistema/applicazione/da un utente. Per un periodo di tempo, la gestione di tali file di registro diventa un’attività noiosa. Questi file di registro aumenteranno di dimensioni e le prestazioni dell’applicazione si deterioreranno periodicamente. A lungo termine, contribuirà a un potenziale rischio di rendere un sistema insensibile a causa della mancanza di spazio su disco.
Per mitigare tali problemi e mantenere i file di registro, utilizziamo “logrotate”. Questo strumento è progettato per semplificare la gestione dei file di registro su sistemi che generano molti file di registro di grandi dimensioni.
In questo articolo parleremo di più dell’utilità logrotate e di come configurare la rotazione dei log di Nginx.
Installazione
Nella maggior parte delle distribuzioni, è installato e configurato per impostazione predefinita. Per installare il pacchetto, controlla se il pacchetto è installato, altrimenti installa il pacchetto come descritto.
# rpm -qa | grep logrotate
logrotate-3.8.6-12.el7.x86_64
Qui, sembra essere installato per impostazione predefinita. Se questa query non ne riporta nessuno, puoi installarlo su un server CentOS 7 con il comando seguente:
#yum install logrotate -y
Eseguire logrotate
Logrotate aiuta gli amministratori di sistema a ruotare e archiviare sistematicamente tutti i file di registro prodotti dal sistema, riducendo così i requisiti di spazio su disco di un sistema operativo. Logrotate normalmente viene eseguito come un cron job giornaliero. Non modificherà un registro più volte in un giorno.
# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
Comprensione dei file di configurazione
Per impostazione predefinita, quando logrotate è installato, puoi trovare il suo file di configurazione principale qui: /etc/logrotate.conf

Logrotate include la directory /etc/logrotate.d/
dove si configurano i vari log (demoni e servizi su cui si desidera ruotare i log). Tutti i file di configurazione specifici del servizio sono archiviati nel file /etc/logrotate.d/
.
Il file di configurazione principale /etc/logrotate.conf
contiene una configurazione generica. Si prega di dare un’occhiata al mio file di configurazione logrotate predefinito:

Riga 3 – weekly:
Questa opzione di configurazione garantisce una rotazione settimanale di tutti i file di log definiti nel file di configurazione principale e nella directory /etc/logrotate.d/.
Riga 6 – rotate 4:
Assicura che logrotate mantenga un backup di 4 settimane di tutti i file di registro.
Riga 9 – create:
questa opzione indica a logrotate di creare nuovi file di log vuoti dopo ogni rotazione
Riga 12 – dateext:
Ciò aggiunge un’estensione a tutti i file di registro ruotati come la data in cui ogni particolare file di registro è stato elaborato da logrotate
Riga 15 – compress:
Questo comprime il file di registro ruotato.
Riga 18 – include /etc/logrotate.d:
Questo include tutte le altre configurazioni nella directory /etc/logrotate.d.
Le righe da 21 a 33 contengono una specifica configurazione di rotazione del registro di servizio
Configurazione della logrotazione Nginx
Per la maggior parte dei servizi, nel file /etc/logrotate.d/
pieghevole. Tutti i pacchetti di solito includono una configurazione di rotazione dei log, anche se logrotate non è installato sul sistema. Tuttavia, se abbiamo compilato Nginx dai sorgenti, sarà necessario definire manualmente le nostre impostazioni di rotazione dei log all’interno /etc/logrotate.d/
la cartella con il percorso del file di registro indicato nel file di configurazione di Nginx.
Si prega di vedere la configurazione di rotazione del registro Nginx predefinita creata sul mio server di installazione.
# cat -n /etc/logrotate.d/nginx
1 /var/log/nginx/*log {
2 create 0644 nginx nginx
3 daily
4 rotate 10
5 missingok
6 notifempty
7 compress
8 sharedscripts
9 postrotate
10 /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
11 endscript
12 }
13
Linea 1 – /var/log/nginx/*log:
Questo definisce tutti i file di registro Nginx che si trovano in /var/log/nginx/. SUGGERIMENTO: se si desidera includere più file di registro in un singolo file di configurazione, utilizzare caratteri jolly, come questo “/var/log/nginx/*log”. Per un singolo file di registro, puoi semplicemente menzionare quel file di registro come “/var/log/nginx/error.log”.
Riga 2 – create:
Questo crea un nuovo file di registro e imposta l’autorizzazione 644 con la proprietà nginx.
Riga 3 – daily:
garantire la rotazione giornaliera
Riga 4 – rotate 10:
Salva 10 copie del file di registro.
Riga 5 – missingok:
Non commettere errori se manca il file di registro.
Riga 6 – notifempty:
Non ruotare il file di registro se è vuoto.
Riga 7 – compress:
Comprime le vecchie copie dei file di log con gzip(1) per impostazione predefinita
Riga 8 – sharedscripts:
Ciò fa sì che gli script vengano eseguiti una sola volta, indipendentemente dal numero di log che corrispondono al modello di caratteri jolly, e vengono passati all’intero modello.
Linea da 9 a 11 – postrotate/endscript:
Le righe tra postrotate ed endscript (entrambe devono apparire da sole sulle righe) vengono eseguite dopo che il file di registro è stato ruotato. Queste direttive possono apparire solo all’interno di una definizione di file di registro.
Questa utility logrotate ha molte più opzioni di configurazione. Puoi ottenere un elenco completo di queste opzioni dalla sua pagina man semplicemente eseguendo questo:
#man logrotate
Controllo dello stato di registrazione
Il file “/var/lib/logrotate.status” contiene tutte le informazioni sullo stato della logrotazione. Pertanto, per convalidare lo stato di esecuzione di logrotate per ogni file di configurazione aggiunto e controllare lo stato di ciascuno di essi, possiamo eseguire il comando seguente; Elencherà il runtime per ogni configurazione
file.
# cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/nginx/error.log" 2017-8-14-7:45:47
"/var/log/yum.log" 2017-8-14-7:45:47
"/var/log/chrony/*.log" 2017-8-14-7:0:0
"/var/log/wtmp" 2017-8-14-7:45:47
"/var/log/spooler" 2017-8-14-7:0:0
"/var/log/btmp" 2017-8-14-7:45:47
"/var/log/maillog" 2017-8-14-7:45:47
"/var/log/wpa_supplicant.log" 2017-8-14-7:0:0
"/var/log/secure" 2017-8-14-7:45:47
"/var/log/nginx/access.log" 2017-8-14-7:45:47
"/var/log/ppp/connect-errors" 2017-8-14-7:0:0
"/var/log/messages" 2017-8-14-7:45:47
"/var/log/cron" 2017-8-14-7:45:47
Questo ti darà l’ultimo stato di logrotate.
Possiamo eseguire manualmente uno specifico file logrotate o forzarlo tramite il seguente comando.
logrotate -f /etc/logrotate.d/nginx
Oppure possiamo anche ruotare tutti i log in modalità dettagliata con il comando seguente:
logrotate -f -v /etc/logrotate.conf
Logrotate ti aiuta a gestire i file di registro in modo efficiente e a risparmiare spazio su disco comprimendo/rimuovendo i file di registro. Può anche aiutarti ad archiviare i file di registro per riferimento futuro creando una copia aggiuntiva o inviandoti tramite e-mail i file di registro appena ruotati. Possiamo persino regolare la configurazione per gestire ogni file di registro giornalmente, settimanalmente, mensilmente o quando diventa troppo grande. Consiglierei di utilizzare l’utilità logrotate per una facile gestione dei file di registro.