Syslog
Un article de Wikipédia, l'encyclopédie libre.
Syslog est un protocole définissant un service de journaux d'événements. C'est aussi le nom du format qui permet ces échanges.
Sommaire |
[modifier] Le protocole Syslog
[modifier] Présentation générale
En tant que protocole, Syslog se compose d'une partie cliente et d'une partie serveur. La partie cliente émet les informations sur le réseau, via le port UDP 514. Les serveurs collectent l'information et se chargent de créer les journaux.
L'intérêt de Syslog est donc de centraliser les journaux d'événements, permettant de repérer plus rapidement et efficacement les défaillances d'ordinateurs présents sur un réseau.
Il existe aussi un logiciel appelé Syslog. Le logiciel Syslog est responsable de la prise en charge des fichiers de journalisation du système. Ceci inclut aussi le démon klogd, responsable des messages émis par le noyau linux.
[modifier] Positionnement système
Le protocole syslog utilise un socket afin de transmettre ses messages. Suivant les systèmes, celui-ci est différent:
Plate-forme | Méthode |
---|---|
Linux | Un SOCK_STREAM unix nommé /dev/log; certaines distributions utilisent SOCK_DGRAM |
BSD | Un SOCK_DGRAM unix apellé /var/run/log. |
Solaris (2.5 et inférieurs) | Un flux SVR4 appelé /dev/log. |
Solaris (2.6 et supérieurs) | En plus du flux habituel, une porte multithreaded appelée /etc/.syslog_door est utilisée. |
HP-UX 11 et supérieur | HP-UX utilise le Tube Unix nommé /dev/log de taille 2048 bytes |
AIX 5.2 and 5.3 | Un SOCK_STREAM ou un SOCK_DGRAM unix appelé /dev/log. |
Une problématique nait de ce choix architectural, l'utilisation d'un point d'entrée unique crée des saturations système (buffer overflow) qui ont incité nombre de logiciels à utiliser leur propre système d'enregistrement.
[modifier] Le format Syslog
Un journal au format syslog comporte dans l'ordre les informations suivantes : la date a laquelle a été émis le log, le nom de l'équipement ayant généré le log (hostname), une information sur le processus qui a déclenché cette émission, le niveau de gravité du log, un identifiant du processus ayant généré le log et enfin un corps de message. Certaine de ces informations sont optionnelles.
exemple :
Sep 14 14:09:09 machine_de_test dhcp service[warning] 110 corps du message
[modifier] Niveau de gravité
Les niveaux de gravité Syslog, souvent appelés level sont au nombre de huit représentés par un chiffre de 0(Emergency) à 7(Debug):
- 0 Emerg (emergency)
- 1 Alert
- 2 Crit (critical)
- 3 Err (error)
- 4 Warning
- 5 Notice
- 6 Info (informational)
- 7 Debug
Cette indication est particulièrement importante car elle normalise de fait la représentation de la gravité d'un log, ce qui rend par exemple possible l'interopérabilité entre équipements de collecte de logs et équipements de génération d'alertes.
[modifier] Facilités
Outre les niveaux de gravité les messages sont orientés au regard de leur origine, dont les codes sont regroupés suivant 24 types ci-dessous énumérés :
Identifiant | Origine | Identifiant | Origine |
---|---|---|---|
0 | kernel messages | 1 | user-level messages |
2 | mail system | 3 | system daemons |
4 | security/authorization messages (note 1) | 5 | messages generated internally by syslogd |
6 | line printer subsystem | 7 | network news subsystem |
8 | UUCP subsystem | 9 | clock daemon (note 2) |
10 | security/authorization messages (note 1) | 11 | FTP daemon |
12 | NTP subsystem | 13 | log audit (note 1) |
14 | log alert (note 1) | 15 | clock daemon (note 2) |
16 | local use 0 (local0) | 17 | local use 1 (local1) |
18 | local use 2 (local2) | 19 | local use 3 (local3) |
20 | local use 4 (local4) | 21 | local use 5 (local5) |
22 | local use 6 (local6) | 23 | local use 7 (local7) |
[modifier] L'écriture dans le journal syslog
La journalisation dans syslog (local ou distant) se fait via
- logger (commande Unix) pour les scripts shell
- vsyslog() ou syslog()[1] pour les programmes compilés ; ce sont des fonctions implémentées dans des bibliothèques logicielles
[modifier] Fichier de configuration (syslog.conf)
Le fichier de configuration syslog est construit sur le mode ligne, chaque ligne est découpée en deux parties :
- la première indique l'origine du message
- la seconde la destination
Ce fichier de configuration permet de différencier les message et de les orienter vers des destination particulières.
[modifier] Origine
Les origines peuvent être multiples et sont juxtaposé à l'aide d'un ';'.
Elle sont construite sous la forme :
facility.criticity
La criticité doit être comprise comme la criticité minimale, ainsi user.critical correspond au message d'origine utilisateur pour le niveau de criticité critical et les niveaux supérieurs, en l'occurrence alert et emergency.
Le mot clef none peut lui aussi être utilisé afin de filtrer les messages, il est alors utilisé en lieu et place de la criticité.
[modifier] Destination
Dans syslog classique, la destination peut être soit un fichier soit un serveur distant. La destination peut être précédé d'un - afin d'indiquer la finalité de celle-ci.
[modifier] Exemple
Extrait d'une partie d'un fichier de configuration :
daemon.* -/var/log/daemon.log user.critical @serveurdelog kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err
[modifier] Liens externes
[modifier] RFC et groupe de travail
- RFC 3164 - Le protocole syslog de BSD
- RFC 3195 - Reliable Delivery for syslog
- (en) Groupe de travail sur syslog de l'IETF
[modifier] Notes
- ↑ * NB : il existe 2 fonctions différentes qui s'appellent syslog() ; l'une est un appel système, l'autre est un appel d'une bibliothèque logicielle, c'est cette deuxième fonction qui permet l'écriture dans le fichier syslog (pour avoir la documentation de celui qui permet l'écriture dans les journaux syslog, il faut taper "man 3 syslog)