Le noyau du système et les processus écrivent dans les logs tous les événements se produisant sur le système. Le protocole utilisé est Syslog
et les messages qu’il produit sont utilisés par les services systemd-logd
et rsyslog
.
Par défaut les logs ne persistent pas après les redémarrages.
Emplacement des logs
Les emplacements des logs de syslog :
/var/log/messages
: authentification, courriers, exécution de tâches planifiées, débogage/var/log/secure
: sécurité, authentification/var/log/maillog
: serveur de messagerie/var/log/cron
: exécution des tâches planifiées/var/log/boot.log
: console, démarrage du système
Exemples
Fichier /var/log/messages
:
[root@SERVER02 ~]# tail n10 /var/log/messages |
Sep 18 12:18:51 SERVER02 systemd[32309]: Listening on D-Bus User Message Bus Socket. |
Fichier /var/log/secure
:
[root@SERVER02 ~]# tail n10 /var/log/secure |
==> /var/log/secure <== |
Fichier /var/log/cron
:
[root@SERVER02 ~]# tail n10 /var/log/cron |
==> /var/log/cron <== |
Règles des fichiers Syslog
Les logs sont classés par fonction et par priorité et rsyslog
traite les logs en fonction de règles situées dans /etc/rsyslog.conf
et dans /etc/rsyslog.d/
.
Exemples de règles du service rsyslog
, l’astérisque (*) correspond à toutes les valeurs de priorité (emerg
, alert
, crit
):
[...] |
Par exemple, les lignes :
cron.* /var/log/cron
:- enregistre les messages avec un niveau de priorité quelconque envoyés à la fonction
cron.*
- dans le fichier
/var/log/cron
- enregistre les messages avec un niveau de priorité quelconque envoyés à la fonction
*.emerg :omusrmsg:*
:- peut afficher sur le terminal de tous les utilisateurs connecté les messages
syslog
ayant la prioritéemerg
- le paramètre
:omusrmsg:
: imprimer tous les messages syslog
- peut afficher sur le terminal de tous les utilisateurs connecté les messages
Créer ses propres règles Syslog
@TODO
Rotation du fichier log
La commande logrotate
effectue une rotation des fichiers logs pour économiser de la place dans /var/log
.
Lors de la rotation, le fichier est renommé avec une extension indiquant sa date de rotation : /var/log/messages
deviendra /var/log/messages-20240918
et l’action sera loguée.
Les fichiers logs les plus anciens seront ensuite supprimés pour libérer de l’espace au bout de généralement 1 mois.
Envoi manuel de messages Syslog
La commande logger
envoie des messages au service rsyslog
avec la priorité notice
par default, pour changer la priotité (emerg
, alert
, crit
) il faut préciser l’option -p
.
Pour envoyer au service rsyslog
un message à enregistrer dans les fichiers /var/log/messagea
, /var/log/boot.log
et /var/log/user.log
:
# logger "Hello ceci est un test de log !" |
Exemples :
[root@SERVER02 ~]# tail -n5 /var/log/messages |
Sep 18 12:24:15 SERVER02 systemd[32309]: Starting Cleanup of User's Temporary Files and Directories... |
Extrait du manuel de logger
Les services possibles sont :
auth // security is now obsolete |
Les niveaux possibles sont :
emerg // panic is now obsolete |
/!\ Résumé des commandes
Commandes :
// Ecrit des logs dans les fichiers correspondant aux services |
Fichiers :
/var/log/messages // authentification, courriers, exécution de tâches planifiées, débogage |
Cas pratique
Création d’un fichier /etc/rsyslog.d/my_debug.conf
pour rediriger les logs de priorité debug ou supérieure présents dans /var/log/messages-debug
:
[root@SERVER02 ~]# touch /etc/rsyslog.d/my_debug.conf |
Pour récupérer dans le fichier my_debug.conf
les messages syslog
de toute installation avec un niveau de priorité debug
ou supérieur :
*
: installation quelconque de messages de logs/var/log/messages-debug
: fichier où les informations sont écrites
[root@SERVER02 ~]# cat /etc/rsyslog.d/my_debug.conf |
*.debug /var/log/messages-debug |
Redémarrage du service rsyslog
:
[root@SERVER02 ~]# systemctl restart rsyslog |
Vérification, tous les messages de logs avec la priorité debug
apparaissent bien dans les logs de /var/log/messages-debug
:
[root@SERVER02 ~]# tail -n10 /var/log/messages-debug |
Sep 18 12:47:24 SERVER02 systemd[1]: Stopping System Logging Service... |
Création d’un message de log avec le type user
et la priorité debug
:
[root@SERVER02 ~]# logger -p user.debug "Debug User Message Test" |
Vérification des messages de logs de /var/log/messages-debug
:
[root@SERVER02 ~]# tail /var/log/messages-debug |
Sep 18 12:55:15 SERVER02 dnf[32457]: Updating Subscription Management repositories. |
Détermination d’un période :
[aline@SERVER02 ~]$ date |
[aline@SERVER02 ~]$ date -d "-30 min" |
Afficher les logs enregistrés au cours des 30 dernières minutes :
[aline@SERVER02 ~]$ journalctl --since 10:30:00 --until 11:00:30 |
Création du fichier /etc/rsyslog.d/auth-errors.conf
avec /var/log/auth-errors
comme destination des messages authpriv.alert
:
[root@SERVER02 ~]# vim /etc/rsyslog.d/auth-errors.conf |
authpriv.alert /var/log/auth-errors |
Restart de rsyslog
:
[root@SERVER02 ~]# systemctl restart rsyslog |
Ecriture d’un message de test avec priorité alert dans /var/log/auth-errors
avec logger -p
:
[root@SERVER02 ~]# logger -p authpriv.alert "Logging TEST ALERTE ROUGE" |
Vérification que /var/log/auth-errors
contient le log :
[root@SERVER02 ~]# tail /var/log/auth-errors |
Sep 22 12:32:10 Redhat1-Test1 root[133142]: Logging |
Documentation
MAN systemd-logd.service(8)
MAN rsyslogd(8)
MAN rsyslog.conf(5)
Doc dans /usr/share/doc/rsyslog/