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

malekalmorte

Création :

10 octobre 2020

Modification :

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, 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/ :

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 Linux
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

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.