Linux comme tout système d’exploitation produit des logs et journaux.
Cela enregistre les actions effectuées par l’OS, les services et certaines applications.
Par défaut, les journaux Linux se trouvent dans le dossier /var/log.
Pour gérer les logs et journaux, Linux dispose de RsysLog et Logrotate.
Dans cet article, vous trouvez toute la configuration de ces deux outils.

Table des matières
Rsyslog : configurer les journaux Linux
Rsyslog est un service Linux qui filtre les journaux Linux.
Vous pouvez configurer des filtres, règles et propriétés afin de rediriger des contenus vers des journaux spécifiques.
Le fichier de configuration est dans /etc/rsyslog.conf ou vous pouvez ajouter un fichier de configuration dans /etc/rsyslog.d/ :
Puis plus bas, on trouve les propriétés dont la syntaxe est :
:propriété, [!]Opérations de comparaison basées sur la propriété, "valeur"
Priorité, level et niveau de gravité
Si on jète un coup d’oeil à la fin du fichier rsyslog.conf, on peut voir des redirections selon les facility.
Ainsi par défaut rsyslogs se chargent d’orienter les messages selon des priorités et niveaux d’alertes.
Cela donne au final les journaux Linux communs à chaque distribution comme kern.log, messages, cron, daemon, etc.
Enfin cela permet aussi aux applications de gestions et collectes de journaux une interopérabilité.
La formule appliquée par ryslogs est la suivante :
priorité = (catégorie × 8) + gravité.
Code | Mot-clé | Description |
---|---|---|
0 | kern | messages du noyau Linux |
1 | user | messages de l’espace utilisateur |
2 | messages du système de messagerie | |
3 | daemon | messages des processus d’arrière plan |
4 | auth | messages d’authentification |
5 | syslog | messages générés par syslogd lui-même |
6 | lpr | messages d’impressions |
7 | news | messages d’actualités |
8 | uucp | messages UUCP |
9 | cron | Taches planifiées (at/cron) |
10 | authpriv | sécurité / élévation de privilèges |
11 | ftp | logiciel FTP |
12 | ntp | Synchronisation du temps NTP |
13 | security | log audit |
14 | console | log alert |
Code | Gravité | Mot-clé | Description |
---|---|---|---|
0 | Emergency | emerg (panic) | Système inutilisable. |
1 | Alert | alert | Une intervention immédiate est nécessaire. |
2 | Critical | crit | Erreur critique pour le système. |
3 | Error | err (error) | Erreur de fonctionnement. |
4 | Warning | warn (warning) | Avertissement (une erreur peut intervenir si aucune action n’est prise). |
5 | Notice | notice | Événement normal méritant d’être signalé. |
6 | Informational | info | Pour information. |
7 | Debugging | debug | Message de mise au point. |
Les propriétés
Voici les propriétés rsyslog les plus utilisées :
- msg – la partie MSG du message.
- hostname – nom d’hôte du message
- source – alias pour HOSTNAME
- timegenerated – horodatage de la réception du message. Toujours en haute résolution
- fromhost – nom d’hôte du système duquel le message a été reçu.
- fromhost-ip – Identique à fromhost, mais toujours sous forme d’adresse IP.
- syslogtag– TAG du message
- programname – la partie «statique» de la balise, telle que définie par BSD syslogd. Par exemple, lorsque TAG est «nommé [12345]», le nom du programme est «nommé».
Opérations de comparaison basées sur la propriété
Puis les des opérations de comparaison basées sur la propriété pour matcher un élément :
- contains – Vérifie si la chaîne fournie dans valeur est contenue dans la propriété. Il doit y avoir une correspondance exacte, les caractères génériques ne sont pas pris en charge. Une option insensible à la casse est contains_i.
- isequal – Compare la chaîne «valeur» fournie et le contenu de la propriété. Ces deux valeurs doivent être exactement égales pour correspondre. isequal est le plus utile pour les champs comme syslogtag ou FROMHOST, où vous connaissez probablement le contenu exact.
- startswith – Vérifie si la valeur se trouve exactement au début de la valeur de la propriété. Par exemple, si vous recherchez « val » avec: msg, commence par, « val », ce sera une correspondance si msg contient « les valeurs sont dans ce message » mais il ne correspondra pas si le msg contient « Il y a des valeurs dans ce message message ». Pour effectuer des comparaisons insensibles à la casse, utilisez startswith_i.
- regex – Compare la propriété à l’expression régulière POSIX BRE fournie.
- ereregex – Compare la propriété à l’expression régulière POSIX ERE fournie.
- isempty – Vérifie si la propriété est vide.
Exemples de filtres
Rediriger tous les journaux avec [IPTABLES vers /var/log/firewall.log
:msg,contains, "[IPTABLES" -/var/log/firewall.log
La négation se fait avec l’expression ! :
:msg, !contains, "error"
Le filtre suivant sélectionne les messages syslog reçus du nom d’hôte malekal.com:
:hostname, isequal, "malekal.com"
Voici un exemple plus complexe :
*.* /var/log/allmsgs-including-informational.log :msg, contains, "informational" ~ *.* /var/log/allmsgs-but-informational.log
Dans cet exemple, tous les messages sont écrits dans le fichier allmsgs-including-informational.log.
Ensuite, tous les messages contenant la chaîne «informationnal» sont supprimés.
Cela signifie que les lignes du fichier de configuration sous la «ligne de suppression» (numéro 2 dans notre exemple) ne seront pas appliquées à ce message.
Ensuite, toutes les lignes restantes seront également écrites dans le fichier allmsgs-but-informational.log.
Logrotate : configurer la rotation des logs Linux
Logrotate est un service Linux qui permet de gérer la rotation et compression des journaux.
Vous avez déjà certainement remarqué que certains logs se remettent à zéro chaque jour, semaine ou mois.
Un décalage se fait avec un .1, .2 et parfois sont compressions.
Cela se fait via logrotate.
Par exemple ci-dessous :
- message est le log actif de la journée
- messages.1 est le log J-1 (non compressé)
- message.2.gz, message3.gz sont les journaux des jours d’avant compressés en gzip
Fichier de configuration
On créé alors dans /etc/logrotate.d/ un fichier de configuration visant une application ou service en particulier.
Par exemple ici la configuration logrotate sur les logs nginx :
/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript }
- daily, weekly, monthly pour une rotation asur un jour, semaine ou mois
- missingok permet au processus de ne pas s’arrêter à chaque erreur et de poursuivre avec le fichier de log suivant
- rotate 14 signifie qu’à chaque intervalle, ici on conserve 14 mois de journalisation
- compress ou delaycompress – Les fichiers de logs peuvent être compressés au format gzip. ‘delaycompress’ retarde le processus de compression jusqu’à la prochaine rotation
- notifempty empêche la rotation de s’effectuer si le fichier de log est vide
- create <mode> <owner> <group‘ créé un fichier vide avec les propriétés spécifiées, après la rotation des logs
- sharedscripts – les scripts ne sont exécutés qu’une seule fois, quel que soit le nombre de journaux correspondant au modèle générique, et le modèle entier leur est transmis. Cependant, si aucun des journaux du modèle ne nécessite une rotation, les scripts ne seront pas exécutés du tout. Si les scripts se terminent avec une erreur, les actions restantes ne seront exécutées pour aucun journal. Cette option remplace l’option nosharedscripts et implique l’option de création
- prerotate et postrotate permet de spécifier des actions à effectuer avant et après la rotation de log
Liens
- Quels sont les journaux Linux de /var/log/ et comment les lire
- Comment utiliser journalctl pour voir et lire les journaux Linux Systemd
- rsyslog et logrotate : gérer les logs et journaux linux
- Comment utiliser la commande dmesg sur Linux
- Comment lire les logs sur Linux en temps réel avec tail, multitail
- Daemon et Service linux : Configuration et fonctionnement