journalctl

systemd possède son propre système de logs au format binaire journald, il peut être consulté avec l’utilitaire journalctl.

De nombreuses options passées en paramètre apportent beaucoup de puissance à cet outil.

Filtre boot

journalctl -b

L’option -b permet de choisir quel boot nous désirons consulter. -b filtre uniquement les messages du boot actuel.
En passant un numéro en plus, nous pouvons définir quel boot nous désirons voir.

journalctl -b 5

filtre les messages du cinquième boot de notre distribution

journalctl -b-1

filtre les messages de notre boot précédent, donc en négatif nous avons un décalage relatif au boot courant.

Filtre niveaux

Avec l’option -p nous pouvons appliquer un filtre sur le niveau des messages, nous en avons 7 :  »emerg » (0), « alert » (1), « crit » (2), « err » (3), « warning » (4), »notice » (5), « info » (6), « debug » (7).

journalctl -p err

retour de tous les messages de niveau 0 à 3

journalctl  PRIORITY=2

retour uniquement des erreurs critiques

Filtres date

Les options –since ou/et –until permettent de définir une plage sur le temps. Cette date est généralement au format AAAA-MM-JJ avec éventuellement un horaire.

journalctl --since "2015-10-10" --until "2015-10-11"
journalctl --since "-2d"
journalctl --since "-4d" --until "-3d"
journalctl --since "2015-10-06 16:30" --until "2015-10-06 16:40"
journalctl --since "-2h" --until "-1h"
journalctl --since 09:00 --until "1 hour ago"

Filtre programme

Avec l’option -t il est possible de rechercher un programme ou uniquement une unité systemd avec -u

journalctl -t sudo
journalctl /bin/sudo

ici nous recherchons tous les messages envoyés par le programme « sudo »

Filtre système

Il est possible de récupérer les messages du kernel (comme dmesg) en ajoutant l’option -k

journalctl -b-1 -k -n 25

nous avons les 25 dernières lignes du boot précedent

Et plus

sortie temps réel

journalctl -f

Cette commande va afficher en temps réel les 10 derniers messages dans journald (vous pouvez ajouter d’autres options comme -k). A noter que cette commande ne vous rend pas la main; donc à ouvrir dans une console ou un terminal dédié (tty2 par exemple)

recherche

Il est possible de faire une recherche sur chaque champ d’un message. Pour voir la structure, utiliser l’option -o

journalctl -o verbose -n1
    _UID=1000
    _GID=100
    _SYSTEMD_CGROUP=/user.slice/user-1000.slice/session-c2.scope
    _SYSTEMD_SESSION=c2
    _SYSTEMD_OWNER_UID=1000
    _SYSTEMD_UNIT=session-c2.scope
    _SYSTEMD_SLICE=user-1000.slice
    _MACHINE_ID=49883aed8ef34fc2a86411fbadc69d40
    _HOSTNAME=Mamachine
    _TRANSPORT=syslog
    SYSLOG_FACILITY=10
    SYSLOG_IDENTIFIER=sudo
    _COMM=sudo
    _EXE=/usr/bin/sudo
    _CAP_EFFECTIVE=3fffffffff
    PRIORITY=2
    MESSAGE=pam_unix(sudo:auth): auth could not identify password for [ceblog]
    _BOOT_ID=9834f2c8e5be47f080da920009db1958
    _CMDLINE=/bin/sudo /lib64/sudo /lib/sudo /run/sudo /sbin/sudo
    _PID=5225
    _SOURCE_REALTIME_TIMESTAMP=1446621062885917

donc, pour une recherche sur PID : journalctl -b _PID=5225

 

redirections – bash

De plus, rien n’empêche de réutiliser la sortie journal pour appliquer des traitements spécifiques.

journalctl --since "-30d"  | grep -e "-- Reboot" -A1 -B1
journalctl -p err | grep -i "password"
(( $(journalctl --since "-1d" -p 2 | wc -l) >1 )) && echo "ouille" | mail -s "alerte erreur critique" root@admin.fr
Share Button

Vous devriez aimer...