Rsyslog et logrotate : gérer les logs et journaux Linux

Bloqueur de pub détectée - Vous bloquez l'affichage des publicités.
Pour soutenir le site, merci de bien vouloir laisser les publicités s'afficher.

Plus d'informations : Comment désactiver les bloqueurs de publicité sur un site internet.

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.

Rsyslog et logrotate : gérer les logs et journaux Linux

Rsyslog : configurer les journaux Linux

Rsyslog est un service Linux qui filtre les journaux Linux.
Vous pouvez configurer des filtres et propriétés afin de rediriger des contenus vers des journaux spécifiques.

Rsyslog : configurer les journaux Linux

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é.

CodeMot-cléDescription
0kernmessages du noyau
1usermessages de l'espace utilisateur
2mailmessages du système de messagerie
3daemonmessages des processus d'arrière plan
4authmessages d'authentification
5syslogmessages générés par syslogd lui-même
6lprmessages d'impressions
7newsmessages d'actualités
8uucpmessages UUCP
9cronTaches planifiées (at/cron)
10authprivsécurité / élévation de privilèges
11ftplogiciel FTP
12ntpSynchronisation du temps NTP
13securitylog audit
14consolelog alert
Codes de catégorie
CodeGravitéMot-cléDescription
0Emergencyemerg (panic)Système inutilisable.
1AlertalertUne intervention immédiate est nécessaire.
2CriticalcritErreur critique pour le système.
3Errorerr (error)Erreur de fonctionnement.
4Warningwarn (warning)Avertissement (une erreur peut intervenir si aucune action n'est prise).
5NoticenoticeÉvénement normal méritant d'être signalé.
6InformationalinfoPour information.
7DebuggingdebugMessage de mise au point.
Les codes de gravité

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
La rotation de logs et journaux dans Linux avec Logrotate

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 et sources

RsysLogs: https://www.rsyslog.com/doc/v8-stable/configuration/filters.html et https://fr.wikipedia.org/wiki/Syslog

Vous avez trouvé cet article utile et interressant, n'hésitez pas à le partager...

Trouver la solution sur le forum d'aide

Vous êtes arrivé au terme de l'article Rsyslog et logrotate : gérer les logs et journaux Linux mais vous n'avez pas trouvé la solution à votre problème...
Suivez ces articles du forum pour trouver une réponse ou demandez à votre tour de l'aide sur le forum

Tags: