La maggior parte dei servizi su Linux genererà file di registro, generalmente immagazzinato in /var/log/
. Questi sono semplici file di testo, ma possono diventare davvero grandi, al punto in cui potresti far funzionare il tuo server senza spazio.
Cosa fa Logrotate?
Logrotate aiuta a gestire i file di registro e ne impedisce l'accumulo. Archivierà automaticamente il file di registro corrente, creerà uno nuovo vuoto ed eliminerà i file veramente vecchi dopo aver ruotato più volte. Il tempo predefinito può essere impostato troppo alto (nginx ha un anno di log per impostazione predefinita), quindi potresti incontrare problemi se non modifichi i tuoi file di configurazione.
La dimensione dei tuoi file varierà a seconda del servizio, e vorrai configurare logrotate di conseguenza. Se vuoi sapere quanto spazio occupa ogni servizio con i log, puoi usare il du
comando:
du -h / var / log / | sort -hr
Quasi tutti i file di registro saranno in /var/log/
, così du
totalizzerà tutti i file di registro e li mostrerà in una bella lista (per gentile concessione di sort -hr
per "leggibile dall'uomo"):
Questo mostra solo le directory, quindi devi usare ls -sh
per trovare le dimensioni dei singoli file.
Generalmente, cose come i server web (apache2, nginx, eccetera.) e altre applicazioni che ricevono molte interazioni genereranno molti file di registro, anche se la dimensione esatta dipenderà dalla quantità di dati effettivamente registrati sul disco.
Logrotate installazione (se non ce l'hai ancora)
Per impostazione predefinita, probabilmente non dovrai fare nulla per configurare logrotate, poiché è installato di default in molte distribuzioni, e servizi che generano un gran numero di file di registro (nginx, apache, eccetera.) avranno generalmente una configurazione logrotate preconfigurata.
Puoi controllare se logrotate è installato con:
che logrotate
Oppure installalo dal gestore di pacchetti della tua distribuzione in caso contrario. Per sistemi basati su Debian come Ubuntu, sarebbe:
sudo apt-get install logrotate
Logrotate installerà automaticamente le tue impostazioni globali predefinite, ma se lo hai installato dopo aver installato il tuo server web, potrebbe essere necessario reinstallare il server web se la configurazione predefinita per quel servizio non viene generata.
Come funziona Logrotate
Sebbene logrotate sarà preconfigurato per servizi popolari come nginx e apache2, potresti voler configurare le impostazioni manualmente o modificare le impostazioni predefinite.
La configurazione globale per logrotate è memorizzata in /etc/logrotate.conf
, ma ne sovrascriverà gran parte con i file di configurazione per app, memorizzato nel /etc/logrotate.d/
directory. Diamo un'occhiata alla configurazione predefinita di nginx su /etc/logrotate.d/nginx
, che puoi utilizzare come modello per aggiungere nuove applicazioni a logrotate:
/var/log/nginx/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then run-parts /etc/logrotate.d/httpd-prerotate; fi endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript }
La prima riga avvia il blocco e dice a logrotate quali file cercare.. il jolly *.log
corrisponderà a qualsiasi file che termina con .log
estensione nella cartella di registro di nginx. Puoi anche specificare più directory qui da includere con le stesse impostazioni..
settimanalmente ruoterà i registri una volta alla settimana. Se vuoi ruotarli in base alle dimensioni, Puoi usare size 25M
per ruotarli una volta raggiunto un certo limite, 25 megabyte in questo esempio.
mancante impedirà a logrotate di generare errori se un file di registro viene eliminato da qualcosa di diverso da logrotate.
ruotare 52 manterrà 52 file di registro diversi. In questa circostanza, poiché ruoterà una volta alla settimana, logrotate manterrà un anno intero di file di registro prima di rimuovere quelli vecchi. Potresti cambiarlo in rotate 4
per conservare solo un mese di file di registro.
comprimere comprimerà i vecchi file di registro per risparmiare spazio. Ciò causa problemi con alcune applicazioni che continuano a scrivere nel file di registro mentre logrotate sta ancora facendo il suo lavoro, così puoi aggiungere il ci vuole per comprimere per bufferizzare un vecchio file di registro prima di comprimerlo.
notifvuoto è un altro segno di spunta per assicurarsi che logrotate sia in esecuzione solo se vengono scritti nuovi file di registro. il creare flag crea questi nuovi file di registro, con autorizzazioni specifiche. La sintassi è create [mode] [owner] [group]
.
Dovrai assicurarti che corrispondano a qualunque cosa siano configurati i tuoi file di registro correnti, cosa puoi fare con ls -la
:
Si prega di notare che sarà necessario converti la modalità in ottale, così -rw-r-----
diventa 0640
. Il proprietario di nginx qui è www-data
, e il gruppo è adm
.
script condivisi specifica che il pre-ruotare e postrotar gli hook verranno eseguiti solo una volta per rotazione, e non una volta per ogni file di registro ruotato. Questi hook sono script che puoi chiamare prima e dopo la rotazione. Per impostazione predefinita, questi eseguiranno alcuni script per configurare nginx per modificare i file di registro. Se il servizio che stai configurando non può caricare a caldo nuovi file di registro, vorrai fermarlo e riavviarlo in questi link. Nonostante questo, il gancio non deve interagire con il servizio; come esempio, puoi usare il gancio di pre-rotazione per eseguire il backup dei file di registro su AWS S3 insieme a s3cmd
prima che vengano rimossi.
Logrotate gestirà l'esecuzione stessa, quindi non dovrai preoccuparti di avviare il servizio all'avvio o di configurare un cron
lavoro. Basta inserire i file di configurazione per ogni applicazione in /etc/logrotate.d/
e non preoccuparti mai più dei record.