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