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