GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come impostare e gestire la rotazione dei registri utilizzando Logrotate in Linux

Una delle directory più interessanti (e forse anche una delle più importanti) in un sistema Linux è /var/log . Secondo il Filesystem Hierarchy Standard, l'attività della maggior parte dei servizi in esecuzione nel sistema viene scritta in un file all'interno di questa directory o in una delle sue sottodirectory.

Tali file sono noti come registri e sono la chiave per esaminare come funziona il sistema (e come si è comportato in passato). Registri sono anche la prima fonte di informazioni in cui gli amministratori e i tecnici cercano durante la risoluzione dei problemi.

Se osserviamo il contenuto di /var/log su CentOS/RHEL/Fedora e Debian/Ubuntu (per varietà) vedremo i seguenti file di registro e sottodirectory.

Tieni presente che il risultato potrebbe essere leggermente diverso nel tuo caso a seconda dei servizi in esecuzione sui tuoi sistemi e dal tempo in cui sono stati eseguiti.

In RHEL/CentOS e Fedora

# ls /var/log

In Debian e Ubuntu

# ls /var/log

In entrambi i casi, possiamo osservare che alcuni nomi di log terminano come previsto in "log" , mentre altri vengono rinominati utilizzando una data (ad esempio, maillog-20160822 su CentOS ) o compresso (considera auth.log.2.gz e mysql.log.1.gz su Debian ).

Questo non è un comportamento predefinito basato sulla distribuzione scelta ma può essere modificato a piacimento utilizzando le direttive nei file di configurazione, come vedremo in questo articolo.

Se i log fossero conservati per sempre, finirebbero per riempire il filesystem in cui /var/log risiede. Per evitare che ciò accada, l'amministratore di sistema può utilizzare una simpatica utilità chiamata logrotate per ripulire i registri su base periodica.

In poche parole, logrotate rinominerà o comprimerà il registro principale quando viene soddisfatta una condizione (ne parleremo più in un minuto) in modo che l'evento successivo venga registrato su un file vuoto.

Inoltre, rimuoverà "vecchio" log e manterrà quelli più recenti. Naturalmente, possiamo decidere cosa "vecchio" significa e quanto spesso vogliamo che logrotate ripulisca i registri per noi.

Installazione di Logrotate in Linux

Per installare logrotate , usa il tuo gestore di pacchetti:

---------- On Debian and Ubuntu ---------- 
# aptitude update && aptitude install logrotate 

---------- On CentOS, RHEL and Fedora ---------- 
# yum update && yum install logrotate

Vale la pena notare che il file di configurazione (/etc/logrotate.conf ) può indicare che altre impostazioni più specifiche possono essere inserite in singoli .conf file all'interno di /etc/logrotate.d .

Lettura consigliata :Gestisci i registri di sistema (configura, ruota e importa nel database) utilizzando Logrotate

Questo sarà il caso se e solo se la seguente riga esiste e non è commentata:

include /etc/logrotate.d

Rimarremo fedeli a questo approccio, poiché ci aiuterà a mantenere le cose in ordine e a utilizzare Debia n casella per i seguenti esempi.

Configura Logrotate in Linux

Essendo uno strumento molto versatile, logrotate fornisce molte direttive per aiutarci a configurare quando e come verranno ruotati i log e cosa dovrebbe accadere subito dopo.

Inseriamo i seguenti contenuti in /etc/logrotate.d/apache2.conf (nota che molto probabilmente dovrai creare quel file) ed esamina ogni riga per indicarne lo scopo:

apache2.conf
/var/log/apache2/* {
    weekly
    rotate 3
    size 10M
    compress
    delaycompress
}

La prima riga indica che le direttive all'interno del blocco si applicano a tutti i log all'interno di /var/log/apache2 :

  • settimanale significa che lo strumento tenterà di ruotare i registri su base settimanale. Altri valori possibili sono giornalieri e mensili.
  • ruota di 3 indica che devono essere conservati solo 3 registri ruotati. Pertanto, il file più vecchio verrà rimosso alla quarta esecuzione successiva.
  • dimensione=10M imposta la dimensione minima per la rotazione su 10M. In altre parole, ogni registro non verrà ruotato finché non raggiunge i 10 MB.
  • comprimi e compressione ritardata sono usati per indicare che tutti i log ruotati, ad eccezione del più recente, devono essere compressi.

Eseguiamo un test di prova per vedere cosa farebbe logrotate se fosse effettivamente eseguito ora. Usa -d opzione seguita dal file di configurazione (puoi effettivamente eseguire logrotate omettendo questa opzione):

# logrotate -d /etc/logrotate.d/apache2.conf

I risultati sono mostrati di seguito:

Invece di comprimere i log, potremmo rinominarli dopo la data quando sono stati ruotati. Per farlo, useremo il dateext direttiva. Se il nostro formato della data è diverso da quello predefinito aaaammgg , possiamo specificarlo utilizzando dateformat .

Lettura consigliata :Installa "in alto" per monitorare l'attività di registrazione dei processi di sistema Linux

Tieni presente che possiamo anche impedire che la rotazione avvenga se il registro è vuoto con notifempty . Inoltre, diciamo a logrotate di inviare per posta il registro ruotato all'amministratore di sistema ([email protected] in questo caso) per suo riferimento (questo richiederà la configurazione di un server di posta, che esula dallo scopo di questo articolo).

Se vuoi ricevere e-mail su logrotate, puoi configurare il server di posta Postfix come mostrato qui:Installa il server di posta Postfix

Questa volta useremo /etc/logrotate.d/squid.conf per ruotare solo /var/log/squid/access.log :

squid.conf
/var/log/squid/access.log {
    monthly
    create 0644 root root
    rotate 5
    size=1M
    dateext
    dateformat -%d%m%Y
    notifempty
    mail [email protected]
}

Come possiamo vedere nell'immagine qui sotto, questo registro non ha bisogno di essere ruotato. Tuttavia, quando la condizione relativa alla dimensione è soddisfatta (size=1M ), il registro ruotato verrà rinominato access.log-25082020 (se il log è stato ruotato il 25 agosto 2020 ) e il registro principale (access.log ) verrà ricreato con le autorizzazioni di accesso impostate su 0644 e con root come proprietario e proprietario del gruppo.

Infine, quando il numero di log raggiunge finalmente 6 , il registro meno recente verrà inviato a [email protected] .

Supponiamo ora di voler eseguire un comando personalizzato quando avviene la rotazione. Per farlo, posiziona la riga con tale comando tra le direttive postrotate ed endscript.

Ad esempio, supponiamo di voler inviare un'e-mail a root quando uno qualsiasi dei log all'interno di /var/log/myservice viene ruotato. Aggiungiamo le linee in rosso a /etc/logrotate.d/squid.conf :

squid.conf
/var/log/myservice/* {
	monthly
	create 0644 root root
	rotate 5
	size=1M
    	postrotate
   		echo "A rotation just took place." | mail root
    	endscript
}

Ultimo, ma non meno importante, è importante notare che le opzioni presenti in /etc/logrotate.d/*.conf sovrascrivi quelli nel file di configurazione principale in caso di conflitti.

Logrotate e Cron

Per impostazione predefinita, l'installazione di logrotate crea un file crontab all'interno di /etc/cron.daily denominato logrotate . Come nel caso degli altri file crontab all'interno di questa directory, verrà eseguito ogni giorno a partire dalle 6:25 se anacron non è installato.

Lettura consigliata :11 Esempi di attività di pianificazione Cron in Linux

In caso contrario, l'esecuzione inizierà intorno alle 7:35 . Per verificare, osserva la riga contenente cron.daily in /etc/crontab o /etc/anacrontab .

Riepilogo

In un sistema che genera diversi registri, l'amministrazione di tali file può essere notevolmente semplificata utilizzando logrotate. Come abbiamo spiegato in questo articolo, ruoterà, comprimerà, rimuoverà e spedirà automaticamente i registri su base periodica o quando il file raggiunge una determinata dimensione.

Assicurati solo che sia impostato per essere eseguito come cron job e logrotate renderà le cose molto più facili per te. Per maggiori dettagli, fare riferimento alla pagina man.

Hai domande o suggerimenti su questo articolo? Sentiti libero di farcelo sapere utilizzando il modulo di commento qui sotto.


Ubuntu
  1. Ruota e archivia i registri con il comando logrotate di Linux

  2. Come gestire ed elencare i servizi in Linux

  3. Come installare e utilizzare logrotate per gestire i file di registro in Ubuntu 18.04 LTS

  4. Come gestire i file di registro utilizzando Logrotate in Linux

  5. Come monitorare e registrare il traffico di rete su Linux utilizzando vnStat

Come configurare il server di backup utilizzando Rsnapshot in Linux

Come visualizzare i file di registro standard sui server Ubuntu Linux

Come installare s3cmd in Linux e gestire i bucket Amazon s3

Come creare e gestire partizioni Linux utilizzando Parted

Come nascondere cartelle e file in Linux usando un file di testo

Come configurare il server e il client VPN Linux utilizzando OpenVPN