Introduction aux niveaux de journal du noyau Linux

Introduction aux niveaux de journal du noyau Linux

Objectif

L'objectif de ce tutoriel est de se renseigner sur les différents niveaux de journal du noyau Linux, comment ils sont organisés et comment nous pouvons configurer quels messages doivent être affichés sur la console en fonction de leur gravité.

Exigences

  • Privilèges racine pour modifier les fichiers de configuration

Difficulté

FACILE

Introduction

La gestion des fichiers journaux du noyau Linux est un aspect crucial d'une administration de la machine: les journaux peuvent simplement nous informer de l'état du démon, ou montrer des messages ou des avertissements critiques. Dans ce tutoriel, nous verrons le type de niveau de journal utilisé par le noyau Linux, comment ils sont organisés par gravité et comment nous pouvons filtrer les messages affichés sur la console en fonction de celui-ci.

Les niveaux de journal du noyau Linux

Il y a essentiellement huit niveaux de journal qu'un message envoyé par le noyau Linux peut adopter, à partir de niveau 0 et diminuer de gravité niveau 7: l'identifiant de niveau de journal le plus bas, le contexte le plus critique.

Lorsqu'un niveau de journal est défini comme par défaut pour la console, de manière persistante ou temporaire, elle agit comme un filtre, de sorte que seuls les messages avec un niveau de journal inférieur à celui-ci (donc les messages avec une gravité plus élevée) sont affichés. Voyons, brièvement, comment les niveaux de journal sont organisés:

Le premier niveau de journal est 0, identifié par le Kern_emerg chaîne. C'est le plus haut niveau par ordre de gravité: il est adopté par des messages sur l'instabilité du système ou des accidents imminents.

Logevel 1, ou Kern_alert C'est ce qui vient immédiatement après. Ce niveau est utilisé dans des situations où l'attention de l'utilisateur est immédiatement requise.

Le niveau de journal suivant par ordre de gravité est Kern_crit, ou loglevel 2. Ce niveau de gravité est utilisé pour informer les erreurs critiques, liées au matériel ou aux logiciels.

Logevel 3, également identifié par le Kern_err String, c'est le prochain de l'échelle. Les messages adoptant ce niveau sont souvent utilisés pour informer l'utilisateur des erreurs non critiques, comme par exemple une reconnaissance de l'appareil échoué ou problématique, ou plus généralement des problèmes liés au pilote.



Kern_warning, ou loglevel 4 C'est le niveau de journal généralement utilisé comme défaut de la majorité des distributions Linux. Ce niveau est utilisé pour afficher des avertissements ou des messages sur les erreurs non imminentes.

Logevel 5 c'est Kern_notice. Les messages qui utilisent ce niveau de gravité concernent des événements qui peuvent mériter de noter.

Logevel 6 c'est Kern_info: Ceci est le niveau de journal utilisé pour les messages d'information sur l'action effectuée par le noyau.

Enfin, nous avons Kern_debug, ou loglevel 7, qui est principalement utilisé pour le débogage.

Comment vérifier le niveau de journal par défaut actuel

Vérification du Loglevel par défaut utilisé sur notre système, c'est très facile. Tout ce que nous avons à faire est d'examiner le contenu du / proc / sys / noyau / printk déposer. Pour ceux d'entre vous qui ne savent pas, / proc c'est un système de fichiers virtuel: Les fichiers y contenus ne sont pas réellement sur le disque, mais sont une représentation visuelle de l'état système créé par le noyau et maintenu en mémoire. Dans ce cas, par exemple, nous pouvons utiliser le fichier mentionné ci-dessus pour interroger des informations sur le niveau de journal de la console par défaut définie dans notre système. Tout ce que nous avons à faire est de courir:

$ cat / proc / sys / noyau / printk

Ceci est la sortie typique de la commande:

4 4 1 7

La première valeur de notre sortie est le courant console_loglevel. Ce sont les informations que nous recherchions: la valeur, 4 Dans ce cas, représente le niveau de journal actuellement utilisé. Comme dit avant cela signifie que seuls les messages adoptant un niveau de gravité supérieur à celui-ci seront affichés sur la console.

La deuxième valeur de la sortie représente le default_message_loglevel. Cette valeur est automatiquement utilisée pour les messages sans niveau de journal spécifique: si un message n'est pas associé à un niveau de journal, celui-ci sera utilisé pour cela.

La troisième valeur de la sortie rapporte le minimum_console_loglevel statut. Il indique le Loglevel minimum qui peut être utilisé pour console_loglevel. Le niveau ici utilisé c'est 1, le plus haut.

Enfin, la dernière valeur représente le default_console_loglevel, qui est le Loglevel par défaut utilisé pour console_loglevel à l'heure du démarrage.

Par souci d'exhaustivité, nous devons dire que les mêmes informations peuvent également être récupérées en utilisant le sysctl Commande, en cours d'exécution:

$ Sysctl Kernel.imprimer


Modification du niveau de journal de la console par défaut

Nous venons de voir comment récupérer des informations sur le Loglevel actuel utilisé pour la console. Dans certaines situations, nous voulons peut-être modifier cette valeur: voyons comment nous pouvons accomplir cette tâche.

La méthode la plus simple que nous pouvons utiliser est d'écrire la nouvelle valeur / proc / sys / noyau / printk déposer. Il s'agit cependant d'une solution temporaire, et le nouveau paramètre ne persistera pas un redémarrage de la machine. Disons que nous voulons modifier la console par défaut Loglevel 3, Voici ce que nous dirigerions:

$ echo "3" | Sudo Tee / Proc / Sys / Kernel / Printk

Ou si vous utilisez le racine compte directement:

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

En regardant le contenu du fichier, nous pouvons vérifier que le Loglevel est maintenant celui que nous avons spécifié dans notre commande:

$ cat / proc / sys / noyau / printk 3 4 1 7 

Nous pouvons obtenir le même résultat en utilisant le sysctl commande:

Sudo Sysctl -W Kernel.printk = 3

Permettez-moi de le répéter: ce sont des solutions temporaires et non persistantes. Pour modifier le Loglevel par défaut de manière persistante, nous devons modifier le / etc / par défaut / grub fichier, passer le logevel Paramètre à la ligne de commande du noyau au démarrage:

Grub_timeout = 5 grub_distributor = "$ (sed 's, release .* $ ,, g '/ etc / système système) "grub_default = enregistré grub_disable_submenu = true grub_terminal_output =" console "grub_cmdline_linux ="loglevel = 3 ressume = uuid = df5a0685-43f8-433a-8611-57335a10ca8d "grub_disable_recovery =" true " 

Ci-dessus se trouve le contenu du fichier / etc / default / grub, et il est mis en évidence le paramètre qui doit être ajouté à GRUB_CMDLINE_LINUX, qui contient les instructions de ligne de commande du noyau. Dans ce cas, nous avons utilisé loglevel = 3, Puisque nous voulions utiliser ce Loglevel spécifique pour la console. Après avoir modifié le fichier et enregistré les modifications, nous devons recharger Grub afin que la nouvelle configuration soit appliquée au prochain redémarrage: la commande pour effectuer cette opération dépend de la distribution que nous exécutons. Génériquement la commande est:

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

Sur la distribution basée à Debian, un script en wrapper est utilisé pour effectuer essentiellement la même opération:

$ sudo update-grub

La configuration de GRUB sera mise à jour, et sur le prochain redémarrage, le niveau de journal spécifié sera adopté par défaut.

Conclusions

Dans ce tutoriel, nous avons appris comment les journaux du noyau Linux sont organisés en fonction de leur niveau de gravité. Nous avons également vu comment nous pouvons modifier la configuration par défaut afin que seuls certains messages envoyés par le noyau soient affichés sur la console, en utilisant les mêmes critères. Enfin, nous avons vu comment rendre ces changements persistants.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Journalisation et audit avancés sur Linux
  • Comment gérer et dépanner les journaux Kubernetes
  • Fichiers de configuration Linux: 30 premiers
  • Téléchargement Linux
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Installez Arch Linux dans VMware Workstation
  • Linux peut-il obtenir des virus? Exploration de la vulnérabilité de Linux…