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. Sep 18 12:18:51 SERVER02 systemd[32309]: Reached target Sockets. Sep 18 12:18:51 SERVER02 systemd[32309]: Reached target Basic System. Sep 18 12:18:51 SERVER02 systemd[1]: Started User Manager for UID 0. Sep 18 12:18:51 SERVER02 systemd[32309]: Reached target Main User Target. Sep 18 12:18:51 SERVER02 systemd[32309]: Startup finished in 95ms. Sep 18 12:18:51 SERVER02 systemd[1]: Started Session 27 of User root. Sep 18 12:18:51 SERVER02 systemd[1]: Starting Hostname Service... Sep 18 12:18:51 SERVER02 systemd[1]: Started Hostname Service. Sep 18 12:19:21 SERVER02 systemd[1]: systemd-hostnamed.service: Deactivated successfully.
Fichier /var/log/secure :
[root@SERVER02 ~]# tail n10 /var/log/secure
==> /var/log/secure <== Sep 15 12:16:10 SERVER02 sshd[29766]: pam_unix(sshd:session): session closed for user root Sep 18 04:22:27 SERVER02 sshd[32021]: Accepted password for root from 192.168.1.105 port 42254 ssh2 Sep 18 04:22:27 SERVER02 systemd[32026]: pam_unix(systemd-user:session): session opened for user root(uid=0) by (uid=0) Sep 18 04:22:27 SERVER02 sshd[32021]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0) Sep 18 09:22:25 SERVER02 sshd[32041]: Received disconnect from 192.168.1.105 port 42254:11: disconnected by user Sep 18 09:22:25 SERVER02 sshd[32041]: Disconnected from user root 192.168.1.105 port 42254 Sep 18 09:22:25 SERVER02 sshd[32021]: pam_unix(sshd:session): session closed for user root Sep 18 12:18:51 SERVER02 sshd[32304]: Accepted password for root from 192.168.1.105 port 42998 ssh2 Sep 18 12:18:51 SERVER02 systemd[32309]: pam_unix(systemd-user:session): session opened for user root(uid=0) by (uid=0) Sep 18 12:18:51 SERVER02 sshd[32304]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
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):
[...] #### RULES ####
# Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console
# Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access. authpriv.* /var/log/secure
# Log all the mail messages in one place. mail.* -/var/log/maillog
# Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log local7.* /var/log/boot.log [...]
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
*.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
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 !" # logger -p local0.notice "Hello ceci est AUSSI un test de log !" # logger -p user.crit "Hello je t'ai à l'oeil !"
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... Sep 18 12:24:15 SERVER02 systemd[32309]: Finished Cleanup of User's Temporary Files and Directories. Sep 18 12:36:17 SERVER02 root[32382]: Hello ceci est un test de log ! Sep 18 12:36:25 SERVER02 root[32383]: Hello ceci est AUSSI un test de log ! Sep 18 12:36:32 SERVER02 root[32384]: Hello je t'ai à l'oeil !
Extrait du manuel de logger
Les services possibles sont :
auth // security is now obsolete authpriv // pour les informations de sécurité de nature sensible cron daemon ftp kern // ne peut pas être créé depuis un processus d’espace utilisateur, convertit automatiquement en utilisateur lpr mail news syslog user uucp local0-7
Les niveaux possibles sont :
emerg // panic is now obsolete alert crit err // error is now obsolete warning // warn is now obsolete notice info debug
/!\ Résumé des commandes
Commandes :
// Ecrit des logs dans les fichiers correspondant aux services # logger "Hello ceci est un test de log !" # logger -p local0.notice "Hello ceci est AUSSI un test de log !" # logger -p user.crit "Hello je t'ai à l'oeil !"
Fichiers :
/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
// Règles utilisées par rsyslog pour traiter les logs /etc/rsyslog.conf /etc/rsyslog.d/*.conf
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 :