Linux-Protokollierungsgrundlagen (2023)

In diesem Artikel werden die Grundlagen der Protokollierung in Linux-Betriebssystemen erläutert. Wir erklären, was Linux-Protokolle sind, wo sie sich befinden und wie sie interpretiert werden können. Durch die Bereitstellung detaillierter Informationen möchten wir Ihnen helfen, Ihre Linux-Protokolle effektiv zu nutzen und Probleme zu diagnostizieren.

Linux-Systemprotokolle

Linux verfügt über ein spezielles Verzeichnis zur Speicherung von Protokollen, das als /var/log bezeichnet wird. In diesem Verzeichnis werden Protokolle des Betriebssystems selbst, von Diensten und verschiedenen Anwendungen auf dem System gespeichert. Hier ist ein Beispiel für die Struktur dieses Verzeichnisses auf einem typischen Ubuntu-System:

  • /var/log/syslog und /var/log/messages speichern alle globalen Systemaktivitätsdaten, einschließlich Startnachrichten. Debian-basierte Systeme wie Ubuntu speichern dies in /var/log/syslog, während Red Hat-basierte Systeme wie RHEL oder CentOS /var/log/messages verwenden.
  • /var/log/auth.log und /var/log/secure speichern alle sicherheitsrelevanten Ereignisse wie Anmeldungen, Aktionen des Root-Benutzers und Ausgaben von Plug-and-Play-Authentifizierungsmodulen (PAM). Ubuntu und Debian verwenden /var/log/auth.log, während Red Hat und CentOS /var/log/secure verwenden.
  • /var/log/kern.log speichert Kernelereignisse, Fehler- und Warnungsprotokolle, die besonders hilfreich bei der Fehlerbehebung von benutzerdefinierten Kernels sind.
  • /var/log/cron speichert Informationen über geplante Aufgaben (Cron-Jobs). Verwenden Sie diese Daten, um die erfolgreiche Ausführung Ihrer Cron-Jobs zu überprüfen.

Einige Anwendungen schreiben auch Protokolldateien in dieses Verzeichnis. Zum Beispiel schreibt der Apache-Webserver Protokolle in das Verzeichnis /var/log/apache2 (unter Debian), während MySQL Protokolle in das Verzeichnis /var/log/mysql schreibt. Einige Anwendungen protokollieren auch über Syslog, worauf wir im nächsten Abschnitt eingehen werden.

Was ist Syslog?

Syslog ist ein Standard zur Erstellung und Übertragung von Protokollen. Das Wort "Syslog" kann sich auf Folgendes beziehen:

  • Der Syslog-Dienst empfängt und verarbeitet Syslog-Nachrichten und lauscht auf Ereignisse, indem er einen Socket erstellt, der sich unter /dev/log befindet und von Anwendungen beschrieben werden kann. Er kann Nachrichten in eine lokale Datei schreiben oder Nachrichten an einen entfernten Server weiterleiten. Es gibt verschiedene Syslog-Implementierungen, darunter rsyslogd und syslog-ng.
  • Das Syslog-Protokoll (RFC 5424) ist ein Transportprotokoll, das festlegt, wie Protokolle über ein Netzwerk übertragen werden. Es handelt sich auch um ein Datenformat, das definiert, wie Nachrichten strukturiert sind. Standardmäßig verwendet es Port 514 für Klartextnachrichten und Port 6514 für verschlüsselte Nachrichten.
  • Eine Syslog-Nachricht ist ein Protokoll, das im Syslog-Nachrichtenformat formatiert ist und aus einem standardisierten Header und einer Nachricht besteht, die den Inhalt des Protokolls enthält.

Da Syslog Nachrichten an entfernte Server weiterleiten kann, wird es häufig verwendet, um Systemprotokolle an Protokollverwaltungslösungen wie SolarWinds® Loggly® und SolarWinds Papertrail™ weiterzuleiten.

RFC 3164 vs. RFC 5424

Obwohl RFC 5424 das aktuelle Syslog-Protokoll ist, ist es nicht der einzige Standard, den Sie finden werden. RFC 3164 (auch als "BSD-Syslog" oder "altes Syslog" bezeichnet) ist ein älteres Syslog-Format, das immer noch von vielen Geräten verwendet wird. In der Praxis werden Administratoren wahrscheinlich Syslog-Nachrichten sehen, die sowohl das RFC 3164- als auch das RFC 5424-Format verwenden.

Ein deutlicher Hinweis auf eine RFC 3164-Syslog-Nachricht ist das Fehlen strukturierter Daten und Zeitstempel im Format "Mmm dd hh:mm:ss".

Hier sind einige Beispiele dafür, wie BSD-Nachrichten aussehen, unter Verwendung von Abschnitt 5.4 von RFC 3164 als Referenz:

<34>Nov 11 11:11:11 pepeggserver su: 'su admin' failed for user1 on /dev/pts/0
<13>Nov 11 11:11:11 198.51.100.11 Read the docs!

In diesem Artikel konzentrieren wir uns auf das neuere RFC 5424-Protokoll, aber behalten Sie RFC 3164 im Hinterkopf, wenn Sie Nachrichten sehen, die nicht dem RFC 5424-Standard entsprechen.

Syslog-Format und Felder

Syslog-Nachrichten enthalten einen standardisierten Header mit mehreren Feldern. Dazu gehören der Zeitstempel, der Name der Anwendung, die das Ereignis generiert hat, der Ort im System, an dem die Nachricht ursprünglich entstanden ist, und ihre Priorität. Sie können dieses Format in der Konfigurationsdatei Ihrer Syslog-Implementierung ändern, aber die Verwendung des Standardformats erleichtert das Parsen, Analysieren und Weiterleiten von Syslog-Ereignissen.

Hier ist ein Beispiel für eine Protokollnachricht im Standardformat. Sie stammt vom SSH-Daemon (sshd), der Fernanmeldungen zum System steuert. Diese Nachricht beschreibt einen fehlgeschlagenen Anmeldeversuch:

Jun 4 22:14:15 server1 sshd[41458] : Failed password for root from 10.0.2.2 port 22 ssh2

Sie können Ihren Syslog-Nachrichten auch zusätzliche Felder hinzufügen. Wiederholen wir das letzte Ereignis, nachdem wir einige neue Felder hinzugefügt haben. Wir verwenden die folgende rsyslog-Vorlage, die die Priorität (<%pri%>), die Protokollversion (%protocol-version%) und das Datum im RFC 3339-Format (%timestamp:::date-rfc3339%) hinzufügt:

<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% %msg%n

Dies erzeugt das folgende Protokoll:

<34>1 2019-06-05T22:14:15.003Z server1 sshd - - pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.2.2

Im Folgenden finden Sie Beschreibungen einiger der am häufigsten verwendeten Syslog-Felder beim Suchen oder Beheben von Problemen.

Priorität

Das Prioritätsfeld oder kurz "pri" ("<34>" im Beispiel) gibt an, wie dringend oder schwerwiegend das Ereignis ist. Es handelt sich um eine Kombination aus zwei numerischen Feldern: der Einrichtung (facility) und der Schwere (severity). Die Einrichtung gibt den Typ des Prozesses an, der das Ereignis erstellt hat, von 0 für Kernelnachrichten bis 23 für lokale Anwendungen. Die Schwere reicht von 0 bis 7, wobei 0 einen Notfall und 7 ein Debug-Ereignis angibt.

Die Priorität kann auf zwei Arten ausgegeben werden. Die erste ist als einzelne Zahl, prival, die als das Produkt des Werts des Einrichtungsfelds mit acht berechnet wird; das Ergebnis wird dann zum Wert des Schwerefelds addiert: (Einrichtung)(8) + (Schwere). Die zweite ist pri-text, die im Zeichenkettenformat "Einrichtung.Schwere" ausgegeben wird. Das letztere Format ist oft einfacher zu lesen und zu durchsuchen, benötigt jedoch mehr Speicherplatz.

Zeitstempel

Das Zeitstempelfeld ("2019-06-05T22:14:15.003Z" im obigen Beispiel) gibt an, wann die Nachricht auf dem sendenden System generiert wurde. Der Beispiel-Zeitstempel gliedert sich wie folgt auf:

  • "2019-06-05" ist das Jahr, der Monat und der Tag.
  • "T" ist ein erforderliches Element des Zeitstempelfelds und trennt das Datum und die Uhrzeit.
  • "22:14:15.
Top Articles
Latest Posts
Article information

Author: Gregorio Kreiger

Last Updated: 11/11/2023

Views: 5750

Rating: 4.7 / 5 (77 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Gregorio Kreiger

Birthday: 1994-12-18

Address: 89212 Tracey Ramp, Sunside, MT 08453-0951

Phone: +9014805370218

Job: Customer Designer

Hobby: Mountain biking, Orienteering, Hiking, Sewing, Backpacking, Mushroom hunting, Backpacking

Introduction: My name is Gregorio Kreiger, I am a tender, brainy, enthusiastic, combative, agreeable, gentle, gentle person who loves writing and wants to share my knowledge and understanding with you.