GNU/Linux >> Tutoriels Linux >  >> Linux

Comment :gérer les journaux système avec Journalctl

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.


Linux
  1. Comment utiliser Ansible pour configurer la surveillance du système avec Prometheus

  2. Comment effacer Journalctl ?

  3. Comment utiliser journalctl pour analyser les journaux sous Linux

  4. Comment surveiller les journaux d'authentification système dans Ubuntu

  5. Comment obtenir des statistiques système avec node.js

Comment vérifier/réparer le système de fichiers Linux au démarrage

Comment exporter les journaux de vos serveurs avec Rsyslog dans Centos 8

Journaux système

Lisez et analysez vos journaux système Linux avec Journalctl

Gestion des journaux avec Logrotate sur Ubuntu

Journalctl :comment lire et modifier les journaux Systemd