Présentation
Dans certaines des distributions Linux les plus récentes, "init.d" ou "rsyslogd" a été remplacé par un programme appelé JournalCTL. Auparavant, les journaux se trouvaient généralement dans un emplacement particulier pour chaque fichier journal distinct, plutôt que d'être faciles à localiser, gérer et manipuler. Systemd a facilité l'accès à ces fichiers journaux en les centralisant, en enregistrant tous les processus du noyau et de l'utilisateur dans un "journal". Journalctl en est la dernière version, ce qui facilite encore plus la gestion de ces fichiers.
Dans ce guide, nous expliquerons les bases de journalctl ainsi qu'un bref aperçu des utilisations suggérées pour le programme.
Prérequis
Doit avoir une distribution Linux avec journalctl comme programme de gestion des journaux système, par exemple, CentOS 7. Si vous n'avez pas de serveur, envisagez un serveur privé virtuel SSD ultra rapide d'Atlantic.Net.
Comment gérer les journaux système avec Journalctl
Réglage de l'heure système
Avant de commencer quoi que ce soit d'autre, il est fortement suggéré de régler l'heure du système. Étant donné que systemd se connecte en tant que journal binaire, vous pouvez enregistrer vos enregistrements en heure UTC ou locale (serveur). Par défaut, systemd affichera les résultats en heure locale. Pour éviter toute confusion par la suite, nous vérifierons que l'heure est correctement réglée. Systemd a un programme intégré appelé "timedatectl" qui est à cet effet.
Tout d'abord, vérifiez que votre fuseau horaire est disponible dans les options de fuseau :
timedatectl list-timezones
Cela montre tous les fuseaux horaires disponibles sur votre serveur. Après avoir localisé celui qui correspond à votre emplacement (ou à l'emplacement de votre serveur), définissez-le :
sudo timedatectl set-timezone (zone)
Ensuite, nous vérifierons que cela a bien pris effet :
timedatectl status
La première ligne affichera l'heure correcte.
Contrôle d'accès
usermod -a -G adm username
Remplacez "nom d'utilisateur" par le nom de l'utilisateur. Cet utilisateur recevra le même accès journalctl que l'utilisateur root. Cependant, ce contrôle ne fonctionne que lorsque le stockage persistant est activé.
Affichage du journal de base
Il y a quelques commandes qui peuvent être émises à ce stade. La commande de base affichera une sortie de toutes les entrées générales, en affichant les entrées les plus anciennes en premier :
journalctl
Bien que cela vous donne tous les fichiers journaux, cela vous donnera, eh bien, tous les fichiers journaux. Cela signifie que vous aurez des centaines ou des milliers, voire plus, de lignes de journal affichées si vous en avez la possibilité. Ceci est similaire à ce que vous verriez si vous regardiez dans "/var/log/messages/" dans les versions précédentes.
Session de démarrage en cours
Nous avons également une commande qui affichera les journaux qui ne se sont produits que lors du démarrage en cours.
journalctl -b
Cela signifie que les informations des sessions de démarrage précédentes ne seront pas affichées.
Sessions de démarrage précédentes
Si vous avez besoin de consulter les journaux des sessions de démarrage précédentes, il existe également une option pour cela. Certaines versions activent la journalisation des sessions de démarrage précédentes par défaut. Pour vous assurer que le vôtre est configuré pour les enregistrer, nous vous suggérons d'activer cette fonctionnalité. Cela peut être fait en créant le répertoire
sudo mkdir -p /var/log/journal
soit en éditant directement le fichier de configuration du journal
sudo nano /etc/systemd/journald.conf
Dans le fichier, sous [Journal], définissez l'option "Storage=" sur "persistent" afin que la journalisation persistante soit activée. Enregistrez et quittez ce fichier et les paramètres prendront effet à l'avenir.
Une fois que cela a été enregistré, pour afficher les options disponibles pour les fichiers de démarrage à examiner,
journalctl --list-boots
Vous verrez une ligne pour chaque session de démarrage disponible. L'ID de décalage est la première colonne tandis que l'ID de démarrage est la deuxième colonne. Vous pouvez utiliser l'ID de décalage ou l'ID de démarrage pour émettre la commande :
journalctl -b (offset/boot ID)
Période spécifique
Vous pouvez, à la place, souhaiter examiner les fichiers journaux selon un intervalle de temps spécifié, qui peut s'étendre sur plusieurs sessions de démarrage ou le limiter à une fenêtre de temps spécifiée au sein d'une session de démarrage. Les limitations –since et –until peuvent être placées pour afficher uniquement les événements après et avant le journal spécifique.
Pour toutes les valeurs de temps, le format suivant doit être utilisé :
YYYY-MM-DD HH:MM:SS
Si vous souhaitez afficher les événements qui se sont produits depuis 10 h 00 le 5 juillet 2015, nous pouvons y parvenir à l'aide de la commande suivante :
journalctl --since “2015-07-05 10:00:00”
Veuillez garder à l'esprit que ceux-ci seront basés soit sur l'heure du serveur, soit sur l'UTC, selon ce que vous avez défini dans vos préférences plus tôt dans ce didacticiel.
Si la date est omise, le journal utilisera la date d'aujourd'hui. Si l'heure est omise, minuit (00:00:00) sera utilisé. Vous n'avez pas non plus besoin d'inclure le champ des secondes, auquel cas "00" secondes seront supposées.
Il existe également des commandes conviviales, telles que
journalctl --since yesterday
et
journalctl --since 02:00 --until “3 hours ago”
Options de filtrage
Par unité
La fonction disponible la plus utile est le filtrage des unités. Le filtrage -u donne la possibilité d'afficher uniquement une "unité" spécifique vous permettant de voir les choses qui se sont produites uniquement en référence à un programme ou à des systèmes spécifiques. Comme toujours, vous pouvez ajouter des filtres pour les périodes avec ceci.
journalctl -u nginx.service
ou
journalctl -u nginx.service --since yesterday
Par processus, utilisateur ou identifiant de groupe
Si vous avez déjà examiné suffisamment d'informations pour récupérer le PID du processus que vous recherchez, vous pouvez filtrer celui-ci à la place. Ceci est exécuté avec _PID
journalctl _PID=4345
Par emplacement
Le filtrage basé sur les emplacements des chemins est également disponible. Si vous sélectionnez un chemin d'exécutable, journalctl affichera toutes les entrées liées à cet exécutable. Si, par exemple, vous recherchez des journaux impliquant bash,
journalctl /usr/bin/bash
Cette méthode inclut généralement des informations plus détaillées sur les processus et les processus enfants, le cas échéant. Parfois, ce n'est pas une option, cependant.
Messages du noyau
Les messages du noyau seraient généralement situés dans la sortie dmesg, mais nous pouvons également utiliser journalctl pour les récupérer. Ce serait avec le filtre -k ou -dmesg.
journalctl -k
Cela affichera les messages du noyau qui se sont produits pendant la session de démarrage en cours. Encore une fois, cela peut toujours être modifié avec les options mentionnées précédemment. Si vous souhaitez consulter les messages du noyau de la session de démarrage précédente,
journalctl -k -b -1
Priorité
La priorité est souvent la méthode préférée d'examen des journaux. Journalctl peut être utilisé pour afficher les messages uniquement au-dessus d'un certain niveau de priorité. Voici les niveaux de priorité :
0 :urgence
1 :alerte
2 :critique
3 :erreur
4 :avertissement
5 :avis
6 :informations
7 :débogage
Vous pouvez utiliser soit le nom du niveau de priorité, soit le numéro correspondant. Si vous souhaitez uniquement voir les journaux de priorité d'avertissement ou supérieure, vous pouvez émettre la commande
journalctl -p warning -b
ou
journalctl -p 4 -b
Champ spécifié
Pour afficher la liste des journaux qui apparaissent dans un champ spécifique, utilisez le modificateur -F
journal -F fieldname
où "nom du champ" est remplacé par le champ que vous recherchez. Vous avez également la possibilité d'afficher uniquement les entrées de journal qui correspondent à une condition spécifique
journalctl fieldname=value
Tronquer ou développer la sortie
Journalctl peut être modifié pour réduire ou développer l'affichage des données de sortie. Par défaut, journalctl affichera l'intégralité de l'entrée, vous obligeant à faire défiler vers la droite avec les touches fléchées. Nous pouvons tronquer cette sortie à la place, ce qui affichera des points de suspension pour les informations supprimées avec l'option –no-full.
journalctl --no-full
Alternativement, vous pouvez dire à journalctl d'afficher toutes les informations, indépendamment du fait qu'un caractère ne soit pas imprimable. Cela se fait avec le modificateur -a.
journalctl -a
Passer à la sortie standard
journalctl --no-pager
Formats de sortie
Si vous utilisez un éditeur de texte sur les entrées de journal, comme nous l'avons vu ci-dessus, le journal peut être consulté dans d'autres formats selon les besoins. Cela peut être fait avec le modificateur -o et un spécificateur de format.
Par exemple, vous pouvez lire le journal en JSON en tapant
journalctl -b -u nginx -o json
Vous pouvez utiliser les éléments suivants pour les options d'affichage :
chat — Affiche le champ de message lui-même
exporter — Format binaire pour le transfert ou la sauvegarde
json — JSON standard, une entrée par ligne
json-joli — Format JSON mais plus facile à lire
json-sso — Format JSON encapsulé pour rendre compatible l'ajout d'un événement envoyé par le serveur
court — Sortie syslog par défaut
court-iso - Sortie par défaut qui affiche les horodatages d'horloge murale ISO 8601
court-monotone — Sortie par défaut avec horodatage monotone
court-précis — Sortie par défaut avec horodatage à la microseconde
verbeux — Affiche tous les champs de journal pour cette entrée, y compris masqué
Surveillance active des processus
Journalctl imite les administrateurs qui utilisent tail pour la surveillance. Cela a été intégré à journalctl permettant d'accéder à ces fonctionnalités sans avoir à utiliser d'outils supplémentaires.
Affichage des journaux récents
L'option -n peut être utilisée pour afficher un nombre spécifique d'enregistrements. Ne pas inclure un numéro de modification affichera dix (10) résultats, par défaut.
journalctl -n
Vous pouvez, à la place, spécifier le nombre d'entrées que vous souhaitez voir
journalctl -n 20
Suivre les journaux
Le modificateur -f peut être utilisé pour suivre les journaux au fur et à mesure de leur écriture.
journalctl -f
Maintenance du journal
Il existe quelques commandes qui peuvent être utilisées pour nettoyer certains journaux plus anciens afin d'économiser de l'espace sur votre disque dur.
Tout d'abord, vous pouvez savoir combien d'espace est occupé par les journaux en utilisant le modificateur –disk-usage.
journalctl --disk-usage
Il existe deux façons différentes de nettoyer cela. La première consiste à réduire le journal en fonction de la taille. Cela supprime les entrées de la plus ancienne à la plus récente jusqu'à ce que l'espace disque souhaité soit atteint.
sudo journalctl --vacuum-size-2G
L'autre façon de réduire le journal est à une certaine date. L'option –vacuum-time supprime toutes les entrées jusqu'à une certaine date.
Pour ne conserver que les entrées de l'année dernière, vous pouvez saisir
sudo journalctl --vacuum-time-1years
Limiter la taille du journal
Vous avez la possibilité de limiter l'espace que les revues peuvent occuper.
nano /etc/systemd/journald.conf
Ces modifications peuvent être apportées avec l'une des modifications de champ suivantes
SystemMaxUse= Espace disque maximal
SystemKeepFree= Quantité d'espace qui doit rester disponible
SystemMaxFileSize= Quelle taille peuvent atteindre les fichiers journaux individuels avant d'être mis en rotation
RuntimeMaxUse= Espace disque maximal pouvant être utilisé dans le stockage volatile (/run filesystem)
RuntimeKeepFree= La quantité d'espace qui doit être conservée disponible pour les autres dans le stockage volatile (/run filesystem)
RuntimeMaxFilesize= Quelle taille peut atteindre un fichier journal individuel dans un stockage volatil (dans le système de fichiers /run) avant d'être mis en rotation
Merci d'avoir suivi ce mode d'emploi. Veuillez revenir ici pour plus de mises à jour et pour envisager un serveur d'hébergement VPS leader sur le marché d'Atlantic.Net.