Utiliser journalctl, les logs de systemd



Introduction



systemd possède son propre mécanisme de journalisation, syslog n'est plus requis par défaut.
Le paquet syslog-ng est toujours installable, mais pourquoi utiliser 2 mêmes outils sur un même système ?
Voici quelques commandes utiles pour se repérer ....


Visualiser les logs : Utiliser journalctl



Seul le root et le groupe systemd-journal peuvent visualiser le journal.

Pour voir les logs :

Code BASH :
journalctl


Code BASH :
mai 21 21:24:21 localhost.localdomain systemd[2396]: Startup finished in 1.216s.
mai 21 21:24:21 localhost.localdomain sshd[1695]: pam_tcb(sshd:session): Session opened fo
mai 21 21:24:24 localhost.localdomain su[2452]: pam_tcb(su:auth): Authentication passed fo
mai 21 21:24:24 localhost.localdomain su[2452]: (to root) adrien on pts/0
mai 21 21:24:24 localhost.localdomain su[2452]: pam_tcb(su:session): Session opened for ro


De manière "tail -f", continue sur la console jusqu'à ctrl+C :

Code BASH :
journalctl -f


Code BASH :
-- Logs begin at dim. 2015-03-29 22:59:55 CEST. --
mai 21 21:24:21 localhost.localdomain systemd[2396]: Starting Default.
mai 21 21:24:21 localhost.localdomain systemd[2396]: Reached target Default.
mai 21 21:24:21 localhost.localdomain systemd[2396]: Startup finished in 1.216s.
mai 21 21:24:21 localhost.localdomain sshd[1695]: pam_tcb(sshd:session): Session opened fo


Filtrer par service

Code BASH :
journalctl -u crond


Code BASH :
mai 21 21:23:43 localhost.localdomain crond[624]: (CRON) INFO (Syslog will be used instead
mai 21 21:23:43 localhost.localdomain crond[624]: (CRON) INFO (RANDOM_DELAY will be scaled
mai 21 21:23:44 localhost.localdomain crond[624]: (CRON) INFO (running with inotify suppor


Filtrer par PID :

Code BASH :
journalctl _PID=1


Code BASH :
mai 21 21:23:51 localhost.localdomain systemd[1]: lm_sensors.service failed.
mai 21 21:24:03 localhost.localdomain systemd[1]: plymouth-quit-wait.service start operati
mai 21 21:24:03 localhost.localdomain systemd[1]: Failed to start Wait for Plymouth Boot S
mai 21 21:24:03 localhost.localdomain systemd[1]: Unit plymouth-quit-wait.service entered 
mai 21 21:24:03 localhost.localdomain systemd[1]: plymouth-quit-wait.service failed.


Filtrer par programme :

Code BASH :
journalctl /usr/sbin/sshd


Code BASH :
mai 21 21:24:06 localhost.localdomain sshd[1268]: Server listening on 0.0.0.0 port 22.
mai 21 21:24:06 localhost.localdomain sshd[1268]: Server listening on :: port 22.
mai 21 21:24:19 localhost.localdomain sshd[1836]: pam_tcb(sshd:auth): Authentication passe
mai 21 21:24:19 localhost.localdomain sshd[1695]: Accepted keyboard-interactive/pam for ad
mai 21 21:24:21 localhost.localdomain sshd[1695]: pam_tcb(sshd:session): Session opened fo


Filtrer par niveau de log (ici que les erreurs) :

Code BASH :
journalctl -p err


Code BASH :
mai 21 21:24:06 localhost.localdomain rpcbind[1278]: Cannot open '/var/lib/rpcbind/rpcbind
mai 21 21:24:06 localhost.localdomain rpcbind[1278]: Cannot open '/var/lib/rpcbind/portmap
mai 21 21:24:14 localhost.localdomain kernel: xt_addrtype: ipv6 does not support BROADCAS


On peut évidemment combiner toutes ces options :

Code BASH :
journalctl -f /usr/sbin/urpmi -p info


Code BASH :
-- Logs begin at dim. 2015-03-29 22:59:55 CEST. --
mai 21 21:19:27 localhost.localdomain [RPM][9040]: erase lib64kwinglutils1-2:4.11.16-2.mga5.x86_64: success
mai 21 21:19:28 localhost.localdomain [RPM][9040]: erase lib64kephal4-2:4.11.16-2.mga5.x86_64: success
mai 21 21:19:29 localhost.localdomain [RPM][9040]: erase lib64plasma_applet_system_monitor4-2:4.11.16-2.mga5.x86_64: success
mai 21 21:19:29 localhost.localdomain [RPM][9040]: erase lib64kwineffects1-2:4.11.16-2.mga5.x86_64: success
mai 21 21:19:29 localhost.localdomain [RPM][9040]: erase lib64kwinglesutils1-2:4.11.16-2.mga5.x86_64: success
mai 21 21:19:29 localhost.localdomain [RPM][9040]: Transaction ID 555e2fb9 finished: 0
- - Reboot - -
mai 21 21:34:03 localhost.localdomain urpmi[8355]: called with: hnghggjh


On peut aussi filtrer les logs par date avec --since et --until. Il faut mettre la date au format YYYY-MM-DD HH:MM:SS
Par exemple depuis 21h le 10/02/2016 :
Code BASH :
journalctl --since "2016-02-10 21:00:00"


Ou jusqu'à 22h le 10/02/2016 :
Code BASH :
journalctl --until "2016-02-10 22:00:00"


Ou dans cet intervalle en combinant les deux :
Code BASH :
journalctl --since "2016-02-10 21:00:00" --until "2016-02-10 22:00:00"


On peut parfois utiliser les dates avec des adverbes de temps (exemple depuis hier)
Code BASH :
journalctl --since yesterday


Ou une durée (il y a 10 minutes) :
Code BASH :
journalctl --since "10 minutes ago"



A propos de la taille



On peut imiter la taille maximum du journal (par défaut à 10% de la taille du système de fichier). Pour la fixer à 500 Mo par exemple, on édite le fichier /etc/systemd/journald.conf :

Code BASH :
SystemMaxUse=500M


En fixant une limite par fichier, on a un équivalent de logrotate (par défaut, il garde 7 rotations) :

Code BASH :
SystemMaxUse=500M
SystemMaxFileSize=100M


On peut aussi faire en sorte que les journaux ne soient pas conservés sur le disque au redémarrage (machine non critique) :

Code BASH :
[Journal]
Storage=volatile
Cette page a été vue 31448 fois