
Rsyslog est un utilitaire open source pour le traitement des journaux. Il permet la journalisation des données de différents types de systèmes dans un référentiel central. Rsyslog est un protocole Syslog avec plus d'extensions, de fonctionnalités et d'avantages.
Qu'est-ce qui rend rsyslog si puissant ? Rsyslog peut livrer plus d'un million de messages par seconde vers des destinations locales lorsqu'un traitement limité est appliqué.
Dans ce tutoriel, nous apprenons à installer et configurer rsyslog sur Ubuntu 20.04 .
Fonctionnalités Rsyslog
Rsyslog est arrivé en 2004. et il étend le protocole syslog avec de nouvelles fonctionnalités :
- Prise en charge du protocole RELP
- Prise en charge des opérations tamponnées
- Écouter les connexions TCP/UDP (avec port de restrictions, IP)
- Prise en charge du chargement de nombreux modules (par exemple, un module prenant en charge le protocole RELP)
- Prise en charge du message de suppression contenant des règles configurées spéciales
Dans Rsyslog, les fichiers de configuration restent les mêmes que Syslog. Cela signifie simplement que vous pouvez copier un fichier syslog.conf directement dans rsyslog.conf et cela fonctionnera.
Qu'est-ce que les journaux et syslog ?
Avant de passer au processus de configuration lui-même, voyons d'abord à quoi servent les journaux ? Les informations du journal peuvent vraiment vous aider à voir ce qui s'est passé exactement sur votre système, ou ce qui se passe exactement sous le capot.
Permettez-moi de vous donner un exemple :si tout à coup votre ordinateur s'est figé ou peut-être en panne ou même en cas d'indisponibilité de votre système et des informations bien plus utiles que vous ne pouvez pas voir de la manière habituelle lorsque le message d'erreur s'affiche.
Si vous savez comment utiliser correctement les journaux, ils peuvent vous offrir de nombreuses fonctionnalités et avantages pour les informations de diagnostic sur le système lui-même.
Par défaut, Linux utilise le démon syslog pour enregistrer les journaux sur le fonctionnement du système, puis mettre ces journaux dans un référentiel central dans :/var/log où nous pouvons les examiner et les étudier.
En termes simples, tout, des événements du noyau aux actions des utilisateurs, est enregistré par Linux, ce qui vous permet de voir presque toutes les actions effectuées sur votre ordinateur ou vos serveurs.
Dans le système de fichiers Linux, il existe un répertoire spécial pour stocker les journaux appelé /var/log . Ce répertoire contient tous les journaux du système d'exploitation lui-même, tels que :les services ou diverses applications exécutées sur le système.
Voyons à quoi ressemblent les répertoires et les structures des journaux sur le nouveau Linux Ubuntu 20.04.

Répertoire où sont stockés les différents types de journaux :
/var/log/syslog - Stocke tous les messages de démarrage, les messages de démarrage de l'application, etc. Stocke pratiquement tous les journaux système globaux.
/var/log/cron - Les tâches Cron sont essentiellement une sorte de tâche planifiée et automatisée créée dans le système, qui s'exécute périodiquement et à plusieurs reprises. Vous pouvez voir ce que ce répertoire de journaux stockerait.
/var/log/kern.log - il stocke les journaux du noyau. Peu importe les journaux qu'ils sont. Journaux d'événements, d'erreurs ou d'avertissements.
/var/log/auth.log - Journaux d'authentification
/var/log.boot.log - Journaux de démarrage du système
/var/log/mysql.d - Journaux MySQL
/var/log/httpd - Répertoire des journaux Apache
/var/log/maillog - Journaux du serveur de messagerie
Configurer le serveur de journalisation centralisé Rsyslog sur Ubuntu 20.04
Après un bref aperçu, que sont les journaux, Syslog et où rsyslog a sa place, passons au processus de configuration lui-même.
Prérequis
- Deux serveurs exécutant Ubuntu 20.04
- Une adresse IP statique :par exemple, 192.168.0.101 doit être configurée sur la machine serveur Rsyslog et 192.168.0.102 est configurée sur la machine cliente Rsyslog
Le système Ubuntu 20.04 a rsyslog installé par défaut fourni avec les packages système standard.
Vous pouvez vérifier s'il est en cours d'exécution :
$ sudo systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-03-22 21:16:34 UTC; 12h ago
TriggeredBy: ● syslog.socket
Docs: man:rsyslogd(8)
https://www.rsyslog.com/doc/
Main PID: 566 (rsyslogd)
Tasks: 4 (limit: 2281)
Memory: 2.7M
CGroup: /system.slice/rsyslog.service
└─566 /usr/sbin/rsyslogd -n -iNONE
Exécutez la commande suivante pour vérifier la version de Rsyslog actuellement installée :
$ rsyslogd -v
Sortie :
rsyslogd 8.2001.0 (aka 2020.01) compiled with: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes systemd support: Yes Config file: /etc/rsyslog.conf PID file: /run/rsyslogd.pid Number of Bits in RainerScript integers: 64
S'il n'est pas installé ou en cours d'exécution, installez rsyslog à l'aide des commandes suivantes :
$ sudo apt-get update
$ sudo apt-get install rsyslog
Il est maintenant temps d'aller sur rsyslog.conf file, pour décommenter et modifier certaines lignes pour exécuter le service rsyslog en mode serveur :
$ sudo nano /etc/rsyslog.conf
Décommentez ces quatre lignes qui activent la liaison des ports udp et tcp :
# 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 prochaine étape que nous allons devoir ajouter est de créer un nouveau modèle. Nous devons créer un nouveau modèle pour recevoir des messages à distance. Un modèle donnera des instructions au serveur rsyslog sur la façon de stocker les messages syslog entrants.
REMARQUE : Ajoutez un modèle juste avant les DIRECTIVES GLOBALES rubrique :
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
& ~
La ligne ci-dessus indique que les journaux reçus seront traités et stockés dans le répertoire /var/log/. Vous pouvez définir dans le fichier /etc/rsyslog.conf où rsyslog logs.
Le nom du fichier contient %HOSTNAME% et les variables %PROGRAMNAME% représentent la machine cliente et le nom du programme client qui ont généré le message de journal.

Enregistrez ceci et redémarrez le service rsyslog :
$ sudo systemctl restart rsyslog
Confirmez que le service rsyslog écoute sur les ports configurés :
$ ss -tunelp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* ino:33591 sk:1 <->
udp UNCONN 0 0 [::]:514 [::]:* ino:33592 sk:4 v6only:1 <->
tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* ino:33595 sk:7 <->
tcp LISTEN 0 25 [::]:514 [::]:* ino:33596 sk:9 v6only:1 <->
Si vous avez peut-être un service de pare-feu ufw, vous devez autoriser les règles de port de pare-feu rsyslog :
sudo ufw allow 514/tcp
sudo ufw allow 514/udp
Pour vérifier la configuration , exécutez la commande suivante :
sudo rsyslogd -N1 -f /etc/rsyslog.conf
Configurer Rsyslog sur le client
Une fois cette configuration du serveur rsyslog effectuée, l'étape suivante consiste à configurer votre machine cliente rsyslog pour envoyer les journaux à distance serveur rsyslog.
Au fur et à mesure que nous allons avec le fichier rsyslog.conf sur un serveur distant, la même chose ouvrira ce fichier côté client avec votre éditeur préféré et modifiera quelques modifications :
sudo nano /etc/rsyslog.conf
Et autoriser la préservation du FQDN :Alternativement, pour que rsyslog envoie le nom de domaine complet (FQDN, tel que system1.example.com) au lieu du simple nom d'hôte (system1), utilisez la directive :
$PreserveFQDN on
Ajoutez le serveur rsyslog distant configuré à la fin.
@192.168.0.101:514
Ou vous pouvez activer l'envoi de journaux via UDP. Pour TCP, utilisez @@ , au lieu d'un
*.* @@192.168.0.101:514
Pour finir, ajoutez ces variables suivantes au cas où le serveur rsyslog tombe en panne :
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
Redémarrez ensuite le service rsyslog :
sudo systemctl restart rsyslog
Vérifier les journaux
Une fois la configuration terminée sur la machine cliente, nous voulons vérifier que tout s'est bien passé.
Accédez à votre serveur Rsyslog pour vérifier les journaux de votre machine client :
$ ls /var/log/
Vous trouverez quelque chose comme ceci :

Dans mon cas, le répertoire nommé obrad est le nom de ma machine cliente que j'utilise actuellement. Nous allons entrer dans ce répertoire et voir quelque chose comme ceci :

Vous devriez voir tous les fichiers journaux générés par Rsyslog.
Vous pouvez vérifier n'importe lequel de ces journaux avec la commande suivante :Inspectons par exemple systemd.log .
$ tail -f /var/log/obrad/systemd.log
Et vous verrez quelque chose comme ceci :
2021-03-25T11:31:59+00:00 obrad systemd[1206]: Started VTE child process 42166 launched by gnome-terminal-server process 3186.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Created slice dbus\x2d:1.2\x2dorg.gnome.gedit.slice.
2021-03-25T11:32:28+00:00 obrad systemd[1206]: Started dbus-:[email protected].
2021-03-25T11:32:31+00:00 obrad systemd[1206]: dbus-:[email protected]: Succeeded.
Comme vous pouvez le voir, j'ai lancé l'édition de texte terminal et gedit sur ma machine cliente et Rsyslog a généré et affiché cela dans la sortie.
Conclusion
Dans ce didacticiel, nous avons appris à configurer les paramètres de base de rsyslog à l'aide du modèle client-serveur sur Ubuntu 20.04. Le syslog-ng, FluentD, Logstash, GreyLog2 et Logagent, Filebeat sont les autres alternatives pour Rsyslog.