Verwalten der Systemprotokolle von SLE Micro
- WAS?
Die Analyse der Systemprotokolldateien ist eine der wichtigsten Aufgaben bei der Analyse des Systems. Tatsächlich sollte ein Blick in die Systemprotokolldateien das Erste sein, was Sie bei der Wartung oder Fehlerbehebung eines Systems tun. SLE Micro protokolliert automatisch fast alles, was auf dem System passiert, und zwar im Detail.
- WARUM?
Dieser Artikel enthält eine Anleitung, wie Sie die Vorgänge auf Ihrem System anhand der Systemprotokolle untersuchen können.
- AUFWAND
Es dauert etwa 20 Minuten, diesen Artikel zu lesen und zu verstehen.
- ZIEL
Sie erhalten einen Überblick darüber, wo sich die Protokolldateien befinden und wie Sie sie verwalten können.
- ANFORDERUNGEN
root
-Rechte.
1 Wo finde ich Systemprotokolldateien? #
SLE Micro protokolliert verschiedene Arten von Meldungen, zum Beispiel vom Kernel, SELinux oder anderen Diensten.
Kernelmeldungen und Meldungen von Systemdiensten, die mit systemd
registriert sind, werden im Journal systemd
protokolliert (siehe Abschnitt 4, „Das systemd
-Protokollierungssystem: Journal“). Andere Systemprotokolldateien befinden sich im Verzeichnis /var/log
. SELinux-Meldungen werden in /var/log/audit/audit.log
protokolliert. Detaillierte Informationen finden Sie in SELinux
troubleshooting.
Die folgende Liste gibt einen Überblick über alle Systemprotokolldateien, die in SLE Micro nach einer Standardinstallation gefunden werden. Je nach Umfang Ihrer Installation enthält /var/log
auch Protokolldateien von anderen Diensten und Anwendungen, die hier nicht aufgeführt sind. Einige der unten beschriebenen Dateien und Verzeichnisse sind „Platzhalter“ und werden nur verwendet, wenn die entsprechende Anwendung installiert ist. Die meisten Protokolldateien sind nur für den root
-Benutzer sichtbar. In der Regel können Sie diese Dateien mit einem Editor ansehen, da sie im reinen Textformat vorliegen.
utmp
, wtmp
und lastlog
wurden aus SLE Micro entfernt und werden nicht mehr unterstützt. Wenn es Anwendungen gibt, die in diese Protokolldateien schreiben, denken Sie daran, dass die Protokolldateien dann unvollständig sind. wtmp
wurde ersetzt durch wtmpdb
, lastlog
durch lastlog2
.
-
audit/
Protokolle aus dem Audit-Framework.
-
ConsoleKit/
Protokolle des Daemons
ConsoleKit
(Daemon zur Verfolgung, welche Benutzer angemeldet sind und wie sie mit dem Computer interagieren).-
cups/
Zugriffs- und Fehlerprotokolle des Common Unix Printing System (
cups
).-
firewalld
Firewall-Protokolle.
-
krb5/
Protokolldateien des Kerberos-Netzwerkauthentifizierungssystems.
-
chrony/
Protokolle des Network Time Protocol Daemon (
chrony
).-
YaST2/
Alle YaST-Protokolldateien.
-
zypp/
libzypp
-Protokolldateien. In diesen Dateien finden Sie den Verlauf der Paketinstallation.-
zypper.log
Protokolle des Kommandozeilen-Installationsprogramms
zypper
.
2 Anzeigen und Analysieren von /var/log
-Dateien #
Sie können Klartextprotokolle in /var/log
mit CLI-Kommandos anzeigen und analysieren, wie weiter unten beschrieben.
Verwenden Sie zum Anzeigen von Protokolldateien die Kommandos less
oder more
. Verwenden Sie head
und tail
, um den Anfang oder das Ende einer Protokolldatei anzuzeigen. Wenn Sie Einträge, die an eine Protokolldatei angehängt wurden, in Echtzeit ansehen möchten, verwenden Sie tail
-f
. Informationen über die Verwendung dieser Tools finden Sie in den jeweiligen Manpages.
Mit grep
können Sie in Protokolldateien nach Zeichenketten oder regulären Ausdrücken suchen. awk
ist nützlich zum Analysieren und Neuschreiben von Protokolldateien.
3 Verwalten von Protokolldateien mit logrotate
#
Die Protokolldateien unter /var/log
wachsen täglich und werden schnell sehr groß. logrotate
ist ein Tool, das Sie bei der Verwaltung von Protokolldateien und deren Wachstum unterstützt. Es ermöglicht das automatische Drehen, Entfernen, Komprimieren und Versenden von Protokolldateien. Protokolldateien können in regelmäßigen Abständen (täglich, wöchentlich oder monatlich) oder bei Überschreiten einer bestimmten Größe bearbeitet werden.
logrotate
wird in der Regel täglich von systemd
ausgeführt und ändert daher die Protokolldateien normalerweise nur einmal am Tag. Es treten jedoch Ausnahmen auf, wenn eine Protokolldatei aufgrund ihrer Größe geändert wird, wenn logrotate
mehrmals am Tag ausgeführt wird wurde oder wenn --force
aktiviert ist. Sehen Sie sich die Datei /var/lib/misc/logrotate.status
an, um herauszufinden, wann eine bestimmte Datei zuletzt rotiert wurde.
logrotate
kann nach Ihren Bedürfnissen konfiguriert werden. Detaillierte Informationen finden Sie in Abschnitt 3.1, „Konfigurieren logrotate
“.
3.1 Konfigurieren logrotate
#
Die Hauptkonfigurationsdatei logrotate.conf
legt beispielsweise fest, wie oft die Protokolle rotiert werden sollen oder welches Tool für die Datenkomprimierung verwendet wird. Jeder Dienst kann seine eigene logrotate-Konfiguration in /etc/logrotate.d/
haben.
3.1.1 Anpassen von logrotate.conf
#
Die Standardversion von logrotate.conf
befindet sich im Verzeichnis /usr/etc/
. Wenn die Standardeinstellung nicht Ihren Anforderungen entspricht, kopieren Sie die Datei nach /etc/logrotate.conf
und ändern Sie die Konfigurationswerte dort. Ändern Sie die Version /usr/etc/
nicht, da sie bei einer Systemaktualisierung überschrieben werden könnte. Sie können die folgenden Werte ersetzen:
-
weekly
Die Häufigkeit der Protokollrotation. Sie können jeden dieser Werte verwenden:
hourly
,daily
,weekly
,monthly
oderyearly
.-
maxage
Sie können eine Anzahl von Tagen angeben, die die Protokolle aufbewahrt werden.
-
rotate 4
Die Zahl bestimmt die Anzahl der Protokollrotationen zur Aufbewahrung der rotierten Protokolle. Wenn sie auf
rotate 0
festgelegt ist, werden die Protokolle sofort gelöscht. Wenn es aufrotate -1
festgelegt ist, werden die Protokolle erst entfernt, wenn sie den Wertmaxage
erreichen.-
dateext
Wenn die Option in der Konfigurationsdatei vorhanden ist, erhalten die Namen der rotierten Protokolldateien eine Erweiterung mit einem Datum im Format:
logname.YYYYMMDD
. Wenn nicht vorhanden, ist das Standardschema für Dateinamen:logname.1
,logname.2
.-
compress
Wenn Sie diese Option auskommentieren, werden die Protokolle nicht komprimiert.
compresscmd
unduncompresscmd
Hier können Sie die standardmäßigen Komprimierungs- und Dekomprimierungswerkzeuge ändern, indem Sie die entsprechenden absoluten Pfade zu den Werkzeugen festlegen.
-
include PATH
Sie können den Standardspeicherort der Datei mit den Informationen zur Protokollrotation ändern. Der Standardwert ist
/var/lib/misc/logrotate.status
.
3.1.2 Dienstspezifische logrotate-Konfiguration #
Dienste und Anwendungen können eine spezielle logrotate-Konfiguration in /etc/logrotate.d
haben. Neben den in Abschnitt 3.1.1, „Anpassen von logrotate.conf
“ genannten Optionen können Sie auch die folgenden Konfigurationen verwenden:
-
missingok
Die Protokollrotation meldet keine Fehler, wenn eine der angegebenen Protokolldateien fehlt.
-
notifempty
Eine leere Protokolldatei wird nicht rotiert.
-
delaycompress
Die Komprimierung von rotierten Protokollen wird auf die nächste Protokollrotation verschoben.
-
sharedscripts
Bezeichnet einen Abschnitt mit Skripten, die unabhängig von der Anzahl der rotierenden Protokolle nur einmal ausgeführt werden sollen. Wenn Sie diese Option auslassen, werden die Skripte für jede zu rotierende Protokolldatei ausgeführt.
-
size
Legt die Größe fest, die eine Protokolldatei erreichen kann, bevor die Protokollrotation eingeleitet wird. Diese Option ignoriert möglicherweise die Zeitplanung. Der Wert kann in Megabytes (M), Kilobytes (K) oder Bytes (B) angegeben werden.
-
minsize
Die Protokolle werden gemäß dem angegebenen Zeitplan rotiert, wenn ihre Größe diesen Wert überschreitet. Der Wert kann in Megabytes (M), Kilobytes (K) oder Bytes (B) angegeben werden.
-
maxsize
Gibt die maximale Größe der Protokolldatei an. Wenn diese Grenze erreicht ist, wird die Rotation auch dann ausgelöst, wenn das Zeitintervall noch nicht beendet ist. Der Wert kann in Megabytes (M), Kilobytes (K) oder Bytes (B) angegeben werden.
4 Das systemd
-Protokollierungssystem: Journal #
systemd
umfasst ein eigenes Protokollierungssystem, das als Journal bezeichnet wird. Das Journal selbst ist ein Systemdienst und wird mit systemd
—systemd-journald.service
verwaltet.
Der Dienst erfasst und speichert Protokolldaten. Die Daten basieren dabei auf den Protokollinformationen aus dem Kernel, von den Benutzerprozessen, aus der Standardeingabe und aus den Fehlern von Systemdiensten. Der systemd-journald
-Dienst wird standardmäßig aktiviert und gestartet.
Das Journal speichert die Protokolldaten in /var/log/journal/
.
4.1 Verwendung des Kommandos journalctl
#
In diesem Abschnitt finden Sie einige häufig verwendete, nützliche Optionen, mit denen Sie das Standardverhalten von journalctl
optimieren.
Das Kommando journalctl
hat die folgende Syntax:
journalctl [options…] [matches…]
Sollen alle Journaleinträge für eine bestimmte ausführbare Datei angezeigt werden, geben Sie den vollständigen Pfad zu dieser Datei an:
>
sudo
journalctl /usr/lib/systemd/systemd
Das Kommando akzeptiert die folgenden Optionen:
- -f
Zeigt lediglich die jüngsten Protokollmeldungen an und gibt neue Protokolleinträge aus, sobald sie zum Journal hinzugefügt werden.
- -e
Gibt die Meldungen aus und springt an das Ende des Journals, so dass im Pager die aktuellen Einträge sichtbar sind.
- -r
Gibt die Meldungen des Journals in umgekehrter Reihenfolge aus (die jüngsten Einträge zuerst).
- -k
Zeigt nur Kernel-Meldungen an. Dies entspricht der Feldzuordnung
_TRANSPORT=kernel
.- -u
Zeigt nur Meldungen für die angegebene
systemd
-Einheit an. Dies entspricht der Feldzuordnung_SYSTEMD_UNIT=UNIT
.>
sudo
journalctl -u apache2 [...] Jun 03 10:07:11 pinkiepie systemd[1]: Starting The Apache Webserver... Jun 03 10:07:12 pinkiepie systemd[1]: Started The Apache Webserver.
4.2 Filtern von Journal-Protokollen #
Wenn journalctl
ohne Optionen aufgerufen wird, gibt das Kommando den gesamten Inhalt des Journals aus, wobei die ältesten Einträge zuerst aufgeführt werden. Die Ausgabe kann nach bestimmten Optionen oder Journalfeldern gefiltert werden.
4.2.1 Filtern nach Zeitraum #
Sie können die Ausgabe von journalctl
durch Angabe des Start- oder Enddatums filtern. Für Datumsangaben gilt das Format 2014-06-30 9:17:16
. Wenn Sie keine Uhrzeit angeben, wird Mitternacht (0:00 Uhr) angenommen. Wenn die Sekundenangabe fehlt, wird :00
angenommen. Wenn Sie kein Datum angeben, wird das aktuelle Datum angenommen. Statt eines numerischen Ausdrucks können Sie die Schlüsselwörter „gestern, “ „heute“ oder „morgen angeben.“ Diese Wörter bezeichnen Mitternacht am Tag vor dem aktuellen Tag, am aktuellen Tag bzw. am Tag nach dem aktuellen Tag. Das Schlüsselwort „jetzt“ verweist auf die aktuelle Uhrzeit. Auch relative Zeitangaben mit dem Präfix -
oder +
sind möglich. Diese Zeitangaben verweisen dann entsprechend auf eine Uhrzeit vor oder nach der aktuellen Uhrzeit.
Nur neue Meldungen ab jetzt anzeigen und Ausgabe entsprechend aktualisieren:
>
sudo
journalctl --since "now" -f
Alle Meldungen von Mitternacht bis 3:20 Uhr anzeigen.
>
sudo
journalctl --since "today" --until "3:20"
4.2.2 Filtern nach Bootnummer #
journalctl
kann die Meldungen nach einem bestimmten System-Bootvorgang filtern. Zum Anzeigen einer Liste mit allen verfügbaren Bootvorgängen führen Sie Folgendes aus:
>
sudo
journalctl --list-boots -1 097ed2cd99124a2391d2cffab1b566f0 Mon 2014-05-26 08:36:56 EDT—Fri 2014-05-30 05:33:44 EDT 0 156019a44a774a0bb0148a92df4af81b Fri 2014-05-30 05:34:09 EDT—Fri 2014-05-30 06:15:01 EDT
Die erste Spalte enthält den Boot-Offset 0
für den aktuellen Boot, -1
für den vorherigen, -2
für den davor usw. Die zweite Spalte enthält die Boot-ID, gefolgt von den Zeitstempeln für den jeweiligen Boot.
Alle Meldungen für den aktuellen Bootvorgang anzeigen:
>
sudo
journalctl -b
Wenn Sie die Journalmeldungen für den vorangegangenen Bootvorgang abrufen möchten, hängen Sie einen Offset-Parameter an. Im folgenden Beispiel werden die Meldungen für den vorangegangenen Bootvorgang ausgegeben:
>
sudo
journalctl -b -1
Alternativ können Sie die Bootmeldungen nach der Boot-ID auflisten. Verwenden Sie hierzu das Feld _BOOT_ID:
>
sudo
journalctl _BOOT_ID=156019a44a774a0bb0148a92df4af81b
4.2.3 Filtern nach Feldern #
Sie können die Ausgabe des Journals nach bestimmten Feldern filtern. Die Syntax für ein abzugleichendes Feld lautet FIELD_NAME=MATCHED_VALUE
, beispielsweise _SYSTEMD_UNIT=httpd.service
. Wenn Sie mehrere Filterkriterien in einer einzigen Abfrage angeben, werden die Ausgabemeldungen noch stärker gefiltert. Eine Liste der Standardfelder finden Sie auf der man-Seite man 7 systemd.journal-fields
.
Meldungen anzeigen, die von einer bestimmten Prozess-ID erzeugt wurden:
>
sudo
journalctl _PID=1039
Meldungen anzeigen, die zu einer bestimmten Benutzer-ID gehören:
# journalctl _UID=1000
Meldungen aus dem Kernel-Ring-Puffer anzeigen (entspricht der Ausgabe von dmesg
):
>
sudo
journalctl _TRANSPORT=kernel
Meldungen aus der Standard- oder Fehlerausgabe des Services anzeigen:
>
sudo
journalctl _TRANSPORT=stdout
Nur Meldungen anzeigen, die von einem bestimmten Service erzeugt wurden:
>
sudo
journalctl _SYSTEMD_UNIT=avahi-daemon.service
Wenn Sie zwei verschiedene Felder angeben, werden nur solche Einträge zurückgegeben, die beide Ausdrücke gleichzeitig erfüllen:
>
sudo
journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1488
Wenn Sie zwei Kriterien für dasselbe Feld angeben, werden alle Einträge zurückgegeben, die einen dieser Ausdrücke erfüllen:
>
sudo
journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service
Mit dem Begrenzungszeichen +
verbinden Sie zwei Ausdrücke mit einem logischen OR
. Im folgenden Beispiel werden alle Meldungen aus dem Avahi-Service mit der Prozess-ID 1480 zusammen mit allen Meldungen vom D-Bus-Service gezeigt:
>
sudo
journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1480 + _SYSTEMD_UNIT=dbus.service
4.3 Konfiguration von journald #
>
sudo
systemctl restart systemd-journald
4.3.1 Ändern der Größenbeschränkung für das Journal #
Die Journal-Protokolldaten belegen bis zu 10 % des Dateisystems, auf dem sich /var/log/journal
befindet. Ist /var/log/journal
beispielsweise auf einer /var
-Partition mit einer Kapazität von 30 GB gespeichert, so kann das Journal bis zu 3 GB des Festplattenspeichers belegen. Zum Bearbeiten dieser Größenbeschränkung ändern Sie die Option SystemMaxUse
(und heben Sie die Auskommentierung dieser Option auf):
SystemMaxUse=50M
4.3.2 Weiterleiten des Journals an /dev/ttyX
#
Sie können das Journal an ein Terminalgerät weiterleiten, sodass Sie an einem bevorzugten Terminalbildschirm (beispielsweise /dev/tty12
) über Systemmeldungen informiert werden. Ändern Sie die folgenden journald-Optionen:
ForwardToConsole=yes TTYPath=/dev/tty12
5 Rechtliche Hinweise #
Copyright © 2006–2024 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie in Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.