Linux/Logging: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 6: Zeile 6:


; Protokolle sind von entscheidender Bedeutung
; Protokolle sind von entscheidender Bedeutung
* Sie speichern wichtige Informationen zu einigen Fehlern, die auf Ihrem System auftreten können.
* Sie speichern wichtige Informationen zu einigen Fehlern, die auf Ihrem System auftreten können
* Sie können auch Informationen darüber speichern, wer versucht, auf Ihr System zuzugreifen, was ein bestimmter Dienst tut oder über einen Systemabsturz, der zuvor aufgetreten ist.
* Sie können auch Informationen darüber speichern, wer versucht, auf Ihr System zuzugreifen, was ein bestimmter Dienst tut oder über einen Systemabsturz, der zuvor aufgetreten ist
== Protokollierungstypen ==
== Protokollierungstypen ==
Wenn Sie sich mit der Linux-Protokollierung befassen, müssen Sie einige Grundlagen verstehen, bevor Sie Befehle in das Terminal eingeben.
Wenn Sie sich mit der Linux-Protokollierung befassen, müssen Sie einige Grundlagen verstehen, bevor Sie Befehle in das Terminal eingeben


Unter Linux gibt es zwei Arten von Protokollierungsmechanismen:
Unter Linux gibt es zwei Arten von Protokollierungsmechanismen


* '''Kernel-Protokollierung''' : Bezieht sich auf Fehler, Warnungen oder Informationseinträge, die Ihr Kernel möglicherweise schreibt.
* '''Kernel-Protokollierung''' : Bezieht sich auf Fehler, Warnungen oder Informationseinträge, die Ihr Kernel möglicherweise schreibt
* '''Benutzerprotokollierung Diese Protokolleinträge sind''' : mit dem Benutzerbereich verknüpft und beziehen sich auf Prozesse oder Dienste, die möglicherweise auf dem Hostcomputer ausgeführt werden.
* '''Benutzerprotokollierung Diese Protokolleinträge sind''' : mit dem Benutzerbereich verknüpft und beziehen sich auf Prozesse oder Dienste, die möglicherweise auf dem Hostcomputer ausgeführt werden


Durch die Aufteilung der Protokollierung in zwei Kategorien enthüllen wir im Wesentlichen, dass der Speicher selbst unter Linux in zwei Kategorien unterteilt ist: '''User Space''' und '''Kernel Space''' .
Durch die Aufteilung der Protokollierung in zwei Kategorien enthüllen wir im Wesentlichen, dass der Speicher selbst unter Linux in zwei Kategorien unterteilt ist: '''User Space''' und '''Kernel Space'''  


==== Kernel-Protokollierung ====
==== Kernel-Protokollierung ====
Beginnen wir zunächst mit der Protokollierung, die dem Kernel-Space zugeordnet ist, der auch als Kernel-Protokollierung bezeichnet wird.
Beginnen wir zunächst mit der Protokollierung, die dem Kernel-Space zugeordnet ist, der auch als Kernel-Protokollierung bezeichnet wird


Im Kernelbereich erfolgt die Protokollierung über den '''Kernel-Ringpuffer.'''
Im Kernelbereich erfolgt die Protokollierung über den '''Kernel-Ringpuffer.'''
Zeile 25: Zeile 25:
'''Der Kernel-Ringpuffer ist ein Ringpuffer, der als erste Datenstruktur Protokollnachrichten speichert, wenn das System hochfährt.'''
'''Der Kernel-Ringpuffer ist ein Ringpuffer, der als erste Datenstruktur Protokollnachrichten speichert, wenn das System hochfährt.'''


Wenn Sie Ihren Linux-Computer starten und Protokollmeldungen auf dem Bildschirm angezeigt werden, werden diese Meldungen im Kernel-Ringpuffer gespeichert.
Wenn Sie Ihren Linux-Computer starten und Protokollmeldungen auf dem Bildschirm angezeigt werden, werden diese Meldungen im Kernel-Ringpuffer gespeichert


Die Kernel-Protokollierung wird vor der Benutzerprotokollierung gestartet (verwaltet vom Syslog-Daemon oder von rsyslog bei aktuellen Distributionen).
Die Kernel-Protokollierung wird vor der Benutzerprotokollierung gestartet (verwaltet vom Syslog-Daemon oder von rsyslog bei aktuellen Distributionen)


Der Kernel-Ringpuffer kann wie alle anderen Protokolldateien auf Ihrem System überprüft werden.
Der Kernel-Ringpuffer kann wie alle anderen Protokolldateien auf Ihrem System überprüft werden


Um Kernel-bezogene Protokolle auf Ihrem System zu öffnen, müssen Sie den " '''dmesg''' Befehl " verwenden.<blockquote>'''Hinweis''' : Sie müssen diesen Befehl als root ausführen oder über privilegierte Rechte verfügen, um den Kernel-Ringpuffer zu überprüfen.</blockquote>
Um Kernel-bezogene Protokolle auf Ihrem System zu öffnen, müssen Sie den " '''dmesg''' Befehl " verwenden.<blockquote>'''Hinweis''' : Sie müssen diesen Befehl als root ausführen oder über privilegierte Rechte verfügen, um den Kernel-Ringpuffer zu überprüfen.</blockquote>
  <code>$ dmesg</code>
  <code>$ dmesg</code>
Wie Sie sehen können, verfolgt der Kernel vom Systemstart bis zum Zeitpunkt der Ausführung des Befehls alle Aktionen, Warnungen oder Fehler, die im Kernelbereich auftreten können.
Wie Sie sehen können, verfolgt der Kernel vom Systemstart bis zum Zeitpunkt der Ausführung des Befehls alle Aktionen, Warnungen oder Fehler, die im Kernelbereich auftreten können


Wenn Ihr System Probleme beim Erkennen oder Mounten einer Festplatte hat, möchten Sie wahrscheinlich hier die Fehler überprüfen.
Wenn Ihr System Probleme beim Erkennen oder Mounten einer Festplatte hat, möchten Sie wahrscheinlich hier die Fehler überprüfen


Wie Sie sehen können, ist der Befehl dmesg eine hübsche Oberfläche, um Kernel-Protokolle anzuzeigen. Aber wie druckt der Befehl dmesg diese Ergebnisse an Sie zurück?
Wie Sie sehen können, ist der Befehl dmesg eine hübsche Oberfläche, um Kernel-Protokolle anzuzeigen. Aber wie druckt der Befehl dmesg diese Ergebnisse an Sie zurück?


Um die verschiedenen verwendeten Mechanismen aufzudecken, schauen wir uns an, welche '''Prozesse und Geräte für die Kernel-Protokollierung zuständig sind''' .
Um die verschiedenen verwendeten Mechanismen aufzudecken, schauen wir uns an, welche '''Prozesse und Geräte für die Kernel-Protokollierung zuständig sind'''  


===== Interna für die Kernel-Protokollierung =====
===== Interna für die Kernel-Protokollierung =====
Zeile 47: Zeile 47:
Wenn alles eine Datei ist, bedeutet dies auch, dass '''Geräte Dateien sind.'''
Wenn alles eine Datei ist, bedeutet dies auch, dass '''Geräte Dateien sind.'''


Unter Linux wird der Kernel-Ringpuffer durch eine Zeichengerätedatei im Verzeichnis / dev materialisiert und heißt kmsg.
Unter Linux wird der Kernel-Ringpuffer durch eine Zeichengerätedatei im Verzeichnis / dev materialisiert und heißt kmsg
  <code>$ ls -l /dev/ | grep kmsg</code>
  <code>$ ls -l /dev/ | grep kmsg</code>
Wenn wir die Beziehung zwischen dem kmsg-Gerät und dem Kernel-Ringpuffer darstellen würden, würden wir sie so darstellen.
Wenn wir die Beziehung zwischen dem kmsg-Gerät und dem Kernel-Ringpuffer darstellen würden, würden wir sie so darstellen


Wie Sie sehen können, ist das kmsg-Gerät eine '''Abstraktion,''' die zum Lesen und Schreiben in den Kernel-Ringpuffer verwendet wird.
Wie Sie sehen können, ist das kmsg-Gerät eine '''Abstraktion,''' die zum Lesen und Schreiben in den Kernel-Ringpuffer verwendet wird


Sie können es im Wesentlichen als Einstiegspunkt für User-Space-Prozesse betrachten, um in den Kernel-Ringpuffer zu schreiben.
Sie können es im Wesentlichen als Einstiegspunkt für User-Space-Prozesse betrachten, um in den Kernel-Ringpuffer zu schreiben


Das oben gezeigte Diagramm ist jedoch unvollständig, da der Kernel eine spezielle Datei verwendet, um die Kernel-Protokollinformationen in eine Datei zu kopieren.
Das oben gezeigte Diagramm ist jedoch unvollständig, da der Kernel eine spezielle Datei verwendet, um die Kernel-Protokollinformationen in eine Datei zu kopieren


Wenn wir es zusammenfassen würden, würden wir im Wesentlichen dass das '''angeben, virtuelle kmsg-Gerät als Einstiegspunkt''' für den Kernel-Ringpuffer fungiert, während die Ausgabe dieses Prozesses (die Protokollzeilen) in die Datei / proc / kmsg gedruckt wird.
Wenn wir es zusammenfassen würden, würden wir im Wesentlichen dass das '''angeben, virtuelle kmsg-Gerät als Einstiegspunkt''' für den Kernel-Ringpuffer fungiert, während die Ausgabe dieses Prozesses (die Protokollzeilen) in die Datei / proc / kmsg gedruckt wird


Diese Datei kann nur von einem einzigen Prozess analysiert werden. Dies ist meistens das Protokollierungsdienstprogramm, das im Benutzerbereich verwendet wird. Bei einigen Distributionen kann es sich um syslogd handeln, bei neueren Distributionen ist es jedoch in integriert rsyslog .
Diese Datei kann nur von einem einzigen Prozess analysiert werden. Dies ist meistens das Protokollierungsdienstprogramm, das im Benutzerbereich verwendet wird. Bei einigen Distributionen kann es sich um syslogd handeln, bei neueren Distributionen ist es jedoch in integriert rsyslog  


Das Dienstprogramm rsyslog verfügt über eine Reihe eingebetteter Module, die Kernelprotokolle in dedizierte Dateien im Dateisystem umleiten.
Das Dienstprogramm rsyslog verfügt über eine Reihe eingebetteter Module, die Kernelprotokolle in dedizierte Dateien im Dateisystem umleiten


In der wurden Kernel-Protokolle vom abgerufen, '''Vergangenheit klogd-Daemon''' auf früheren Systemen auf den meisten Distributionen jedoch durch rsyslog ersetzt.
In der wurden Kernel-Protokolle vom abgerufen, '''Vergangenheit klogd-Daemon''' auf früheren Systemen auf den meisten Distributionen jedoch durch rsyslog ersetzt


Einerseits haben Sie Protokollierungsdienstprogramme, die aus dem Ringpuffer lesen, aber Sie haben auch User-Space-Programme, die in den Ringpuffer schreiben: systemd (mit dem berühmten systemd-Journal) zum Beispiel für aktuelle Distributionen.
Einerseits haben Sie Protokollierungsdienstprogramme, die aus dem Ringpuffer lesen, aber Sie haben auch User-Space-Programme, die in den Ringpuffer schreiben: systemd (mit dem berühmten systemd-Journal) zum Beispiel für aktuelle Distributionen


Nachdem Sie mehr über die Kernel-Protokollierung erfahren haben, sehen wir uns an, '''wie die Protokollierung im Benutzerbereich durchgeführt wird.'''
Nachdem Sie mehr über die Kernel-Protokollierung erfahren haben, sehen wir uns an, '''wie die Protokollierung im Benutzerbereich durchgeführt wird.'''
Zeile 71: Zeile 71:
== Syslog ==
== Syslog ==
==== Benutzerseitige Protokollierung mit Syslog ====
==== Benutzerseitige Protokollierung mit Syslog ====
Die Protokollierung im Benutzerbereich unterscheidet sich erheblich von der Protokollierung im Kernelbereich.
Die Protokollierung im Benutzerbereich unterscheidet sich erheblich von der Protokollierung im Kernelbereich


Auf der Benutzerseite basiert die auf dem '''Protokollierung Syslog-Protokoll''' .
Auf der Benutzerseite basiert die auf dem '''Protokollierung Syslog-Protokoll'''  




Zeile 82: Zeile 82:
'''Protokolle können später auf Servern analysiert und visualisiert werden, die als Syslog-Server bezeichnet werden.'''
'''Protokolle können später auf Servern analysiert und visualisiert werden, die als Syslog-Server bezeichnet werden.'''


Kurz gesagt, das Syslog-Protokoll ist ein Protokoll, mit dem definiert wird, dass Protokollnachrichten auf Unix-Systemen formatiert, gesendet und empfangen werden.
Kurz gesagt, das Syslog-Protokoll ist ein Protokoll, mit dem definiert wird, dass Protokollnachrichten auf Unix-Systemen formatiert, gesendet und empfangen werden


Syslog ist dafür bekannt, das Syslog-Format zu definieren, das das Format definiert, das von Anwendungen zum Senden von Protokollen verwendet werden muss.
Syslog ist dafür bekannt, das Syslog-Format zu definieren, das das Format definiert, das von Anwendungen zum Senden von Protokollen verwendet werden muss


Dieses Format ist bekannt für die Definition von zwei wichtigen Begriffen: '''Einrichtungen''' und '''Prioritäten''' .
Dieses Format ist bekannt für die Definition von zwei wichtigen Begriffen: '''Einrichtungen''' und '''Prioritäten'''  


===== Syslog-Funktionen =====
===== Syslog-Funktionen =====
Kurz gesagt, '''eine Einrichtungsebene''' wird verwendet, um das Programm oder einen Teil des Systems zu bestimmen, das die Protokolle erstellt hat.
Kurz gesagt, '''eine Einrichtungsebene''' wird verwendet, um das Programm oder einen Teil des Systems zu bestimmen, das die Protokolle erstellt hat


Auf Ihrem Linux-System senden viele verschiedene Dienstprogramme und Programme Protokolle. Um festzustellen, welcher Prozess das Protokoll überhaupt gesendet hat, definiert Syslog Nummern, Einrichtungsnummern, die von Programmen zum Senden von Syslog-Protokollen verwendet werden.
Auf Ihrem Linux-System senden viele verschiedene Dienstprogramme und Programme Protokolle. Um festzustellen, welcher Prozess das Protokoll überhaupt gesendet hat, definiert Syslog Nummern, Einrichtungsnummern, die von Programmen zum Senden von Syslog-Protokollen verwendet werden


Es gibt mehr als 23 verschiedene Syslog-Funktionen, die in der folgenden Tabelle beschrieben sind.
Es gibt mehr als 23 verschiedene Syslog-Funktionen, die in der folgenden Tabelle beschrieben sind
{| class="wikitable"
{| class="wikitable"
|'''Numerischer Code'''
|'''Numerischer Code'''
Zeile 167: Zeile 167:
|Lokal genutzte Einrichtungen
|Lokal genutzte Einrichtungen
|}
|}
Die meisten dieser Funktionen sind Systemprozessen vorbehalten (z. B. dem Mailserver, falls vorhanden, oder dem Dienstprogramm cron). Einige von ihnen (von den Einrichtungsnummern 16 bis 23) können von benutzerdefinierten Syslog-Clients oder Benutzerprogrammen zum Senden von Protokollen verwendet werden.
Die meisten dieser Funktionen sind Systemprozessen vorbehalten (z. B. dem Mailserver, falls vorhanden, oder dem Dienstprogramm cron). Einige von ihnen (von den Einrichtungsnummern 16 bis 23) können von benutzerdefinierten Syslog-Clients oder Benutzerprogrammen zum Senden von Protokollen verwendet werden


===== Syslog-Prioritäten =====
===== Syslog-Prioritäten =====
'''Syslog-Schweregrade festzustellen''' werden verwendet, um , wie schwerwiegend ein Protokollereignis ist, und reichen von Debug-, Informationsmeldungen bis hin zu Notfallstufen.
'''Syslog-Schweregrade festzustellen''' werden verwendet, um , wie schwerwiegend ein Protokollereignis ist, und reichen von Debug-, Informationsmeldungen bis hin zu Notfallstufen


Ähnlich wie bei den Syslog-Einrichtungsstufen werden die Schweregrade in numerische Kategorien von 0 bis 7 unterteilt, wobei 0 die '''kritischste Notfallstufe ist''' .
Ähnlich wie bei den Syslog-Einrichtungsstufen werden die Schweregrade in numerische Kategorien von 0 bis 7 unterteilt, wobei 0 die '''kritischste Notfallstufe ist'''  


Auch hier finden Sie eine Tabelle mit allen mit Syslog verfügbaren Prioritätsstufen.
Auch hier finden Sie eine Tabelle mit allen mit Syslog verfügbaren Prioritätsstufen


'''Hier sind die in einer Tabelle beschriebenen Syslog-Schweregrade:'''
'''Hier sind die in einer Tabelle beschriebenen Syslog-Schweregrade:'''
Zeile 216: Zeile 216:


==== Syslog-Architektur ====
==== Syslog-Architektur ====
Syslog definiert auch einige technische Begriffe, die zum Erstellen der Architektur von Protokollierungssystemen verwendet werden:
Syslog definiert auch einige technische Begriffe, die zum Erstellen der Architektur von Protokollierungssystemen verwendet werden


* '''Absender''' : Auch als "Syslog-Client" bezeichnet, ist ein Absender dafür verantwortlich, die Syslog-formatierte Nachricht über das Netzwerk oder an die richtige Anwendung zu senden.
* '''Absender''' : Auch als "Syslog-Client" bezeichnet, ist ein Absender dafür verantwortlich, die Syslog-formatierte Nachricht über das Netzwerk oder an die richtige Anwendung zu senden
* '''Relais''' : Ein Relais wird verwendet, um Nachrichten über das Netzwerk weiterzuleiten. Ein Relais kann die Nachrichten transformieren, um sie beispielsweise anzureichern (berühmte Beispiele sind Logstash oder Fluentd).
* '''Relais''' : Ein Relais wird verwendet, um Nachrichten über das Netzwerk weiterzuleiten. Ein Relais kann die Nachrichten transformieren, um sie beispielsweise anzureichern (berühmte Beispiele sind Logstash oder Fluentd)
* '''Collector Collectors,''' : auch als „Syslog-Server“ bezeichnet, werden zum Speichern, Visualisieren und Abrufen von Protokollen aus mehreren Anwendungen verwendet. Der Kollektor kann Protokolle in eine Vielzahl verschiedener Ausgaben schreiben: lokale Dateien, Datenbanken oder Caches.
* '''Collector Collectors,''' : auch als „Syslog-Server“ bezeichnet, werden zum Speichern, Visualisieren und Abrufen von Protokollen aus mehreren Anwendungen verwendet. Der Kollektor kann Protokolle in eine Vielzahl verschiedener Ausgaben schreiben: lokale Dateien, Datenbanken oder Caches


Wie Sie sehen können, folgt das Syslog-Protokoll der '''Client-Server-Architektur, die''' wir in früheren Tutorials gesehen haben.
Wie Sie sehen können, folgt das Syslog-Protokoll der '''Client-Server-Architektur, die''' wir in früheren Tutorials gesehen haben


Ein Syslog-Client erstellt Nachrichten und sendet sie an optionale lokale oder entfernte Relays, die weiter an Syslog-Server übertragen werden können.
Ein Syslog-Client erstellt Nachrichten und sendet sie an optionale lokale oder entfernte Relays, die weiter an Syslog-Server übertragen werden können


Nachdem Sie nun wissen, wie das Syslog-Protokoll aufgebaut ist, was ist mit unserem eigenen Linux-System?
Nachdem Sie nun wissen, wie das Syslog-Protokoll aufgebaut ist, was ist mit unserem eigenen Linux-System?
Zeile 231: Zeile 231:


==== Lokale Linux-Protokollierungsarchitektur ====
==== Lokale Linux-Protokollierungsarchitektur ====
Die Anmeldung auf einem lokalen Linux-System folgt genau den zuvor beschriebenen Prinzipien.
Die Anmeldung auf einem lokalen Linux-System folgt genau den zuvor beschriebenen Prinzipien


Hier ist ohne weiteres die Art und Weise, wie die Protokollierung auf einem Linux-System (bei neueren Distributionen) aufgebaut ist.
Hier ist ohne weiteres die Art und Weise, wie die Protokollierung auf einem Linux-System (bei neueren Distributionen) aufgebaut ist


Befolgen Sie die zuvor beschriebene Originator-Relay-Collector-Architektur im Fall eines lokalen Linux-Systems:
Befolgen Sie die zuvor beschriebene Originator-Relay-Collector-Architektur im Fall eines lokalen Linux-Systems


* Originatoren sind '''Clientanwendungen''' , die Syslog- oder Journald-Bibliotheken einbetten können, um Protokolle zu senden.
* Originatoren sind '''Clientanwendungen''' , die Syslog- oder Journald-Bibliotheken einbetten können, um Protokolle zu senden
* Standardmäßig sind lokal keine Relais implementiert.
* Standardmäßig sind lokal keine Relais implementiert
* Collectors sind '''rsyslog und der Journald-Daemon überwacht''' , der vordefinierte Sockets auf eingehende Protokolle .
* Collectors sind '''rsyslog und der Journald-Daemon überwacht''' , der vordefinierte Sockets auf eingehende Protokolle  


''Wo werden also Protokolle gespeichert, nachdem sie von den Sammlern empfangen wurden?''
''Wo werden also Protokolle gespeichert, nachdem sie von den Sammlern empfangen wurden?''


==== Linux Log File Location ====
==== Linux Log File Location ====
Auf Ihrem Linux-System werden Protokolle im gespeichert '''/ var / log''' Verzeichnis .
Auf Ihrem Linux-System werden Protokolle im gespeichert '''/ var / log''' Verzeichnis  


Protokolle im Verzeichnis / var / log werden in die zuvor Syslog-Funktionen aufgeteilt, gefolgt vom Protokollsuffix: '''gesehenen auth.log, daemon.log, kern.log oder dpkg.log.'''
Protokolle im Verzeichnis / var / log werden in die zuvor Syslog-Funktionen aufgeteilt, gefolgt vom Protokollsuffix: '''gesehenen auth.log, daemon.log, kern.log oder dpkg.log.'''


Wenn Sie die Datei auth.log überprüft haben, werden Ihnen Protokolle zur Authentifizierung und Autorisierung auf Ihrem Linux-System angezeigt.
Wenn Sie die Datei auth.log überprüft haben, werden Ihnen Protokolle zur Authentifizierung und Autorisierung auf Ihrem Linux-System angezeigt


In ähnlicher Weise werden in der Datei cron.log Informationen zum cron-Dienst auf Ihrem System angezeigt.
In ähnlicher Weise werden in der Datei cron.log Informationen zum cron-Dienst auf Ihrem System angezeigt


Wie Sie dem obigen Diagramm können, gibt es auf Ihrem Linux-Server zwei verschiedene Protokollierungssysteme: '''entnehmen rsyslog und systemd-journal.'''
Wie Sie dem obigen Diagramm können, gibt es auf Ihrem Linux-Server zwei verschiedene Protokollierungssysteme: '''entnehmen rsyslog und systemd-journal.'''


===== Koexistenz von Rsyslog und systemd-journal =====
===== Koexistenz von Rsyslog und systemd-journal =====
In der Vergangenheit war '''ein Daemon''' für das Sammeln von Protokollen aus Ihren Anwendungen unter Linux verantwortlich.
In der Vergangenheit war '''ein Daemon''' für das Sammeln von Protokollen aus Ihren Anwendungen unter Linux verantwortlich


Bei vielen alten Distributionen wurde diese Aufgabe einem Daemon namens zugewiesen, '''syslogd''' in neueren Distributionen jedoch durch den '''rsyslog-Daemon ersetzt''' .
Bei vielen alten Distributionen wurde diese Aufgabe einem Daemon namens zugewiesen, '''syslogd''' in neueren Distributionen jedoch durch den '''rsyslog-Daemon ersetzt'''  


Als systemd den vorhandenen Init-Prozess in den letzten Distributionen ersetzte, gab es eine eigene Methode zum Abrufen und Speichern von Protokollen: '''systemd-journal.'''
Als systemd den vorhandenen Init-Prozess in den letzten Distributionen ersetzte, gab es eine eigene Methode zum Abrufen und Speichern von Protokollen: '''systemd-journal.'''


Jetzt existieren die beiden Systeme '''nebeneinander,''' aber ihre Koexistenz wurde als abwärtskompatibel mit der Art und Weise angesehen, wie Protokolle in der Vergangenheit architektonisch erstellt wurden.
Jetzt existieren die beiden Systeme '''nebeneinander,''' aber ihre Koexistenz wurde als abwärtskompatibel mit der Art und Weise angesehen, wie Protokolle in der Vergangenheit architektonisch erstellt wurden


Der wesentliche Unterschied zwischen rsyslog und systemd-Zeitschrift ist dass rsyslog werden Protokolle in die Log Dateien bestehen in '''/ var / log''' während journald wird '''nicht''' Daten bestehen bleiben es sei denn es zu tun konfiguriert.
Der wesentliche Unterschied zwischen rsyslog und systemd-Zeitschrift ist dass rsyslog werden Protokolle in die Log Dateien bestehen in '''/ var / log''' während journald wird '''nicht''' Daten bestehen bleiben es sei denn es zu tun konfiguriert


===== Speicherort der Journalprotokolldateien =====
===== Speicherort der Journalprotokolldateien =====
Wie Sie im letzten Abschnitt verstanden haben, verfolgt das '''systemd-journal''' Dienstprogramm auch die Protokollierungsaktivitäten auf Ihrem System.
Wie Sie im letzten Abschnitt verstanden haben, verfolgt das '''systemd-journal''' Dienstprogramm auch die Protokollierungsaktivitäten auf Ihrem System


Einige Anwendungen, die als Dienste konfiguriert sind (z. B. ein Apache-HTTP-Server), kommunizieren möglicherweise direkt mit dem systemd-Journal.
Einige Anwendungen, die als Dienste konfiguriert sind (z. B. ein Apache-HTTP-Server), kommunizieren möglicherweise direkt mit dem systemd-Journal


Das systemd-Journal speichert Protokolle zentral und ist das '''/ run / log / journal''' Verzeichnis .
Das systemd-Journal speichert Protokolle zentral und ist das '''/ run / log / journal''' Verzeichnis  


Die Protokolldateien werden als '''Binärdateien gespeichert''' von systemd , sodass Sie die Dateien nicht mit den üblichen Befehlen cat oder weniger überprüfen können.
Die Protokolldateien werden als '''Binärdateien gespeichert''' von systemd , sodass Sie die Dateien nicht mit den üblichen Befehlen cat oder weniger überprüfen können


Stattdessen möchten Sie den " '''journalctl''' Befehl " verwenden, um von systemd-journal erstellte Protokolldateien zu überprüfen.
Stattdessen möchten Sie den " '''journalctl''' Befehl " verwenden, um von systemd-journal erstellte Protokolldateien zu überprüfen
  <code>$ journalctl</code>
  <code>$ journalctl</code>
Es gibt viele verschiedene Optionen, die Sie mit journalctl verwenden können, aber die meiste Zeit möchten Sie bei den Optionen "-r" und "-u" bleiben.
Es gibt viele verschiedene Optionen, die Sie mit journalctl verwenden können, aber die meiste Zeit möchten Sie bei den Optionen "-r" und "-u" bleiben


Verwenden Sie " , um die neuesten Journaleinträge '''journalctl anzuzeigen''' " mit der " '''-r''' Option " .
Verwenden Sie " , um die neuesten Journaleinträge '''journalctl anzuzeigen''' " mit der " '''-r''' Option "  
  <code>$ journalctl -r</code>
  <code>$ journalctl -r</code>
Wenn Sie Protokolle möchten '''zu einem bestimmten Dienst''' anzeigen , verwenden Sie die Option "-u" und geben Sie den Namen des Dienstes an.
Wenn Sie Protokolle möchten '''zu einem bestimmten Dienst''' anzeigen , verwenden Sie die Option "-u" und geben Sie den Namen des Dienstes an
  <code>$ journalctl -u <service></code>
  <code>$ journalctl -u <service></code>
Um beispielsweise Protokolle anzuzeigen, die sich auf den SSH-Dienst beziehen, führen Sie den folgenden Befehl aus
Um beispielsweise Protokolle anzuzeigen, die sich auf den SSH-Dienst beziehen, führen Sie den folgenden Befehl aus
  <code>$ journalctl -u ssh</code>
  <code>$ journalctl -u ssh</code>
Nachdem Sie gesehen haben, wie Sie Konfigurationsdateien lesen können, wollen wir sehen, wie Sie Ihre Protokollierungsdienstprogramme einfach konfigurieren können.
Nachdem Sie gesehen haben, wie Sie Konfigurationsdateien lesen können, wollen wir sehen, wie Sie Ihre Protokollierungsdienstprogramme einfach konfigurieren können


=== Konfiguration ===
=== Konfiguration ===
Wie Sie wahrscheinlich aus den vorherigen Abschnitten verstanden haben, basiert die Linux-Protokollierung auf zwei wichtigen Komponenten: '''rsyslog und systemd-journal.'''
Wie Sie wahrscheinlich aus den vorherigen Abschnitten verstanden haben, basiert die Linux-Protokollierung auf zwei wichtigen Komponenten: '''rsyslog und systemd-journal.'''


Jedes dieser Dienstprogramme verfügt über eine eigene Konfigurationsdatei. In den folgenden Kapiteln erfahren Sie, wie sie konfiguriert werden können.
Jedes dieser Dienstprogramme verfügt über eine eigene Konfigurationsdatei. In den folgenden Kapiteln erfahren Sie, wie sie konfiguriert werden können


==== Systemd-Journal ====
==== Systemd-Journal ====
Die Konfigurationsdateien für das systemd-Journal befinden sich im '''/ etc / systemd''' Verzeichnis .
Die Konfigurationsdateien für das systemd-Journal befinden sich im '''/ etc / systemd''' Verzeichnis  
  <code>$ sudo vi /etc/systemd/journald.conf</code>
  <code>$ sudo vi /etc/systemd/journald.conf</code>
Die Datei mit dem Namen " '''journald.conf''' " wird verwendet, um '''den Journal-Daemon zu konfigurieren''' für aktuelle Distributionen .
Die Datei mit dem Namen " '''journald.conf''' " wird verwendet, um '''den Journal-Daemon zu konfigurieren''' für aktuelle Distributionen  


Eine der wichtigsten Optionen in der Journalkonfiguration ist der „ '''Speicher''' Parameter “.
Eine der wichtigsten Optionen in der Journalkonfiguration ist der „ '''Speicher''' Parameter “


Wie bereits erwähnt, bleiben die Journaldateien auf Ihrem System nicht erhalten und gehen beim nächsten Neustart verloren.
Wie bereits erwähnt, bleiben die Journaldateien auf Ihrem System nicht erhalten und gehen beim nächsten Neustart verloren


Um Ihre Journalprotokolle dauerhaft zu machen, müssen Sie diesen Parameter auf "dauerhaft" ändern und den Systemd-Journal-Daemon neu starten.
Um Ihre Journalprotokolle dauerhaft zu machen, müssen Sie diesen Parameter auf "dauerhaft" ändern und den Systemd-Journal-Daemon neu starten


Verwenden Sie zum Neustarten des Journal-Daemons den Befehl "systemctl" mit der Option "restart" und geben Sie den Namen des Dienstes an.
Verwenden Sie zum Neustarten des Journal-Daemons den Befehl "systemctl" mit der Option "restart" und geben Sie den Namen des Dienstes an
  <code>$ sudo systemctl restart systemd-journald</code>
  <code>$ sudo systemctl restart systemd-journald</code>
Infolgedessen werden Journalprotokolle im Verzeichnis / var / log / journal neben den Protokolldateien von rsyslog gespeichert.
Infolgedessen werden Journalprotokolle im Verzeichnis / var / log / journal neben den Protokolldateien von rsyslog gespeichert
  <code>$ ls -l /var/log/journal</code>
  <code>$ ls -l /var/log/journal</code>
Wenn Sie neugierig auf die Konfiguration des Systemd-Journals sind, lesen Sie die '''unbedingt Dokumentation von FreeDesktop.'''
Wenn Sie neugierig auf die Konfiguration des Systemd-Journals sind, lesen Sie die '''unbedingt Dokumentation von FreeDesktop.'''


==== Rsyslog ====
==== Rsyslog ====
Andererseits kann der Dienst rsyslog über die '''/etc/rsyslog.conf''' Konfigurationsdatei konfiguriert werden.
Andererseits kann der Dienst rsyslog über die '''/etc/rsyslog.conf''' Konfigurationsdatei konfiguriert werden
  <code>$ sudo vi /etc/rsyslog.conf</code>
  <code>$ sudo vi /etc/rsyslog.conf</code>
Wie bereits erwähnt, ist rsyslog im Wesentlichen ein Syslog-Kollektor, aber das Hauptkonzept, das Sie verstehen müssen, ist, dass Rsyslog mit Modulen arbeitet.
Wie bereits erwähnt, ist rsyslog im Wesentlichen ein Syslog-Kollektor, aber das Hauptkonzept, das Sie verstehen müssen, ist, dass Rsyslog mit Modulen arbeitet


Die modulare Architektur bietet Plugins wie native Methoden zum Übertragen von Protokollen in eine Datei, eine Shell, eine Datenbank oder Sockets.
Die modulare Architektur bietet Plugins wie native Methoden zum Übertragen von Protokollen in eine Datei, eine Shell, eine Datenbank oder Sockets


Bei der Arbeit mit rsyslog gibt es zwei Hauptabschnitte, die Ihre Aufmerksamkeit verdienen: '''Module''' und '''Regeln''' .
Bei der Arbeit mit rsyslog gibt es zwei Hauptabschnitte, die Ihre Aufmerksamkeit verdienen: '''Module''' und '''Regeln'''  


'''Rsyslog- Module'''
'''Rsyslog- Module'''
Zeile 321: Zeile 321:
Standardmäßig sind auf Ihrem System zwei Module aktiviert: '''imuxsock''' (Abhören des Syslog- ) und '''Sockets imjournal''' (Weiterleiten von Journalprotokollen an rsyslog).<blockquote>'''Hinweis''' : Möglicherweise ist auch das Imklog (verantwortlich für das Sammeln von Kernel-Protokollen) aktiviert.</blockquote>'''Rsyslog-Regeln'''
Standardmäßig sind auf Ihrem System zwei Module aktiviert: '''imuxsock''' (Abhören des Syslog- ) und '''Sockets imjournal''' (Weiterleiten von Journalprotokollen an rsyslog).<blockquote>'''Hinweis''' : Möglicherweise ist auch das Imklog (verantwortlich für das Sammeln von Kernel-Protokollen) aktiviert.</blockquote>'''Rsyslog-Regeln'''


Der '''Regelabschnitt''' von rsyslog ist wahrscheinlich der wichtigste.
Der '''Regelabschnitt''' von rsyslog ist wahrscheinlich der wichtigste


In rsyslog finden Sie jedoch dieselben Prinzipien für alte Distributionen mit systemd. Im Abschnitt "Regeln" wird festgelegt, welches Protokoll je nach Einrichtung und Priorität in Ihrem Dateisystem gespeichert werden soll.
In rsyslog finden Sie jedoch dieselben Prinzipien für alte Distributionen mit systemd. Im Abschnitt "Regeln" wird festgelegt, welches Protokoll je nach Einrichtung und Priorität in Ihrem Dateisystem gespeichert werden soll


Nehmen wir als Beispiel die folgende rsyslog-Konfigurationsdatei.
Nehmen wir als Beispiel die folgende rsyslog-Konfigurationsdatei


In der ersten Spalte werden die angewendeten Regeln beschrieben: Auf der linken Seite des Punkts definieren Sie die '''Einrichtung''' und auf der rechten Seite den '''Schweregrad''' .
In der ersten Spalte werden die angewendeten Regeln beschrieben: Auf der linken Seite des Punkts definieren Sie die '''Einrichtung''' und auf der rechten Seite den '''Schweregrad'''  


Ein Platzhaltersymbol "*" bedeutet, dass es für alle Schweregrade funktioniert.
Ein Platzhaltersymbol "*" bedeutet, dass es für alle Schweregrade funktioniert


Wenn Sie beispielsweise Ihre Protokollierungskonfiguration so anpassen möchten, dass Sie beispielsweise nur an bestimmten Schweregraden interessiert sind, ist dies die Datei, die Sie ändern würden.
Wenn Sie beispielsweise Ihre Protokollierungskonfiguration so anpassen möchten, dass Sie beispielsweise nur an bestimmten Schweregraden interessiert sind, ist dies die Datei, die Sie ändern würden


== Dienstprogramme ==
== Dienstprogramme ==
Zeile 340: Zeile 340:
'''Der einfachste Weg, Ihre Linux-Protokolle zu lesen und zu überwachen, besteht darin, den Befehl tail mit der Option "-f" zu verwenden, um zu folgen.'''
'''Der einfachste Weg, Ihre Linux-Protokolle zu lesen und zu überwachen, besteht darin, den Befehl tail mit der Option "-f" zu verwenden, um zu folgen.'''
  <code>$ tail -f <file></code>
  <code>$ tail -f <file></code>
Um beispielsweise die in der Datei auth.log geschriebenen Protokolle zu lesen, führen Sie den folgenden Befehl aus.
Um beispielsweise die in der Datei auth.log geschriebenen Protokolle zu lesen, führen Sie den folgenden Befehl aus
  <code>$ tail -f /var/log/auth.log</code>
  <code>$ tail -f /var/log/auth.log</code>
Eine weitere großartige Möglichkeit zum Lesen von Linux-Protokollen ist die Verwendung grafischer Anwendungen, wenn Sie eine Linux-Desktop-Umgebung ausführen.
Eine weitere großartige Möglichkeit zum Lesen von Linux-Protokollen ist die Verwendung grafischer Anwendungen, wenn Sie eine Linux-Desktop-Umgebung ausführen


Die „ '''Protokolle''' Anwendung “ ist eine grafische Anwendung, mit der Anwendungs- und Systemprotokolle aufgelistet werden, die in verschiedenen Protokolldateien (entweder in rsyslog oder journald) gespeichert werden können.
Die „ '''Protokolle''' Anwendung “ ist eine grafische Anwendung, mit der Anwendungs- und Systemprotokolle aufgelistet werden, die in verschiedenen Protokolldateien (entweder in rsyslog oder journald) gespeichert werden können


=== Dienstprogramme ===
=== Dienstprogramme ===
Nachdem Sie gesehen haben, wie die Protokollierung auf einem Linux-System konfiguriert werden kann, sehen wir uns einige Dienstprogramme an, die Sie für den Fall verwenden können, dass Sie Nachrichten protokollieren möchten.
Nachdem Sie gesehen haben, wie die Protokollierung auf einem Linux-System konfiguriert werden kann, sehen wir uns einige Dienstprogramme an, die Sie für den Fall verwenden können, dass Sie Nachrichten protokollieren möchten


==== Logger ====
==== Logger ====
Das '''Logger-''' Dienstprogramm ist wahrscheinlich einer der am einfachsten zu verwendenden Log-Clients.
Das '''Logger-''' Dienstprogramm ist wahrscheinlich einer der am einfachsten zu verwendenden Log-Clients


'''Der Logger wird zum Senden von Protokollnachrichten an das Systemprotokoll verwendet und kann mit der folgenden Syntax ausgeführt werden.'''
'''Der Logger wird zum Senden von Protokollnachrichten an das Systemprotokoll verwendet und kann mit der folgenden Syntax ausgeführt werden.'''
  <code>$ logger <options> <message></code>
  <code>$ logger <options> <message></code>
Angenommen, Sie möchten eine Notfallnachricht von der Authentifizierungsfunktion an Ihr Dienstprogramm rsyslog senden. Führen Sie dann den folgenden Befehl aus.
Angenommen, Sie möchten eine Notfallnachricht von der Authentifizierungsfunktion an Ihr Dienstprogramm rsyslog senden. Führen Sie dann den folgenden Befehl aus
  <code>$ logger -p auth.emerg "Somebody tried to connect to the system"</code>
  <code>$ logger -p auth.emerg "Somebody tried to connect to the system"</code>
Wenn Sie nun die Datei /var/log/auth.log überprüfen, können Sie die Nachricht finden, die Sie gerade auf dem rsyslog-Server protokolliert haben.
Wenn Sie nun die Datei /var/log/auth.log überprüfen, können Sie die Nachricht finden, die Sie gerade auf dem rsyslog-Server protokolliert haben
  <code>$ tail -n 10 /var/log/auth.log | grep --color connect</code>
  <code>$ tail -n 10 /var/log/auth.log | grep --color connect</code>
Der Logger ist sehr nützlich, wenn er beispielsweise in Bash-Skripten verwendet wird.
Der Logger ist sehr nützlich, wenn er beispielsweise in Bash-Skripten verwendet wird


''Aber was ist, wenn Sie Dateien mit dem systemd-journal protokollieren möchten?''
''Aber was ist, wenn Sie Dateien mit dem systemd-journal protokollieren möchten?''
Zeile 367: Zeile 367:
Wenn Sie die Ausgabe des Befehls "ls -l" an das Journal senden möchten, schreiben Sie den folgenden Befehl
Wenn Sie die Ausgabe des Befehls "ls -l" an das Journal senden möchten, schreiben Sie den folgenden Befehl
  $ systemd-cat ls -l
  $ systemd-cat ls -l
Es ist auch möglich, "Nur-Text" -Protokolle an das Journal zu senden, indem der Befehl echo an das Dienstprogramm systemd-cat weitergeleitet wird.
Es ist auch möglich, "Nur-Text" -Protokolle an das Journal zu senden, indem der Befehl echo an das Dienstprogramm systemd-cat weitergeleitet wird
  $ echo "This is a message to journald" | systemd-cat
  $ echo "This is a message to journald" | systemd-cat


==== Wall ====
==== Wall ====
Der Befehl [[wall]] steht nicht in direktem Zusammenhang mit Protokollierungsdienstprogrammen, kann jedoch für die Linux-Systemadministration sehr nützlich sein.
Der Befehl [[wall]] steht nicht in direktem Zusammenhang mit Protokollierungsdienstprogrammen, kann jedoch für die Linux-Systemadministration sehr nützlich sein


'''Der Befehl wall wird verwendet, um Nachrichten an alle angemeldeten Benutzer zu senden.'''
'''Der Befehl wall wird verwendet, um Nachrichten an alle angemeldeten Benutzer zu senden.'''
  <code>$ wall -n <message></code>
  <code>$ wall -n <message></code>
Wenn Sie beispielsweise allen angemeldeten Benutzern eine Nachricht schreiben würden, um sie über den nächsten Neustart des Servers zu informieren, würden Sie den folgenden Befehl ausführen.
Wenn Sie beispielsweise allen angemeldeten Benutzern eine Nachricht schreiben würden, um sie über den nächsten Neustart des Servers zu informieren, würden Sie den folgenden Befehl ausführen
  <code>$ wall -n "Server reboot in five minutes, close all important applications"</code>
  <code>$ wall -n "Server reboot in five minutes, close all important applications"</code>



Version vom 20. Oktober 2024, 12:22 Uhr

Linux-Logging - Aufzeichnung wichtiger Systemmeldungen

Beschreibung

Linux-Systemadministraton

Überprüfen von Protokolldateien ist eine der häufigsten Aufgaben

Protokolle sind von entscheidender Bedeutung
  • Sie speichern wichtige Informationen zu einigen Fehlern, die auf Ihrem System auftreten können
  • Sie können auch Informationen darüber speichern, wer versucht, auf Ihr System zuzugreifen, was ein bestimmter Dienst tut oder über einen Systemabsturz, der zuvor aufgetreten ist

Protokollierungstypen

Wenn Sie sich mit der Linux-Protokollierung befassen, müssen Sie einige Grundlagen verstehen, bevor Sie Befehle in das Terminal eingeben

Unter Linux gibt es zwei Arten von Protokollierungsmechanismen

  • Kernel-Protokollierung : Bezieht sich auf Fehler, Warnungen oder Informationseinträge, die Ihr Kernel möglicherweise schreibt
  • Benutzerprotokollierung Diese Protokolleinträge sind : mit dem Benutzerbereich verknüpft und beziehen sich auf Prozesse oder Dienste, die möglicherweise auf dem Hostcomputer ausgeführt werden

Durch die Aufteilung der Protokollierung in zwei Kategorien enthüllen wir im Wesentlichen, dass der Speicher selbst unter Linux in zwei Kategorien unterteilt ist: User Space und Kernel Space

Kernel-Protokollierung

Beginnen wir zunächst mit der Protokollierung, die dem Kernel-Space zugeordnet ist, der auch als Kernel-Protokollierung bezeichnet wird

Im Kernelbereich erfolgt die Protokollierung über den Kernel-Ringpuffer.

Der Kernel-Ringpuffer ist ein Ringpuffer, der als erste Datenstruktur Protokollnachrichten speichert, wenn das System hochfährt.

Wenn Sie Ihren Linux-Computer starten und Protokollmeldungen auf dem Bildschirm angezeigt werden, werden diese Meldungen im Kernel-Ringpuffer gespeichert

Die Kernel-Protokollierung wird vor der Benutzerprotokollierung gestartet (verwaltet vom Syslog-Daemon oder von rsyslog bei aktuellen Distributionen)

Der Kernel-Ringpuffer kann wie alle anderen Protokolldateien auf Ihrem System überprüft werden

Um Kernel-bezogene Protokolle auf Ihrem System zu öffnen, müssen Sie den " dmesg Befehl " verwenden.

Hinweis : Sie müssen diesen Befehl als root ausführen oder über privilegierte Rechte verfügen, um den Kernel-Ringpuffer zu überprüfen.

$ dmesg

Wie Sie sehen können, verfolgt der Kernel vom Systemstart bis zum Zeitpunkt der Ausführung des Befehls alle Aktionen, Warnungen oder Fehler, die im Kernelbereich auftreten können

Wenn Ihr System Probleme beim Erkennen oder Mounten einer Festplatte hat, möchten Sie wahrscheinlich hier die Fehler überprüfen

Wie Sie sehen können, ist der Befehl dmesg eine hübsche Oberfläche, um Kernel-Protokolle anzuzeigen. Aber wie druckt der Befehl dmesg diese Ergebnisse an Sie zurück?

Um die verschiedenen verwendeten Mechanismen aufzudecken, schauen wir uns an, welche Prozesse und Geräte für die Kernel-Protokollierung zuständig sind

Interna für die Kernel-Protokollierung

Wie Sie wahrscheinlich schon einmal gehört haben, ist unter Linux alles eine Datei.


Wenn alles eine Datei ist, bedeutet dies auch, dass Geräte Dateien sind.

Unter Linux wird der Kernel-Ringpuffer durch eine Zeichengerätedatei im Verzeichnis / dev materialisiert und heißt kmsg

$ ls -l /dev/ | grep kmsg

Wenn wir die Beziehung zwischen dem kmsg-Gerät und dem Kernel-Ringpuffer darstellen würden, würden wir sie so darstellen

Wie Sie sehen können, ist das kmsg-Gerät eine Abstraktion, die zum Lesen und Schreiben in den Kernel-Ringpuffer verwendet wird

Sie können es im Wesentlichen als Einstiegspunkt für User-Space-Prozesse betrachten, um in den Kernel-Ringpuffer zu schreiben

Das oben gezeigte Diagramm ist jedoch unvollständig, da der Kernel eine spezielle Datei verwendet, um die Kernel-Protokollinformationen in eine Datei zu kopieren

Wenn wir es zusammenfassen würden, würden wir im Wesentlichen dass das angeben, virtuelle kmsg-Gerät als Einstiegspunkt für den Kernel-Ringpuffer fungiert, während die Ausgabe dieses Prozesses (die Protokollzeilen) in die Datei / proc / kmsg gedruckt wird

Diese Datei kann nur von einem einzigen Prozess analysiert werden. Dies ist meistens das Protokollierungsdienstprogramm, das im Benutzerbereich verwendet wird. Bei einigen Distributionen kann es sich um syslogd handeln, bei neueren Distributionen ist es jedoch in integriert rsyslog

Das Dienstprogramm rsyslog verfügt über eine Reihe eingebetteter Module, die Kernelprotokolle in dedizierte Dateien im Dateisystem umleiten

In der wurden Kernel-Protokolle vom abgerufen, Vergangenheit klogd-Daemon auf früheren Systemen auf den meisten Distributionen jedoch durch rsyslog ersetzt

Einerseits haben Sie Protokollierungsdienstprogramme, die aus dem Ringpuffer lesen, aber Sie haben auch User-Space-Programme, die in den Ringpuffer schreiben: systemd (mit dem berühmten systemd-Journal) zum Beispiel für aktuelle Distributionen

Nachdem Sie mehr über die Kernel-Protokollierung erfahren haben, sehen wir uns an, wie die Protokollierung im Benutzerbereich durchgeführt wird.

Syslog

Benutzerseitige Protokollierung mit Syslog

Die Protokollierung im Benutzerbereich unterscheidet sich erheblich von der Protokollierung im Kernelbereich

Auf der Benutzerseite basiert die auf dem Protokollierung Syslog-Protokoll


Syslog wird als Standard zum Erstellen, Weiterleiten und Sammeln von Protokollen verwendet, die auf einer Linux-Instanz erstellt wurden.

Syslog definiert sowohl Schweregrade als auch Einrichtungsstufen, um Benutzern ein besseres Verständnis der auf ihren Computern erstellten Protokolle zu ermöglichen.

Protokolle können später auf Servern analysiert und visualisiert werden, die als Syslog-Server bezeichnet werden.

Kurz gesagt, das Syslog-Protokoll ist ein Protokoll, mit dem definiert wird, dass Protokollnachrichten auf Unix-Systemen formatiert, gesendet und empfangen werden

Syslog ist dafür bekannt, das Syslog-Format zu definieren, das das Format definiert, das von Anwendungen zum Senden von Protokollen verwendet werden muss

Dieses Format ist bekannt für die Definition von zwei wichtigen Begriffen: Einrichtungen und Prioritäten

Syslog-Funktionen

Kurz gesagt, eine Einrichtungsebene wird verwendet, um das Programm oder einen Teil des Systems zu bestimmen, das die Protokolle erstellt hat

Auf Ihrem Linux-System senden viele verschiedene Dienstprogramme und Programme Protokolle. Um festzustellen, welcher Prozess das Protokoll überhaupt gesendet hat, definiert Syslog Nummern, Einrichtungsnummern, die von Programmen zum Senden von Syslog-Protokollen verwendet werden

Es gibt mehr als 23 verschiedene Syslog-Funktionen, die in der folgenden Tabelle beschrieben sind

Numerischer Code Stichwort Name der Einrichtung
0 kern Kernel-Nachrichten
1 Benutzer Nachrichten auf Benutzerebene
2 mail Mail system
3 Daemon System Daemons
4 auth Sicherheitsmeldungen
5 Syslog Syslogd-Nachrichten
6 lpr Zeilendruckersubsystem
7 Nachrichten Netzwerknachrichtensubsystem
8 uucp UUCP-Subsystem
9 cron Clock Daemon
10 authpriv Sicherheitsmeldungen
11 ftp FTP-Daemon
12 ntp NTP-Subsystem
13 Sicherheit Sicherheitsprotokollprüfung
14 Konsole Konsolenprotokollwarnungen
15 solaris-cron Protokolle planen
16-23 local0 bis local7 Lokal genutzte Einrichtungen

Die meisten dieser Funktionen sind Systemprozessen vorbehalten (z. B. dem Mailserver, falls vorhanden, oder dem Dienstprogramm cron). Einige von ihnen (von den Einrichtungsnummern 16 bis 23) können von benutzerdefinierten Syslog-Clients oder Benutzerprogrammen zum Senden von Protokollen verwendet werden

Syslog-Prioritäten

Syslog-Schweregrade festzustellen werden verwendet, um , wie schwerwiegend ein Protokollereignis ist, und reichen von Debug-, Informationsmeldungen bis hin zu Notfallstufen

Ähnlich wie bei den Syslog-Einrichtungsstufen werden die Schweregrade in numerische Kategorien von 0 bis 7 unterteilt, wobei 0 die kritischste Notfallstufe ist

Auch hier finden Sie eine Tabelle mit allen mit Syslog verfügbaren Prioritätsstufen

Hier sind die in einer Tabelle beschriebenen Syslog-Schweregrade:

Wert Schwere Stichwort
0 Notfall emerg
1 Aufmerksam alert
2 Kritisch crit
3 Error err
4 Warnung warning
5 Beachten notice
6 Informativ info
7 Debuggen debug

Syslog-Architektur

Syslog definiert auch einige technische Begriffe, die zum Erstellen der Architektur von Protokollierungssystemen verwendet werden

  • Absender : Auch als "Syslog-Client" bezeichnet, ist ein Absender dafür verantwortlich, die Syslog-formatierte Nachricht über das Netzwerk oder an die richtige Anwendung zu senden
  • Relais : Ein Relais wird verwendet, um Nachrichten über das Netzwerk weiterzuleiten. Ein Relais kann die Nachrichten transformieren, um sie beispielsweise anzureichern (berühmte Beispiele sind Logstash oder Fluentd)
  • Collector Collectors, : auch als „Syslog-Server“ bezeichnet, werden zum Speichern, Visualisieren und Abrufen von Protokollen aus mehreren Anwendungen verwendet. Der Kollektor kann Protokolle in eine Vielzahl verschiedener Ausgaben schreiben: lokale Dateien, Datenbanken oder Caches

Wie Sie sehen können, folgt das Syslog-Protokoll der Client-Server-Architektur, die wir in früheren Tutorials gesehen haben

Ein Syslog-Client erstellt Nachrichten und sendet sie an optionale lokale oder entfernte Relays, die weiter an Syslog-Server übertragen werden können

Nachdem Sie nun wissen, wie das Syslog-Protokoll aufgebaut ist, was ist mit unserem eigenen Linux-System?

Folgt es dieser Architektur?

Lokale Linux-Protokollierungsarchitektur

Die Anmeldung auf einem lokalen Linux-System folgt genau den zuvor beschriebenen Prinzipien

Hier ist ohne weiteres die Art und Weise, wie die Protokollierung auf einem Linux-System (bei neueren Distributionen) aufgebaut ist

Befolgen Sie die zuvor beschriebene Originator-Relay-Collector-Architektur im Fall eines lokalen Linux-Systems

  • Originatoren sind Clientanwendungen , die Syslog- oder Journald-Bibliotheken einbetten können, um Protokolle zu senden
  • Standardmäßig sind lokal keine Relais implementiert
  • Collectors sind rsyslog und der Journald-Daemon überwacht , der vordefinierte Sockets auf eingehende Protokolle

Wo werden also Protokolle gespeichert, nachdem sie von den Sammlern empfangen wurden?

Linux Log File Location

Auf Ihrem Linux-System werden Protokolle im gespeichert / var / log Verzeichnis

Protokolle im Verzeichnis / var / log werden in die zuvor Syslog-Funktionen aufgeteilt, gefolgt vom Protokollsuffix: gesehenen auth.log, daemon.log, kern.log oder dpkg.log.

Wenn Sie die Datei auth.log überprüft haben, werden Ihnen Protokolle zur Authentifizierung und Autorisierung auf Ihrem Linux-System angezeigt

In ähnlicher Weise werden in der Datei cron.log Informationen zum cron-Dienst auf Ihrem System angezeigt

Wie Sie dem obigen Diagramm können, gibt es auf Ihrem Linux-Server zwei verschiedene Protokollierungssysteme: entnehmen rsyslog und systemd-journal.

Koexistenz von Rsyslog und systemd-journal

In der Vergangenheit war ein Daemon für das Sammeln von Protokollen aus Ihren Anwendungen unter Linux verantwortlich

Bei vielen alten Distributionen wurde diese Aufgabe einem Daemon namens zugewiesen, syslogd in neueren Distributionen jedoch durch den rsyslog-Daemon ersetzt

Als systemd den vorhandenen Init-Prozess in den letzten Distributionen ersetzte, gab es eine eigene Methode zum Abrufen und Speichern von Protokollen: systemd-journal.

Jetzt existieren die beiden Systeme nebeneinander, aber ihre Koexistenz wurde als abwärtskompatibel mit der Art und Weise angesehen, wie Protokolle in der Vergangenheit architektonisch erstellt wurden

Der wesentliche Unterschied zwischen rsyslog und systemd-Zeitschrift ist dass rsyslog werden Protokolle in die Log Dateien bestehen in / var / log während journald wird nicht Daten bestehen bleiben es sei denn es zu tun konfiguriert

Speicherort der Journalprotokolldateien

Wie Sie im letzten Abschnitt verstanden haben, verfolgt das systemd-journal Dienstprogramm auch die Protokollierungsaktivitäten auf Ihrem System

Einige Anwendungen, die als Dienste konfiguriert sind (z. B. ein Apache-HTTP-Server), kommunizieren möglicherweise direkt mit dem systemd-Journal

Das systemd-Journal speichert Protokolle zentral und ist das / run / log / journal Verzeichnis

Die Protokolldateien werden als Binärdateien gespeichert von systemd , sodass Sie die Dateien nicht mit den üblichen Befehlen cat oder weniger überprüfen können

Stattdessen möchten Sie den " journalctl Befehl " verwenden, um von systemd-journal erstellte Protokolldateien zu überprüfen

$ journalctl

Es gibt viele verschiedene Optionen, die Sie mit journalctl verwenden können, aber die meiste Zeit möchten Sie bei den Optionen "-r" und "-u" bleiben

Verwenden Sie " , um die neuesten Journaleinträge journalctl anzuzeigen " mit der " -r Option "

$ journalctl -r

Wenn Sie Protokolle möchten zu einem bestimmten Dienst anzeigen , verwenden Sie die Option "-u" und geben Sie den Namen des Dienstes an

$ journalctl -u <service>

Um beispielsweise Protokolle anzuzeigen, die sich auf den SSH-Dienst beziehen, führen Sie den folgenden Befehl aus

$ journalctl -u ssh

Nachdem Sie gesehen haben, wie Sie Konfigurationsdateien lesen können, wollen wir sehen, wie Sie Ihre Protokollierungsdienstprogramme einfach konfigurieren können

Konfiguration

Wie Sie wahrscheinlich aus den vorherigen Abschnitten verstanden haben, basiert die Linux-Protokollierung auf zwei wichtigen Komponenten: rsyslog und systemd-journal.

Jedes dieser Dienstprogramme verfügt über eine eigene Konfigurationsdatei. In den folgenden Kapiteln erfahren Sie, wie sie konfiguriert werden können

Systemd-Journal

Die Konfigurationsdateien für das systemd-Journal befinden sich im / etc / systemd Verzeichnis

$ sudo vi /etc/systemd/journald.conf

Die Datei mit dem Namen " journald.conf " wird verwendet, um den Journal-Daemon zu konfigurieren für aktuelle Distributionen

Eine der wichtigsten Optionen in der Journalkonfiguration ist der „ Speicher Parameter “

Wie bereits erwähnt, bleiben die Journaldateien auf Ihrem System nicht erhalten und gehen beim nächsten Neustart verloren

Um Ihre Journalprotokolle dauerhaft zu machen, müssen Sie diesen Parameter auf "dauerhaft" ändern und den Systemd-Journal-Daemon neu starten

Verwenden Sie zum Neustarten des Journal-Daemons den Befehl "systemctl" mit der Option "restart" und geben Sie den Namen des Dienstes an

$ sudo systemctl restart systemd-journald

Infolgedessen werden Journalprotokolle im Verzeichnis / var / log / journal neben den Protokolldateien von rsyslog gespeichert

$ ls -l /var/log/journal

Wenn Sie neugierig auf die Konfiguration des Systemd-Journals sind, lesen Sie die unbedingt Dokumentation von FreeDesktop.

Rsyslog

Andererseits kann der Dienst rsyslog über die /etc/rsyslog.conf Konfigurationsdatei konfiguriert werden

$ sudo vi /etc/rsyslog.conf

Wie bereits erwähnt, ist rsyslog im Wesentlichen ein Syslog-Kollektor, aber das Hauptkonzept, das Sie verstehen müssen, ist, dass Rsyslog mit Modulen arbeitet

Die modulare Architektur bietet Plugins wie native Methoden zum Übertragen von Protokollen in eine Datei, eine Shell, eine Datenbank oder Sockets

Bei der Arbeit mit rsyslog gibt es zwei Hauptabschnitte, die Ihre Aufmerksamkeit verdienen: Module und Regeln

Rsyslog- Module

Standardmäßig sind auf Ihrem System zwei Module aktiviert: imuxsock (Abhören des Syslog- ) und Sockets imjournal (Weiterleiten von Journalprotokollen an rsyslog).

Hinweis : Möglicherweise ist auch das Imklog (verantwortlich für das Sammeln von Kernel-Protokollen) aktiviert.

Rsyslog-Regeln

Der Regelabschnitt von rsyslog ist wahrscheinlich der wichtigste

In rsyslog finden Sie jedoch dieselben Prinzipien für alte Distributionen mit systemd. Im Abschnitt "Regeln" wird festgelegt, welches Protokoll je nach Einrichtung und Priorität in Ihrem Dateisystem gespeichert werden soll

Nehmen wir als Beispiel die folgende rsyslog-Konfigurationsdatei

In der ersten Spalte werden die angewendeten Regeln beschrieben: Auf der linken Seite des Punkts definieren Sie die Einrichtung und auf der rechten Seite den Schweregrad

Ein Platzhaltersymbol "*" bedeutet, dass es für alle Schweregrade funktioniert

Wenn Sie beispielsweise Ihre Protokollierungskonfiguration so anpassen möchten, dass Sie beispielsweise nur an bestimmten Schweregraden interessiert sind, ist dies die Datei, die Sie ändern würden

Dienstprogramme

Überwachung

Dienstprogramme zur Überwachung von Linux-Protokollen

Im vorherigen Abschnitt haben wir gesehen, wie Sie Ihre Protokollierungsdienstprogramme einfach konfigurieren können. Welche Dienstprogramme können Sie jedoch verwenden, um Ihre Linux-Protokolle einfach zu lesen?

Der einfachste Weg, Ihre Linux-Protokolle zu lesen und zu überwachen, besteht darin, den Befehl tail mit der Option "-f" zu verwenden, um zu folgen.

$ tail -f <file>

Um beispielsweise die in der Datei auth.log geschriebenen Protokolle zu lesen, führen Sie den folgenden Befehl aus

$ tail -f /var/log/auth.log

Eine weitere großartige Möglichkeit zum Lesen von Linux-Protokollen ist die Verwendung grafischer Anwendungen, wenn Sie eine Linux-Desktop-Umgebung ausführen

Die „ Protokolle Anwendung “ ist eine grafische Anwendung, mit der Anwendungs- und Systemprotokolle aufgelistet werden, die in verschiedenen Protokolldateien (entweder in rsyslog oder journald) gespeichert werden können

Dienstprogramme

Nachdem Sie gesehen haben, wie die Protokollierung auf einem Linux-System konfiguriert werden kann, sehen wir uns einige Dienstprogramme an, die Sie für den Fall verwenden können, dass Sie Nachrichten protokollieren möchten

Logger

Das Logger- Dienstprogramm ist wahrscheinlich einer der am einfachsten zu verwendenden Log-Clients

Der Logger wird zum Senden von Protokollnachrichten an das Systemprotokoll verwendet und kann mit der folgenden Syntax ausgeführt werden.

$ logger <options> <message>

Angenommen, Sie möchten eine Notfallnachricht von der Authentifizierungsfunktion an Ihr Dienstprogramm rsyslog senden. Führen Sie dann den folgenden Befehl aus

$ logger -p auth.emerg "Somebody tried to connect to the system"

Wenn Sie nun die Datei /var/log/auth.log überprüfen, können Sie die Nachricht finden, die Sie gerade auf dem rsyslog-Server protokolliert haben

$ tail -n 10 /var/log/auth.log | grep --color connect

Der Logger ist sehr nützlich, wenn er beispielsweise in Bash-Skripten verwendet wird

Aber was ist, wenn Sie Dateien mit dem systemd-journal protokollieren möchten?

systemd-cat

Um Nachrichten an das systemd-Journal zu senden, müssen Sie den Befehl „systemd-cat“ verwenden und den Befehl angeben, den Sie ausführen möchten

$ systemd-cat <command> <arguments>

Wenn Sie die Ausgabe des Befehls "ls -l" an das Journal senden möchten, schreiben Sie den folgenden Befehl

$ systemd-cat ls -l

Es ist auch möglich, "Nur-Text" -Protokolle an das Journal zu senden, indem der Befehl echo an das Dienstprogramm systemd-cat weitergeleitet wird

$ echo "This is a message to journald" | systemd-cat

Wall

Der Befehl wall steht nicht in direktem Zusammenhang mit Protokollierungsdienstprogrammen, kann jedoch für die Linux-Systemadministration sehr nützlich sein

Der Befehl wall wird verwendet, um Nachrichten an alle angemeldeten Benutzer zu senden.

$ wall -n <message>

Wenn Sie beispielsweise allen angemeldeten Benutzern eine Nachricht schreiben würden, um sie über den nächsten Neustart des Servers zu informieren, würden Sie den folgenden Befehl ausführen

$ wall -n "Server reboot in five minutes, close all important applications"


Anhang

Siehe auch

Links

Weblinks