Betriebssystem-Protokolle bieten eine fülle von diagnostischen Informationen über Ihren computer, und Linux ist keine Ausnahme. Alles, von Kernel-Ereignissen bis hin zu Benutzeraktionen, wird von Linux protokolliert, sodass Sie fast jede auf Ihren Servern ausgeführte Aktion sehen können. In diesem Abschnitt erklären wir, was Linux-Protokolle sind, wo Sie sie finden und wie Sie interpretiert werden.
Linux-Systemprotokolle
Linux verfügt über ein spezielles Verzeichnis zum Speichern von Protokollen mit dem Namen ., Dieses Verzeichnis enthält Protokolle vom Betriebssystem selbst, Dienste und verschiedene Anwendungen, die auf dem System ausgeführt werden. So sieht dieses Verzeichnis auf einem typischen Ubuntu-System aus.
Zu den wichtigsten Linux-Systemprotokollen gehören:
- und
/var/log/messages
Speichern Sie alle globalen Systemaktivitätsdaten, einschließlich Startmeldungen. Debian-basierte Systeme wie Ubuntu speichern dies in , während Red Hat-basierte Systeme wie RHEL oder CentOS/var/log/messages
., -
/var/log/auth.log
und/var/log/secure
speichern alle sicherheitsrelevanten Ereignisse wie Anmeldungen, Root-Benutzeraktionen und die Ausgabe von steckbaren Authentifizierungsmodulen (PAM). Ubuntu und Debian verwenden/var/log/auth.log
, während Red Hat und CentOS/var/log/secure
. -
/var/log/kern.log
speichert Kernel-Ereignisse, Fehler und Warnprotokolle, die besonders hilfreich für die Fehlerbehebung bei benutzerdefinierten Kerneln sind. -
/var/log/cron
speichert Informationen zu geplanten Aufgaben (Cron-Jobs)., Verwenden Sie diese Daten, um zu überprüfen, ob Ihre Cron-Jobs erfolgreich ausgeführt werden.
Einige Anwendungen schreiben auch Protokolldateien in dieses Verzeichnis. Beispielsweise 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 melden sich auch über Syslog an, was wir im nächsten Abschnitt erläutern werden.
syslog
Was ist Syslog?
Syslog ist ein Standard zum Erstellen und Übertragen von Protokollen. Das Wort „syslog“ kann sich auf Folgendes beziehen.,
- Der Syslog-Dienst, der Syslog-Nachrichten empfängt und verarbeitet. Es hört auf Ereignisse, indem es einen Socket unter
/dev/log
erstellt, in den Anwendungen schreiben können. Es kann Nachrichten in eine lokale Datei schreiben oder Nachrichten an einen Remote-Server weiterleiten. Es gibt verschiedene Syslog-Implementierungen, einschließlich rsyslogd und syslog-ng. - Das Syslog-Protokoll (RFC 5424), ein Transportprotokoll, das angibt, wie Protokolle über ein Netzwerk übertragen werden. Es ist auch 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, bei der es sich um ein beliebiges Protokoll handelt, das im Syslog-Nachrichtenformat formatiert ist. Eine Syslog-Nachricht besteht aus einem standardisierten Header und einer Nachricht, 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.
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 Speicherort im System, aus dem die Nachricht stammt, 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 Routen von Syslog-Ereignissen.
Hier ist eine Beispielprotokollnachricht mit dem Standardformat. Es stammt vom sshd-Daemon, der Remote-Anmeldungen am System steuert., Diese Meldung beschreibt einen fehlgeschlagenen Anmeldeversuch:
Jun 4 22:14:15 server1 sshd : Failed password for root from 10.0.2.2 port 22 ssh2
<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% %msg%n
Dies erzeugt das folgende Protokoll:
Unten finden Sie Beschreibungen einiger der am häufigsten verwendeten Syslog-Felder bei der Suche oder Fehlerbehebung.
Zeitstempel
Das Feld Zeitstempel gibt die Uhrzeit und das Datum an, an denen die Nachricht auf dem System generiert wurde, das die Nachricht sendet. Der Beispielzeitstempel gliedert sich wie folgt:
- „2019-06-05“ ist das Jahr, Monat und Tag.
- “ T “ ist ein erforderliches Element des Zeitstempelfelds, das Datum und Uhrzeit trennt.,
- „22:14:15.003″ist die 24-Stunden-format der Zeit, einschließlich der Anzahl der Millisekunden (003).
- „Z“gibt die UTC-Zeit. Anstelle von z hätte das Beispiel einen Offset wie -08:00 enthalten können, der angibt, dass die Zeit um acht Stunden von UTC versetzt ist.
Hostname
Das Feld Hostname (im obigen Beispiel“ server1″) gibt den Namen des Hosts oder Systems an, das die Nachricht ursprünglich gesendet hat.
App-Name
Das Feld app-name (im Beispiel“sshd:auth“) gibt den Namen der Anwendung an, die die Nachricht gesendet hat.,
Priorität
Das Prioritätsfeld oder kurz pri („<„> “ im obigen Beispiel) gibt an, wie dringend oder schwer das Ereignis ist. Es ist eine Kombination aus zwei numerischen Feldern: die Einrichtung und der Schweregrad. Die Einrichtung gibt den Prozesstyp an, der das Ereignis erstellt hat und reicht von 0 für Kernelmeldungen bis 23 für lokale Anwendungen. Der Schweregrad reicht von 4-7, wobei 0 einen Notfall und 7 ein Debug-Ereignis anzeigt.
Pri kann auf zwei Arten ausgegeben werden., Die erste ist als eine einzelne Zahl, prival, die als Facility-Feldwert multipliziert mit acht berechnet wird, dann wird das Ergebnis zum Schweregrad-Feldwert addiert: (facility)(8) + (severity). Der zweite ist pri-text, der im Zeichenfolgenformat „“ ausgegeben wird.schwere”. Das letztere Format kann oft einfacher zu lesen und zu suchen sein, benötigt aber mehr Speicherplatz.
Protokollierung mit Systemd
Viele Linux-Distributionen werden mit systemd ausgeliefert, einem Prozess-und Service-Manager. Systemd implementiert einen eigenen Protokollierungsdienst namens journald, der syslog ersetzen oder ergänzen kann., Journald protokolliert sich deutlich anders als systemd, weshalb es einen eigenen Abschnitt im Ultimate Guide to Logging hat. Weitere Informationen zur Protokollierung über systemd finden Sie im Abschnitt Systemd-Protokollierung.