Pochi giorni fa abbiamo pubblicato una guida che descriveva come configurare il server Rsyslog centralizzato sul sistema CentOS. Oggi, in questa guida, vedremo come gestire i file di registro utilizzando Logrotate su Linux. Questa utilità semplifica l'amministrazione dei file di registro, particolarmente utile per i sistemi che producono grandi volumi di file di registro ogni giorno. Come suggerisce il nome, LogRotate ruota i registri completamente fuori dal sistema a intervalli regolari. Consente inoltre la rotazione, la compressione, la rimozione e l'invio automatico dei file di registro. Ogni file di registro può essere gestito giornalmente, settimanalmente, mensilmente o quando diventa troppo grande.
Gestisci i file di registro utilizzando Logrotate
Installa Logrotate
Logrotate è disponibile nei repository predefiniti della maggior parte delle distribuzioni Linux.
Su Arch Linux e i suoi derivati, è necessario eseguire il comando seguente per installarlo.
$ sudo pacman -S logrotate
Su sistemi basati su RPM, come RHEL, CentOS, Scientific Linux, puoi installarlo usando il comando:
$ sudo yum install logrotate
Su Debian, Ubuntu:
$ sudo apt-get install logrotate
Su SUSE, apri SUSE:
$ sudo znf install logrotateScarica - eGuide gratuita:"22 utili modifiche per far sentire Ubuntu come a casa"
Configura Logrotate
Il file di configurazione principale di LogRotate è /etc/logrotate.conf .
Ecco il contenuto predefinito di questo file nel mio sistema Arch. Questo output di file potrebbe avere un aspetto leggermente diverso su altre distribuzioni Linux.
$ cat /etc/logrotate.conf
Risultato di esempio:
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # restrict maximum size of log files #size 20M # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # Logs are moved into directory for rotation # olddir /var/log/archive # Ignore pacman saved files tabooext + .pacorig .pacnew .pacsave # Arch packages drop log rotation information into this directory include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
Vediamo cosa fa ciascuna opzione nel file di configurazione sopra.
- settimanale - Ruota i log ogni settimana.
- ruota di 4 - Per impostazione predefinita, LogRotate conserva le quattro settimane (un mese, ovviamente) di file di registro. Poiché ruota tutti i file di registro dopo un determinato periodo di tempo, potrebbe essere necessario conservare un backup di file di registro importanti se non vuoi perderli.
- taglia 20M - Ruota i file di registro se hanno raggiunto la dimensione di 20 MB. Per impostazione predefinita, questa opzione è disabilitata. Per abilitarlo, decommentalo.
- crea - Crea nuovi file di registro una volta dopo aver ruotato i vecchi file di registro. Questa opzione è abilitata per impostazione predefinita.
- comprimi - Comprime i file di registro. Inoltre, non comprime i registri per impostazione predefinita. Se vuoi comprimere i log, decommenta questa riga.
- /etc/logrotate.d/ - Questa directory contiene i file delle regole di registro specifici dell'applicazione.
- OK mancante - Se il file di registro manca, Logrotate passerà a quello successivo senza emettere un messaggio di errore.
Logrotate segmenta i file di registro e comprime i registri in base alle regole specificate in /etc/logrotate.d/ directory.
Diamo un'occhiata al contenuto di questa directory.
$ ls /etc/logrotate.d/
L'output di esempio sarebbe:
lirc samba
Come puoi vedere nell'output sopra, contiene vari file di regole per tutti i registri gestiti da LogRotate. Per visualizzare una specifica regola del registro dell'applicazione, ad esempio samba, eseguire:
$ cat /etc/logrotate.d/samba
Risultato di esempio:
/var/log/samba/log.smbd /var/log/samba/log.nmbd /var/log/samba/*.log { notifempty missingok sharedscripts copytruncate postrotate /bin/kill -HUP `cat /var/run/samba/*.pid 2>/dev/null` 2>/dev/null || true endscript }
Ecco,
- notificato - Indica che i file di registro non verranno ruotati se è vuoto.
- copia tronca - Tronca il file di registro originale dopo aver creato una copia.
- postrotate/endscript - Le righe tra postrotate e endscript vengono eseguite dopo la rotazione del file di registro.
- script condiviso - Gli script vengono eseguiti una sola volta, indipendentemente dal numero di registri che corrispondono al modello con caratteri jolly.
Puoi anche creare i tuoi file di regole di log nella directory /etc/logrotate.d/ e definire le tue regole.
Cron esegue quotidianamente l'utilità logroate alla ricerca di file di registro da ruotare. Puoi specificare le regole di rotazione automatica dei log in /etc/cron.daily/logrotate file per evitare l'intervento manuale dell'utente. Eseguirà la rotazione del registro ogni singolo giorno a un'ora specifica.
Per verificare se i file di registro stanno ruotando o meno, eseguire:
$ cat /var/lib/logrotate.status
Risultato di esempio:
logrotate state -- version 2 "/var/log/samba/log.smbd" 2016-5-12-11:0:0 "/var/log/lircd" 2016-6-15-10:0:0 "/var/log/httpd/*log" 2016-5-12-11:0:0 "/var/log/wtmp" 2016-5-6-10:0:0 "/var/log/samba/*.log" 2016-5-12-11:0:0 "/var/log/btmp" 2017-4-1-11:36:53 "/var/log/samba/log.nmbd" 2016-5-12-11:0:0
Per maggiori dettagli, esegui logrotate immettendo il seguente comando:
$ logrotate --help
Oppure,
$ man logrotate
Questo è tutto per ora gente. Logrotate è uno strumento di rotazione dei registri semplice ma utile che semplifica la gestione dei registri. Non è necessario lottare con complesse fasi di configurazione e installazione. Tutto è autoesplicativo. Se gestisci un sistema che produce un numero elevato di file di registro, puoi ruotarli periodicamente utilizzando Logrotate.
Saluti!