Articles

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.

Totale visite alla pagina: 5196 – Oggi Visite di pagina: 3

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *