Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Gestion des journaux système de SLE Micro

Gestion des journaux système de SLE Micro

Date de publication : 29 sep 2024
CONTENU

L'analyse des fichiers journaux du système est l'une des tâches les plus importantes lors de l'analyse du système. En fait, l'examen des fichiers journaux du système doit être la première chose à faire lors de la maintenance ou du dépannage d'un système. SLE Micro consigne automatiquement en détail tout ce qui se passe sur le système.

MOTIF

Cet article fournit des instructions sur la façon d'examiner ce qui s'est passé sur votre système en consultant les journaux système.

EFFORT

La lecture et la compréhension de cet article nécessitent environ 20 minutes.

OBJECTIF

Vous obtiendrez un aperçu de l'emplacement des fichiers journaux et de la façon de les gérer.

CONDITIONS REQUISES
  • Privilèges root.

1 Où trouver les fichiers journaux du système ?

SLE Micro consigne plusieurs types de messages, provenant par exemple du kernel, de SELinux ou d'autres services.

Les messages du kernel et les messages des services système enregistrés avec systemd sont consignés dans le journal systemd (voir Section 4, « Système de consignation systemd « journal » »). D'autres fichiers journaux du système se trouvent sous le répertoire /var/log. Les messages SELinux sont consignés dans /var/log/audit/audit.log. Pour plus d'informations, reportez-vous au document SELinux troubleshooting.

La liste suivante fournit un aperçu de tous les fichiers journaux système trouvés dans SLE Micro après une installation par défaut. En fonction de l'étendue de votre installation, /var/log contient également des fichiers journaux d'autres services et applications non répertoriés ici. Certains fichiers et répertoires décrits ci-dessous sont des « marques de réservation » et ne sont utilisés que lorsque l'application correspondante est installée. La plupart des fichiers journaux ne sont visibles que pour l'utilisateur root. Généralement, vous pouvez afficher ces fichiers à l'aide d'un éditeur étant donné qu'ils sont en texte clair.

Important
Important : fichiers journaux non pris en charge

utmp, wtmp et lastlog ont été supprimés de SLE Micro et ne sont plus pris en charge. S'il existe des applications qui écrivent dans ces fichiers journaux, n'oubliez pas que ces derniers sont incomplets. wtmp a été remplacé par wtmpdb, et lastlog par lastlog2.

audit/

Journaux de la structure d'audit.

ConsoleKit/

Journaux du daemon ConsoleKit (daemon permettant de suivre les utilisateurs connectés et leur mode d'interaction avec l'ordinateur).

cups/

Journaux d'accès et d'erreurs de Common Unix Printing System (cups).

firewalld

Journaux du pare-feu.

krb5/

Fichiers journaux du système d'authentification réseau Kerberos.

chrony/

Journaux du daemon Network Time Protocol (chrony).

YaST2/

Tous les fichiers journaux YaST.

zypp/

Fichiers journaux libzypp. Reportez-vous à ces fichiers pour l'historique d'installation des paquets.

zypper.log

Journaux du programme d'installation de ligne de commande zypper.

2 Affichage et analyse des fichiers /var/log

Vous pouvez afficher et analyser les journaux en texte clair dans /var/log à l'aide des commandes CLI comme décrit plus loin.

Pour afficher les fichiers journaux, utilisez les commandes less ou more. Utilisez head et tail pour afficher le début ou la fin d'un fichier journal. Pour afficher les entrées ajoutées à un fichier journal en temps réel, utilisez tail -f. Pour plus d'informations sur l'utilisation de ces outils, reportez-vous à leurs pages de manuel.

Pour rechercher des chaînes ou des expressions régulières dans les fichiers journaux, utilisez grep. awk est utile pour l'analyse et la réécriture des fichiers journaux.

3 Gestion des fichiers journaux avec logrotate

Les fichiers journaux sous /var/log augmentent quotidiennement et deviennent rapidement très volumineux. logrotate est un outil qui vous aide à gérer les fichiers journaux et leur croissance. Il permet la rotation automatique, la suppression, la compression et l'envoi par courrier électronique des fichiers journaux. Les fichiers journaux peuvent être traités périodiquement (quotidiennement, hebdomadairement ou mensuellement) ou lorsqu'ils dépassent une certaine taille.

logrotate est habituellement exécuté quotidiennement par systemd et ne modifie donc généralement les fichiers journaux qu'une fois par jour. Toutefois, des exceptions se produisent lorsqu'un fichier journal est modifié en raison de sa taille, si la commande logrotate est exécutée plusieurs fois par jour ou si l'option --force est activée. Affichez le fichier /var/lib/misc/logrotate.status pour savoir quand un fichier particulier a subi la dernière rotation.

logrotate peut être configuré en fonction de vos besoins. Pour plus d'informations, reportez-vous à la Section 3.1, « Configuration de logrotate ».

3.1 Configuration de logrotate

Le fichier de configuration principal logrotate.conf définit, par exemple, la fréquence de rotation des journaux ou l'outil utilisé pour les compressions de données. Chaque service peut avoir sa propre configuration logrotate dans /etc/logrotate.d/.

3.1.1 Réglage de logrotate.conf

La version par défaut de logrotate.conf réside dans le répertoire /usr/etc/. Si les valeurs par défaut ne répondent pas à vos besoins, copiez le fichier dans /etc/logrotate.conf et modifiez les valeurs de configuration à cet endroit. Ne modifiez pas la version /usr/etc/, car elle risque d'être remplacée par une mise à jour système. Vous pouvez remplacer les valeurs suivantes :

weekly

Fréquence de rotation des journaux. Vous pouvez utiliser n'importe laquelle des valeurs suivantes : hourly, daily, weekly, monthly ou yearly.

maxage

Vous pouvez spécifier le nombre de jours pendant lesquels les journaux sont conservés.

rotate 4

Le nombre détermine la quantité de rotations de journaux pour la conservation des journaux ayant subi une rotation. Lorsque cette option est définie sur rotate 0, les journaux sont supprimés immédiatement. Lorsque cette option est définie sur rotate -1, les journaux ne sont supprimés que lorsqu'ils atteignent la valeur de maxage.

dateext

Si l'option est présente dans le fichier de configuration, les noms de fichiers journaux ayant subi une rotation reçoivent une extension reprenant une date au format suivant : logname.YYYYMMDD. Si elle n'est pas présente, le modèle de nom de fichier par défaut est le suivant : logname.1, logname.2.

compress

Si elle est ajoutée en commentaire, les journaux ne sont pas compressés.

compresscmd et uncompresscmd

Ici, vous pouvez modifier les outils de compression et de décompression par défaut en définissant les chemins absolus correspondants vers les outils.

include PATH

Vous pouvez modifier l'emplacement par défaut du fichier avec les informations de rotation des journaux. La valeur par défaut est /var/lib/misc/logrotate.status.

3.1.2 Configuration logrotate spécifique au service

Les services et les applications peuvent disposer d'une configuration logrotate spécifique dans /etc/logrotate.d. Outre les options mentionnées à la Section 3.1.1, « Réglage de logrotate.conf », vous pouvez également utiliser les configurations suivantes :

missingok

La rotation des journaux ne signale pas d'erreurs si l'un des fichiers journaux spécifiés est manquant.

notifempty

La rotation ne s'applique pas à un fichier journal vide.

delaycompress

La compression des journaux ayant subi une rotation est reportée jusqu'à la rotation suivante.

sharedscripts

Indique une section avec des scripts qui ne doivent être exécutés qu'une seule fois, quel que soit le nombre de journaux faisant l'objet d'une rotation. En cas d'omission, les scripts sont exécutés pour chaque fichier journal faisant l'objet d'une rotation.

size

Définit la taille qu'un fichier journal peut atteindre avant le lancement de la rotation des journaux. Cette option peut ignorer la planification horaire. La valeur peut être exprimée en mégaoctets (M), en kilo-octets (K) ou en octets (B).

minsize

Les journaux subissent une rotation en fonction de la planification horaire spécifiée si leur taille dépasse cette valeur. La valeur peut être exprimée en mégaoctets (M), en kilo-octets (K) ou en octets (B).

maxsize

Spécifie la taille de fichier journal maximale. Lorsqu'un fichier journal atteint cette limite, cela déclenche la rotation même lorsque l'intervalle de temps n'est pas atteint. La valeur peut être exprimée en mégaoctets (M), en kilo-octets (K) ou en octets (B).

4 Système de consignation systemd « journal »

systemd dispose de son propre système de consignation appelé journal. Le journal lui-même est un service système géré par systemdsystemd-journald.service.

Le service collecte et stocke les données de consignation en tenant à jour des journaux indexés structurés basés sur des informations de consignation reçues du kernel, des processus utilisateur, des entrées standard et des erreurs des services système. Le service systemd-journald est activé et démarré par défaut.

Le journal stocke les données de journal dans /var/log/journal/.

4.1 Utilisation de la commande journalctl

Cette section présente plusieurs options utiles courantes pour améliorer le comportement par défaut de la commande journalctl.

La commande journalctl présente la syntaxe suivante :

        journalctl [options…] [matches…]
Astuce
Astuce : messages liés à un exécutable spécifique

Pour afficher tous les messages de journal liés à un exécutable spécifique, spécifiez le chemin complet de l'exécutable :

> sudo journalctl /usr/lib/systemd/systemd

La commande accepte les options suivantes :

-f

Affiche uniquement les messages de journal les plus récents et imprime les nouvelles entrées de journal lorsqu'elles sont ajoutées au journal.

-e

Imprime les messages et passe à la fin du journal, afin que les dernières entrées soient visibles dans le téléavertisseur.

-r

Imprime les messages du journal dans l'ordre inverse, de sorte que les entrées les plus récentes apparaissent en premier.

-k

Affiche uniquement les messages du kernel. Cela équivaut à la correspondance de champ _TRANSPORT=kernel.

-u

Affiche uniquement les messages de l'unité systemd spécifiée. Cela équivaut à la correspondance de champ _SYSTEMD_UNIT=UNIT.

> sudo journalctl -u apache2
 [...]
 Jun 03 10:07:11 pinkiepie systemd[1]: Starting The Apache Webserver...
 Jun 03 10:07:12 pinkiepie systemd[1]: Started The Apache Webserver.

4.2 Filtrage des journaux

Lorsque la commande journalctl est appelée sans option, elle affiche tout le contenu du journal, les entrées les plus anciennes apparaissant en premier. Le résultat peut être filtré en fonction d'options ou de champs de journal spécifiques.

4.2.1 Filtrage basé sur l'intervalle de temps

Vous pouvez filtrer le résultat de journalctl en spécifiant la date de début et/ou de fin. La date doit être spécifiée au format 2014-06-30 9:17:16. Si la partie horaire est omise, le système utilise la valeur minuit. Si les secondes sont omises, le système utilise la valeur :00. Si la partie de date est omise, le système utilise la date actuelle. Au lieu d'une expression numérique, vous pouvez spécifier les mots-clés « hier », « aujourd'hui » ou « demain ». Ils font référence à minuit du jour précédent, du jour en cours ou du jour suivant. Si vous spécifiez « maintenant », cela fait référence à l'heure actuelle. Vous pouvez également spécifier des heures relatives précédées du préfixe - ou +, qui fait référence aux heures antérieures ou postérieures à l'heure actuelle.

Pour afficher uniquement les nouveaux messages depuis maintenant et mettre à jour la sortie en continu :

> sudo journalctl --since "now" -f

Pour afficher tous les messages à partir de minuit jusqu'à 3 h 20 :

> sudo journalctl --since "today" --until "3:20"

4.2.2 Filtrage basé sur un numéro de démarrage

journalctl peut filtrer les messages en fonction d'un démarrage système spécifique. Pour répertorier tous les démarrages disponibles, exécutez la commande suivante :

> sudo journalctl --list-boots
 -1 097ed2cd99124a2391d2cffab1b566f0 Mon 2014-05-26 08:36:56 EDT—Fri 2014-05-30 05:33:44 EDT
  0 156019a44a774a0bb0148a92df4af81b Fri 2014-05-30 05:34:09 EDT—Fri 2014-05-30 06:15:01 EDT

La première colonne indique le décalage de démarrage : 0 pour le démarrage en cours, -1 pour le précédent et -2 pour celui avant le précédent, etc. La deuxième colonne contient l'ID de démarrage, suivi des tampons horaires de limitation du démarrage spécifique.

Pour afficher tous les messages du démarrage actuel :

> sudo journalctl -b

Si vous avez besoin de voir les messages du journal du précédent démarrage, ajoutez un paramètre de décalage. L'exemple suivant renvoie les messages du précédent démarrage :

> sudo journalctl -b -1

Une autre méthode consiste à répertorier les messages de démarrage en fonction de l'ID de démarrage. Pour ce faire, utilisez le champ _BOOT_ID :

> sudo journalctl _BOOT_ID=156019a44a774a0bb0148a92df4af81b

4.2.3 Filtrage basé sur les champs

Vous pouvez filtrer la sortie du journal en fonction de champs spécifiques. La syntaxe d'un champ à rechercher est la suivante : FIELD_NAME=MATCHED_VALUE, par exemple _SYSTEMD_UNIT=httpd.service. Vous pouvez spécifier plusieurs correspondances dans une seule requête pour filtrer davantage les messages renvoyés. Reportez-vous à man 7 systemd.journal-fields pour obtenir la liste des champs par défaut.

Pour afficher les messages produits par un ID de processus spécifique :

> sudo journalctl _PID=1039

Pour afficher les messages appartenant à un ID utilisateur spécifique :

# journalctl _UID=1000

Pour afficher les messages du tampon en anneau du kernel (identiques à ceux renvoyés par dmesg) :

> sudo journalctl _TRANSPORT=kernel

Pour afficher les messages de la sortie standard ou d'erreur du service :

> sudo journalctl _TRANSPORT=stdout

Pour afficher uniquement les messages produits par un service spécifié :

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service

Si deux champs différents sont spécifiés, seules les entrées correspondant simultanément aux deux expressions sont affichées :

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1488

Si deux correspondances font référence au même champ, toutes les entrées correspondant à l'une ou l'autre des expressions sont affichées :

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

Vous pouvez utiliser le séparateur + pour combiner deux expressions dans une logique OR. L'exemple suivant affiche tous les messages du processus du service Avahi portant l'ID de processus 1480 avec tous les messages du service D-Bus :

> sudo journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1480 + _SYSTEMD_UNIT=dbus.service

4.3 Configuration de journald

> sudo systemctl restart systemd-journald

4.3.1 Modification de la limite de taille du journal

Les données du journal utilisent jusqu'à 10 % du système de fichiers sur lequel /var/log/journal réside. Par exemple, si /var/log/journal se trouve sur une partition /var de 30 Go, le journal peut utiliser jusqu'à 3 Go d'espace disque. Pour modifier cette limite, changez (et supprimez la marque de commentaire) de l'option SystemMaxUse :

SystemMaxUse=50M

4.3.2 Transfert du journal vers /dev/ttyX

Vous pouvez transférer le journal vers un périphérique de terminal pour vous informer des messages système sur un écran de terminal préféré, par exemple, /dev/tty12. Remplacez les options journald comme suit :

ForwardToConsole=yes
TTYPath=/dev/tty12