20.10. Utiliser le Journal
rsyslogd
. Journal a été développé pour répondre aux problèmes liés aux connexions traditionnelles. Il est étroitement intégré avec le reste du système, prend en charge diverses technologies de connexion et la gestion des accès pour les fichiers journaux.
journald
de Journal. Il crée et maintient des fichiers binaires nommés des journaux basés sur des informations de journalisation reçues du noyau, des processus utilisateur, de la sortie standard, et de la sortie d'erreurs standard des services système ou via son API native. Ces journaux sont structurés et indexés, ce qui fournit un temps de recherche relativement rapide. Les entrées de journaux peuvent comporter un identifiant unique. Le service journald
collecte de nombreux champs de métadonnées pour chaque message de journal. Les fichiers journaux sont sécurisés et ne peuvent donc pas être modifiés manuellement.
20.10.1. Afficher les fichiers journaux
root
:
journalctl
/var/log/messages/
mais elle offre quelques améliorations :
- la priorité des entrées est marquée visuellement. Des lignes de priorités d'erreurs et des priorités plus élevées sont surlignées en rouge et des caractère en gras sont utilisés pour les lignes avec une notification et une priorité d'avertissement
- les horodatages sont convertis au fuseau horaire local de votre système
- toutes les données journalisées sont affichées, y compris les journaux rotatifs
- le début d'un démarrage est marqué d'une ligne spéciale
Exemple 20.18. Exemple de sortie journalctl
# journalctl
-- Logs begin at Thu 2013-08-01 15:42:12 CEST, end at Thu 2013-08-01 15:48:48 CEST. --
Aug 01 15:42:12 localhost systemd-journal[54]: Allowing runtime journal files to grow to 49.7M.
Aug 01 15:42:12 localhost kernel: Initializing cgroup subsys cpuset
Aug 01 15:42:12 localhost kernel: Initializing cgroup subsys cpu
[...]
journalctl
consiste à utiliser l'option -n
qui répertorie uniquement le nombre spécifié des entrées les plus récentes du journal :
journalctl
-n
Number
journalctl
affiche les dix entrées les plus récentes.
journalctl
permet de contrôler le format de la sortie avec la syntaxe suivante :
journalctl
-o
form
verbose
, qui retourne des éléments d'entrée complètement structurés avec tous les champs, export
, qui crée un courant binaire convenable aux sauvegardes et transferts réseau, et json
, qui formate les entrées en tant que structures de données JSON. Pour obtenir la liste complète des mots-clés, veuillez consulter la page man de journalctl(1)
.
Exemple 20.19. Sortie détaillée de journalctl
#journalctl
-o verbose
[...] Fri 2013-08-02 14:41:22 CEST [s=e1021ca1b81e4fc688fad6a3ea21d35b;i=55c;b=78c81449c920439da57da7bd5c56a770;m=27cc _BOOT_ID=78c81449c920439da57da7bd5c56a770 PRIORITY=5 SYSLOG_FACILITY=3 _TRANSPORT=syslog _MACHINE_ID=69d27b356a94476da859461d3a3bc6fd _HOSTNAME=localhost.localdomain _PID=562 _COMM=dbus-daemon _EXE=/usr/bin/dbus-daemon _CMDLINE=/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation _SYSTEMD_CGROUP=/system/dbus.service _SYSTEMD_UNIT=dbus.service SYSLOG_IDENTIFIER=dbus SYSLOG_PID=562 _UID=81 _GID=81 _SELINUX_CONTEXT=system_u:system_r:system_dbusd_t:s0-s0:c0.c1023 MESSAGE=[system] Successfully activated service 'net.reactivated.Fprint' _SOURCE_REALTIME_TIMESTAMP=1375447282839181 [...]
systemd.journal-fields(7)
.
20.10.2. Contrôle des accès
root
peuvent uniquement voir les fichiers journaux qu'ils ont générés. L'administrateur systèmes peut ajouter les utilisateurs sélectionnés au groupe adm, qui leur offre accès aux fichiers journaux complets. Pour effectuer ceci, veuillez saisir en tant qu'utilisateur root
:
usermod
-a
-G
adm username
journalctl
que l'utilisateur root. Remarquez que le contrôle des accès fonctionne uniquement lorsque le stockage persistant est activé pour Journal.
20.10.3. Utiliser l'affichage Live
journalctl
affiche la liste complète des entrées, en commençant par l'entrée collectée la plus ancienne. Avec l'affichage Live, vous pouvez superviser les messages journaux en temps réel pendant l'impression continuelle des nouvelles entrées au fur et à mesure qu'elles apparaissent. Pour lancer journalctl en mode d'affichage Live, veuillez saisir :
journalctl
-f
20.10.4. Filtrer les messages
journalctl
exécutée sans paramètre est souvent extensive. Ainsi, vous pouvez utiliser différentes méthodes de filtrage pour extraire des informations qui correspondent à vos besoins.
Filtrer par priorité
journalctl
-p
priority
debug
(7), info
(6), notice
(5), warning
(4), err
(3), crit
(2), alert
(1), et emerg
(0).
Exemple 20.20. Filtrer par priorité
journalctl
-p err
Filtrer par heure
journalctl
-b
-b
ne réduira pas significativement la sortie de journalctl
. Dans de tels cas, le filtrage basé heure sera plus utile :
journalctl
--since
=value--until
=value
--since
et --until
, vous pouvez uniquement afficher les messages journaux créés dans un intervalle spécifié. Vous pouvez attribuer des valeurs à ces options sous la forme de date ou d'heure, ou les deux, comme indiqué dans l'exemple ci-dessous.
Exemple 20.21. Filtrer par heure et par priorité
journalctl
-p warning
--since="2013-3-16 23:59:59"
Filtrage avancé
systemd
, veuillez consulter la page man de systemd.journal-fields(7)
. Ces métadonnées sont collectées pour chaque message journal, sans intervention de la part de l'utilisateur. Les valeurs sont habituellement basées texte, mais elles peuvent également prendre des valeurs de binaire et de grande taille. Les champs peuvent se voir assigner des multiples valeurs, même si cela n'est pas très commun.
journalctl
-F
fieldname
journalctl
fieldname=value
Note
systemd
est assez important, il est facile d'oublier le nom exact du champ d'intérêt. En cas d'incertitude, veuillez saisir :
journalctl
journalctl
fieldname=
journalctl
-F
fieldname.
journalctl
fieldname=value1 fieldname=value2 ...
OR
des deux correspondances. Les entrées qui correspondent à value1 ou value2 sont affichées.
journalctl
fieldname1=value fieldname2=value ...
AND
logique. Les entrées doivent correspondre aux deux conditions pour être affichées.
OR
logique des correspondances pour plusieurs champs :
journalctl
fieldname1=value + fieldname2=value ...
Exemple 20.22. Filtrage avancé
avahi-daemon.service
ou crond.service
sous un utilisateur avec l'UID 70, veuillez utiliser la commande suivante :
journalctl
_UID=70
_SYSTEMD_UNIT=avahi-daemon.service
_SYSTEMD_UNIT=crond.service
_SYSTEMD_UNIT
, les deux résultats seront affichés, mais uniquement lorsqu'ils correspondent à la condition _UID=70
. Ceci peut être exprimé simplement comme suit : (UID=70 and (avahi or cron)).
journalctl
-f
fieldname=value ...
20.10.5. Activer le stockage persistant
/run/log/journal/
. Cela est suffisant pour afficher l'historique récent des journaux avec journalctl
. Ce répertoire est volatile, les données de journal ne sont pas enregistrées de manière permanente. Avec la configuration par défaut, syslog lit les enregistrements de journal et les stocke dans le répertoire /var/log/
. Avec la journalisation persistante activée, les fichiers journaux sont stockés dans /var/log/journal
, ce qui signifie qu'ils persisteront après un redémarrage. Journal peut ensuite remplacer rsyslog pour certains utilisateurs (veuillez consulter l'introduction du chapitre).
- Des données enrichies sont enregistrées pour la résolution de problèmes pendant une longue période
- Pour une résolution de problème immédiate, des données enrichies seront disponibles après un redémarrage
- Actuellement, la console du serveur lit les données à partir du journal, et non à partir des fichiers journaux
- Même avec un stockage persistant, la quantité de données stockée dépend de la mémoire disponible, il n'y a pas de garantie de couverture d'une période spécifique
- Davantage d'espace disque est nécessaire pour les journaux
root
, veuillez saisir :
mkdir
-p
/var/log/journal/
journald
pour appliquer le changement :
systemctl
restart
systemd-journald