Rsyslog

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Démon de journalisation syslog (implémentation)
Statut Démon syslog par défaut sur la plupart des distributions Linux actuelles
Concurrent Syslog-ng
Fichier de configuration /etc/rsyslog.conf, /etc/rsyslog.d/*.conf
Voir aussi Syslog · Syslog-ng

Rsyslog est une implémentation moderne du démon syslog, successeur du sysklogd historique. Il a remplacé syslogd/klogd comme démon de journalisation par défaut sur la plupart des distributions Linux actuelles (Debian, Ubuntu, RHEL/CentOS...). Il supporte la réception en UDP et TCP, le chiffrement TLS, la mise en file d'attente sur disque en cas d'indisponibilité du destinataire, et l'écriture vers des bases de données ou des index externes en plus des fichiers plats.

Installation

# systemctl stop syslog
# yum remove sysklogd
# yum install rsyslog

Sur les distributions récentes, le paquet rsyslog est déjà installé et activé par défaut ; ces étapes ne concernent que la migration d'un système utilisant encore l'ancien syslogd/sysklogd (à vérifier selon la distribution et sa version).

Configuration côté serveur (collecteur centralisé)

Exemple de /etc/rsyslog.conf activant la réception UDP/TCP et la ventilation des messages reçus dans un répertoire par hôte source :

#### MODULES ####
$ModLoad imuxsock   # journalisation locale (via la commande logger)
$ModLoad imklog     # journalisation noyau
$ModLoad imudp
$ModLoad imtcp

#### GLOBAL DIRECTIVES ####
$IncludeConfig /etc/rsyslog.d/*.conf

# un répertoire de log par hôte source
$template RemoteHost,"/var/log/remote/%HOSTNAME%/%$YEAR%_%$MONTH%_%$DAY%_rsyslog.log"

#### RULES (réception locale) ####
$RuleSet local
kern.*                                                 /var/log/messages
*.info;mail.none;authpriv.none;cron.none               /var/log/messages
authpriv.*                                             /var/log/secure
mail.*                                                 -/var/log/maillog
cron.*                                                 /var/log/cron
*.emerg                                                *
$DefaultRuleset local

#### RULES (réception distante) ####
$RuleSet remote
*.* ?RemoteHost
*.* @@192.0.2.10:514
$InputTCPServerBindRuleset remote
$InputTCPServerRun 10514
$InputUDPServerBindRuleset remote
$UDPServerRun 514

Cette syntaxe (directives préfixées par $) est celle de rsyslog 5/6 ; depuis rsyslog 7, la syntaxe moderne à base de blocs module()/input()/ action() est recommandée pour les nouvelles configurations (à vérifier selon la version packagée par la distribution cible).

Configuration côté client

Pour envoyer une facility donnée vers un collecteur distant, ajouter dans /etc/rsyslog.conf :

local4.* @192.0.2.10:514

(@ pour UDP, @@ pour TCP.)

Distinction avec syslog-ng

Rsyslog et Syslog-ng répondent au même besoin (démon syslog) mais ne sont pas interchangeables au niveau configuration : chacun a sa propre syntaxe et son propre écosystème de modules. Le choix se fait en général selon la distribution (Rsyslog est le choix par défaut de la majorité des distributions Linux actuelles) ou selon des besoins de filtrage avancé (historiquement un point fort de syslog-ng).

Voir aussi

  • Syslog — protocole et concepts généraux
  • Syslog-ng — implémentation concurrente
  • Logger — commande d'envoi de messages syslog depuis un script