Rsyslog comme Syslog-ng sont les successeurs de l'application Syslog conçue dans les années 1980 par Eric Paul Allman. Syslog désigne à la fois l'application et le standard (protocole) suivi par tout système formatant et échangeant des événements journalisés. Rsyslog s'appuie sur les même mécanismes que Syslog qui a définit une norme. Il réceptionne les messages provenant de différentes sources et les traite en les enregistrant/redirigeant en suivant une table de règles.
Les messages sont communiqués au daemon rsyslogd via différents canaux (UDP, fichier exécutable, commande). Pour pouvoir écouter ces canaux (ou entrée) les modules correspondants doivent être chargés. Les modules sont chargés dans le fichier /etc/rsyslog.conf, par convention ils sont nommés avec le préfixe 'im'1) via les directives suivantes:
################# #### MODULES #### ################# module(load="imuxsock") # provides support for local system logging module(load="imklog") # provides kernel logging support #module(load="immark") # provides --MARK-- message capability # provides UDP syslog reception #module(load="imudp") #input(type="imudp" port="514") # provides TCP syslog reception #module(load="imtcp") #input(type="imtcp" port="514")
La norme syslog décrit les messages. Elle définit des attributs (properties) notamment:
Les “facilities” sont prédéfinies, il y en a 24:
auth | authentification (obsolète) |
---|---|
authpriv | authentification, droits d'accès et sécurité |
cron | tâches planifiées |
daemon | daemons système |
ftp | service FTP |
ntp | network time protocol |
kern | noyau |
lpr | système d'impression. |
système de mail. | |
news | système Usenet |
nntp | news network transfert protocol (obsolète) |
uucp | système UUCP Unix to Unix Copy Program (obsolète) |
syslog | daemon rsyslog |
user | utilisateur |
security | sécurité |
solaris cron | |
local0 à local7 | sous catégories non précisées pour utilisations locales personnalisées |
Les severity levels (niveau de criticité des messages) sont prédéfinis et listés ci-dessous:
N | Niveau | Signification |
---|---|---|
0 | Emerg | Système HS (équivalent panic) |
1 | Alert | Une intervention immédiate est nécessaire |
2 | Crit | Erreur critique pour le système (souvent matériel) |
3 | Err | Erreur de fonctionnement (arrêt de l'application |
4 | Warning | Avertissement dysfonctionnement à corriger. Peut indiquer qu'une erreur va se produire si aucune action n'est entreprise. |
5 | Notice | Événement inhabituel ou imprévu ne générant pas d'erreur. |
6 | Informational | Opérations normales ne requérant aucune action |
7 | Debug | Débogage, information utilisée pour developpement et débogage d'application. |
Le détail des properties (attributs ou métadonnées) associées aux messages est présenté dans le wiki attributs des messages syslog
Elles sont définies dans le fichier /etc/rsyslog.conf et les fichiers /etc/rsyslog.d/*. Elles sont toutes évaluées séquentiellement à chaque réception d'un message.
rsyslog utilise des templates pour:
La déclaration d'un template se base sur la syntaxe suivante:
template(parametres)
Avec les paramètres:
Un template peut également être utilisé au sein d'une action pour générer dynamiquement un nom de fichier.
template (name="DynFile" type="string" string="/var/log/systemp-%HOSTNAME%.log")
Pour que le comportement de rsyslogd reste prévisible les noms de templates doivent être uniques. Il existe des templates définis dans le système, leur noms sont réservés, ils sont préfixés par RSYSLOG_*, on pourra citer pour exemple:
Pour les applications utilisateur les facilities local0 à local7 peuvent être utilisées librement. Si l'on souhaite journaliser des activités de sauvegardes locales par exemple, modifier le fichier la configuration de rsyslog en créant le fichier /etc/rsyslogd/60-backup.conf avec le contenu suivant:
# Enregistrer tous les niveaux de priorités de local0
# dans le fichier /var/log/backup.log
local0.* -/var/log/backup.log
Tester la configuration et si la syntaxe est correcte, redémarrer le service:
$ sudo rsyslogd -N1 $ sudo service rsyslog restart
Pour tester le bon fonctionnement du paramétrage
$ logger -p local0.info "test"