systemd (Français)/Journal (Français)
systemd possède son propre système de journalisation appelé journal ; il n'est pas nécessaire d'exécuter un daemon de journalisation séparé. Pour lire le journal, utilisez journalctl(1).
Sous Arch Linux, le répertoire /var/log/journal/
fait partie du paquet systemd, et le journal (lorsque Storage=
est défini sur auto
dans /etc/systemd/journald.conf
) écrira dans /var/log/journal/
. Si ce répertoire est supprimé, systemd ne le recréera pas automatiquement et écrira ses journaux dans /run/systemd/journal
de manière non persistante. Cependant, le répertoire sera recréé si Storage=persistent
est ajouté à journald.conf
et est redémarré (ou si le système est redémarré).
Le journal de systemd classe les messages par Niveau de priorité et Fonctionnalité. La classification des journaux correspond au protocole classique Syslog (RFC 5424).
Niveau de priorité
Un code de gravité syslog (appelé priorité dans systemd) est utilisé pour marquer l'importance d'un message RFC 5424 6.2.1.
Valeur | Gravité | Mot-Clef | Description | Exemples |
---|---|---|---|---|
0 | Urgente | emerg | Système inutilisable | BUG sévère du noyau, systemd a reçu un «core dump». Ce niveau ne doit pas être utilisé par les applications. |
1 | Alerte | alert | Doit être corrigé immédiatement | Un sous-système vital ne fonctionne plus. Perte de données. |
2 | Critique | crit | Situations critiques | Crashs, coredumps. Un exemple habituel était Adobe Flash : Défaillance de l'application principale du système, comme X11. |
3 | Erreur | err | Situations d'erreurs | Erreur non grave signalée:systemd[1]: Failed unmounting /var. libvirtd[1720]: internal error: Failed to initialize a valid firewall backend |
4 | Avertissement | warning | Peut indiquer qu'une erreur se produira si aucune action n'est entreprise. | Un système de fichiers hors racine n'a plus que 1 Go de libre. |
5 | Avis | notice | Les événements qui sont inhabituels, mais pas des situations d'erreur. | |
6 | Informative | info | Messages durant un fonctionnement normal qui ne nécessitent aucune action. | |
7 | Débogage | debug | Informations utiles aux développeurs pour le débogage de l'application. |
Ces règles sont des recommandations, et le niveau de priorité d'une erreur donnée est à la discrétion du développeur de l'application. Il est toujours possible que l'erreur soit à un niveau plus élevé ou plus bas que prévu.
Fonctionnalité
Un code de fonctionnalité syslog est utilisé pour spécifier le type de programme qui enregistre le message RFC 5424 6.2.1.
Code de fonctionnalité | Mot-clé | Description | Info |
---|---|---|---|
0 | kern | Messages du noyau | |
1 | user | Messages au niveau de l'utilisateur | |
2 | Système de messagerie | Archaïque, POSIX, encore pris en charge et parfois utilisé (voir ) | |
3 | daemon | Daemon système | Tous les daemons, y compris systemd et ses sous-systèmes |
4 | auth | Messages de sécurité/autorisation | Voir aussi la fonctionnalité n°10 |
5 | syslog | Messages générés en interne par syslogd | Pour les implémentations de syslogd (non utilisé par systemd, voir la fonctionnalité n°3) |
6 | lpr | Sous-système d'imprimante de ligne (sous-système archaïque) | |
7 | news | Sous-système d'informations réseau (sous-système archaïque) | |
8 | uucp | Sous-système UUCP (sous-système archaïque) | |
9 | Daemon horloge | systemd-timesyncd | |
10 | authpriv | Messages de sécurité/autorisation | Voir aussi la fonctionnalité n°4 |
11 | ftp | Daemon FTP | |
12 | - | Sous-système NTP | |
13 | - | Journal des audits | |
14 | - | Journal des alertes | |
15 | cron | Daemon de planification | |
16 | local0 | Utilisation locale 0 (local0) | |
17 | local1 | Utilisation locale 1 (local1) | |
18 | local2 | Utilisation locale 2 (local2) | |
19 | local3 | Utilisation locale 3 (local3) | |
20 | local4 | Utilisation locale 4 (local4) | |
21 | local5 | Utilisation locale 5 (local5) | |
22 | local6 | Utilisation locale 6 (local6) | |
23 | local7 | Utilisation locale 7 (local7) |
Installations utiles à surveiller : 0, 1, 3, 4, 9, 10, 15.
Filtrage de la sortie
journalctl permet de filtrer la sortie par des champs spécifiques. S'il y a beaucoup de messages à afficher, ou si le filtrage de grandes périodes de temps doit être fait, la sortie de cette commande peut être largement retardée.
Exemples :
- Afficher tous les messages de ce démarrage : Cependant, il arrive souvent que l'on soit intéressé par des messages provenant non pas du démarrage actuel, mais du démarrage précédent (par exemple, si un crash système irrécupérable s'est produit). Ceci est possible grâce au paramètre optionnel offset de l'indicateur
-b
: affiche les messages du démarrage actuel, du démarrage précédent,journalctl -b -2
du deuxième démarrage précédent et ainsi de suite - vous pouvez voir la liste des démarrages avec leurs numéros en utilisant . Voir journalctl(1) pour une description complète ; la sémantique est plus puissante que celle indiquée ici. - Inclure les explications des messages du journal à partir du catalogue de messages lorsqu'il est disponible : Notez que cette fonctionnalité ne devrait pas être utilisée lorsque vous joignez des journaux à des rapports de bogues et à des fils de support, afin de limiter les sorties superflues. Vous pouvez lister toutes les entrées de catalogue connues en exécutant .
- Afficher tous les messages depuis la date (et éventuellement l'heure) :
- Afficher tous les messages depuis 20 minutes :
- Suivre les nouveaux messages :
- Afficher tous les messages par un exécutable spécifique :
- Afficher tous les messages d'un processus spécifique :
- Afficher tous les messages d'une unité spécifique :
# journalctl -u man-db.service
- Afficher tous les messages des services utilisateurs par une unité spécifique :
- Afficher le tampon du noyau :
# journalctl -k
- Afficher uniquement les messages d'erreur, critiques et d'alerte prioritaires : Vous pouvez également utiliser un niveau de journal numérique, comme . Si un seul nombre/niveau de journal est utilisé, , alors tous les niveaux de journaux de priorité supérieure sont également inclus (c'est-à-dire de 0 à 3 dans ce cas).
- Montrer l'équivalent de auth.log en filtrant sur la facilité syslog :
- Si le répertoire journal (situé par défaut sous ) contient une grande quantité de données de journal, peut prendre plusieurs minutes pour filtrer la sortie. Il peut être accéléré de manière significative en utilisant l'option pour forcer à ne regarder que dans le journal le plus récent :
Voir journalctl(1), systemd.journal-fields(7), ou l'article du blog de Lennart Poettering pour plus de détails.
Limite de taille du journal
Si le journal est persistant (non-volatile), sa taille limite est fixée par défaut à 10 % de la taille du système de fichiers sous-jacent, mais est plafonnée à 4 Go. Par exemple, avec /var/log/journal/
situé sur une partition de 20 Go, les données du journal peuvent occuper jusqu'à 2 Go. Sur une partition de 50 Go, elles seraient limitées à 4 Go. Pour confirmer les limites actuelles sur votre système, examinez les journaux de l'unité :
# journalctl -b -u systemd-journald
La taille maximale du journal persistant peut être contrôlée en décommentant et en modifiant les éléments suivants :
Il est également possible d'utiliser des fichiers de substitution plutôt que de modifier le fichier de configuration global. Dans ce cas, placez les surcharges sous l'en-tête :
/etc/systemd/journald.conf.d/00-journal-size.conf
[Journal] SystemMaxUse=50M
Redémarrez le après avoir modifié ce paramètre pour appliquer la nouvelle limite.
Voir pour plus d'informations.
Limite de taille par unité avec un espace de nom séparé
Éditez le fichier d'unité pour le service que vous souhaitez configurer (par exemple sshd) et ajoutez dans la section .
Créez ensuite /etc/systemd/journald@ssh.conf
en copiant /etc/systemd/journald.conf
. Après cela, éditez et ajustez à votre convenance.
[Le redémarrage du service devrait automatiquement démarrer le nouveau service de journal . Les journaux du service avec son propre espace de nom peuvent être visualisés avec .
Voir systemd-journald.service(8) § JOURNAL NAMESPACES pour plus de détails sur les espaces de noms des journaux.
Nettoyer les fichiers journaux manuellement
Les fichiers journaux peuvent être supprimés globalement de /var/log/journal/
à l'aide de par exemple, ou peuvent être découpés selon divers critères en utilisant . Par exemple :
- Supprimez les fichiers journaux archivés jusqu'à ce que l'espace disque qu'ils utilisent tombe en dessous de 100M :
- Faites en sorte que tous les fichiers journaux ne contiennent aucune donnée datant de plus de 2 semaines.
Voir journalctl(1) pour plus d'informations.
Journald en conjonction avec syslog
La compatibilité avec une implémentation classique, non compatible avec Journald, de syslog peut être assurée en laissant systemd transmettre tous les messages via le socket . Pour que le daemon syslog fonctionne avec le journal, il doit se lier à cette socket au lieu de /dev/log
. (annonce officielle).
La valeur par défaut de journald.conf
pour la redirection vers la socket est pour éviter la surcharge du système, car rsyslog ou syslog-ng extraient les messages du journal par eux-même.
Voir Syslog-ng#Overview et Syslog-ng#syslog-ng and systemd journal, ou rsyslog respectivement, pour plus de détails sur la configuration.
Transférer journald sur /dev/tty12
Créez un répertoire de remplacement et créez-y un fichier :
Puis redémarrez .
Spécifier un autre journal à afficher
Il peut y avoir un besoin de vérifier les journaux d'un autre système qui est mort dans l'eau, comme démarrer à partir d'un système vivant pour récupérer un système de production. Dans ce cas, on peut monter le disque dans par exemple , et spécifier le chemin du journal via /, comme ceci :
# journalctl -D /mnt/var/log/journal -e
Accès au journal en tant qu'utilisateur
Par défaut, un utilisateur normal n'a accès qu'à son propre journal par utilisateur. Pour accorder un accès en lecture au journal du système en tant qu'utilisateur normal, vous pouvez ajouter cet utilisateur au systemd-journal
groupe d'utilisateurs. Les membres des groupes et ont également un accès en lecture.
Voir journalctl(1) § DESCRIPTION et Users and groups (Français)#Groupes d'utilisateurs pour plus d'informations.