Systemd journal zachytává logy ze služeb, kernelu i dalších zdrojů v binárním formátu s indexováním. Journalctl nabízí mocné filtrování, které je výrazně lepší než grep v /var/log, protože umožňuje kombinovat filtry podle služby, priority, času a dalších metadat v jednom dotazu. Strukturované logy navíc zachovávají kontext — víte přesně, který proces a PID zprávu vytvořil.
Základy¶
journalctl -u nginx # logy konkrétní služby
journalctl -fu nginx # follow mode — real-time sledování
journalctl -n 50 -u myapp # posledních 50 řádků
Filtrování¶
journalctl --since '1 hour ago' # logy za poslední hodinu
journalctl --since today # od půlnoci
journalctl -b # aktuální boot
journalctl -p err # pouze chyby a horší
journalctl -k # kernel zprávy (dmesg alternativa)
journalctl _UID=1000 # logy konkrétního uživatele
journalctl _TRANSPORT=audit # audit logy
Filtry lze kombinovat — například journalctl -u nginx -p warning --since '2 hours ago' zobrazí varování a chyby z nginx za poslední dvě hodiny. Prioritní úrovně odpovídají syslogu: emerg, alert, crit, err, warning, notice, info, debug.
Formáty a grep¶
journalctl -u nginx -o json-pretty # strukturovaný JSON výstup
journalctl -u nginx -o cat # čistý text bez metadat
journalctl -u myapp --grep 'error' # full-text hledání
journalctl -u myapp -o verbose # všechna metadata
JSON výstup je užitečný pro strojové zpracování — lze ho posílat do jq pro analýzu nebo do externích log management systémů.
Správa¶
journalctl --disk-usage # kolik místa logy zabírají
journalctl --vacuum-size=500M # omezit na 500 MB
journalctl --vacuum-time=30d # smazat starší než 30 dní
Pro trvalé nastavení upravte /etc/systemd/journald.conf — parametry SystemMaxUse a MaxRetentionSec řídí maximální velikost a stáří logů. Po změně restartujte systemd-journald.
Journal je váš přítel¶
Mocné filtrování logů přímo na serveru pokryje většinu diagnostických scénářů. Pro centralizované logování z více serverů zvažte Elasticsearch/OpenSearch s Fluentd nebo Grafana Loki s Promtail.