User Tools

Site Tools


informatique:linux:syslog

This is an old revision of the document!


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

Liens

informatique/linux/syslog.1222089737.txt.gz · Last modified: 2013/10/14 20:54 (external edit)