Syslog

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Protocole de journalisation système (RFC 5424, historiquement RFC 3164/BSD syslog)
Port par défaut UDP/514 (TCP/514, ou TCP/6514 en TLS selon l'implémentation)
Rôles Périphérique · Relais · Collecteur
Implémentations Rsyslog · Syslog-ng
Voir aussi Logger · Grok

Syslog est un protocole standard de journalisation système, utilisé pour transmettre des messages de log d'une application ou d'un système d'exploitation vers un fichier local ou vers une machine distante chargée de les centraliser. Il définit à la fois un format de message et un mécanisme de transport, ce qui en fait le socle de la plupart des architectures de journalisation centralisée sous Unix/Linux.

Architecture

Une architecture syslog distingue généralement trois rôles, qui peuvent être tenus par la même machine ou par des machines différentes :

  • Périphérique (device) : hôte qui génère les messages de log (serveur, équipement réseau,
 application).
  • Relais : machine intermédiaire qui reçoit des messages et les retransmet vers un autre
 relais ou un collecteur, éventuellement en les filtrant.
  • Collecteur : machine qui reçoit et stocke durablement les messages, souvent avec un
 moteur d'indexation/recherche associé.

Facility et sévérité

Chaque message syslog porte deux attributs qui déterminent comment il doit être traité : la facility (le sous-système d'origine) et la sévérité (le niveau de gravité).

Facility Usage
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages
5 messages générés en interne par syslogd
6 line printer subsystem (souvent réutilisé pour des applications maison)
7 network news subsystem
8 UUCP subsystem
9 clock daemon
10 security/authorization messages
11 FTP daemon
12 NTP subsystem
13 log audit
14 log alert
15 clock daemon
16-23 local use 0 à 7 (réservées aux applications maison)
Sévérité Usage
0 Emergency : système inutilisable
1 Alert : action à prendre immédiatement
2 Critical : conditions critiques
3 Error : conditions d'erreur
4 Warning : conditions d'avertissement
5 Notice : condition normale mais significative
6 Informational : messages d'information
7 Debug : messages de débogage

La valeur de priorité (PRI) transmise dans chaque message se calcule ainsi :

PRI = (facility × 8) + sévérité

Configuration côté fichiers

Sur les systèmes traditionnels, la configuration se fait dans /etc/syslog.conf (remplacé par /etc/rsyslog.conf sur les systèmes utilisant Rsyslog), qui associe une paire facility.sévérité à une destination :

facility.sévérité              /fichier/log

# le préfixe "-" indique une écriture asynchrone (sans fsync à chaque ligne)

auth,authpriv.*                /var/log/auth.log
*.*;auth,authpriv.none        -/var/log/syslog
daemon.*                      -/var/log/daemon.log
kern.*                        -/var/log/kern.log
mail.*                        -/var/log/mail.log

mail.info                     -/var/log/mail.info
mail.warn                     -/var/log/mail.warn
mail.err                       /var/log/mail.err

*.emerg                        *

Fichiers de sortie usuels : /var/log/messages ou /var/log/syslog selon la distribution.

Envoyer un message depuis un script

La commande Logger permet d'injecter un message dans syslog depuis un script shell :

logger -i -p local4.notice -t "check_log" "message de test"

Implémentations

Le terme « syslog » désigne le protocole ; sur le terrain, il est servi par un démon concret. Les deux principales implémentations libres actuelles sont concurrentes l'une de l'autre :

  • Rsyslog — démon devenu le standard par défaut sur la plupart des distributions
 Linux (Debian, RHEL/CentOS...), performant et modulaire.
  • Syslog-ng — implémentation alternative, historiquement réputée pour son moteur de
 filtrage et de routage plus expressif.

D'autres solutions propriétaires (Splunk, etc.) reprennent le protocole en entrée mais sortent du cadre de cette fiche.

Agents de forwarding pour Windows

Windows ne dispose pas nativement d'un client syslog : ses journaux d'événements (Event Log) doivent être convertis et transmis vers un collecteur syslog central via un agent dédié. Voir Snare, Nxlog, Evtsys, SyslogAgent et Winlogd.

Voir aussi

  • Rsyslog — implémentation syslog par défaut sur la plupart des Linux actuels
  • Syslog-ng — implémentation concurrente, filtrage avancé
  • Logger — commande d'envoi de messages syslog depuis un script
  • Grok — langage de pattern-matching pour extraire des champs depuis des logs syslog
  • Grafana · Octopussy · LOGZILLA — visualisation et analyse des logs collectés