Copyright © 2008 Mar Matthias Darin
Copyright © 2010 Hervé Ly-Sunnaram
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
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 :
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
.
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.
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.
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.
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.
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.
Préfixe à entrer (* = pas de préfixe).
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 :
Alpha, Beta, Delta, Gamma, et Omega sont des serveurs.
ils auront les adresses IP suivantes :
Alpha — 10.0.100.0
Beta — 10.0.100.1
Delta — 10.0.100.2
Gamma — 10.0.100.3
Omega — 10.0.200.0
les configurations des serveurs seront les suivantes
Alpha, Beta, et Delta sont des serveurs Web faisant tourner Apache.
Delta est un serveur de courrier électronique.
Omega est le serveur de journaux dédié.
tous les serveurs ont Logger d'installé.
Apache et Exim ont été configurés comme suit :
Apache enregistrera les journaux dans :
/tmp/logger/ApacheLog
pour les journaux généraux
/tmp/logger/ApacheErr
pour les journaux d'erreurs
Exim enregistrera les journaux dans :
/tmp/logger/EximMain
/tmp/logger/EximReject
/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.
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.