Outils pour utilisateurs

Outils du site


sysadmin:linux:systemd:gerer-journaux-systeme

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sysadmin:linux:systemd:gerer-journaux-systeme [2025/12/31 14:32] – supprimée - modification externe (Date inconnue) 127.0.0.1sysadmin:linux:systemd:gerer-journaux-systeme [2026/01/02 15:42] (Version actuelle) yoann
Ligne 1: Ligne 1:
 +{{tag>sysadmin linux systemd log journaux journalisation}}
 +
 +====== 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.
 +
 +<note>
 +Pour que la journalisation soit pertinente, vérifier que le temps local est correctement définit, voir wiki [[sysadmin:linux:systemd:synchronisation-du-temps#modifier_le_temps_local_time_zone]]
 +</note>
 +
 +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.
 +
 +<code bash>
 +journalctl
 +</code>
 +
 +===== 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
 +<code bash>
 +journalctl -f _PID=4319
 +</code>
 +
 +===== Filtrage des enregistrements =====
 +
 +Quelques méthodes de filtrage usuelles
 +
 +==== Filtrage par service ====
 +
 +Utiliser l'argument **-u** ou **%%--%%unit** pour filtrer par unité systemd (service):
 +<code bash>
 +journalctl -u cron
 +</code>
 +
 +==== Filtrage par criticité ====
 +
 +Pour filtrer par niveau de criticité (priority) utiliser l'argument **-p** ou **%%--priority%%**:
 +<code bash>
 +journalctl -p warning
 +</code>
 +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
 +
 +<code bash>
 +journalctl --since yesterday
 +journalctl --since "10 minutes ago"
 +journalctl --since "2 hours ago"
 +</code>
 +
 +<code bash>
 +journalct -p warning --since "2020-01-01 00:00:00" --until "2020-01-31 23:59:59"
 +</code>
 +
 +==== Filtrage par utilisateur ====
 +
 +L'option **_UID** permet de spécifier un ID utilisateur à cibler:
 +<code bash>
 +journalctl --since "1 hours ago" _UID=1000
 +</code>
 +
 +==== Filtrage des messages du noyau ====
 +
 +Lister les messages du noyau, affichage complet:
 +<code bash>
 +journalctl -k --output=verbose
 +</code>
 +
 +Pour lister les messages émis depuis le démarrage:
 +<code bash>
 +journalctl -k -b
 +</code>
 +
 +===== Historique =====
 +
 +Pour afficher les messages émis lors du précédent démarrage:
 +<code bash>
 +journalctl -k -b -1
 +</code>
 +
 +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:
 +
 +<code bash>
 +journalctl --list-boots
 +</code>
 +
 +On pourra préciser l'index souhaité via la commande:
 +
 +<code bash>
 +journalctl -k -b -17
 +</code>
 +
 +
 +Si l'on souhaite afficher les messages les plus récents, on peut utiliser l'option %%--%%reverse (-r) et l'option %%--%%lines (-n)
 +
 +<code bash>
 +# Afficher les 100 enregistrements les plus récents:
 +journalctl -r -n 100
 +</code>
 +
 +===== 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:
 +
 +<code bash>
 +journalctl --disk-usage
 +</code> 
 +
 +==== 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.
 +
 +
 +<code bash>
 +# 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
 +</code>
 +
 +
 +
 +
 +==== Test d'intégrité ====
 +
 +Pour vérifier l'intégrité des fichiers de log :
 +
 +<code bash>
 +journalctl --verify
 +</code>
 +
 +===== 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/'' :
 +
 +<code bash>
 +# 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
 +</code>
 +
 +<file txt 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
 +</file>
 +
 +Après modification des paramétrages, redémarrer le service:
 +
 +<code bash>
 +sudo systemctl restart systemd-journald
 +</code>
 +
 +Pour afficher la configuration utilisée par le service, comme elle peut être répartie dans plusieurs fichiers, utiliser la commande :
 +
 +<code bash>
 +systemd-analyze cat-config systemd/journald.conf
 +</code>
 +
 +
 +===== 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.
 +
 +
 +<code>
 +[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=8
 +RuntimeMaxFileSize=32M
 +
 +
 +# Limiter la génération des messages
 +# NB : chaque service peut redéfinir ces valeurs pour limiter
 +# les entrées
 +RateLimitIntervalSec=0
 +RateLimitBurst=0
 +</code>
 +
 +
 +==== 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 :
 +
 +<code>
 +[Journal]
 +
 +Storage=none
 +ForwardToSyslog=yes
 +</code>
 +
 +
 +===== Références =====
 +
 +  * %%man journald.conf%%
 +  * [[https://www.freedesktop.org/software/systemd/man/journald.conf.html|Fichiers de configuration de journald]]
 +  * [[https://www.golinuxcloud.com/view-logs-using-journalctl-filter-journald/|Aide mémoire commande journalctl]]
 +  * [[https://linuxhandbook.com/journalctl-command/|Analyse des logs avec journalctl (linuxhandbook.com) (en)]]
 +  * [[https://www.loggly.com/ultimate-guide/using-journalctl/|Utilisation de journalctl (loggly.com) (en)]]
 +  * [[https://www.loggly.com/ultimate-guide/linux-logging-with-systemd/#journald-configuration|Journalisation avec systemd (loggly.com) (en)]]
 +  * [[https://www.linuxtricks.fr/wiki/systemd-utiliser-journalctl-les-logs-de-systemd|Notes d'utilisation de journalctl (linuxtricks.fr)]]
 +  * [[https://www.loggly.com/ultimate-guide/managing-journal-size/|Gérer la taille des journaux (loggly.com) (en)]]
 +  * [[https://andreaskaris.github.io/blog/linux/setting-journalctl-limits/|Modifier la taille limite des journaux système (andreaskaris.github.io) (en)]]
 +