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 0
und 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.,
Loglevel1
oderKERN_ALERT
es 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_CRIT
oder loglevel2
. Dieser Schweregrad wird verwendet, um über kritische Fehler zu informieren, sowohl Hardware-als auch softwarebezogen.
Loglevel3
, auch identifiziert durch dieKERN_ERR
string, 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.
Abonnieren Sie RSS und NEWSLETTER und erhalten Sie aktuelle Linux News, Jobs, Karriereberatung und Tutorials.,
KERN_WARNING
oder loglevel
4
Dies 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.
Loglevel5
es istKERN_NOTICE
. Bei Nachrichten, die diesen Schweregrad verwenden, handelt es sich um Ereignisse, die möglicherweise erwähnenswert sind.,
Loglevel6
es istKERN_INFO
: Dies ist die Protokollebene, die für Informationsnachrichten über die vom Kernel ausgeführte Aktion verwendet wird.
Schließlich haben wirKERN_DEBUG
oder 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/printk
Datei untersuchen., Für diejenigen unter Ihnen, die es nicht wissen,/proc
Es 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 Wert4
reprä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_loglevel
verwendet 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_loglevel
beim Booten verwendet wird.,
Der Vollständigkeit halber müssen wir sagen, dass dieselben Informationen auch mit dem Befehlsysctl
abgerufen 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.