This is an old revision of the document!
Table of Contents
journal log
Théorie du syslog
- service de gestion des logs sur le port udp/514
- 2 démons utilisés sous Linux : klogd et syslogd
- klogd : récupére les logs du noyau seulement
- syslogd : gestion des logs : il recoit des trap et les redirige où il faut en suivant les règles de
/etc/syslog.conf
Les services
Listes des services reconnus par syslog :
- auth : Messages relatifs à la sécurité du système et à l'authentification des utilisateurs.
- cron : Messages générés par les daemons cron et at.
- daemon : Messages générés par les autres daemons systèmes.
- kern : Messages générés par le noyau (en provenance de klogd).
- local0 à local7 : Services définis localement par l'administrateur système.
- lpr : Messages relatifs au service d'impression.
- mail : Messages provenant du système de mail.
- news : Messages générés par la gestion des news USENET.
- syslog : Messages générés en interne par syslog.
- user : (C'est le service par défaut) Messages en provenance des utilisateurs.
Les priorités
Listes des priorités (au nombre de 8, par ordre croissant) reconnues par syslog :
- emerg (emergency) : Message urgent. Le système est inutilisable ou risque de le devenir à très cours terme.
- alert (alerte) : Message alertant l'administrateur système qu'une action de sa part est requise.
- crit (critique) : Message critique.
- err (erreur) : Message d'erreur.
- warning (ou warn)(avertissement) : Message d'avertissement.
- notice (note) : Message de fonctionnement normal, sans gravité particulière.
- info (information) : Message à titre informatif.
- debug (debogage) : Message de débogage
/etc/syslog.conf
Fichier de conf de syslogd organisé en 2 colonnes :
- la première (sélecteur) définit l'origine (service + priorité)
- la seconde (action) la destination (fichier, console, machine distante, liste d'utilisateurs, tube)
Ces colonnes sont donc de la forme :
<service.priorité> </path/fichier> | </dev/ttyX> | @<host> | <root,toto> | | </path/to/pipe>
Par exemple pour récupérer les logs critiques (crit
) des programmes de gestion de mail (mail
) et les rediriger dans la console /dev/tty8
:
mail.crit /dev/tty8
On utilise :
- une étoile
*
pour désigner toutes les valeurs possibles d'un champ. - une virgule
,
pour séparer 2 noms de services - un point virgule
;
pour assembler deux sélecteurs - un tiret
-
en suffixe pour écrire dans la cible en différé (consomme moins de ressources mais à n'utiliser que pour les logs non critiques). - la priorité
none
signifie qu'aucun message ne doit être loggé pour le service correspondant.
Exemple1 : pour écrire les logs d'erreur des services de mail et de news en différé dans /var/log/mail_et_news.log
:
mail,news.err -/var/log/mail_et_news.log
Exemple2 : *.debug;mail,news.none
indique que l'on logge tous les messages de débogage, sauf ceux venant des services mail et news.
Configuration sous Debian
Pour que sysklogd accepte les logs depuis le réseau (ce n'est pas le cas par défaut), il faut le lancer avec l'option -r.
Sous Debian on peut spécifier les options de lancement du démon en modifiant la variable SYSLOGD
dans /etc/default/syslogd
(qui est utilisé par le script de lancement /etc/init.d/sysklogd
) :
# vi /etc/default/syslogd # # For remote UDP logging use SYSLOGD="-r" # SYSLOGD="-r"
Puis on le relance :
/etc/init.d/sysklogd restart Restarting system log daemon....
Vérification :
ps -ef | grep syslogd root 14634 1 0 23:08 ? 00:00:00 /sbin/syslogd -r
Avec certain équipement, comme un routeur Linksys WRT54G, on ne connait pas forcément le facility des messages envoyés, donc on ne sais pas comment les récupérer. Ca se vérifie avec tcpdump :
tcpdump -i eth0 udp dst port 514 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 22:31:29.623663 IP odin.2062 > tyr.syslog: SYSLOG authpriv.notice, length: 138 22:31:46.322926 IP odin.2062 > tyr.syslog: SYSLOG user.warning, length: 274 ... (blabla)
Là on écoute sur l'interface eth0 les paquet UDP ayant pour port de destination le 514 (port du syslog).
On voit qu'il (odin, le routeur) envoie des logs (à ma machine tyr faisant tourner le tcpdump et le syslogd) de type authpriv.notice
et user.warning
.
En furetant dans le fichier de conf du syslogd, /etc/syslog.conf
pour ma part, on y voit ces lignes :
auth,authpriv.* /var/log/auth.log user.* -/var/log/user.log
Voilà donc où vont être redirigés ces damned messages de log.
Syntaxe avancée
Concernant le sélecteur :
mail.info
désigne les messages issus du système de mail ayant une priorité supérieure ou égale à info ;
mail.=info
désigne seulement les messages dont la priorité est exactement info ;
mail.!=info
désigne tous les messages venant du système du mail à l'exception de ceux ayant la priorité info ;
mail.!info
désigne les messages dont la priorité est strictement inférieure à info.
logger
Pour tester sa configuration, on utilise logger
qui permet d'envoyer à syslog une chaîne de caractères.
Par exemple :
logger -t <programme> -p mail.debug <message>'