Outils pour utilisateurs

Outils du site


sysadmin:linux: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'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:

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

1)
input module
sysadmin/linux/rsyslog.txt · Dernière modification : 2021/06/12 12:04 de 77.192.232.26