Einführung in die Linux-Kernel-Protokollebenen

Einführung in die Linux-Kernel-Protokollebenen

Ziel

Ziel dieses Tutorials ist es, die verschiedenen Linux-Kernel-Protokollebenen kennenzulernen, wie sie organisiert sind und wie wir einrichten können, welche Nachrichten je nach Schweregrad auf der Konsole angezeigt werden sollen.

Voraussetzungen

  • Root-Berechtigungen zum Bearbeiten der Konfigurationsdateien

Schwierigkeitsgrad

LEICHT

Einführung

Das management von Linux-kernel-log-Dateien ist ein wesentlicher Aspekt einer Maschine-Verwaltung: logs können einfach informieren uns über den Stand der Dämon, oder zeigen Sie wichtige Nachrichten oder Warnungen., In diesem Tutorial sehen wir die verschiedenen Arten von Protokollebenen, die vom Linux-Kernel verwendet werden, wie sie nach Schweregrad organisiert sind und wie wir Nachrichten filtern können, die auf der Konsole angezeigt werden.

Die Protokollebenen des Linux-Kernels

Es gibt grundsätzlich acht Protokollebenen, die eine vom Linux-Kernel gesendete Nachricht annehmen kann, beginnend mitlevel 0und abnehmender Schweregrad ‚bislevel 7: die Kennung der niedrigsten Protokollebene, der kritischste Kontext.,
Wenn eine Protokollebene als Standard für die Konsole festgelegt ist, entweder dauerhaft oder vorübergehend, es fungiert als Filter, so dass nur Nachrichten mit einer niedrigeren Protokollebene als es, (daher Nachrichten mit einem höheren Schweregrad) angezeigt werden. Lassen Sie uns kurz sehen, wie Protokollebenen organisiert sind: Die erste Protokollebene ist0, identifiziert durch die ZeichenfolgeKERN_EMERG. Dies ist die höchste Stufe in der Reihenfolge des Schweregrads: Sie wird von Nachrichten über Systeminstabilität oder bevorstehende Abstürze übernommen.,
Loglevel1oderKERN_ALERTes ist das, was kommt gleich nach. Diese Ebene wird in Situationen verwendet, in denen die Aufmerksamkeit des Benutzers sofort erforderlich ist.
Die nächste Log-Ebene in der Reihenfolge des Schweregrads istKERN_CRIToder loglevel2. Dieser Schweregrad wird verwendet, um über kritische Fehler zu informieren, sowohl Hardware-als auch softwarebezogen.
Loglevel3, auch identifiziert durch dieKERN_ERRstring, es ist die nächste in der skala., Nachrichten auf dieser Ebene werden häufig verwendet, um den Benutzer über unkritische Fehler zu informieren, wie beispielsweise eine fehlgeschlagene oder problematische Geräteerkennung oder allgemein treiberbezogene Probleme.

NEWSLETTER ABONNIEREN & RSS
Abonnieren Sie RSS und NEWSLETTER und erhalten Sie aktuelle Linux News, Jobs, Karriereberatung und Tutorials.,

KERN_WARNINGoder loglevel

4Dies ist die Protokollebene, die normalerweise in den meisten Linux-Distributionen als Standard verwendet wird. Diese Ebene wird verwendet, um Warnungen oder Meldungen über nicht bevorstehende Fehler anzuzeigen.
Loglevel5es istKERN_NOTICE. Bei Nachrichten, die diesen Schweregrad verwenden, handelt es sich um Ereignisse, die möglicherweise erwähnenswert sind.,
Loglevel6es istKERN_INFO: Dies ist die Protokollebene, die für Informationsnachrichten über die vom Kernel ausgeführte Aktion verwendet wird.
Schließlich haben wirKERN_DEBUGoder loglevel7, das hauptsächlich zum Debuggen verwendet wird.

So überprüfen Sie die aktuelle Standardprotokollstufe

Überprüfen Sie die auf unserem System verwendete Standardprotokollstufe Es ist sehr einfach. Wir müssen nur den Inhalt der/proc/sys/kernel/printkDatei untersuchen., Für diejenigen unter Ihnen, die es nicht wissen,/procEs ist einevirtual filesystem: Die darin enthaltenen Dateien befinden sich nicht tatsächlich auf der Festplatte,sondern sind eine visuelle Darstellung des Systemzustands, der vom Kernel erstellt und im Speicher verwaltet wird. In diesem Fall können wir beispielsweise die Datei mentionedabove verwenden, um Informationen über die in oursystem festgelegte Standardprotokollebene der Konsole abzufragen. Wir müssen nur Folgendes ausführen:

$ cat /proc/sys/kernel/printk

Dies ist die typische Ausgabe des Befehls:

4 4 1 7

Der erste Wert in unserer Ausgabe ist die aktuelleconsole_loglevel., Dies sind die Informationen, nach denen wir gesucht haben: Der Wert4repräsentiert in diesem Fall die aktuell verwendete Protokollebene. Wie bereits erwähnt, bedeutet dies, dass nur Nachrichten mit einem höheren Schweregrad auf der Konsole angezeigt werden.
Der zweite Wert in der Ausgabe repräsentiert diedefault_message_loglevel. Dieser Wert wird automatisch für Nachrichten ohne eine bestimmte Protokollebene verwendet: Wenn eine Nachricht nicht mit einer Protokollebene verknüpft ist, wird dieser Wert dafür verwendet.
Der dritte Wert in der Ausgabe meldet den Status ., Es gibt den minimalen Loglevel an, der fürconsole_loglevelverwendet werden kann. Die hier verwendete Ebene ist1, die höchste.
Schließlich stellt der letzte Wert diedefault_console_loglevel, die die Standard-Loglevel fürconsole_loglevelbeim Booten verwendet wird.,
Der Vollständigkeit halber müssen wir sagen, dass dieselben Informationen auch mit dem Befehlsysctlabgerufen werden können:

$ sysctl kernel.printk

Ändern der Standard-Konsolenprotokollebene

Wir haben gerade gesehen, wie Informationen über die aktuelle für die Konsole verwendete Protokollebene abgerufen werden können. In einigen Situationen möchten wir diesen Wert möglicherweise ändern: Mal sehen, wie wir diese Aufgabe erfüllen können.
Die einfachste Methode, die wir verwenden können, ist es, den neuen Wert in die /proc/sys/kernel/printk Datei zu schreiben., Dies ist jedoch eine vorübergehende Lösung, und die neue Einstellung wird einen Neustart des Computers nicht beibehalten., Angenommen, wir möchten den Standard-Konsolenloglevel in 3 ändern, hier ist, was wir ausführen würden:

$ echo "3" | sudo tee /proc/sys/kernel/printk

Oder wenn wir das verwenden root Konto direkt:

# echo "3" > /proc/sys/kernel/printk

Durch Betrachten des Inhalts der Datei können wir überprüfen, ob der Loglevel jetzt der in unserem Befehl angegebene ist:

$ cat /proc/sys/kernel/printk3 4 1 7

Mit dem Befehl sysctl können wir dasselbe Ergebnis erzielen:

sudo sysctl -w kernel.printk=3

Lassen Sie es mich noch einmal wiederholen: Dies sind temporäre, nicht persistente Lösungen., Um den Standard-Loglevel dauerhaft zu ändern, müssen wir die Datei /etc/default/grub ändern, indem wir den Parameter loglevel beim Booten an die Kernel-Befehlszeile übergeben: Oben ist der Inhalt der Datei /etc/default/grub und dann ist es der Parameter, der hinzugefügt werden sollte GRUB_CMDLINE_LINUX, der die Kernel-Befehlszeilenanweisungen enthält. In diesem Fall haben wir loglevel=3, da wir diesen spezifischen Loglevel für die Konsole verwenden wollten., Nachdem wir die Datei geändert und die Änderungen gespeichert haben, müssen wir grub neu laden, damit die neue Konfiguration beim nächsten Neustart angewendet wird: Der Befehl zum Ausführen dieses Vorgangs hängt von der von uns ausgeführten Distribution ab. Im Allgemeinen lautet der Befehl:

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Auf Debian-basierter Distribution wird ein Wrapper-Skript verwendet, um im Grunde den gleichen Vorgang auszuführen:

$ sudo update-grub

Die Grub-Konfiguration wird aktualisiert, und beim nächsten Neustart wird die angegebene Protokollebene als Standard übernommen.,

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, wie die Linux-Kernel-Protokolle je nach Schweregrad organisiert sind. Wir haben auch gesehen, wie wir das Standard-Setup so ändern können, dass nur bestimmte vom Kernel gesendete Nachrichten nach denselben Kriterien auf der Konsole angezeigt werden. Schließlich haben wir gesehen, wie diese Änderungen dauerhaft zu machen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.