Prendre le contrôle des fichiers de journalisation du système — Comment installer Logger

Gazette Linux n°148 — Mars 2008

Mar Matthias Darin

Hervé Ly-Sunnaram

Adaptation française  

Article paru dans le n°148 de la Gazette Linux de Mars 2008.

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

À propos de l'auteur

Voici un guide pratique pour l'installation de Logger, utilitaire de journalisation fonctionnant sous Linux, qui permet de prendre le contrôle des fichiers de journalisation. On est facilement submergé par les journaux système et la plupart du temps on préfère ne pas s'en occuper. Beaucoup d'utilisateurs ne savent tout bonnement pas quoi en faire ou comment les maintenir. La maintenance des journaux peut faire peur, en particulier si le planning de maintenance concerne également des applications de serveur Web ou de messagerie. Mon but ici est de fournir une méthodologie simple applicable par tout utilisateur de Linux.

Les programmes classiques tels que syslogd et klogd sont, pour le moins, vieux et dépassés pour la plupart des actuelles configurations système requises. Dans des cas extrêmes, ils peuvent être carrément dangereux. J'ai écrit Logger pour aborder ces problèmes et d'autres encore.

Commençons par décrire ces programmes classiques et ce qu'ils font exactement. Klogd, le démon de journalisation du noyau, est responsable de la collecte de tous les messages provenant du noyau et de leur transmission à syslogd, le démon de journalisation du système. Une question vient alors immédiatement à l'esprit : pourquoi deux processus différents ?

C'est une bonne question en effet. Le mode de pensée actuel est qu'il est plus simple et plus précis d'avoir un programme dédié à la journalisation des messages du noyau. C'est loin d'être absurde mais en même temps ça ne tient pas debout puisque klogd transmet simplement les messages à syslogd. Pour moi, ça revient à doubler le travail et le gaspillage de ressources. Ceci étant dit, jetons un coup d'œil à syslogd.

Comme mentionné précédemment, c'est le démon de journalisation du système. Il est responsable de la journalisation de tous les messages provenant de programmes tels que >bind, wuftp, proftp, ident, telnet, ainsi que de presque tous les pilotes gérant les espaces disque utilisateur, de beaucoup d'outils antispam, etc. La liste des programmes pour lequel syslogd intervient est très variée.

Avec un programme si important, on pourrait poser la question suivante : pourquoi réinventer la roue ou toucher à quelque chose qui n'est pas cassé ? Pour faire simple et bref, on répondra qu'il y a beaucoup de programmes actuels qui peuvent dégrader (sys|k)logd et qu'on ne peut accepter la moindre diminution de la performance du système. On peut vous donner deux très bonnes raisons de remplacer ces vénérables programmes : des fichiers limités à deux gigaoctets et l'envoi des journaux en texte brut.

Je fais tourner un petit serveur avec sept domaines. Chaque domaine a son propre serveur Web, e-mail, FTP et nom de domaine ainsi que son noyau de base et ses journaux système. Cela fait six journaux par machine avec un total de quarante-deux journaux différents que j'ai à maintenir quotidiennement. Je n'ai pas inclus le proxy, le cache, les journaux d'analyse du courrier électronique, et autre pour simplifier, mais ceux-ci sont caractéristiques de n'importe quel serveur normal. Avec tous ces journaux à traiter, où pourrais-je trouver le temps pour effectuer mes autres tâches administratives telles que répondre aux courriels ?

Il y a un autre problème que je n'ai pas encore abordé : les surcharges d'écriture dans les journaux peuvent pourrir même les serveurs les plus hauts de gamme, pouvant causer des tas de problèmes allant du sérieux ralentissement à l'arrêt total du serveur. Des journalisations disproportionnées peuvent aussi entrainer une surchauffe des disques durs et une usure plus rapide. J'ai moi-même vécu cela. Mon disque de journalisation tournait à la température incroyable de 52° avant que je n'utilise Logger. Maintenant, il est à la température confortable de 35° et je n'ai plus du tout de plantages serveurs causés par surchauffe. Les ordinateurs portables et fixes sont également touchés, mais à moindre mesure.

C'est la raison pour laquelle j'ai écrit Logger : pour prendre le contrôle de ce bazar et pour éviter à mon matériel ces pourrissages et ces problèmes de surchauffe. Donc, tout ça étant dit, passons à l'installation de Logger.

Le paquet Logger doit être installé sur votre disque dur. On peut le télécharger ici. Je vous recommande de placer l'archive de Logger dans la zone /usr/src par souci de commodité et de sécurité (rappelez-vous, écrire dans ce répertoire demande les permissions root).

L'archive tar Logger doit être décompressée dans un dossier nommé Logger et le chemin doit être changé pour pointer vers ce dossier :

mkdir /usr/src/Logger
mv Logger.tgz /usr/src/Logger
cd /usr/src/Logger
tar xvzf Logger.tgz

Logger doit ensuite être compilé en tapant :

./COMPILE

Si il ne se passe aucune erreur, les fichiers doivent être installés :

mv Logger /sbin
mv LogPipe /usr/local/bin

Nous allons maintenant écrire le fichier de configuration de Logger. C'est simplement un petit fichier texte nommé Logger.conf et il est enregistré dans le répertoire /etc. Le jeu d'instruction est assez simple et facile à utiliser. Voici un fichier Logger.conf de base qui marchera sur n'importe quelle machine (un exemple est inclus dans l'archive tar Logger).

  1. ###
  2. ### Fichier de configuration de Logger
  3. ###
  4.
  5. ### Les queues nécessaires
  6.
  7. Queue Klog       0 0 0600 1 /var/log/Klog.log
  8. Queue Slog       0 0 0600 25 /var/log/Syslog.log
  9.
  10.### Les entrées Sys/Klog
  11.
  12.Kernel MyCPU Klog
  13.SysLog MyCPU Slog

Les lignes 1-3, 5 et 10 sont des commentaires. Toute ligne qui commence par un dièse (#) est un commentaire et est ignorée par Logger. Les lignes vides (4, 6, 9 et 11) sont aussi ignorées. En fait, la première instruction pour Logger est à la ligne 7.

La première instruction rencontrée par Logger est Queue. Voici en détail comment se décompose la ligne 7 :

  1. Les lignes de Queue doivent toujours commencer par le mot Queue. Pour Logger, une Queue est une partie de la mémoire qui est utilisée pour garder tous les journaux avant qu'ils ne soient écrits sur le disque. Ils sont créés et maintenus par Logger automatiquement quand Logger voit l'instruction Queue.

  2. Nom ou identifiant de la Queue  il doit être unique pour chaque Queue. C'est ce qui permet à Logger de savoir où mettre les journaux provenant d'une source d'enregistrements spécifique.

  3. Propriétaire : identifiant numérique du propriétaire (UID) ; on peut l'obtenir avec la commande Linux stat ou avec le fichier /etc/passwd. Par exemple, root a la valeur numérique 0.

  4. Groupe : valeur numérique du groupe ; on peut l'obtenir avec la commande Linux stat. Par exemple, root a la valeur de groupe numérique 0.

  5. Les permissions : elles doivent débuter obligatoirement par un ZÉRO (0). Elles permettent la configuration des autorisations d'accès au fichier et on peut les obtenir avec la commande Linux stat. Par exemple, l'accès au propriétaire uniquement a la valeur numérique 0600.

  6. Nombre de lignes de journaux voulus qui doivent être stoquées par Queue avant enregistrement. Le minimum est d'une ligne. Il n'y a pas de limite maximale mais il faut choisir un nombre qui soit pratique.

  7. Préfixe à entrer (* = pas de préfixe).

  8. Fichier(s) de sortie / Connection TCP (les journaux peuvent être aussi bien envoyés par TCP, dans ce cas ne pas préciser le fichier).

Avec comme point de départ l'exemple d'au-dessus, nous allons maintenant ajouter un ordinateur portable. Ajoutez les deux lignes suivantes au fichier Logger.conf de l'ordinateur fixe (dans l'exemple ci-dessus) :

  1. TCP 3900 * Klog
  2. TCP 3901 * Slog

Logger devra maintenant être relancé. Les deux lignes du dessus disent à Logger de mettre en place des serveurs TCP sur les ports 3900 et 3901 où les données du système et du noyau seront donc reçues. Il est à noter qu'un nombre indéfini d'ordinateurs peut maintenant utiliser ce serveur de journaux. Veillez à bien configurer vos règles de pare-feu.

Passons maintenant aux configurations de Logger.conf de l'ordinateur portable (rappelez-vous que Logger doit être installé au préalable) :

  1.  ###
  2.  ### Fichier de configuration de Logger
  3.  ###
  4.
  5.  ### TOUTES LES OPTIONS À CHAQUE LIGNE SONT NÉCESSAIRES
  6.
  7.  ### Les Queues de sortie – DOIVENT être listées en premier
  8.
  9.  Queue Klog       0 0 0600 1 @10.0.100.0:3900
  10. Queue Slog      0 0 0600 25 @10.0.100.0:3901
  11. 
  12. ### Les entrées Sys/KLog
  13. 
  14. Kernel Laptop Klog
  15. SysLog Laptop Slog

10.0.100.0 est un exemple utilisé pour identifier les adresses IP de l'ordinateur fixe. Il faut que ce soit effectivement l'adresse IP de l'ordinateur fixe. Remarquez aussi que les ports dans l'exemple de l'ordinateur fixe correspondent en ordre et en séquence à ceux de l'ordinateur portable.

L'exemple ci-dessous est légèrement plus complexe :

Pour cet exemple, le diagramme ci-dessus servira de base pour notre petit réseau en partant du principe que :

  1. Alpha, Beta, Delta, Gamma, et Omega sont des serveurs.

  2. ils auront les adresses IP suivantes :

    1. Alpha — 10.0.100.0

    2. Beta — 10.0.100.1

    3. Delta — 10.0.100.2

    4. Gamma — 10.0.100.3

    5. Omega — 10.0.200.0

  3. les configurations des serveurs seront les suivantes

    1. Alpha, Beta, et Delta sont des serveurs Web faisant tourner Apache.

    2. Delta est un serveur de courrier électronique.

    3. Omega est le serveur de journaux dédié.

  4. tous les serveurs ont Logger d'installé.

  5. Apache et Exim ont été configurés comme suit :

    1. Apache enregistrera les journaux dans :

      1. /tmp/logger/ApacheLog pour les journaux généraux

      2. /tmp/logger/ApacheErr pour les journaux d'erreurs

    2. Exim enregistrera les journaux dans :

      1. /tmp/logger/EximMain

      2. /tmp/logger/EximReject

      3. /tmp/logger/EximPanic

Avec la configuration ci-dessus, voici les différents fichiers Logger.conf de chaque machine :

Pour Alpha, Beta et Delta :

  ###
  ### Fichier de configuration de Logger pour Alpha, Beta et Delta
  ###
  ### Le préfixe devra être changé pour chaque machine
  
  ### Les Queues de sortie – DOIVENT être listées en premier
  
  Queue   Klog            0   0   0600   1      @10.0.200.0:3900
  Queue   Slog            0   0   0600   25     @10.0.200.0:3901
  Queue   ApacheLog       0   0   0644   1000   @10.0.200.0:3902
  Queue   ApacheErr       0   0   0644   1      @10.0.200.0:3903
  
  ### Les entrées Sys/KLog
  
  Kernel Alpha Klog
  SysLog Alpha Slog
  
  ### Les entrées Apache
  
  Pipe /tmp/logger/ApacheLog Alpha ApacheLog
  Pipe /tmp/logger/ApacheErr Alpha ApacheErr

Remarquez que Exim n'apparait pas ici et il n'a pas besoin d'apparaitre.

Pour Gamma :

  ###
  ### Fichier de configuration de Logger pour Gamma
  ###
  
  ### Les Queues de sortie – DOIVENT être listées en premier
  
  Queue Klog              0 0 0600 1            @10.0.200.0:3900
  Queue Slog              0 0 0600 25           @10.0.200.0:3901
  Queue EximLog           0 0 0640 500          @10.0.200.0:3904
  
  ### Les entrées Sys/KLog
  
  Kernel Gamma Klog
  SysLog Gamma Slog
  
  ### Les entrées Exim
  
  Pipe /tmp/logger/EximMain   Main   EximLog
  Pipe /tmp/logger/EximPanic Panic EximLog
  Pipe /tmp/logger/EximReject Reject EximLog

Remarquez qu'Apache n'apparait pas ici et il n'a pas besoin d'apparaitre. Remarquez aussi que les trois journaux Exim sont fusionnés en un seul fichier. Chaque fichier Exim peut être enregistré séparément en appliquant une Queue à chacun d'eux.

Finalement, Omega :

  ###
  ### Le fichier de configuration d'Omega
  ###
  
  ### Les Queues de sortie – DOIVENT être listées en premier
  
  Queue   Klog         0   0   0600   1      /var/log/Klog
  Queue   Slog         0   0   0600   25     /var/log/SysLog
  Queue   ApacheLog    0   0   0644   1000   /var/log/ApacheLog
  Queue   ApacheErr    0   0   0644   1      /var/log/ApacheErr
  Queue   EximLog      0   0   0640   500    /var/log/EximLog
  
  ### Les entrées Sys/KLog
  
  ### Les journaux locaux
  
  Kernel Omega Klog
  SysLog Omega Slog
  
  ### Journaux des autres machines
  
  TCP 3900 * Klog
  TCP 3901 * Slog
  
  ### Les entrées Apache
  
  TCP 3902 * ApacheLog
  TCP 3903 * ApacheErr
  
  ### Les entrées Exim
  
  TCP 3904 * EximLog

Relancez Logger, Exim et Apache sur chaque machine et tous les journaux seront écrits sur la machine Omega. Un point important à noter : Logger doit être lancé d'abord sur Omega puis ensuite sur les autres machines. Relancez les applications telles qu'Apache et Exim en dernier.

Les exemples ci-dessus ne montrent qu'une petite partie de ce que Logger peut faire. Les applications/serveurs comme Apache, Exim, Sendmail, Postfix, Maildrop, Squid, Snort et autre (y compris n'importe quel programme Linux qui écrit des journaux en plein texte) peuvent profiter de Logger. Il peut être implanté tout aussi bien sur un simple ordinateur seul que dans une grande entreprise à l'organisation complexe pour fusionner tous ses journaux en un point de sécurité unique. La polyvalence et la souplesse de Logger peuvent ouvrir de manière significative les portes vers de nouvelles possibilités et vers une amélioration des performances sur n'importe quel système.

À propos de l'auteur

Je suis un programmeur expérimenté de 28 ans et un évêque. Mes spécialités dans le domaine informatique sont les bases de données est la sécurité. J'ai été un professeur en programmation dans un collège et administrateur de bureau. J'ai une formation intensive pour gérer les difficultés d'apprentisage.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.