Outils pour utilisateurs

Outils du site


sysadmin:linux:systemd:gerer-journaux-systeme

Ceci est une ancienne révision du document !


journalctl: Gérer la journalisation des événements par systemd

systemd intègre son propre système de journalisation indépendant des services syslog/rsyslog, il repose sur le daemon systemd-journald.service.

Si besoin, il reste tout à fait possible d'installer rsyslog et de transférer les messages vers celui-ci.

Pour que la journalisation soit pertinente, vérifier que le temps local est correctement définit, voir wiki modifier_le_temps_local_time_zone

Essentiellement pour des raisons de performances, les journaux sont stockés par journald sous forme binaire. journalctl est le CLI standard permettant d'accéder et de visualiser les journaux produits par journald. Il permet également de reconfigurer le service de journalisation.

Invoqué sans arguments, journactl affiche l'ensemble des messages. On utilise alors la syntaxe less/vim pour rechercher les chaînes de caractères au sein de la sortie.

journalctl

Suivi temps réel

L'argument -f ou --follow permet d'afficher les nouveaux messages. Par exemple pour observer au fil de l'eau les messages émis par le processus ayant le PID 4319

journalctl -f _PID=4319

Filtrage des enregistrements

Quelques méthodes de filtrage usuelles

Filtrage par service

Utiliser l'argument -u ou --unit pour filtrer par unité systemd (service):

journalctl -u cron

Filtrage par criticité

Pour filtrer par niveau de criticité (priority) utiliser l'argument -p ou --priority:

journalctl -p warning

La commande affiche les message dont la criticité est au minimum warning.

Filtrage par repères temporels

Lister les événements via des repères temporels en spécifiant des time stamps

journalctl --since yesterday
journalctl --since "10 minutes ago"
journalctl --since "2 hours ago"
journalct -p warning --since "2020-01-01 00:00:00" --until "2020-01-31 23:59:59"

Filtrage par utilisateur

L'option _UID permet de spécifier un ID utilisateur à cibler:

journalctl --since "1 hours ago" _UID=1000

Filtrage des messages du noyau

Lister les messages du noyau, affichage complet:

journalctl -k --output=verbose

Pour lister les messages émis depuis le démarrage:

journalctl -k -b

Historique

Pour afficher les messages émis lors du précédent démarrage:

journalctl -k -b -1

La mise en service courante à l'index 0. Les précédents démarrages sont indexés négativement. Pour lister les index existants avec leurs horodatages:

journalctl --list-boots

On pourra préciser l'index souhaité via la commande:

journalctl -k -b -17

Si l'on souhaite afficher les messages les plus récents, on peut utiliser l'option --reverse (-r) et l'option --lines (-n)

# Afficher les 100 enregistrements les plus récents:
journalctl -r -n 100

Gestion des journaux

Par défaut, le service systemd-journald en charge de la journalisation s'assure que les anciens enregistrements ou les fichiers journaux sont supprimés afin de garantir un espace disque minimum pour le système. On peut utiliser journalctl pour gérer la taille des journaux.

Les fichiers journaux sont enregistrés dans /var/log/journal. Pour évaluer l'espace occupé par les journaux sur le système de fichier:

journalctl --disk-usage

Suppression/nettoyage des journaux

Pour libérer l'espace disque occupé par les journaux système, plusieurs options sont disponibles supprimer les journaux en spécifiant:

  • Une taille limite d'occupation disque avec --vacuum-size ;
  • Une date limite avec --vacuum-time ;
  • Un nombre de fichiers journaux.
# Pour faire chuter l'occupation disque des journaux à 500Mo
journalctl --vacuum-size=500M
 
# Pour ne conserver que les journaux de moins d'un mois
journalctl --vacuum-time="1 month"
 
# Ne conserver que 2 fichiers journaux (en plus de l'actuel) 
journalctl --vacuum-files=2

Test d'intégrité

Pour vérifier l'intégrité des fichiers de log :

journalctl --verify

Paramétrer la rétention des journaux

Le fichier de configuration principal de systemd-journald est /etc/systemd/journald.conf. Les autres packages peuvent créer leurs fichiers de configuration et les stocker dans l'un des dossiers:

  • /etc/systemd/journald.conf.d/
  • /run/systemd/journald.conf.d/
  • /usr/lib/systemd/journald.conf.d/

Les variables commentées dans le fichier présentent les valeurs par défaut. La méthode recommandée est de créer un fichier personnalisé dans le dossier /etc/systemd/journald.conf.d/ :

# Créer le dossier s'il n'existe pas
mkdir /etc/systemd/journald.conf.d
 
# Créer un fichier pour vos paramétrages personnalisés
touch /etc/systemd/journald.conf.d/local.conf
local.conf
[Journal]
 
# Limite d' occupation disque des journaux
SystemMaxUse=500M
 
# Période de rétention maximale des journaux à 1 mois (3600*24*30)
#MaxRetentionSec=2592000
 
# équivalent
MaxRetentionSec=1month

Après modification des paramétrages, redémarrer le service:

sudo systemctl restart systemd-journald

Pour afficher la configuration utilisée par le service, comme elle peut être répartie dans plusieurs fichiers, utiliser la commande :

systemd-analyze cat-config systemd/journald.conf

Exemples de configuration

Logs en mémoire uniquement

Pour une station de travail avec un disque NVMe, si on souhaite limiter les écritures sur disque et que la conservation de l'historique des messages n'est pas nécessaire, on peut paramétrer un stockage des messages en RAM uniquement.

[Journal]
# Log en mémoire uniquement
Storage=volatile

# Repartir les enregistrements dans des fichiers de 32MiO
# Créer max 8 fichiers  = 256 Mo max d'occupation en RAM par les logs
RuntimeMaxFiles=32M
RuntimeMaxFileSize=8


# Limiter la génération des messages
# NB : chaque service peut redéfinir ces valeurs pour limiter
# les entrées
RateLimitIntervalSec=0
RateLimitBurst=0

Enregistrement avec syslog

:TODO_DOCUPDATE:

Les journaux peuvent être transmis à syslog/rsyslog. Installer rsyslog et démarrer le service.

Editer le fichier /etc/systemd/journald.conf et modifier cette option :

[Journal]

Storage=none
ForwardToSyslog=yes

Références

sysadmin/linux/systemd/gerer-journaux-systeme.1767365611.txt.gz · Dernière modification : 2026/01/02 14:53 de yoann