{{tag>sysadmin linux syslog rsyslog}}
====== Rsyslog ======
**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.
===== Principe =====
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'((**i**nput **m**odule)) 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:
* **facility**: désignant une **catégorie**/thème ou sous-ensemble.
* **Severity level**: traduisant la priorité ou criticité du message.
Ces attributs **facility** et **severity level** seront utilisés par les règles pour sélectionner les messages et leur appliquer un traitement.
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. |
^ mail | 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 [[sysadmin:linux:rsyslog:messages-properties| attributs des messages syslog]]
===== Les règles =====
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.
===== Les templates =====
rsyslog utilise des templates pour:
* Décrire les flux entrants
* Formater les sorties (fichiers, base de données, messages utilisateur)
* La génération dynamique des noms de fichiers log
La déclaration d'un template se base sur la syntaxe suivante:
template(parametres)
Avec les paramètres:
* **name** le nom du template, il doit être unique.
* **type** les types de template offre différentes manières de décrire le contenu sans affecter l'output le manipule.
===== Noms de fichiers dynamiques =====
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")
====== Noms de templates réservés =====
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:
* **RSYSLOG_TraditionnalFileFormat**
* **RSYSLOG_FileFormat**
* **RSYSLOG_ForwardFormat**
===== Personnaliser les logs =====
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"
===== Références =====
* https://debian-handbook.info/browse/fr-FR/stable/sect.syslog.html
* www.rsyslog.com/guides-for-rsyslog/
* man 5 rsyslog.conf
* http://www.rsyslog.com/doc/master/configuration/templates.html
* https://support.solarwinds.com/SuccessCenter/s/article/Syslog-Severity-levels?language=en_US