Conservation des logs système

Par défaut les logs système sont stockés dams /run/log et sont supprimés après un redémarrage mais il est possible d’y remédier en configurant le service systemd-journald via le fichier /etc/systemd/journald.conf.

Fichier /etc/systemd/journald.conf

Le paramètre Storage du fichier /etc/systemd/journald.conf définit si les logs système doivent être volatils ou persistants :

  • persistent : stocke les logs dans le répertoire persistant /var/log/journal
  • volatile : stocke les logs dans le répertoire volatil /run/log/journal
  • auto :
    • si /var/log/journal existe = stockage persistant
    • si /var/log/journal existe pas = stockage volatil (action par défaut)
  • none : n’utilise aucun stockage, les logs sont upprimés mais possibilité de les transférer

Fichier /etc/systemd/journald.conf :

# cat /etc/systemd/journald.conf
#  This file is part of systemd.
#
# See journald.conf(5) for details.

[Journal]
Storage=volatile
[...]

Même avec des logs persistants, les données ne sont pas éternellement conservées, cela est dû au logrotate : les logs ne dépassent pas les 10 % de taille système ou moins de 15 % de libre.

Ces paramètres peuvent être modifiés (etrait du MAN journald.conf) :

  • Espace disque que systemd-journald peut utiliser au maximum :
    • SystemMaxUse
    • RuntimeMaxUse
  • Espace disque que systemd-journald doit laisser libre, la plus petite des deux valeurs est prioritaire :
    • SystemKeepFree
    • RuntimeKeepFree

Fichier /etc/systemd/journald.conf complet :

# cat /etc/systemd/journald.conf
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#SystemMaxUse= // Espace disque que systemd-journald peut utiliser au maximum
#SystemKeepFree= // Espace disque que systemd-journald doit laisser libre, la plus petite des deux valeurs est prioritaire
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse= // Espace disque que systemd-journald peut utiliser au maximum
#RuntimeKeepFree= // Espace disque que systemd-journald doit laisser libre, la plus petite des deux valeurs est prioritaire
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
#ReadKMsg=yes
#Audit=no

Pour voir les limites actuelles de taille des logs :

# journalctl | grep -E 'Runtime log|System log'
Sun 31 13:37:42:34 localhost systemd-journald[226]: Runtime log (/run/log/journal/45ab8515fgfafacb64h59874bc654654) is 8.0M, max 113.3M, 105.3M free.
Sun 31 13:37:42:39 my.huge.company.org systemd-journald[719]: Runtime log (/run/log/journal/45ab8515fgfafacb64h59874bc654654) is 8.0M, max 113.3M, 105.3M free.
Sun 31 13:37:42:39 my.huge.company.org systemd-journald[719]: System log (/run/log/journal/45ab8515fgfafacb64h59874bc654654) is 8.0M, max 4.0G, 4.0G free.

Configurer des logs persistants

Pour que les logs soient persistants en cas de rédémarrage système, il faut suivre cette procédure :

Créer un répertoire /var/log/journal :

# mkdir /var/log/journal

Modifier le paramètre Storage sur la valeur persistent dans /etc/systemd/journald.conf

#  This file is part of systemd.
#
# See journald.conf(5) for details.

[Journal]
Storage=persistent
[...]

Redémarrer le service systemd-journald :

# systemctl restart systemd-journald

Pour vérifier :

# ls /var/log/journal/45ab8515fgfafacb64h59874bc654654
system.log user-1337.log

Afficher et filtrer les logs de redémarrage

Afficher les logs à partir du 1er démarrage du système :

# journalctl -b 1

Afficher les logs à partir du 2ème démarrage du système :

# journalctl -b 2

Afficher tous les logs liées à un démarrage du système :

# journalctl --list-boots

Afficher les logs à partir du démarrage actuel du système :

# journalctl -b

Afficher les logs à partir du démarrage précédent du système :

# journalctl -b -1

/!\ Résumé des commandes

Commandes :

# journalctl              // Affiche les logs perdus
# journalctl -b 1 // Affiche les logs à partir du 1er démarrage du système
# journalctl -b 2 // Affiche les logs à partir du 2ème démarrage du système
# journalctl --list-boots // Affiche tous les logs liées à un démarrage du système
# journalctl -b // Affiche les logs à partir du démarrage actuel du système
# journalctl -b -1 // Affiche les logs à partir du démarrage précédent du système

Configurer des logs persistants :

# mkdir /var/log/journal
# vim /etc/systemd/journald.conf
...
[Journal]
Storage=persistent
...
# systemctl restart systemd-journald
# ls /var/log/journal/

Fichiers :

/run/log                      // répertoire de logs volatil
/etc/systemd/journald.conf // configuration des logs

Cas pratique

Pour conserver les journaux après un redémarrage, création du répertoire /var/log/journal :

[aline@SERVER01 ~]$ sudo mkdir /var/log/journal

Configurer le fichier /etc/systemd/journald.conf et modifier le paramètre Storage sur persistent :

[...]
[Journal]
Storage=persistent
[...]

Redémarrage de systemd-journald pour appliquer la configuration :

[aline@SERVER01 ~]$ sudo systemctl restart systemd-journald.service

Après un Redémarrez, les logs sont maintenant conservés :

[aline@SERVER01 ~]$ sudo systemctl reboot
[aline@SERVER01 ~]$ sudo ls -l /var/log/journal/
total 16
drwxr-sr-x+ 2 root systemd-journal 16384 18 sept. 21:43 2eda432eaa2b4ced831e16eed2d6e6a4

Documentation

MAN systemd-journald.conf(5)
MAN systemd-journald(8)

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/htmlsingle/configuring_basic_system_settings/index#troubleshooting-problems-usinglog

https://www.freedesktop.org/software/systemd/man/latest/journald.conf.html

> Partager <