Systemd ist der Standard-Systemmanager in allen wichtigen Linux-basierten Betriebssystemen. Es stellt einen Journald-Daemon bereit, der alle Meldungen verarbeitet, die vom Kernel und den Systemdiensten erzeugt werden. Der Journald-Daemon sammelt Daten aus allen verfügbaren Quellen und speichert sie zur einfachen und dynamischen Bearbeitung in einem Binärformat. Systemd stellt ein Befehlszeilentool namens journalctl bereit, mit dem Journalprotokolle gelesen und analysiert werden können. Mit journalctl können Sie die Protokolle in Echtzeit analysieren und überwachen.
In dieser Anleitung zeigen wir Ihnen, wie Sie mit journalctl Protokolle unter Linux analysieren.
Voraussetzungen
- Ein frischer Ubuntu 20.04-Server auf der Atlantic.Net Cloud Platform
- Ein auf Ihrem Server konfiguriertes Root-Passwort
Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 20.04 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Ubuntu 20.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Journal konfigurieren
Erstellen Sie zunächst ein Verzeichnis zum Speichern des Journalprotokolls:
mkdir /var/log/journal
Legen Sie als Nächstes den richtigen Besitz mit dem folgenden Befehl fest:
chown -R root:systemd-journal /var/log/journal
Bearbeiten Sie als Nächstes die Journald-Standardkonfigurationsdatei /etc/systemd/journald.conf und definieren Sie Ihr neues Verzeichnis:
nano /etc/systemd/journald.conf
Ändern Sie die folgende Zeile:
Storage=persistent
Speichern und schließen Sie die Datei und starten Sie dann den systemd-journald-Dienst neu, um die Änderungen zu übernehmen:
systemctl restart systemd-journald
Sie können nun das Verzeichnis /var/log/journal überprüfen:
ls -l /var/log/journal
Sie sollten die folgende Ausgabe sehen:
drwxr-xr-x 2 root systemd-journal 4096 Apr 21 11:35 97bcb1f0d9aa4b339adefc87f1332d04
Verwenden Sie journalctl, um das Protokoll zu analysieren
Um alle vom Journald-Daemon gesammelten Protokolle zu drucken, führen Sie den Befehl journalctl aus:
journalctl
Ausgabe:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:40:12 UTC. -- Apr 21 07:00:15 ubuntu2004 kernel: Linux version 4.19.0-9-amd64 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) Apr 21 07:00:15 ubuntu2004 kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.19.0-9-amd64 root=UUID=d4f8c3a8-164f-4e15-a198-6124ce8719b5 ro Apr 21 07:00:15 ubuntu2004 kernel: x86/fpu: x87 FPU will use FXSAVE Apr 21 07:00:15 ubuntu2004 kernel: BIOS-provided physical RAM map: Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x0000000000100000-0x000000007ffdbfff] usable Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x000000007ffdc000-0x000000007fffffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved Apr 21 07:00:15 ubuntu2004 kernel: NX (Execute Disable) protection: active
Wenn Sie eine ausführlichere Ausgabe benötigen, führen Sie den folgenden Befehl aus:
journalctl -o verbose
Ausgabe:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:40:29 UTC. -- Wed 2021-04-21 07:00:15.461318 UTC [s=1baac74dce14445f9a6670f231104955;i=1;b=41c491f449fa44c288474cf9f14386c0;m=1ee776;t=5c0761d6627c6;x=4c88a9 _SOURCE_MONOTONIC_TIMESTAMP=0 _TRANSPORT=kernel PRIORITY=5 SYSLOG_FACILITY=0 SYSLOG_IDENTIFIER=kernel MESSAGE=Linux version 4.19.0-9-amd64 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.118-2+deb10u1 _BOOT_ID=41c491f449fa44c288474cf9f14386c0 _MACHINE_ID=97bcb1f0d9aa4b339adefc87f1332d04 _HOSTNAME=ubuntu2004 Wed 2021-04-21 07:00:15.461357 UTC [s=1baac74dce14445f9a6670f231104955;i=2;b=41c491f449fa44c288474cf9f14386c0;m=1ee79e;t=5c0761d6627ed;x=eaf7df _SOURCE_MONOTONIC_TIMESTAMP=0 _TRANSPORT=kernel SYSLOG_FACILITY=0 SYSLOG_IDENTIFIER=kernel _BOOT_ID=41c491f449fa44c288474cf9f14386c0 _MACHINE_ID=97bcb1f0d9aa4b339adefc87f1332d04 _HOSTNAME=ubuntu2004 PRIORITY=6 MESSAGE=Command line: BOOT_IMAGE=/boot/vmlinuz-4.19.0-9-amd64 root=UUID=d4f8c3a8-164f-4e15-a198-6124ce8719b5 ro
Führen Sie den folgenden Befehl aus, um alle verfügbaren Startprotokolle aufzulisten:
journalctl --list-boots
Ausgabe:
0 41c491f449fa44c288474cf9f14386c0 Wed 2021-04-21 07:00:15 UTC—Wed 2021-04-21 11:41:44 UTC
Führen Sie den folgenden Befehl aus, um alle Protokolle seit dem letzten Neustart anzuzeigen:
journalctl -b
Führen Sie den folgenden Befehl aus, um die neuesten Protokolleinträge anzuzeigen:
journalctl --lines 5
Ausgabe:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:45:13 UTC. -- Apr 21 11:45:06 ubuntu2004 sshd[12088]: Failed password for invalid user telecomadmin from 103.42.205.111 port 64471 ssh2 Apr 21 11:45:08 ubuntu2004 sshd[12088]: Connection closed by invalid user telecomadmin 103.42.205.111 port 64471 [preauth] Apr 21 11:45:13 ubuntu2004 sshd[12092]: Invalid user admin from 81.70.161.162 port 60614 Apr 21 11:45:13 ubuntu2004 sshd[12092]: pam_unix(sshd:auth): check pass; user unknown Apr 21 11:45:13 ubuntu2004 sshd[12092]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=81.70.161.162
Um das Protokoll kontinuierlich zu drucken, führen Sie den folgenden Befehl aus:
journalctl --follow
Ausgabe:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC. -- Apr 21 11:45:36 ubuntu2004 sshd[12106]: Disconnected from invalid user babi 104.131.102.169 port 54872 [preauth] Apr 21 11:45:40 ubuntu2004 sshd[12108]: Invalid user telecomadmin from 103.108.241.111 port 60842 Apr 21 11:45:40 ubuntu2004 sshd[12108]: pam_unix(sshd:auth): check pass; user unknown Apr 21 11:45:40 ubuntu2004 sshd[12108]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.108.241.111 Apr 21 11:45:41 ubuntu2004 sshd[12110]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=101.32.11.137 user=root Apr 21 11:45:42 ubuntu2004 sshd[12108]: Failed password for invalid user telecomadmin from 103.108.241.111 port 60842 ssh2 Apr 21 11:45:43 ubuntu2004 sshd[12108]: Connection closed by invalid user telecomadmin 103.108.241.111 port 60842 [preauth] Apr 21 11:45:43 ubuntu2004 sshd[12110]: Failed password for root from 101.32.11.137 port 43086 ssh2 Apr 21 11:45:45 ubuntu2004 sshd[12110]: Received disconnect from 101.32.11.137 port 43086:11: Bye Bye [preauth] Apr 21 11:45:45 ubuntu2004 sshd[12110]: Disconnected from authenticating user root 101.32.11.137 port 43086 [preauth]
Führen Sie den folgenden Befehl aus, um bestimmte dienstbezogene Protokolle wie SSH und Nginx anzuzeigen:
journalctl -u ssh.service journalctl -u nginx.service
Führen Sie den folgenden Befehl aus, um nur Kernel-bezogene Protokolle anzuzeigen;
journalctl -k
Führen Sie den folgenden Befehl aus, um Protokolle anzuzeigen, die Fehler oder kritische Einträge enthalten:
journalctl -p err -b
Ausgabe:
-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:49:21 UTC. -- Apr 21 07:00:16 ubuntu2004 ntpd[337]: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): expired less than 115 days ago Apr 21 07:00:16 ubuntu2004 ntpd[337]: bind(21) AF_INET6 fe80::200:2dff:fe3a:264e%2#123 flags 0x11 failed: Cannot assign requested address Apr 21 07:00:16 ubuntu2004 ntpd[337]: unable to create socket on ens3 (5) for fe80::200:2dff:fe3a:264e%2#123
Führen Sie den folgenden Befehl aus, um alle Protokolle von gestern anzuzeigen:
journalctl --since yesterday
Führen Sie den folgenden Befehl aus, um alle Protokolle ab 6:00 Uhr bis vor einer Stunde anzuzeigen:
journalctl --since 06:00 --until "1 hour ago"
Führen Sie den folgenden Befehl aus, um den vom Journal belegten Speicherplatz anzuzeigen:
journalctl --disk-usage
Ausgabe:
Archived and active journals take up 16.0M in the file system.
Wenn Sie alle Protokolldaten nur aus dem letzten Jahr behalten möchten, führen Sie den folgenden Befehl aus:
journalctl --vacuum-time=1years
Führen Sie den folgenden Befehl aus, um nur die letzten Protokolle anzuzeigen:
journalctl -xe
Schlussfolgerung
In der obigen Anleitung haben Sie gelernt, wie Sie mit journalctl verschiedene Systemprotokolle lesen und analysieren. Sie können jetzt system- oder anwendungsbezogene Probleme auf Ihrem VPS von Atlantic.Net aus identifizieren oder beheben.