Outils pour utilisateurs

Outils du site


sysadmin:linux:systemd:consulter-journaux

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:consulter-journaux [2020/05/20 17:46] yoannsysadmin:linux:systemd:consulter-journaux [2025/07/01 13:21] (Version actuelle) yoann
Ligne 1: Ligne 1:
-{{tag>sysadmin linux systemd log}}+{{tag>sysadmin linux systemd log journaux journalisation}}
  
-====== Systemd: Consulter le journal d'événements ======+====== journalctl: Consulter la journalisation d'événements de systemd ======
  
-**journalctl** permet d'afficher les journaux générés par systemd.+**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. 
 + 
 +<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.
  
-Invoqué sans arguments, 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> <code bash>
 journalctl journalctl
 </code> </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 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
Ligne 15: Ligne 27:
 </code> </code>
  
-Utiliser l'argument **-u** pour filtrer par unité systemd (service):+===== Filtrage par service ===== 
 + 
 +Utiliser l'argument **-u** ou **%%--%%unit** pour filtrer par unité systemd (service):
 <code bash> <code bash>
 journalctl -u cron journalctl -u cron
 </code> </code>
  
-Pour filtrer par niveau de criticité (proirity) utiliser l'argument -p:+===== Filtrage par criticité ===== 
 + 
 +Pour filtrer par niveau de criticité (priority) utiliser l'argument **-p** ou **%%--priority%%**:
 <code bash> <code bash>
 journalctl -p warning journalctl -p warning
Ligne 26: Ligne 42:
 La commande affiche les message dont la criticité est au minimum warning. La commande affiche les message dont la criticité est au minimum warning.
  
-Lister les événements en spécifiant des dates+ 
 +===== Filtrage par repères temporels ===== 
 + 
 +Lister les événements via des repères temporels en spécifiant des time stamps
  
 <code bash> <code bash>
 journalctl --since yesterday journalctl --since yesterday
 +journalctl --since "10 minutes ago"
 +journalctl --since "2 hours ago"
 </code> </code>
  
Ligne 35: Ligne 56:
 journalct -p warning --since "2020-01-01 00:00:00" --until "2020-01-31 23:59:59" journalct -p warning --since "2020-01-01 00:00:00" --until "2020-01-31 23:59:59"
 </code> </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: Lister les messages du noyau, affichage complet:
Ligne 40: Ligne 70:
 journalctl -k --output=verbose journalctl -k --output=verbose
 </code> </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, deux options sont disponibles supprimer les journaux en spécifiant:
 +  * Une ''taille limite d'occupation disque'' avec **%%--vacuum-size%%**
 +  * Une date limite avec %%--vacuum-time%% 
 +
 +
 +<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"
 +</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>
 +
 +Pour que les journaux ne soient pas enregistrés sur le disque ( deviennent volatiles) :
 +
 +<code>
 +[Journal]
 +Storage=volatile
 +</code>
 +
 +===== Enregistrement avec syslog =====
 +
 +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>
 +ForwardToSyslog=yes
 +</code>
 +
 +
 +===== Références =====
 +
 +  * %%man journald.conf%%
 +  * https://www.freedesktop.org/software/systemd/man/journald.conf.html
 +  * https://www.golinuxcloud.com/view-logs-using-journalctl-filter-journald/
 +  * https://linuxhandbook.com/journalctl-command/
 +  * https://www.linuxtricks.fr/wiki/systemd-utiliser-journalctl-les-logs-de-systemd
 +  * https://www.loggly.com/ultimate-guide/using-journalctl/
 +  * https://www.loggly.com/ultimate-guide/linux-logging-with-systemd/#journald-configuration
 +  * https://www.loggly.com/ultimate-guide/managing-journal-size/
 +  * https://blog.selectel.com/managing-logging-systemd/
 +  * https://www.linuxtricks.fr/wiki/systemd-utiliser-journalctl-les-logs-de-systemd
 +
 +
sysadmin/linux/systemd/consulter-journaux.1589996801.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)