Linux/Logging/Syslog
Linux System Logging - Protokollierung mit Syslog
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 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