Impostare logrotate su Centos 7
Ieri ho incontrato il problema della bassa capacità della partizione /var/log/. Alcuni log erano troppo grandi e logrotate è lo strumento perfetto per gestire questo problema. È un software progettato per ridurre la quantità di spazio per ogni file di log che abbiamo. E può essere fatto con alcuni modi.
Logrotate Descrizione: logrotate è progettato per facilitare l’amministrazione dei sistemi che generano un gran numero di file di log. Permette la rotazione automatica, la compressione, la rimozione e la spedizione dei file di log. Ogni file di log può essere gestito giornalmente, settimanalmente, mensilmente o quando diventa troppo grande.
Normalmente, logrotate viene eseguito come lavoro cron giornaliero. Non modificherà un log più volte in un giorno.
Configurazione di logrotate
Configurazione di logrotate è fatta in un file principale: /etc/logrotate.conf e altri file di configurazione specifici del servizio che sono memorizzati in /etc/logrotate.d/
Così la configurazione principale di esempio è:
# see "man logrotate" for details# rotate log files weekly specified in /etc/logrotate.d/weekly# keep 4 weeks of all log filesrotate 4# create new (empty) log files after rotating old onescreate# use date as a suffix of the rotated filedateext# uncomment this if you want your log files compressed by gzipcompress# RPM packages drop log rotation information into this directory#there are all other configurations of services and their logs to rotateinclude /etc/logrotate.d
Alcuni esempi e configurazioni di file di log reali
Così, possiamo aggiungere un nuovo file di log in /var/log/ in questo modo:
echo "this is a sample log file" > /var/log/vasil.log#this create a log file vasil1.log of size 5MBdd if=/dev/zero of=/var/log/vasil1.log bs=1M count=5
In seguito, creiamo un nuovo file di configurazione che viene memorizzato nella destinazione spiegata sopra:
vim /etc/logrotate.d/vasil###/var/log/vasil.log { missingok notifempty compress minsize 1M daily create 0600 root root}
vim /etc/logrotate.d/vasil1###/var/log/vasil1.log { missingok notifempty compress minsize 1M daily create 0600 root root}
E una spiegazione delle variabili:
- missingok – non mostra l’errore se il file di log manca
- notifempty – non ruota il file di log se è vuoto
- compress – Le vecchie versioni dei file di log sono compresse con gzip per default
- minsize – Il file di log viene ruotato solo se è più grande di 1M
- daily – assicura una rotazione giornaliera
- create – crea un nuovo file di log con permessi 600 dove proprietario e gruppo è l’utente root
Se volete altre opzioni e la loro spiegazione, guardate il manuale:
man logrotare
Guarda la lista di /var/log per i nostri file di log. Possiamo vedere che abbiamo un log vasil.log con dimensione 26b e vasil1.log con dimensione 5MB.
ls -lah /var/log/va*-rw-r--r--. 1 root root 5.0M Mar 3 13:21 /var/log/vasil1.log-rw-r--r--. 1 root root 26 Mar 3 13:21 /var/log/vasil.log
Ora, possiamo eseguire il debug della nostra configurazione tramite questo comando:
logrotate -d /etc/logrotate.d/vasil1orlogrotate -d /etc/logrotate.d/vasil
Quindi, se vogliamo eseguire logrotate manualmente e vedere cosa succede, eseguire il seguente comando. Ma fate attenzione perché ruoterà tutti i vostri log, definiti in /etc/logrotate.d/
logrotate -f /etc/logrotate.conf
E possiamo vedere entrambi i file di log compressi e due nuovi file di log vuoti creati:
ls -lah /var/log/va*-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil1.log-rw-r--r--. 1 root root 5.0K Mar 3 13:21 /var/log/vasil1.log-20170303.gz-rw-------. 1 root root 0 Mar 3 13:23 /var/log/vasil.log-rw-r--r--. 1 root root 44 Mar 3 13:21 /var/log/vasil.log-20170303.gz
Possiamo esaminare il nostro file di log compresso con questo comando:
zcat /var/log/vasil.log-20170303.gzthis is a sample log file
O possiamo usare gunzip per decomprimerli con il comando gzip.
Quando usiamo logrotate, a volte abbiamo bisogno di riavviare un’applicazione o un servizio. Logrotate può farlo tramite uno script chiamato “postrotate”. Questo script può essere usato nel file di configurazione come httpd. Quando i log vengono ruotati, lo script ricarica il servizio per utilizzare il nuovo file di log vuoto.
cat /etc/logrotate.d/httpd/var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript}
Spero quindi che questo how to aiuti qualcuno 🙂 Buon divertimento.