Serveur de journaux · 8 min read · Nov 15, 2025

Installer un serveur de journalisation centralisé avec Rsyslog sur Debian 9

Dans Linux, les fichiers journaux sont des fichiers qui contiennent des messages sur les fonctions du système, utilisés par les administrateurs système pour identifier d’éventuels problèmes sur les machines. Les journaux aident les administrateurs à visualiser les événements qui se sont produits dans le système au fil du temps. En général, tous les fichiers journaux sont conservés dans le répertoire /var/log sous Linux. À cet endroit, il existe plusieurs types de fichiers journaux pour stocker divers messages, tels qu’un fichier journal pour enregistrer les événements système, un fichier journal pour les messages liés à la sécurité, d’autres fichiers journaux dédiés au noyau, aux utilisateurs ou aux tâches cron. Le principal objectif des fichiers journaux est de résoudre les problèmes système. La plupart des fichiers journaux sous Linux sont contrôlés par le service rsyslogd. Sur les versions plus récentes des distributions Linux, les fichiers journaux sont également contrôlés et gérés par le service système journald, qui fait partie du programme d’initialisation systemd. Les journaux stockés par le démon journal sont écrits dans un format binaire et sont principalement volatils, stockés en RAM et dans un tampon circulaire dans /run/log/journal/. Cependant, le service journal peut également être configuré pour stocker de manière permanente les messages Syslog.

Dans Linux, le serveur rsyslog peut être configuré pour fonctionner comme un gestionnaire de journaux central, dans un modèle client-serveur, et envoyer des messages journaux sur le réseau via les protocoles de transport TCP ou UDP ou recevoir des journaux de dispositifs réseau, serveurs, routeurs, commutateurs ou autres systèmes ou dispositifs embarqués qui génèrent des journaux.

Le démon Rsyslog peut être configuré pour fonctionner à la fois comme client et serveur. Configuré pour fonctionner comme serveur, Rsyslog écoutera sur le port par défaut 514 TCP et UDP et commencera à collecter les messages journaux qui sont envoyés sur le réseau par des systèmes distants. En tant que client, Rsyslog enverra sur le réseau les messages journaux internes à un serveur Ryslog distant via les mêmes ports TCP ou UDP.

Rsyslog filtrera les messages syslog selon les propriétés et actions sélectionnées. Les filtres rsyslog sont les suivants :

  1. Filtres de facilité ou de priorité
  2. Filtres basés sur des propriétés
  3. Filtres basés sur des expressions

Le filtre de facilité est représenté par le sous-système interne de Linux qui produit les journaux. Ils sont catégorisés comme présenté ci-dessous :

  • auth/authpriv = messages produits par les processus d’authentification
  • cron = journaux liés aux tâches cron
  • daemon = messages liés aux services système en cours d’exécution
  • kernel = messages du noyau Linux
  • mail = messages du serveur de messagerie
  • syslog = messages liés à syslog ou à d’autres démons (le serveur DHCP envoie des journaux ici)
  • lpr = messages des imprimantes ou du serveur d’impression
  • local0 - local7 = messages personnalisés sous le contrôle de l’administrateur

Les niveaux de priorité ou de gravité sont attribués à un mot-clé et à un numéro comme décrit ci-dessous.

  • emerg = Urgence – 0
  • alert = Alertes – 1
  • err = Erreurs – 3
  • warn = Avertissements – 4
  • notice = Notification – 5
  • info = Informations – 6
  • debug = Débogage – 7 niveau le plus élevé

Il existe également quelques mots-clés spéciaux Rsyslog disponibles tels que le signe astérisque (*) pour définir toutes les facilités ou priorités, le mot-clé none qui spécifie aucune priorité, le signe égal (=) qui sélectionne uniquement cette priorité et le signe d’exclamation (!) qui nie une priorité.

La partie action du syslog est représentée par l’instruction destination. La destination d’un message journal peut être un fichier stocké dans le système de fichiers, un fichier dans le chemin système /var/log/, une autre entrée de processus local via un pipe nommé ou FIFO. Les messages journaux peuvent également être dirigés vers des utilisateurs, rejetés dans un trou noir (/dev/null) ou envoyés à stdout ou à un serveur syslog distant via le protocole TCP/UDP. Les messages journaux peuvent également être stockés dans une base de données, telle que MySQL ou PostgreSQL.

Configurer Rsyslog comme serveur

Le démon Rsyslog est automatiquement installé dans la plupart des distributions Linux. Cependant, si Rsyslog n’est pas installé sur votre système, vous pouvez exécuter l’une des commandes ci-dessous pour installer le service ; vous aurez besoin de privilèges root pour exécuter les commandes.

Dans les distributions basées sur Debian :

sudo apt-get install rsyslog

Dans les distributions basées sur RHEL comme CentOS :

sudo yum install rsyslog

Pour vérifier si le démon Rsyslog est démarré sur un système, exécutez les commandes ci-dessous, selon votre version de distribution.

Sur les nouvelles distributions Linux avec systemd :

systemctl status rsyslog.service

Sur les anciennes versions de Linux avec init :

service rsyslog status
/etc/init.d/rsyslog status

Pour démarrer le démon rsyslog, exécutez la commande suivante.

Sur les anciennes versions de Linux avec init :

service rsyslog start
/etc/init.d/rsyslog start

Sur les dernières distributions Linux :

systemctl start rsyslog.service

Pour configurer un programme rsyslog pour fonctionner en mode serveur, éditez le fichier de configuration principal dans /etc/rsyslog.conf. Dans ce fichier, apportez les modifications suivantes comme indiqué dans l’exemple ci-dessous.

sudo vi /etc/rsyslog.conf

Localisez et décommentez en supprimant le hashtag (#) les lignes suivantes afin de permettre la réception des messages journaux UDP sur le port 514. Par défaut, le port UDP est utilisé par syslog pour envoyer-recevoir des messages.

$ModLoad imudp   
$UDPServerRun 514

Parce que le protocole UDP n’est pas fiable pour échanger des données sur un réseau, vous pouvez configurer Rsyslog pour envoyer des messages journaux à un serveur distant via le protocole TCP. Pour activer le protocole de réception TCP, ouvrez le fichier /etc/rsyslog.conf et décommentez les lignes suivantes comme indiqué ci-dessous. Cela permettra au démon rsyslog de se lier et d’écouter sur un socket TCP sur le port 514.

$ModLoad imtcp   
$InputTCPServerRun 514 

Les deux protocoles peuvent être activés dans rsyslog pour fonctionner en même temps.

Si vous souhaitez spécifier à quels expéditeurs vous permettez l’accès au démon rsyslog, ajoutez la ligne suivante après les lignes de protocole activées :

$AllowedSender TCP, 127.0.0.1, 10.110.50.0/24, *.yourdomain.com

Vous devrez également créer un nouveau modèle qui sera analysé par le démon rsyslog avant de recevoir les journaux entrants. Le modèle doit indiquer au serveur Rsyslog local où stocker les messages journaux entrants. Définissez le modèle juste après la ligne $AllowedSender comme indiqué dans l’exemple ci-dessous.

$template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"  
**.*  *?Incoming-logs  
& ~

** Pour enregistrer uniquement les messages générés par la facilité kern, utilisez la syntaxe ci-dessous.

kern.*   ?Incoming-logs

Les journaux reçus sont analysés par le modèle ci-dessus et seront stockés dans le système de fichiers local dans le répertoire /var/log/, dans des fichiers nommés d’après le nom d’hôte du client et la facilité client qui a produit les messages : %HOSTNAME% et %PROGRAMNAME% variables.

La règle de redirection ci-dessous & ~ configure le démon Rsyslog pour enregistrer les messages journaux entrants uniquement dans les fichiers ci-dessus spécifiés par les noms de variables. Sinon, les journaux reçus seront traités et également stockés dans le contenu des journaux locaux, tels que le fichier /var/log/syslog.

Pour ajouter une règle pour rejeter tous les messages journaux liés au courrier, vous pouvez utiliser l’instruction suivante.

mail.* ~

D’autres variables qui peuvent être utilisées pour sortir des noms de fichiers sont : %syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

À partir de la version 7 de Rsyslog, un nouveau format de configuration peut être utilisé pour déclarer un modèle dans un serveur Rsyslog.

Un exemple de modèle de version 7 peut ressembler aux lignes ci-dessous.

template(name="MyTemplate" type="string"  
         string="/var/log/%FROMHOST-IP%/%PROGRAMNAME:::secpath-replace%.log"  
        )

Un autre mode dans lequel vous pouvez écrire le modèle ci-dessus peut également être comme indiqué ci-dessous :

template(name="MyTemplate" type="list") {  
    constant(value="/var/log/")  
    property(name="fromhost-ip")  
    constant(value="/")  
    property(name="programname" SecurePath="replace")  
    constant(value=".log")  
    } *  
***

Pour appliquer les modifications apportées au fichier de configuration rsyslog, vous devez redémarrer le démon pour charger la nouvelle configuration.

sudo service rsyslog restart
sudo systemctl restart rsyslog

Pour vérifier quels sockets rsyslog en état d’écoute sont ouverts sur un système Debian Linux, vous pouvez exécuter la commande netstat avec des privilèges root. Passez les résultats via un utilitaire de filtrage, tel que grep.

sudo netstat –tulpn | grep rsyslog

Soyez conscient que vous devez également ouvrir les ports Rsyslog dans le pare-feu afin de permettre l’établissement de connexions entrantes.

Dans les distributions basées sur RHEL avec Firewalld activé, exécutez les commandes ci-dessous :

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd –reload

Dans les distributions basées sur Debian avec le pare-feu UFW actif, exécutez les commandes ci-dessous :

ufw allow 514/tcp
ufw allow 514/udp

Règles de pare-feu iptables :

iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPT
iptables -A INPUT -p udp --dport 514 -j ACCEPT

Configurer Rsyslog comme client

Pour permettre au démon rsyslog de fonctionner en mode client et de sortir les messages journaux locaux vers un serveur Rsyslog distant, éditez le fichier /etc/rsyslog.conf et ajoutez l’une des lignes suivantes :

*. *  @IP_REMOTE_RSYSLOG_SERVER:514
*. *  @FQDN_RSYSLOG_SERVER:514

Cette ligne permet au service Rsyslog de sortir tous les journaux internes vers un serveur Rsyslog distant sur le port UDP 514.

Pour envoyer les journaux via le protocole TCP, utilisez le modèle suivant :

*. *  @@IP_reomte_syslog_server:514

Pour sortir uniquement les journaux liés à cron avec toutes les priorités vers un serveur rsyslog, utilisez le modèle ci-dessous :

cron.* @ IP_reomte_syslog_server:514

Dans les cas où le serveur Rsyslog n’est pas accessible via le réseau, ajoutez les lignes ci-dessous au fichier /etc/rsyslog.conf côté client afin de stocker temporairement les journaux dans un fichier tampon sur disque, jusqu’à ce que le serveur soit en ligne.

$ActionQueueFileName queue  
$ActionQueueMaxDiskSpace 1g  
$ActionQueueSaveOnShutdown on  
$ActionQueueType LinkedList  
$ActionResumeRetryCount -1

Pour appliquer les règles ci-dessus, le démon Rsyslog doit être redémarré pour agir en tant que client.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.