Gérer les messages de journal sous SystemD à l'aide de journalctl [Guide complet]

Gérer les messages de journal sous SystemD à l'aide de journalctl [Guide complet]

Systemd est un système de pointe et un gestionnaire de services pour les systèmes Linux: un remplacement du démon init destiné à démarrer les processus en parallèle au démarrage du système. Il est désormais soutenu dans un certain nombre de distribution courant actuelle, notamment Fedora, Debian, Ubuntu, OpenSuse, Arch, Rhel, Centos, etc.

Plus tôt, nous avons expliqué l'histoire derrière «init» et «systemd»; où nous avons discuté des deux démons, pourquoi 'init«Techniquement, il fallait être remplacé par»systemd'ainsi que les principales caractéristiques de Systemd.

L'un des principaux avantages de SystemD par rapport aux autres systèmes d'initiés communs est la prise en charge de la gestion centralisée du système et des processus journalisation à l'aide d'un journal. Dans cet article, nous apprendrons à gérer et à afficher les messages de journal sous Systemd en utilisant journalctl Commande dans Linux.

Important: Avant de vous déplacer plus loin dans ce guide, vous pouvez apprendre à gérer les services et les unités «SystemD» à l'aide de la commande «SystemCTL», et également créer et exécuter de nouvelles unités de service dans SystemD à l'aide de scripts Shell dans Linux. Cependant, si vous êtes d'accord avec tout ce qui précède, continuez à lire.

Configuration de JournalD pour collecter des messages de journal sous SystemD

journal est un démon qui rassemble et écrit des entrées de journal de l'ensemble du système; Ce sont essentiellement des messages de démarrage, des messages du noyau et de Syslog ou diverses applications et il stocke tous les messages dans un emplacement central - Fichier du journal.

Vous pouvez contrôler le comportement de journal via son fichier de configuration par défaut: / etc / systemd / journald.confli qui est généré au moment de la compilation. Ce fichier contient des options dont vous pouvez changer les valeurs pour suivre vos besoins en environnement local.

Vous trouverez ci-dessous un échantillon de ce à quoi le fichier ressemble, visualisé à l'aide de la commande CAT.

$ cat / etc / systemd / journald.confli 
Fichier de configuration JournalD
# Voir journald.conf (5) pour plus de détails. [Journal] # Storage = Auto # Compress = Yes # Seal = Yes # SplitMode = UID # SyncIntervalSec = 5M # RateliMitInterVal = 30S # RatelimitSt = 1000 # SystemMaxUse = # SystemKeepFree = # SystemMaxFileSize = # SystemMaxFiles = 100 # RuntimeMaSUSE = # runTimeEnekee # RuntimeMaxFileSize = # runtimeMaxFiles = 100 # maxretentionsec = # maxFilesEC = 1Month # ForwardToSysLog = Yes # # FORMETOKMSG = NON # FORMANTOCONSOLE = NON # FORMETOWALL = YES # TTYPATH = / Dev / Console # MaxLevelStore = DEBUG # MaxleveLSysLog = Debug # MaxLevelkmsg = AVISS Maxlevelconsole = info # maxlevelwall = émerge 

Notez que divers installations de package et utilisent des extraits de configuration dans / usr / lib / systemd / *.confli.d/ et des configurations de temps d'exécution peuvent être trouvées dans / run / systemd / journald.confli.d/*.confli que vous n'utilisez pas nécessairement.

Activer le stockage des données du journal sur le disque

Un certain nombre de distributions Linux, y compris Ubuntu et ses dérivés comme Linux Mint, n'activent pas le stockage persistant des messages de démarrage sur le disque par défaut.

Il est possible d'activer cela en définissant le «Stockage«Option pour«persistant" comme indiqué ci-dessous. Cela créera le / var / log / journal Le répertoire et tous les fichiers de journal seront stockés en dessous.

$ sudo vi / etc / systemd / journald.Conf ou $ sudo nano / etc / systemd / journald.confli 
[Journal] Storage = persistant 

Pour des paramètres supplémentaires, trouvez la signification de toutes les options qui sont censées être configurées sous le "[Journal]" Section en tapant.

$ man journald.confli 

Définition du temps correct du système à l'aide de la commande timeDatectl

Pour une gestion fiable des journaux sous SystemD à l'aide du service JournalD, assurez-vous que les paramètres de temps, y compris le fuseau horaire, sont corrects sur le système.

Afin d'afficher les paramètres de date et d'heure actuels sur votre système, tapez.

$ TimeDatectl ou $ TimeDatectl Statut Temps local: Jeu 2017-06-15 13:29:09 Eat Universal Time: Thu 2017-06-15 10:29:09 UTC RTC Temps: jeu 2017-06-15 10:29:09 Temps horaire: Afrique / Kampala (manger, +0300) Temps de réseau sur: Oui NTP Synchronisé: Oui RTC dans TZ local: Non 

Pour définir le fuseau horaire correct et éventuellement le temps du système, utilisez les commandes ci-dessous.

$ sudo timedatectl set-timezone africa / kampala $ sudo timedatectl set-time "13:50:00" 

Affichage des messages de journal à l'aide de la commande journalCTL

journalctl est un utilitaire utilisé pour afficher le contenu de la revue SystemD (qui est écrit par JournalD Service).

Pour afficher tous les journaux collectés sans filtrage, tapez.

$ journalctl 
Afficher les messages du journal
-- Les journaux commencent au mercredi 2017-06-14 21:56:43 manger, fin à jeu 2017-06-15 12:28:19 Eat 14 juin 21:56:43 Tecmint Systemd-Journald [336]: Runtime Journal (/ Run / Log / Journal 14 juin 21:56:43 Kernel Tecmint: Initialisation du CGROUP Subsys CPUSET 14 juin 21:56:43 Tecmint Kernel: Initialisation du CGROUP Subsys CPU 14 juin 21:56:43 Tecmint Kernel: Initialisation du CGROUP Subsy 56:43 Kernel Tecmint: Version Linux 4.4.0-21-Generic ([Email Protected]) 14 juin 21:56:43 Kernel Tecmint: ligne de commande: boot_image = / boot / vmlinuz-4.4.0-21- 14 juin 21:56:43 Kernel Tecmint: CPU pris en charge du noyau: 14 juin 21:56:43 Tecmint Kernel: Intel Généfice Intel 14 juin 21:56:43 Tecmint Noyau: Centaur CentaulS 14 juin 21:56:43 Tecmint Kernel: x86 / fpu: xstate_offset [2]: 576, xstate_sizes [2] 14 juin 21:56:43 Tecmint Kernel: X86 / FPU: Support XSAVE Caractéristique 0x01: 'x87 FLO 14 juin 21:56:43 Kernel Tecmint: x86 / fpu: support de caractéristique XSAVE 0x02: 'SSE REG JUN 14 21:56:43 Kernel Tecmint: X86 / FPU: Postoir de la fonction XSAVE 0x04:' AVX REG 14 21:56 : 43 Kernel Tecmint: x86 / FPU: ENablation XState Fonctionnelles 0x7, Context SI 14 juin 21:56:43 Kernel Tecmint: X86 / FPU: Utilisation des commutateurs de contexte FPU 'EAGER'. 14 juin 21:56:43 Kernel Tecmint: E820: carte de RAM physique traitée par BIOS: 14 juin 21:56:43 Tecmint Kernel: Bios-E820: [MEM 0x00000000000000-0x000000000 14 juin 21:56:43 Tecmint E820: [MEM 0x0000000000090000-0x00000000000 14 juin 21:56:43 Kernel Tecmint: BIOS-E820: [MEM 0x0000000000100000-0x000000001ff Jun 14 21:56:43 TECMINT KERNEL: BIOS00002010: [MEM 0x0000000000000000000-0x000000001: [MEM 0x00000000200000000 : 43 noyau Tecmint: BIOS-E820: [MEM 0x00000020200000-0x00000000400 

Afficher les messages du journal basés sur les bottes

Vous pouvez afficher une liste de numéros de démarrage (par rapport au démarrage actuel), leurs ID et les horodatages du premier et dernier message correspondant au démarrage avec le --bottes de liste option.

$ JournalCTL --list-botoS -1 9FB590B48E1242F58C2579DEFDBBDC9 Thu 2017-06-15 16:43:36 EAT-Thu 2017-06-15 1 0 464ae35c6e264a4ca087949936BE434A 15 1 

Pour afficher les entrées du journal à partir du démarrage actuel (numéro 0), utilisez le -b Commutation comme celle-ci (identique à la sortie de l'échantillon ci-dessus).

$ journalctl -b 

Et pour voir un journal de la botte précédente, utilisez le -1 pointeur relatif avec le -b Option comme ci-dessous.

$ journalctl -b -1 

Alternativement, utilisez l'ID de démarrage comme celui-ci.

$ JournalCTL -B 9FB590B48E1242F58C2579DEFDBBDDC9 

Filtrage des messages de journal basés sur le temps

Pour utiliser le temps au format de temps universel coordonné (UTC), ajoutez le --UTC Options comme suit.

$ journalctl --tc 

Pour voir toutes les entrées depuis une date et une heure particulières, E.g. 15 juin 2017 à 8 h 15, tapez cette commande.

$ JournalCTL --Sice "2017-06-15 08:15:00" $ Journalctl - Aujourd'hui $ Journalctl - Hier, hier 

Affichage des messages journaux récents

Pour afficher les messages de journal récents (10 par défaut), utilisez le -n Flag comme indiqué ci-dessous.

$ journalctl -n $ journalctl -N 20 

Affichage des messages de journal générés par le noyau

Pour voir uniquement les messages du noyau, similaires à la sortie de commande DMESG, vous pouvez utiliser le -k drapeau.

$ journalctl -k $ journalctl -k -b $ journalctl -k -b 9fb590b48e1242f58c2579defdbbddc9 

Affichage des messages de journal générés par des unités

Pour voir toutes les entrées de journal pour une unité particulière, utilisez le -u Communiquez comme suit.

$ journalctl -u apache2.service 

Pour zéro jusqu'au démarrage actuel, saisissez cette commande.

$ journalctl -b -u apache2.service 

Pour afficher les journaux du démarrage précédent, utilisez-le.

$ journalctl -b -1 -u apache2.service 

Voici quelques autres commandes utiles:

$ journalctl -u apache2.Service $ journalctl -u apache2.Service - Aujourd'hui $ journalctl -u apache2.Service -U Nagios.Service - Hier 

Affichage des messages de journal générés par les processus

Pour afficher les journaux générés par un processus spécifique, spécifiez qu'il est un pid comme celui-ci.

$ journalctl _pid = 19487 $ journalctl _pid = 19487 - Aujourd'hui 

Affichage des messages de journal générés par l'utilisateur ou l'ID de groupe

Pour afficher les journaux générés par un utilisateur ou un groupe spécifique, spécifiez son utilisateur ou un ID de groupe comme celui-ci.

$ journalctl _uid = 1000 $ journalctl _UID = 1000 - Aujourd'hui $ journalctl _UID = 1000 -B -1 - Aujourd'hui 

Affichage des journaux générés par un fichier

Pour afficher tous les journaux générés par un fichier (peut-être un exécutable), comme l'exécutable D-Bus ou les exécutables bash, tapez simplement.

$ journalctl / usr / bin / dbus-daema $ journalctl / usr / bin / bash 

Affichage des messages du journal par priorité

Vous pouvez également filtrer la sortie en fonction des priorités de message ou des gammes de priorités en utilisant le -p drapeau. Les valeurs possibles sont: 0 - émerge, 1 - alerte, 2 - Crit, 3 - ERR, 4 - AVERTISSEMENT, 5 - Avis, 6 - Info, 7 - Debug):

$ journalctl -p err 

Pour spécifier une plage, utilisez le format ci-dessous (émerge vers l'avertissement).

$ journalctl -p 1… 4 ou $ journalctl -p émerge… avertissement 

Afficher les messages du journal en temps réel

Vous pouvez pratiquement regarder des journaux lorsqu'ils sont écrits avec le -F Option (similaire à queue -f Fonctionnalité).

$ journalctl -f 

Gestion de la mise en forme de l'affichage du journal

Si vous souhaitez contrôler le formatage de sortie des entrées du journal, ajoutez le -o Flag et utilisez ces options: chat, exportation, JSON, JSON-Pretty, JSON-SSE, Short, Iso, courte-monotonique, court-précis et verbeux (vérifiez la signification des options dans la page de l'homme:

Le chat L'option affiche le message réel de chaque entrée de journal sans métadonnées (horodatage et ainsi de suite).

$ journalctl -b -u apache2.service -o chat 

Gérer les revues sur un système

Pour vérifier le fichier de journal pour la cohérence interne, utilisez le --vérifier option. Si tout va bien, la sortie doit indiquer une passe.

$ journalctl --verify pass: / run / log / journal / 2a5d5f96ef9147c0b35535562b32d0ff / système.Journal 491f68: données inutilisées (entrée_offset == 0) passer: / run / log / journal / 2a5d5f96ef9147c0b35535562b32d0ff / [Protégé par e-mail] 9866c3d4d.Journal Pass: / Run / Log / Journal / 2A5D5F96EF9147C0B35535562B32D0FF / [Protégé par e-mail] 5d8945a9e.Journal Pass: / Run / Log / Journal / 2A5D5F96EF9147C0B35535562B32D0FF / [Protégé par e-mail] 1BECAB02F.Journal Pass: / Run / Log / Journal / 2A5D5F96EF9147C0B35535562B32D0FF / [Protégé par e-mail] 01cfcedff.journal 

Suppression de vieux fichiers de journal

Vous pouvez également afficher l'utilisation actuelle du disque de tous les fichiers de journal avec le --utilisation du disque options. Il montre la somme de l'utilisation du disque de tous les fichiers de journal archivés et actifs:

$ JournalCTl - Disk-Usage 

Pour supprimer les anciens fichiers de journal (archivés) exécutez les commandes ci-dessous:

$ sudo journalctl --vacuum-size = 50m #delete fichiers jusqu'à ce que l'espace disque qu'ils utilisent tombent en dessous de la taille spécifiée $ sudo journalctl --vacuum-time = 1years #Delete Files afin que tous les fichiers de journal ne contiennent aucune donnée plus ancienne que le têtes spécifiées $ sudo journalctl --vacuum-files = 4 fichiers #Delete afin que le nombre spécifié de fichiers de journaux séparés reste dans l'emplacement de stockage 

Fichiers de journal rotatifs

Enfin et surtout, vous pouvez demander à JournalD de faire tourner les fichiers de journal avec le --tourner option. Notez que cette directive ne revient pas tant que l'opération de rotation n'est pas terminée:

$ sudo journalctl - rotate 

Pour un guide et des options d'utilisation détaillées, consultez la page Journalctl Man comme suit.

$ man journalctl 

Découvrez quelques articles utiles.

  1. Gestion des processus et services de démarrage du système (Sysvinit, Systemd et UpStart)
  2. Petiti - un outil d'analyse du journal open source pour Linux Sysadmins
  3. Comment configurer et gérer la rotation des journaux à l'aide de Logrotate dans Linux
  4. LNAV - Regardez et analysez les journaux Apache à partir d'un terminal Linux

C'est tout pour le moment. Utilisez les commentaires ci-dessous pour poser des questions ou ajouter vos réflexions sur ce sujet.