Gestion des journaux système de SLE Micro
- 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.
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
ouyearly
.-
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 surrotate -1
, les journaux ne sont supprimés que lorsqu'ils atteignent la valeur demaxage
.-
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
etuncompresscmd
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 systemd
—systemd-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…]
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
5 Mentions légales #
Copyright © 2006–2024 SUSE LLC et contributeurs. Tous droits réservés.
Il est autorisé de copier, distribuer et/ou modifier ce document conformément aux conditions de la licence de documentation libre GNU version 1.2 ou (à votre discrétion) 1.3, avec la section permanente qu'est cette mention de copyright et la licence. Une copie de la version de licence 1.2 est incluse dans la section intitulée « Licence de documentation libre GNU ».
Pour les marques commerciales SUSE, consultez le site Web https://www.suse.com/company/legal/. Toutes les autres marques de fabricants tiers sont la propriété de leur détenteur respectif. Les symboles de marque (®, ™, etc.) désignent des marques commerciales de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni les sociétés affiliées, ni les auteurs, ni les traducteurs ne peuvent être tenus responsables des erreurs possibles ou des conséquences qu'elles peuvent entraîner.