Tunel přestane přijímat připojení, služba se dvakrát restartuje a pak se v jejím logu neobjeví nic. To ticho je stopa, protože disk zaplnil právě log a démon nemá kam zapsat chybu, na kterou čekáte. Do takového stavu se může dostat každá dlouho běžící služba a smazání adresáře jménem logs to málokdy opraví. Trvalé řešení je vědět, které úložiště narostlo, kdo vlastní politiku jeho uchovávání a zda zapisovatel prostor skutečně uvolnil.

Najděte úložiště, které narostlo, a tempo, jakým rostlo

Začněte dvěma čísly, na která se snadno zapomíná: volné bloky a volné inody. Souborový systém může hlásit dost místa a přesto odmítnout zápis, protože mu došly inody, což se stane, když služba vytváří jeden soubor na relaci. Ptejte se na oba údaje na stejném svazku, protože odpovědi se mohou rozejít ještě týž den. Udělejte to, dokud je hostitel zdravý, aby čísla popisovala běžný provoz, a ne výpadek.

df -h /var
df -i /var

Potom růst přiřaďte vlastníkovi. Vlastní údaj o spotřebě journalu pokrývá jen journal a nikdy neuvidí démona, který zapisuje do cesty ze svého konfiguračního souboru.

journalctl --disk-usage

Růst v čase řekne víc než jakékoli jednotlivé měření. Ponechaná úroveň ladění, smyčka opakování, která loguje každý pokus, nebo zachytávací soubor, který nikdo nezastavil: každé z toho může v jednu chvíli vypadat obyčejně a o hodinu později znepokojivě. Udělejte jedno měření, počkejte přes rušné období, udělejte druhé a vydělte intervalem. Tempo, které umíte vyjádřit, mění kapacitu v rozhodnutí, ne v požár.

Co rotace udělá s otevřeným souborem

Logovací soubor je jméno ukazující na inode a místo se vrátí jen tehdy, když se zavře poslední otevřený deskriptor. Přejmenujte soubor a zapisovatel dál plní stejný inode; smažte ho a zapisovatel dál plní inode úplně bez jména. Kvůli tomu věta „smazal jsem soubor a disk zůstal plný“ popisuje deskriptory souborů, ne rozbitý souborový systém. Restart zapisovatele nebo volba režimu rotace, který soubor znovu otevře, je to, co bloky skutečně vrátí.

lsof +L1 | head

Politika patří komponentě, která soubor zapisuje. Journal vynucuje své vlastní limity úložiště ze svého konfiguračního souboru, zatímco služba založená na souborech se obvykle spoléhá na logrotate, buď s pravidlem vytvoření a signálem pro znovuotevření, nebo s režimem zkrácení na místě, když zapisovatel nemůže znovu otevřít. Nejprve rozhodnutí potvrďte, aniž byste cokoli měnili:

logrotate -d /etc/logrotate.conf

Kam limit patří a jak velký má být

Umístěte limit tam, kde je nakonfigurován zapisovatel, ne do přípojného bodu. Kvóta na celý svazek chrání hostitele, ale neříká, která služba selže první, a globální čistící skript obvykle smaže důkazy, které bude potřebovat příští incident. Limit journalu, počet rotací s maximální velikostí a uchovávání na úrovni aplikace: každé omezuje jednoho producenta. Dohromady omezují celek; samostatně je každé odhadem.

Velikost limitu určete z doby uchovávání, kterou umíte obhájit, ne z volného místa. Pokud revize potřebuje týden pokusů o připojení, journal musí udržet týden při nejsilnějším očekávaném tempu, a to tempo je číslo změřené dříve.

Ladicí log je dočasný režim se zaznamenaným časem spuštění, ne plán úložiště. Otázku soukromí držte uvnitř stejného rozhodnutí, protože logy připojení nesou adresy a identifikátory. Delší uchovávání je také volba nakládání s daty a měl by ji udělat někdo, kdo zná obě omezení.

Ověřte limit po restartu

Změna uchovávání, která vydrží do příštího restartu, není změna. Restartujte zapisovatele, potvrďte, že nový limit platí, a ověřte, že rotace potom stále běží. U journalu na obě otázky odpoví jeden restart a jedno měření spotřeby:

systemctl restart systemd-journald
journalctl --disk-usage

U služby založené na souborech spusťte rotaci jednou ručně a potvrďte, že soubor byl nahrazen a deskriptor znovu otevřen. Zapisovatel, který drží starý popisovač, projde povrchní kontrolou a selže příště, až se svazek zaplní. Během testu sledujte volné místo, protože soubor, který se zmenšil, ale místo se nevrátilo, znamená, že starý inode je stále držen.

Porovnejte příští měření s tímto

Vraťte se po týdnu a porovnejte tempo růstu se zaznamenaným. Shodné tempo znamená, že limit drží a zátěž je stabilní; dvojnásobné tempo znamená, že se něco změnilo, a užitečná otázka je co. Nejprve si přečtěte obsah logu kvůli opakovaným selháním, protože smyčka opakování je zároveň příznakem i příčinou objemu. Potom zkontrolujte, co bylo nově zapnuto, včetně úrovní ladění zapnutých během incidentu a nikdy nevypnutých.

Držte zálohy mimo stejný svazek, nebo přijměte, že jeden plný disk vezme zálohu s sebou. Kopie zapsaná na hostitele, který chrání, není plán obnovy, a její uchovávání potřebuje vlastní odpověď.

Zapište, co se uchovává, kde, jak dlouho a kdo to odstraňuje. Ta věta je výstup a je jedinou částí této práce, která přežije příští restart.

Související články