SYSLOG
SYSLOG
SYSLOG
Principe et fonctionnement
Le démon rsyslogd a pour charge de collecter les messages de service provenant des applications et
du noyau puis de les répartir dans des fichiers de logs (habituellement stockés dans le répertoire
/var/log/). Il obéit au fichier de configuration /etc/rsyslog.conf.
Chaque message de log est associé à un sous-système applicatif (nommé facility dans la
documentation) :
auth et authpriv : concernent l'authentification ;
cron : provient des services de planification de tâches, cron et atd ;
daemon : concerne un démon sans classification particulière (serveur DNS, NTP, etc.) ;
ftp : concerne le serveur FTP ;
kern : message provenant du noyau ;
lpr : provient du sous-système d'impression ;
mail : provient de la messagerie électronique ;
news : message du sous-système Usenet (notamment du serveur NNTP — Network News
Transfer Protocol, ou protocole de transfert des nouvelles sur le réseau — gérant les forums de
discussion) ;
syslog : message du serveur syslogd lui-même ;
user : messages utilisateur (générique) ;
uucp : messages du sous-système UUCP (Unix to Unix Copy Program, ou programme de copie
d'Unix à Unix, un vieux protocole employé pour faire circuler entre autres des messages
électroniques) ;
local0 à local7 : réservés pour les utilisations locales.
À chaque message est également associé un niveau de priorité. En voici la liste par ordre
décroissant :
Valeur Priority
0 Emergency
1 Alert
2 Critical
3 Error
4 Warning
5 Notice
6 Informational
7 Debug
Le fichier de configuration
La syntaxe complexe du fichier /etc/rsyslog.conf est détaillée dans la page de manuel rsyslog.conf(5)
mais aussi dans la documentation HTML disponible dans le paquet rsyslog-doc
(/usr/share/doc/rsyslog-doc/html/index.html). Le principe global est d'écrire des paires « sélecteur »
et « action ». Le sélecteur définit l'ensemble des messages concernés et l'action décrit comment le
traiter.
Syntaxe du sélecteur
Le sélecteur est une liste (ayant pour séparateur le point-virgule) de couples sous-système.priorité
(exemple : auth.notice;mail.info). L'astérisque peut y représenter tous les sous-systèmes ou toutes
les priorités (exemples : *.alert ou mail.*). On peut regrouper plusieurs sous-systèmes en les séparant
par une virgule (exemple : auth,mail.info). La priorité indiquée recouvre aussi les messages de priorité
supérieure ou égale : auth.alert désigne donc les messages du sous-système auth de priorités alert ou
emerg. Préfixée par un point d'exclamation, elle désignera au contraire les priorités strictement
inférieures : auth.!notice désignera donc les messages issus de auth et de priorité info ou debug.
Préfixée par un signe égal, elle correspondra exactement à la seule priorité indiquée (auth.=notice ne
concernera donc que les messages de auth de priorité notice).
Au sein du sélecteur, chaque élément de la liste surcharge les éléments précédents. Il est donc possible
de restreindre un ensemble ou d'en exclure certains éléments. À titre d'exemple, kern.info;kern.!err
définit les messages du noyau de priorité comprise entre info et warn. La priorité none désigne
l'ensemble vide (aucune des priorités) et peut servir pour exclure un sous-système d'un ensemble de
messages. Ainsi, *.crit;kern.none désigne tous les messages de priorité supérieure ou égale à crit ne
provenant pas du noyau.
Format Syslog
Les logs sont sauvegardés dans des fichiers textes au format syslog. Il comporte trois parties :
Un timestamp qui est la date et heure du log. Il est au format "Mmm dd hh:mm:ss". « Mmm »
correspond aux trois premières lettres du mois, « dd » au numéro du jour du mois, puis l’heure qui
est constituée des heures (hh), minutes (mm) et secondes (ss) sur 24 heures.
Un identifiant de la machine qui a généré le log. Cela peut être le nom de la machine (son
hostname) ou son adresse IPv4 ou IPv6.
Le message, qui est un message texte comportant des informations.
Exemples :
Configuration
Le fichier de configuration de Rsyslog se trouve dans /etc/rsyslog.conf. C’est le seul fichier que nous
allons éditer pour Rsyslog. Nous devons configurer Rsyslog en tant que client, il doit donc envoyer ses
logs à un serveur.
Nous pouvons tout simplement le configurer pour qu’il envoie tout en UDP et TCP :
#UDP
*.* @10.0.0.147
#TCP
*.* @@10.0.0.147
« *.* » Cette configuration signifie que nous envoyons tous les logs. C’est là qu’interviennent les
facilities et severity. La première étoile correspond à toutes les facilities et la deuxième à toutes les
severities, nous avons donc « facility.priority ». Ce paramètre nous permet de spécifier et de filtrer
les logs en amont que nous voulons envoyer.
Vérification