Napsáno: June 2, 2024, Viktor Matys
Systemd přináší nový způsob logování. Stávající syslog je nahrazován journald. Ten má několik slabin, ale i různé přednosti.
Systemd přináší i nový způsob logování. Stávající syslog je nahrazován journald. Ten má několik slabin, ale i různé přednosti.
Slabiny:
Přednosti:
Oba stejně:
Základní konfigurační soubor je /etc/systemd/journald.conf
. Konfiguraci si ovšem můžeme vypsat i pomocí
systemd-analyze cat-config systemd/journald.conf
Na výchozím nastavení mě zaujala především doba, po kterou jsou záznamy v logu uchovávány. Na jednom serveru to byly pomalu tři měsíce, na jiném dva dny (nekecám).
Jestliže syslog + logrotate tuto dobu uchování poskytuje naprosto srozumitelně, journald má zdá se problém hlavně s tím, aby nepřekážel (ví že žere místo).
Journal log ve výchozím nastavení zabere maximálně 10% diskového oddílu.
To může být problém pokud máte ve zvyku vytvářet samostatný diskový oddíl pro logy - krásných 90% místa zůstane volných. A to byl taky důvod proč v tom jednom logu byly záznamy maximálně dva dny zpátky. A taky, že když měl místa velmi mnoho, ochotně uchovával a uchovával.
man 5 journald.conf
Vlastní konfigurací dát do /etc/systemd/journald.conf.d/local.conf Vyberu parametry pro mě klíčové:
[Journal]
# Nejdřív požadované parametry "vynulovat"
Storage=
SystemMaxFiles=
SystemMaxUse=
SystemKeepFree=
MaxRetentionSec=
MaxFileSec=
# Teprve pak nastavovat:
Storage=persistent # úložiště na disku
SystemMaxFiles=1200 # kolik může mít maximálně souborů
SystemMaxUse=8G # kolik smí log nejvíc zabrat místa
SystemKeepFree=2G # kolik naopak musí místa ponechat
MaxRetentionSec=6month # nedelší doba ponechání záznamů
MaxFileSec=1month # po jaké době rotovat soubory
To jsou parametry z toho původně dvoudenního logu. Po této změně je na svém maximu 8G a nejstarší záznamy jsou cca měsíc staré. Budu muset ještě přidat místo, což je fakt děs.
Po změně konfigurace nezapomenout na:
systemctl daemon-reload
journalctl
--disk-usage
--since -S od jakého data/času
--until -U do - " -
--cursor*
--unit -u vypsat jen daný systemd unit (př. dovecot)
--grep -g regulární výraz perl stylu
--dmesg -k jen záznamy jádra
--output -o formát výstupu - viz níže
--lines -n jen tolik řádků, prosím
--reverse -r v opačném pořadí
--utc
--pager-end -e rovnou skočí na konec
--catalog -x přidá vysvětlivky k chybám apod.
--output -o - několik hodnot, které používám:
- short - aka syslog, default
- short-iso - kompletní timestamp
- json, json-pretty
- cat - holý výpis zpráv bez timestamp aj.
Tyhle články píšu hlavě pro sebe, abych si to nemusel pamatovat a nemusel si pamatovat, kam jsem si dal výpisky. Najde-li to tu někdo další a pomůže mu to, budu rád. :-)
Ahoj, strýček Grumpa