Page suivantePage pr�c�denteTable des mati�res

6. Syslogd

6.1 Probl�me

Syslog est l'outil de logging couramment utilis� sur les syst�mes UNIX. C'est un d�mon qui ouvre un fichier sp�cial appel� FIFO. Une FIFO est un fichier sp�cial, se comportant comme une file d'attente. Tout ce qui y est �crit "ressortira" en lecture. Le d�mon syslog attend les donn�es en lecture. Il existe des fonctions C pour �crire dans les FIFO. Si vous utilisez ces fonctions C dans vos programmes, la sortie ira vers syslod.

Souvenez vous que vous avez utilis� chroot et que la FIFO que syslog lit /dev/log ne se trouve pas dans l'environnement virtuel. Cela implique qu'aucun des environnements virtuels ne pourra utiliser syslog. Nous ne pouvons pas tout simplement copier le fichier, puisque les programmes utiliseraient /dev/log au lieu du nouveau que nous aurions cr��.

6.2 Solution

Syslog peut scruter d'autres FIFO si vous le lui dites en ligne de commande. Lancez donc syslog avec l'argument :

syslog -p /virtual/log

Faites alors un lien de /dev/log vers /virtual/log (un lien symbolique) :

ln -sf /virtual/log /dev/log

Puis liez toutes les copies de /dev/log vers ce fichier avec la commande (attention, c'est un lien NON symbolique) :

ln /virtual/log /virtual/domain.com/dev/log

Le script virtfs ci-dessus le fait pour vous. Puisque /virtual est un disque entier, et que les /dev/log sont li�s, ils ont le m�me num�ro d'inode et pointent vers les m�mes donn�es. Le chroot ne peut pas emp�cher cela, et donc tous vos /dev/log virtuels vont � pr�sent fonctionner. Notez �galement que tous les messages de toutes les machines virtuelles seront �crits dans un m�me fichier. Cependant, vous pouvez �crire des programmes pour filtrer les donn�es.

Syslogd.init

Cette version du fichier syslog.init refait les liens vers les /dev/log � chaque fois que vous le lancez. Voici un syslog.init modifi� :

#!/bin/sh
# Source function library.
. /etc/rc.d/init.d/functions
case "$1" in
 start)
 echo -n "Starting dev log: "
 ln -sf /virtual/log /dev/log
 echo done
 echo -n "Starting system loggers: "
 daemon syslogd -p /virtual/log
 daemon klogd
 echo
 echo -n "Starting virtual dev log: "
 for i in /virtual/*
 do
 if [ ! -d "$i" ]
 then
 continue
 fi
 if [ "$i" = "/virtual/lost+found" ]
 then
 continue
 fi
 ln -f /virtual/log $i/dev/log
 echo -n "."
 done
 echo " done"
 touch /var/lock/subsys/syslog
 ;;
 stop)
 echo -n "Shutting down system loggers: "
 killproc syslogd
 killproc klogd
 echo
 rm -f /var/lock/subsys/syslog
 ;;
 *)
 echo "Usage: syslog {start|stop}"
 exit 1
esac
exit 0

6.3 Plusieurs syslod

Un par disque

Si vous manquez de place sur un syst�me de fichiers, et que vous devez s�parer vos domaines virtuels en plusieurs disques, rappellez-vous que les liens (non symboliques) ne peuvent pas passer � travers plusieurs disques. Ce qui implique de devoir lancer un syslogd pour chaque groupe de domaine par disque. Par exemple, si vous avez 13 domaines sur /virtual1 et 15 sur /virtual2, vous devrez faire un lien pour les 13 domaines sur /virtual1/log et lancer syslogd avec syslogd -p /virtual1/log , ainsi qu'un lien pour les 15 domaines sur /virtual2/log et lancer syslogd -p /virtual2/log .

Un par domaine

Si vous ne voulez pas centrer les logs sur un seul endroit, vous pouvez aussi lancer un syslogd par domaine. Cela donne des pertes de processus ID, donc je ne le recommande pas, mais c'est facile � mettre en oeuvre. Vous devriez modifier votre fichier syslod.init pour lancer syslogd par chroot /virtual/domain1.com syslogd pour chaque domaine. Ceci lancera syslogd dans le chroot et les logs se trouveront dans /virtual/domain1.com/var/log au lieu d'�tre tous rassembl�s dans /var/log. N'oubliez pas de lancer syslod normalement syslod pour le syst�me principal ainsi qu'un logger pour le noyau klogd .


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:22