GNU/Linux >> Linux Esercitazione >  >> Linux

Impostazione di Centos/Linux logrotate alla dimensione massima del file per tutti i registri

Come accennato da Zeeshan, le opzioni logrotate size , minsize , maxsize sono trigger per la rotazione.

Per spiegarlo meglio. Puoi eseguire logrotate tutte le volte che vuoi, ma a meno che non venga raggiunta una soglia come il raggiungimento della dimensione del file o il tempo appropriato trascorso, i log non verranno ruotati.

Le opzioni relative alle dimensioni non garantiscono che anche i registri ruotati abbiano le dimensioni specificate. Per farli avvicinare alla dimensione specificata è necessario chiamare il programma logrotate abbastanza spesso. Questo è fondamentale.

Per i file di registro che si accumulano molto rapidamente (ad esempio centinaia di MB al giorno), a meno che tu non voglia che siano molto grandi, dovrai assicurarti che logrotate venga richiamato spesso! questo è fondamentale.

Pertanto, per evitare che il tuo disco si riempia di file di registro multi-gigabyte, devi assicurarti che logrotate venga chiamato abbastanza spesso, altrimenti la rotazione del registro non funzionerà come desideri.

su Ubuntu, puoi facilmente passare alla rotazione oraria spostando lo script /etc/cron.daily/logrotate in /etc/cron.hourly/logrotate

Oppure aggiungi

*/5 * * * * /etc/cron.daily/logrotate 

Al tuo file /etc/crontab. Per eseguirlo ogni 5 minuti.

Il size L'opzione ignora le opzioni di orario giornaliero, settimanale e mensile. Ma minsize e maxsize ne tengono conto.

La pagina man è un po' confusa lì. Ecco la mia spiegazione.

minsize ruota solo quando il file ha raggiunto una dimensione appropriata ed è trascorso il periodo di tempo impostato. per esempio. minsize 50MB + dailySe il file raggiunge i 50MB prima dello scadere del tempo giornaliero, continuerà a crescere fino al giorno successivo.

maxsize ruoterà quando il registro raggiunge una dimensione impostata o è trascorso il tempo appropriato. per esempio. maxsize 50 MB + giornaliero. Se il file è 50 MB e non siamo ancora al giorno successivo, il registro verrà ruotato. Se il file è di soli 20 MB e passiamo al giorno successivo, il file verrà ruotato.

size ruoterà quando log> size. Indipendentemente dal fatto che sia specificato orario/giornaliero/settimanale/mensile. Quindi, se hai una dimensione di 100M, significa che quando il tuo file di registro è> 100M, il registro verrà ruotato se logrotate viene eseguito quando questa condizione è vera. Una volta ruotato, il registro principale sarà 0 e un'esecuzione successiva non farà nulla.

Quindi nel caso dell'operazione. In particolare, 50 MB max userei qualcosa di simile al seguente:

/var/log/logpath/*.log {
    maxsize 50M
    hourly
    missingok
    rotate 8
    compress
    notifempty
    nocreate
}

Il che significa che creerebbe massimo 8 ore di log. E ce ne sarebbero 8 a non più di 50 MB ciascuno. Dal momento che sta dicendo che riceve più gigabyte ogni giorno e supponendo che si accumulino a una velocità abbastanza costante, e viene utilizzato maxsize, finirà con l'avvicinarsi al massimo raggiunto per ogni file. Quindi saranno probabilmente vicini a 50 MB ciascuno. Dato il volume che creano, dovrebbe assicurarsi che logrotate venga eseguito abbastanza spesso da raggiungere la dimensione target.

Dal momento che ho messo ogni ora lì, avremmo bisogno che logrotate venga eseguito almeno ogni ora. Ma dal momento che si accumulano per dire 2 gigabyte al giorno e noi vogliamo 50 MB ... assumendo una velocità costante di 83 MB all'ora. Quindi puoi immaginare se eseguiamo logrotate ogni ora, nonostante l'impostazione di maxsize su 50, in quel caso finiremo con 83 MB di registro. Quindi, in questo caso, impostare la corsa ogni 30 minuti o meno dovrebbe essere sufficiente.

Assicurati che logrotate venga eseguito ogni 30 minuti.

*/30 * * * * /etc/cron.daily/logrotate 

Specifica la dimensione del file di registro per attivare la rotazione. Ad esempio size 50M attiverà una rotazione del registro una volta che il file avrà una dimensione pari o superiore a 50 MB. Puoi usare il suffisso M per megabyte, k per kilobyte e G per gigabyte. Se non viene utilizzato alcun suffisso, lo prenderà per significare byte. Puoi controllare l'esempio alla fine. Sono disponibili tre direttive size , maxsize e minsize . Secondo manpage:

minsize size
              Log  files  are  rotated when they grow bigger than size bytes,
              but not before the additionally specified time interval (daily,
              weekly,  monthly, or yearly).  The related size option is simi-
              lar except that it is mutually exclusive with the time interval
              options,  and  it causes log files to be rotated without regard
              for the last rotation time.  When minsize  is  used,  both  the
              size and timestamp of a log file are considered.

size size
              Log files are rotated only if they grow bigger then size bytes.
              If size is followed by k, the size is assumed to  be  in  kilo-
              bytes.  If the M is used, the size is in megabytes, and if G is
              used, the size is in gigabytes. So size 100,  size  100k,  size
              100M and size 100G are all valid.
maxsize size
              Log files are rotated when they grow bigger than size bytes even before
              the additionally specified time interval (daily, weekly, monthly, 
              or yearly).  The related size option is  similar  except  that  it 
              is mutually exclusive with the time interval options, and it causes
              log files to be rotated without regard for the last rotation time.  
              When maxsize is used, both the size and timestamp of a log file are                  
              considered.

Ecco un esempio:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail [email protected]
           size 100k
           sharedscripts
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

Ecco una spiegazione per entrambi i file /var/log/httpd/access.log e /var/log/httpd/error.log . Vengono ruotati ogni volta che superano i 100k di dimensione e i vecchi file di registro vengono inviati (non compressi) a [email protected] dopo aver effettuato 5 rotazioni, invece di essere rimosso. Il sharedscripts significa che il postrotate lo script verrà eseguito solo una volta (dopo che i vecchi log sono stati compressi), non una volta per ogni log che viene ruotato. Si noti che le doppie virgolette attorno al primo nome file all'inizio di questa sezione consentono a logrotate di ruotare i log con spazi nel nome. Si applicano le normali regole di citazione della shell, con , e \ caratteri supportati.


Linux
  1. 10 utili alias Bash per Linux

  2. Quale software di compressione file per Linux offre la massima riduzione delle dimensioni?

  3. Il file di registro di sistema /var/log/messages viene eliminato o tagliato automaticamente (CentOS/RHEL)

  4. Tutti i comandi di compressione/decompressione di Linux

  5. guarda la dimensione del file su Linux

10 esempi di comandi Linux Cat per principianti

Linux df Command Tutorial per principianti (8 esempi)

Comando ls in Linux per elencare i file

Configurazione di logrotate in Linux

Come svuotare un file di registro in Linux

Riduci le dimensioni del file PDF in Linux