systemd intègre son propre système de journalisation indépendant des services syslog/rsyslog, il repose sur le daemon journald.
Si besoin, il reste tout à fait possible d'installer rsyslog et de transférer les messages vers celui-ci.
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
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
Utiliser l'argument -u ou --unit pour filtrer par unité systemd (service):
journalctl -u cron
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.
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"
L'option _UID permet de spécifier un ID utilisateur à cibler:
journalctl --since "1 hours ago" _UID=1000
Lister les messages du noyau, affichage complet:
journalctl -k --output=verbose
Pour lister les messages émis depuis le démarrage:
journalctl -k -b
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
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
Deux options permettent de facilement supprimer les journaux en spécifiant:
# 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"
Test d'intégrité des fichiers de log:
journalctl --verify
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/
/rul/systemd/journald.conf.d/
/usr/lib/systemd/journald.conf.d/
Les variables commentées dans le fichier présentent les valeurs par défaut. Pour modifier le paramétrage il suffit de dé-commenter la variable et de spécifier la valeur souhaitée.
# 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 que les journaux ne soient pas enregistrés sur le disque ( deviennent volatiles) :
[Journal] Storage=volatile
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 :
ForwardToSyslog=yes