GNU/Linux >> Znalost Linux >  >> Linux

Ukázka konfigurace logrotate a řešení problémů

Použití znalostí

Předchozí článek Vysvětlení nástroje logrotate popsal, co dělá logrotate a jak jej můžete nakonfigurovat. Tento článek aplikuje tyto znalosti na vytváření řešení rotace protokolů pro jednoho nebo více vlastních virtuálních hostitelů. Také uvádí některé možnosti testování a odstraňování problémů logrotate.

Spojení všeho dohromady:protokoly virtuálního hostitele

Chcete-li ukázat, jak můžete použít logrotate pro vaše aplikace, zde je příklad, který se bude hodit mnoha lidem:rotace protokolů pro vaše vlastní virtuální hostitele. Příklad používá Apache ®, ale můžete jej vyladit pro jiné webové servery, jako je nNinx® nebo Lighttpd® , obvykle jen změním skript po otočení.

Nejprve vytvořte soubor s konfigurací, která sdělí logrotate, co má dělat se soubory protokolu virtuálního hostitele. Neupravujte soubor mainconfig ani konfigurační soubor webového serveru, protože budoucí aktualizace balíčku může chtít konfiguraci přepsat. Místo toho vytvořte svůj vlastní soubor pomocí následujícího příkazu:

/etc/logrotate.d/virtualhosts

Tento příklad hodí všechny virtuální hostitele do jednoho souboru, ale pokud máte jednoho hostitele, který je zaneprázdněnější než ostatní, možná budete chtít vytvořit samostatné konfigurační soubory pro potřeby vašich různých domén. Příklad specifikuje několik položek, které jsou pravděpodobně již nastaveny ve vaší hlavní konfiguraci, aby pokryly všechny základy.

Soubory

Řekněme, že máte dvě virtuální domény, domena1.com a domena2.com a že soubory protokolu pro každý z nich jsou v /home/demo/public_html/(název domény)/log .Váš konfigurační soubor musí logrotate sdělit, kde má najít soubory protokolu, a poté pro ně spustit konfigurační blok:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {

Pokud chcete přidat další adresáře protokolu nebo soubory, vložte je do tohoto seznamu.

Otočit

Dále se ujistěte, že logrotate uchovává pouze tolik starých protokolů, kolik chcete:

rotate 14

Příklad používá 14 souborů k uchování dvoutýdenních protokolů, ale toto číslo můžete upravit tak, aby vyhovovalo vašim potřebám.

Interval

Nyní řekněte webovému serveru, aby tyto protokoly denně střídal (znovu to změňte, pokud dáváte přednost delšímu intervalu):

daily

Velikost (volitelné)

Nastavení velikosti určuje maximální velikost vašich protokolů. Když protokol dosáhne této velikosti, spustí se rotace protokolu.

size 50M

Nastavení velikosti je zde volitelné, protože přepíše jakékoli podmínky rotace založené na čase. Můžete zadat časový interval i maximální velikost, ale pokud tak učiníte, logrotate nastavení časového intervalu ignoruje.

Komprese

Určete, zda chcete tyto protokoly po archivaci komprimovat. Tento příklad používá delaycompress příkaz k zodpovězení ladného restartu Apache, což znamená, že také musíte zapnout kompresi:

compress
delaycompress

Sdílené skripty

Můžete mít několik virtuálních hostitelů, což by znamenalo, že se několik protokolů otočí. Chcete-li zajistit, aby se webový server restartoval až po dokončení všech rotací, přidejte následující řádek:

sharedscripts

Postrotate

Zadejte postrotate skript pro restartování webového serveru:

postrotate
        /usr/sbin/apachectl graceful > /dev/null
endscript

A nakonec zavřete konfigurační blok složenou závorkou:

}

Celý soubor

Následuje úplný konfigurační soubor:

/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {
        rotate 14
        daily
        compress
        delaycompress
        sharedscripts
        postrotate
                /usr/sbin/apachectl graceful > /dev/null
        endscript
}

Otestujte skript buď sledováním věcí při spouštění nočních úloh cronu, nebo ručním spuštěním logrotate pomocí následujícího příkazu:

/usr/sbin/logrotate /etc/logrotate.conf

Pokud se vám žádné chyby nevrátí, měli byste být v pořádku. Ale pokud se chcete ujistit, můžete si projít některé z následujících testů.

Testování logrotate

Pokud máte podezření, že logrotate má nějaké potíže, nebo se jen chcete ujistit, že nová konfigurace, kterou jste zavedli, funguje, můžete pro logrotate předat několik užitečných příznaků, když jej spustíte z příkazového řádku:

Verbose

Podrobný příznak -v , říká logrotate, aby řekl každé operaci, kterou provádí. To pomáhá, když chcete zjistit, proč logrotate neotáčí protokol podle očekávání.

Ladění

Příznak ladění, -d , říká logrotate, aby prošel pohyby rotujících protokolů, ale ne ve skutečnosti otočte je. Může se hodit, pokud pracujete na produkčním serveru a chcete otestovat nový konfigurační soubor, ale nechcete, aby se při spuštění testu spouštěla ​​skutečná rotace protokolu.

Debug také kontroluje, zda je konfigurační soubor správně naformátován a zda logrotate dokáže najít soubory protokolu, které by rotoval. Protože však nespouští therotace, netestuje některé části procesu, jako jsou skripty po otočení.

Vynutit

Příznak síly, -f , přinutí logrotate otočit všechny protokoly, když běží, bez ohledu na to, zda by normálně musely být v tu chvíli otočeny. Pokud chcete důkladně otestovat konfigurace logrotate, použijte tento příznak. Nezapomeňte, že logrotate otáčí protokoly a maže staré podle konfigurace, takže náhodně neotáčejte nedávný protokol, který si musíte ponechat.

Může být také užitečné, pokud se domníváte, že logrotate by mělo otáčet logem, ale není tomu tak. Vynucení problému vám pomůže identifikovat:

  • Pokud je problém v tom, že logrotate si myslí, že protokol nepotřebuje rotaci (pokud spustíte příznak síly a protokol se otočí)
  • Pokud je problém v tom, že logrotate nemůže ovlivnit soubor protokolu (pokud jej spustíte a s protokolem se nic nestane).

Poznámka: Pokud jste nakonfigurovali logrotate tak, aby k názvu archivovaného protokolu přidalo datum, pamatujte, že i pomocí příznaku vynutit logrotate vytvoří nový archiv ve stejný den. Protože název, který je třeba použít pro druhý archiv, je v takovém případě již obsazený, možná budete muset přejmenovat nejnovější archiv, než budete moci vynutit rotaci protokolu.

Kombinování příznaků

Testovací příznaky můžete používat společně docela efektivně. Chcete-li, aby vám logrotate řekl, co by udělal, pokud byste jej nechali otočit všechno, ale ne ve skutečnosti otočit cokoliv, můžete kombinovat všechny tři:

/usr/sbin/logrotate -vdf /etc/logrotate.conf

Tento příkaz poskytuje dlouhý seznam věcí, které by logrotate udělal, včetně toho, které soubory protokolu by se otočily a co by během tohoto procesu udělal.

Pokud pak chcete otestovat všechny konfigurace rotace v jejich celistvosti, včetně skriptů spouštěných po rotacích, můžete spustit logrotate bez příznaku ladění:

/usr/sbin/logrotate -vf /etc/logrotate.conf

Logrotate otočí všechny protokoly. Procházení výstupu by vám mělo pomoci zachytit jakékoli zjevné problémy. Měli byste se také ujistit, že všechny vaše služby stále běží v pořádku, že s postrotačními skripty není nic špatného a že se všechny protokoly otočily.

Jak si logrotate pamatuje

Pokud zjistíte, že se protokol neotáčí, přestože je dostatečně starý na to, aby měl, spusťte ručně logrotate pomocí -f vlajka. Ale pokud chcete vědět, proč je něco špatně, je tu ještě jeden soubor, který můžete zkontrolovat, než vynutíte otočení:

/var/lib/logrotate.status

Logrotate ukládá informace o tom, kdy naposledy otočil každý soubor protokolu ve stavovém souboru. Když se podíváte dovnitř, uvidíte něco jako:

logrotate state -- version 2
"/var/log/acpid.log" 2010-6-18
"/var/log/iptables.log" 2010-6-18
"/var/log/uucp.log" 2010-6-29
...

Je to jednoduchý formát, umístění souboru protokolu je vlevo a datum, kdy byl naposledy otočen, je vpravo. Někdy se data na vašem serveru zaměňují (pokud jste si dělali práci se službou NTP nebo podobně) a datum, kdy byl protokol naposledy otočen, je budoucí datum. Pokud se tak stalo, uvidíte to v tomto stavovém souboru.

Pokud chcete zkontrolovat logrotate pomocí konkrétního souboru protokolu, ale nechcete vynutit rotaci všeho, můžete odstranit záznam protokolu ze souboru logrotatestatus. Poté, když spustíte logrotate normálně, měl by vytvořit nový záznam pro protokol s dnešním datem (i když ve skutečnosti nemusí protokol otočit - použije první spuštění jako základ, pokud je založen pouze na intervalech).

Přehled

U něčeho, co běží tiše na pozadí a skutečně provádí pouze jeden typ úlohy, dělá logrotate docela dost. Měli byste být schopni nastavit konfigurační soubory newlogrotate pro své vlastní účely, buď je vytvořit ze scratche nebo zkopírovat existující konfigurace a vhodně je upravit. A co je nejdůležitější, můžete zabránit tomu, aby se vaše protokoly vymkly kontrole.


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

  2. Jak na to:Replikace a konfigurace DRBD

  3. Jak na to:MTR – Pochopení a řešení problémů se síťovým připojením

  1. Odstraňování problémů se sítí Linux a ladění?

  2. Umístění společných souborů protokolu a konfiguračních souborů pro služby cPanel

  3. Deaktivace upozornění a upozornění na ukončení podpory PHP

  1. Nakonfigurujte logrotate na Redhat Linuxu

  2. LVM a multipathing – vzorové řetězce filtrů LVM

  3. Logrotate neodstraní staré protokoly