Comment configurer le serveur de journalisation central à l’aide de Rsyslog sur Ubuntu 20.04

Rsyslog est un utilitaire open source pour le traitement des journaux. Il permet l’enregistrement 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 comment installer et configurer rsyslog au Ubuntu 20.04.

Fonctionnalités de 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
  • Écoute des connexions TCP/UDP (avec port de restrictions, IP)
  • Prise en charge du chargement de nombreux modules (pour example module pour prendre en charge le protocole RELP)
  • Prise en charge du message de suppression qui contient 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 que cela fonctionnera.

Que sont 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 se passe exactement sur votre système ou ce qui se passe exactement sous le capot.

Laissez-moi vous donner un example: si soudainement votre PC a frisé ou peut-être s’est écrasé ou même un temps d’arrêt de votre système et des informations beaucoup 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 les place 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, vous permettant de voir presque toutes les actions effectuées sur votre PC 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 qui s’exécutent sur le système.

Voyons à quoi ressemblent les répertoires et les structures de journaux sur la nouvelle version de Linux ubuntu 20.04.

Liste / var / log

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 de manière répétée. 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, erreurs ou journaux d’avertissement.
/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 – Apache répertoire des journaux
/var/log/maillog – Journaux du serveur de messagerie

Configurer le serveur de journaux centralisé Rsyslog sur Ubuntu 20.04

Après un bref aperçu de ce que sont les journaux, Syslog et où rsyslog a sa place, passons au processus de configuration lui-même.

Conditions préalables

  • Deux serveurs exécutant Ubuntu 20.04
  • Une adresse IP statique : example 192.168.0.101 doit être configuré sur la machine serveur Rsyslog et 192.168.0.102 est configuré sur la machine client 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 fonctionne :

$ 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

Sortir:

rsyslogd 8.2001.0 (aka 2020.01) compilé avec : PLATFORM : x86_64-pc-linux-gnu PLATFORM (lsb_release -d) : FEATURE_REGEXP : Oui Support GSSAPI Kerberos 5 : Oui FEATURE_DEBUG (version de débogage, code lent) : Aucune opération atomique 32 bits prise en charge : Oui Opérations atomiques 64 bits prises en charge : Oui Allocateur de mémoire : système par défaut Instrumentation d’exécution (code lent) : Non prise en charge uuid : Oui prise en charge de systemd : Oui Fichier de configuration : /etc/rsyslog.conf Fichier PID : /run/rsyslogd.pid Nombre de bits en entiers RainerScript : 64

S’il n’est pas installé ou en cours d’exécution, installez rsyslog à l’aide des commandes suivantes :

$ sudo apt-get mise à jour
$ sudo apt-get install rsyslog

Il est maintenant temps d’aller à 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 de port 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 devrons ajouter consiste à 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: Ajouter un modèle juste avant DIRECTIVES MONDIALES section:

$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ù les journaux rsyslog.

Le nom du fichier contient les variables %HOSTNAME% et %PROGRAMNAME% représentant la machine cliente et le nom du programme client qui a généré le message de journal.

Fichier de configuration pour Rsyslog Fichier de configuration pour Rsyslog

Save ceci et que redémarrer le service rsyslog :

$ sudo systemctl restart rsyslog

Confirme 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 disposez du 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

À 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 terminée, l’étape suivante consiste à configurer votre machine cliente rsyslog pour envoyer les journaux à la télécommande serveur rsyslog.

Comme 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 nom de domaine complet : vous pouvez également envoyer rsyslog avec le nom de domaine complet (FQDN, tel que system1.example.com) au lieu de simplement le 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 la fin, ajoutez les variables suivantes au cas où le serveur rsyslog tomberait 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 :

Liste des fichiers et répertoires var/logListe / var / log

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 :

Liste des fichiers var/log/hostnameListe var/log/nom d’hôte

Vous devriez voir tous les fichiers journaux générés par Rsyslog.

Vous pouvez vérifier l’un de ces journaux avec la commande suivante : Let’s for example inspecter 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 dbusx2d:1.2x2dorg.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é le terminal et l’édition de texte gedit sur ma machine cliente et Rsyslog a généré et affiché ceci en sortie.

Conclusion

Dans ce didacticiel, nous avons appris à configurer les paramètres de base pour rsyslog en utilisant le modèle client-serveur sur Ubuntu 20.04. Le syslog-ng, FluentD, Logstash, GreyLog2 et Logagent, Filebeat sont les autres alternatives pour Rsyslog.