GNU/Linux >> Znalost Linux >  >> Linux

Nastavení Centos/Linux logrotate na maximální velikost souboru pro všechny protokoly

Jak zmínil Zeeshan, možnosti logrotate size , minsize , maxsize jsou spouštěče rotace.

Abych to lépe vysvětlil. Logrotate můžete spouštět tak často, jak chcete, ale pokud není dosaženo prahové hodnoty, jako je dosažená velikost souboru nebo neuplynula vhodná doba, protokoly nebudou rotovány.

Možnosti velikosti nezajistí, že vaše otočené protokoly budou mít také zadanou velikost. Aby se přiblížily zadané velikosti, musíte dostatečně často volat program logrotate. To je kritické.

U souborů protokolu, které se hromadí velmi rychle (např. ve stovkách MB za den), pokud nechcete, aby byly velmi velké, budete muset zajistit časté volání logrotate! to je kritické.

Proto, abyste zabránili zaplňování disku vícegigabajtovými soubory protokolu, musíte zajistit, aby bylo logrotate voláno dostatečně často, jinak rotace protokolu nebude fungovat tak dobře, jak chcete.

na Ubuntu můžete snadno přepnout na hodinovou rotaci přesunutím skriptu /etc/cron.daily/logrotate do /etc/cron.hourly/logrotate

Nebo přidejte

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

Do vašeho souboru /etc/crontab. Chcete-li jej spustit každých 5 minut.

size ignoruje denní, týdenní a měsíční časové možnosti. Ale minimální a maximální velikost to berou v úvahu.

Manová stránka je tam trochu nepřehledná. Zde je mé vysvětlení.

minsize se otáčí pouze tehdy, když soubor dosáhne vhodné velikosti a uplynula nastavená doba. např. minimální velikost 50 MB + denně Pokud soubor dosáhne 50 MB před odškrtnutím denního času, bude se zvětšovat až do dalšího dne.

maxsize se otočí, když protokol dosáhne nastavené velikosti nebo uplyne vhodná doba. např. max. velikost 50 MB + denně. Pokud má soubor 50 MB a ještě nejsme další den, protokol se otočí. Pokud má soubor pouze 20 MB a přejdeme na další den, soubor se otočí.

size se otočí, když log> velikost. Bez ohledu na to, zda je zadáno hodinové/denní/týdenní/měsíční. Takže pokud máte velikost 100M – znamená to, že když je váš soubor protokolu> 100M, protokol se otočí, pokud je spuštěno logrotate, když je tato podmínka splněna. Jakmile se otočí, hlavní protokol bude 0 a následný běh nic neudělá.

Tedy v případě op. Konkrétně 50 MB max. bych použil něco jako následující:

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

Což znamená, že by vytvořil maximálně 8 hodin protokolů. A bylo by jich 8 po ne více než 50 MB. Vzhledem k tomu, že říká, že každý den získává několik gigabajtů, a za předpokladu, že se hromadí poměrně konstantní rychlostí a je používána maximální velikost, skončí s přibližně maximem dosaženým pro každý soubor. Každý se tedy pravděpodobně bude blížit 50 MB. Vzhledem k objemu, který vytvářejí, by musel zajistit, aby logrotate bylo spouštěno dostatečně často, aby bylo dosaženo cílové velikosti.

Protože jsem tam dal hodinu, potřebovali bychom, aby se logrotate spouštělo minimálně každou hodinu. Ale protože se hromadí řekněme 2 gigabajty za den a my chceme 50 MB... za předpokladu konstantní rychlosti, která je 83 MB za hodinu. Takže si dokážete představit, že když spustíme logrotate každou hodinu, i přes nastavení maxsize na 50 skončíme v tom případě s logy 83 MB. V tomto případě by tedy mělo stačit nastavení běhu na každých 30 minut nebo méně.

Zajistěte, aby se logrotate spouštělo každých 30 minut.

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

Určuje velikost souboru protokolu ke spuštění rotace. Například size 50M spustí rotaci protokolu, jakmile je velikost souboru 50 MB nebo větší. Můžete použít příponu M pro megabajty k pro kilobajty a G za gigabajty. Pokud není použita žádná přípona, bude to znamenat bajty. Příklad si můžete zkontrolovat na konci. K dispozici jsou tři direktivy size , maxsize a minsize . Podle manuálové stránky:

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.

Zde je příklad:

"/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
       }

Zde je vysvětlení pro oba soubory /var/log/httpd/access.log a /var/log/httpd/error.log . Otáčejí se vždy, když velikost překročí 100 kB, a staré soubory protokolů jsou odesílány (nekomprimovány) na adresu [email protected] po absolvování 5 otočení, spíše než aby byl odstraněn. sharedscripts znamená, že postrotate skript bude spuštěn pouze jednou (po zkomprimování starých protokolů), nikoli jednou pro každý rotovaný protokol. Všimněte si, že dvojité uvozovky kolem prvního souboru na začátku této části umožňují logrotate otáčet protokoly s mezerami v názvu. Platí normální pravidla pro citování shellu s , a \ podporované znaky.


Linux
  1. Linux – Jak nastavit výchozí oprávnění k souborům pro všechny složky/soubory v adresáři?

  2. Android File Transfer pro Linux – odesílání souborů do Linuxu bez omezení velikosti

  3. Systémový protokolový soubor /var/log/messages se automaticky odstraňuje nebo ořezává (CentOS/RHEL)

  1. Jak vytvořit vlastní rotaci souboru protokolu pomocí logrotate v Linuxu

  2. CentOS / RHEL :Jak otočit soubory /var/log/wtmp a /var/log/btmp pomocí logrotate

  3. Všechny Linux Compress/Decompress Commands

  1. Otočte a archivujte protokoly pomocí příkazu logrotate systému Linux

  2. sledovat velikost souboru v linuxu

  3. přesměrovat protokoly služeb systemd do souboru