Les journaux de messages système

Linux peut s’avérer un système très bavard. C’est bien pour chercher des fautes ou améliorer des fonctions.

Mais dans une utilisation  » en bon père de famille », on ne lit jamais ce qu’il y a dedans et mis à part remplir le disque  et augmenter les accès en écriture, ça ne sert pas à grand’ chose.

On peut réduire tout ça.

Environnement

PC sous Linux Debian 10 (Buster)

Configuration

C’est le service rsyslog qui assure la journalisation

systemctl status rsyslog.service
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-10-13 14:55:19 CEST; 7min ago
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 4789 (rsyslogd)
Tasks: 4 (limit: 4298)
Memory: 1.5M
CGroup: /system.slice/rsyslog.service
└─4789 /usr/sbin/rsyslogd -n -iNONE

oct. 13 14:55:19 debian systemd[1]: Starting System Logging Service...
oct. 13 14:55:19 debian rsyslogd[4789]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd. [v8.38.0]
oct. 13 14:55:19 debian rsyslogd[4789]: [origin software="rsyslogd" swVersion="8.38.0" x-pid="4789" x-info="http://www.rsyslog.com"] start
oct. 13 14:55:19 debian systemd[1]: Started System Logging Service.

La configuration se fait dans le fichier /etc/rsyslog.conf

Le jeu consiste à définir le niveau de messages ( info, warn, err,..) pour chaque fonction ainsi que le fichier dans lequel seront journalisées les infos.

Voici mon fichier quand je masque pratiquement tout.

#  /etc/rsyslog.conf	Configuration file for rsyslog.
#
#			For more information see
#			/usr/share/doc/rsyslog-doc/html/rsyslog_conf.html


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
#module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf


###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
# ne garder que le niveau err et supérieur
#*.*;auth,authpriv.none		-/var/log/syslog
*.err;auth,authpriv.none	-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
# tous les messages sont dans syslog pas vraiment besoin de kern.log
#kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
# voir plus bas
#mail.*				-/var/log/mail.log
user.*				-/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err

# Some "catch-all" log files.
#
# je ne fais pas de debug
#*.=debug;\
#	auth,authpriv.none;\
#	news.none;mail.none	-/var/log/debug
#
# pas besoin de tout journaliser dans messages
#*.=info;*.=notice;*.=warn;\
#	auth,authpriv.none;\
#	cron,daemon.none;\
#	mail,news.none		-/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg				:omusrmsg:*

 

Journalisation spécifiques

UFW (le pare-feu)

ufw logging off

Voir le manuel

Minidlna

Dans /etc/minidlna.conf

log_level=off

Redémarrage du service

Après toute modification, redémarrer le service pour prise en compte

systemctl restart rsyslog.service

Listage des fichiers

 ls -alrt /var/log

Le Journal de Systemd

Il ne faut pas confondre ce qui précède avec le service journal de Systemd

systemctl status systemd-journald
● systemd-journald.service - Journal Service
Loaded: loaded (/lib/systemd/system/systemd-journald.service; static; vendor preset: enabled)
Active: active (running) since Sat 2018-10-13 19:33:35 CEST; 39min ago
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 247 (systemd-journal)
Status: "Processing requests..."
Tasks: 1 (limit: 4298)
Memory: 7.5M
CGroup: /system.slice/systemd-journald.service
└─247 /lib/systemd/systemd-journald

oct. 13 19:33:35 debian systemd-journald[247]: Journal started
oct. 13 19:33:35 debian systemd-journald[247]: Runtime journal (/run/log/journal/2a1824889b924e8e892b7
oct. 13 19:33:35 debian systemd-journald[247]: Runtime journal (/run/log/journal/2a1824889b924e8e892b7
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

On utilise la commande journalctl (Voir le manuel de journalctl )pour exploiter le journal.

Suivre en temps réel le remplissage du journal

journalctl -f

Et comme chez moi

df -hT | grep /run
tmpfs tmpfs 370M 6,4M 363M 2% /run
tmpfs tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs tmpfs 370M 20K 370M 1% /run/user/1001

Donc le journal de Systemd est stocké en RAM, par là même volatil ce qui ne me pose pas de problème de stockage et/ou écriture

Toujours dans la même logique de réduction de la verbosité, on peut se contenter de ne stocker qu’à partir des messages d’avertissements.

Tous les messages notice, info, debug, ça intéresse le développeur mais pas forcément l’utilisateur.

Si on est super confiant on réduit aux messages critiques :=))

Mes paramètres personnalisés sont dans un fichier /etc/systemd/journald.conf.d/reduction.conf

Storage=volatile
MaxLevelStore=warning
MaxLevelSyslog=warning
Niveau de traces
 Kernel constant   Level value   Meaning
       KERN_EMERG             0        System is unusable
       KERN_ALERT             1        Action must be taken immediately
       KERN_CRIT              2        Critical conditions
       KERN_ERR               3        Error conditions
       KERN_WARNING           4        Warning conditions
       KERN_NOTICE            5        Normal but significant condition
       KERN_INFO              6        Informational
       KERN_DEBUG             7        Debug-level messages
 
Plus d’info:

Log Levels

Manuel Syslog

Manuel de systemd journald.conf

Surveiller l’activité des démons

Nettoyer les vieux fichiers

On peut tirer parti des services systemd-tmpfiles-clean.service et systemd-tmpfiles-clean.timer ( voir le manuel sytemd-tmpfiles ). Le nettoyage est lancé 15 mn après le boot.

On ajoute un fichier de configuration ( voir le manuel de la configuration tmpfiles )

J’ai choisi de ne pas garder de fichiers dans /var/log au-delà de 24 h.

Créer le fichier /etc/tmpfiles.d/log.conf avec ce contenu:

# Type Path Mode UID GID Age Argument
# définir le dossier et nettoyer le contenu de plus de 24h
d /var/log/ 0755 root root 24h

On peut aussi utiliser Logrotate pour compresser et limiter le nombre de fichiers.

/etc/logrotate.d$ ls
alternatives apt btmp cups-daemon dpkg exim4-base exim4-paniclog minidlna ppp rsyslog sophos ufw winbind wtmp xorg xsession-errors

Certains de ces fichiers sont créer par l’installation de Logrotate mais on peut les modifier et passer par exemple d’une rotation mensuelle à une rotation quotidienne pour réduire l’encombrement.

On peut aussi en ajouter selon sa guise, exemple pour l’anti-virus Sophos, je force une rotation quotidienne.

/opt/sophos-av/log/savd.log
{
rotate 7
daily
missingok
create 0774 root root
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

/opt/sophos-av/log/sav-protect.log
{
rotate 7
daily
missingok
create 0774 root root
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

/opt/sophos-av/log/savupdate-debug.log
{
rotate 7
daily
missingok
create 0774 root root
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
/opt/sophos-av/log/talpaselect.log
{
rotate 7
daily
missingok
create 0774 root root
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}

Voir un tutoriel

Lire les journaux

Avec l’application de gnome: journaux

Etat sur Debian 12 Bookworm

cat  /etc/rsyslog.conf
#  /etc/rsyslog.conf	Configuration file for rsyslog.
#
#			For more information see
#			/usr/share/doc/rsyslog-doc/html/rsyslog_conf.html


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
#module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf


###############
#### RULES ####
###############
#
# voir /etc/rsyslog.d/rsyslog-guy.conf
/etc/rsyslog.d$ ls -alrt
total 20
-rw-r--r--   1 root root  1241 11 janv.  2020 rsyslog-guy.conf
drwxr-xr-x   2 root root  4096 11 janv.  2020 .
drwxr-xr-x 147 root root 12288 10 nov.  09:08 ..
guy@debian:/etc/rsyslog.d$ cat rsyslog-guy.conf
#  /etc/rsyslog.conf	Configuration file for rsyslog.
#
#			For more information see
#			/usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
#auth,authpriv.*			/var/log/auth.log
# ne garder que le niveau err et supérieur
#*.*;auth,authpriv.none		-/var/log/syslog
#*.err;auth,authpriv.none	-/var/log/syslog
#cron.*				/var/log/cron.log
#daemon.*			-/var/log/daemon.log
# tous les messages sont dans syslog pas vraiment besoin de kern.log
#kern.*				-/var/log/kern.log
#lpr.*				-/var/log/lpr.log
# voir plus bas
#mail.*				-/var/log/mail.log
#user.*				-/var/log/user.log

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err

# Some "catch-all" log files.
#
# je ne fais pas de debug
#*.=debug;\
#	auth,authpriv.none;\
#	news.none;mail.none	-/var/log/debug
#
# pas besoin de tout journaliser dans messages
#*.=info;*.=notice;*.=warn;\
#	auth,authpriv.none;\
#	cron,daemon.none;\
#	mail,news.none		-/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg				:omusrmsg:*
guy@debian:/etc/rsyslog.d$ 
$ journalctl -p err --no-pager
-- Journal begins at Wed 2021-11-10 09:07:40 CET, ends at Wed 2021-11-10 10:39:39 CET. --
nov. 10 09:07:40 debian kernel: __common_interrupt: 1.55 No irq handler for vector
nov. 10 09:07:45 debian kernel: debugfs: File 'radeon_ring_gfx' in directory '1' already present!
nov. 10 09:07:45 debian kernel: debugfs: File 'radeon_ring_dma1' in directory '1' already present!
nov. 10 09:07:45 debian kernel: debugfs: File 'radeon_ring_uvd' in directory '1' already present!
nov. 10 09:07:48 debian kernel: debugfs: File 'radeon_ring_gfx' in directory '1' already present!
nov. 10 09:07:48 debian kernel: debugfs: File 'radeon_ring_dma1' in directory '1' already present!
nov. 10 09:07:48 debian kernel: debugfs: File 'radeon_ring_uvd' in directory '1' already present!
nov. 10 09:07:50 debian kernel: Bluetooth: hci0: command 0x1009 tx timeout
nov. 10 09:08:00 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: false (implement)
nov. 10 09:08:00 debian kernel: brcmsmac bcma0:1: brcms_ops_config: change power-save mode: false (implement)
nov. 10 09:08:00 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: false (implement)
nov. 10 09:08:00 debian kernel: brcmsmac bcma0:1: brcms_ops_config: change power-save mode: false (implement)
nov. 10 09:08:02 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: false (implement)
nov. 10 09:08:02 debian kernel: brcmsmac bcma0:1: brcms_ops_config: change power-save mode: false (implement)
nov. 10 09:08:03 debian kernel: brcmsmac bcma0:1: brcmsmac: brcms_ops_bss_info_changed: associated
nov. 10 09:08:03 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: qos enabled: true (implement)
nov. 10 09:08:04 debian kernel: brcmsmac bcma0:1: brcms_ops_bss_info_changed: arp filtering: 1 addresses (implement)
nov. 10 09:08:05 debian kernel: Bluetooth: hci0: unexpected event for opcode 0x1009
nov. 10 09:08:12 debian smartd[4306]: Device: /dev/sda [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 81 [Raw 19 (Min/Max 18/19)] to 74 [Raw 26 (Min/Max 25/26)]
nov. 10 09:08:25 debian pulseaudio[4565]: GetManagedObjects() failed: org.freedesktop.systemd1.NoSuchUnit: Unit dbus-org.bluez.service not found.
nov. 10 09:08:37 debian lightdm[4610]: gkr-pam: unable to locate daemon control file
nov. 10 09:08:39 debian pulseaudio[4650]: GetManagedObjects() failed: org.freedesktop.systemd1.NoSuchUnit: Unit dbus-org.bluez.service not found.
nov. 10 09:38:13 debian smartd[4306]: Device: /dev/sda [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 74 [Raw 26 (Min/Max 25/26)] to 64 [Raw 36 (Min/Max 25/36)]
nov. 10 10:08:13 debian smartd[4306]: Device: /dev/sda [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 64 [Raw 36 (Min/Max 25/36)] to 63 [Raw 37 (Min/Max 25/37)]
nov. 10 10:38:13 debian smartd[4306]: Device: /dev/sda [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 63 [Raw 37 (Min/Max 25/37)] to 62 [Raw 38 (Min/Max 25/38)]

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.