journalctl Här ska vi gå igenom hur man läser ett Linuxsystems loggar med hjälp av journalctl, som är en del av systemd.

Är du intresserad av hur systemctl fungerar för att hantera tjänster så läs gärna den förgående artikeln om just detta.

Läsa loggar

För att visa hela loggen som systemd har, alltifrån tjänster till kärnan kan vi köra journalctl utan några argument. Detta visar hela loggen i en pager, normalt less eller more.

Filtrera loggarna

För att bara visa loggar sedan den senaste starten av systemet används flaggan -b, alltså journalctl -b.

För att bara visa loggar som har att göra med en specifik tjänst, till exempel SSH-demonen, anges detta på följande sätt: journalctl -u sshd.

Vill du bara visa SSH-demonens loggar sedan den senaste starten av systemet kan vi lägga till -b flaggan; journalctl -u sshd -b.

Är vi bara ute efter de 10 senaste logghändelserna kan vi lägga till -n för newest. Här kan vi också specificera antalet händelser. Exempelvis för de 15 senaste logghändelserna för SSH, sedan den senaste omstarten, hade då blivit journalctl -u sshd -b -n 15. Det går alltså utmärkt att kombinera -u, -b, -n och de flesta andra flaggor.

För att bara visa logghändelser från kärnan används flaggan -k för kernel. Exempelvis för att visa alla logghändelser i kärnan från den senaste omstarten: journalctl -k -b.

Via datum och klockslag

Det går också att specificera klockslag, för att på så sätt enklare lokalisera fel som man vet inträffat vid en specifik dag eller tidpunkt.

Det enklaste är att bara ange ett startdatum. Detta görs med --since, exempelvis journalctl --since "2018-06-18 02:10". Man kan dock förfina detta genom att även ange ett slutdatum med --until på följande sätt: journalctl --since "2018-06-18 02:10" --until "2018-06-18 03:00". Nu visas bara logghändelser som inträffat under tidsspannet på 50 minuter mellan kl. 02:10 och 03:00. Detta går i sin tur att kombinera med exempelvis en specifik tjänst med -u.

Följa loggar

Att kunna följa logghändelser i realtid är perfekt när vi laborerar med systemet eller någon tjänst. För att hela tiden se de senaste logghändelserna på skärmen efterhand som de sker använder vi -f för follow: journalctl -f.

Även detta kan vi kombinera med andra flaggor. Exempelvis för att övervaka SSH-demonen kan vi använda journalctl -u sshd -f. Vi får då se till exempel felaktiga inloggningsförsök i realtid.

[root@centos7 ~]# journalctl -u sshd -f
-- Logs begin at sön 2018-06-17 21:46:52 CEST. --
jun 17 21:46:56 centos7.nixnet.jke systemd[1]: Starting OpenSSH server daemon...
jun 17 21:46:56 centos7.nixnet.jke sshd[996]: Server listening on 0.0.0.0 port 22.
jun 17 21:46:56 centos7.nixnet.jke sshd[996]: Server listening on :: port 22.
jun 17 21:46:56 centos7.nixnet.jke systemd[1]: Started OpenSSH server daemon.
jun 17 21:47:16 centos7.nixnet.jke sshd[1458]: Accepted password for jake from 192.168.0.15 port 50760 ssh2
jun 18 02:19:58 centos7.nixnet.jke sshd[1982]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=red-dwarf.nixnet.jke  user=jake
jun 18 02:20:00 centos7.nixnet.jke sshd[1982]: Failed password for jake from 192.168.0.15 port 54004 ssh2
jun 18 02:20:00 centos7.nixnet.jke sshd[1982]: Failed password for jake from 192.168.0.15 port 54004 ssh2
jun 18 02:20:01 centos7.nixnet.jke sshd[1982]: Failed password for jake from 192.168.0.15 port 54004 ssh2
jun 18 02:20:01 centos7.nixnet.jke sshd[1982]: Connection closed by 192.168.0.15 port 54004 [preauth]

Konfigurera journald

Systemd-demonen som sköter om loggarna heter journald och konfigureras i filen /etc/systemd/journald.conf. För att se vad som kan ändras och konfigureras i denna filen finns några exempel redan i filen. För att bättre förstå vad som går att konfigurera rekommenderar jag dig att läsa manualen för filen journald.conf med kommandot man journald.conf.

Vidare läsning

För ytterligare exempel på hur det går att sortera loggarna med journalctl-verktyget, rekommenderar jag manualen med man journalctl.