Recherche de site Web

Comment configurer le client Rsyslog pour envoyer des journaux au serveur Rsyslog dans CentOS 7


La gestion des journaux est l'un des composants les plus critiques d'une infrastructure réseau. Les messages de journaux sont constamment générés par de nombreux logiciels système, tels que des utilitaires, des applications, des démons, des services liés au réseau, au noyau, aux périphériques physiques, etc.

Les fichiers journaux s'avèrent utiles en cas de dépannage des problèmes du système Linux, de surveillance du système et d'examen des points forts et des problèmes de sécurité du système.

Rsyslog est un programme de journalisation Open Source, qui constitue le mécanisme de journalisation le plus populaire dans un grand nombre de distributions Linux. Il s'agit également du service de journalisation par défaut dans CentOS 7 ou RHEL 7.

Le démon Rsyslog dans CentOS peut être configuré pour s'exécuter en tant que serveur afin de collecter les messages de journal de plusieurs périphériques réseau. Ces appareils agissent comme des clients et sont configurés pour transmettre leurs journaux à un serveur rsyslog.

Cependant, le service Rsyslog peut également être configuré et démarré en mode client. Cette configuration demande au démon rsyslog de transférer les messages de journal vers un serveur Rsyslog distant à l'aide des protocoles de transport TCP ou UDP. Le service Rsyslog peut également être configuré pour s'exécuter en tant que client et en tant que serveur en même temps.

Dans ce didacticiel, nous allons décrire comment configurer un démon Rsyslog CentOS/RHEL 7 pour envoyer des messages de journal à un serveur Rsyslog distant. Cette configuration garantit que l'espace disque de votre machine peut être préservé pour stocker d'autres données.

L'endroit où presque tous les fichiers journaux sont écrits par défaut dans CentOS est le chemin système /var. Il est également conseillé de toujours créer une partition séparée pour le répertoire /var, qui peut être développée dynamiquement, afin de ne pas épuiser la partition /(root).

Un client Rsyslog envoie toujours les messages de journal en texte brut, sauf indication contraire. Vous ne devez pas configurer un client Rsyslog pour transmettre des messages de journal sur Internet ou sur des réseaux qui ne sont pas sous votre contrôle total.

Exigences

  1. Procédure d'installation de CentOS 7.3
  2. Procédure d'installation de RHEL 7.3
  3. Configurer un serveur Rsyslog dans CentOS/RHEL 7

Étape 1 : Vérifier l'installation de Rsyslog

1. Par défaut, le démon Rsyslog est déjà installé et exécuté sur un système CentOS 7. Afin de vérifier si le service rsyslog est présent dans le système, exécutez les commandes suivantes.

rpm -q | grep rsyslog
rsyslogd -v

2. Si le package Rsyslog n'est pas installé dans CentOS, exécutez la commande ci-dessous pour installer le service.

yum install rsyslog

Étape 2 : configurer le service Rsyslog en tant que client

3. Afin de forcer le démon Rsyslog installé sur un système CentOS 7 à agir en tant que client de journal et à acheminer tous les messages de journal générés localement vers un serveur Rsyslog distant, modifiez le fichier de configuration rsyslog comme suit :

Ouvrez d’abord le fichier de configuration principal pour le modifier.

vi /etc/rsyslog.conf

Ensuite, ajoutez la ligne ci-dessous à la fin du fichier, comme illustré dans l'extrait ci-dessous.

*. *  @192.168.10.254:514

Sur la ligne ci-dessus, assurez-vous de remplacer l'adresse IP du nom de domaine complet du serveur rsyslog distant en conséquence. La ligne ci-dessus demande au démon Rsyslog d'envoyer tous les messages de journal, quelle que soit leur installation ou leur gravité, à l'hôte avec l'IP 192.168.10.254 via le port 514/UDP.

4. Si le serveur de journaux distant est configuré pour écouter uniquement sur les connexions TCP ou si vous souhaitez utiliser un protocole de réseau de transport fiable, tel que TCP, ajoutez un autre caractère @ devant de l'hôte distant, comme indiqué dans l'exemple ci-dessous :

*. *  @@logs.domain.lan:514

Le rsyslog Linux autorise également l'utilisation de caractères spéciaux, tels que = ou !, qui peuvent être préfixés aux niveaux de priorité pour indiquer « cette priorité uniquement. » pour le signe égal et « pas cette priorité ou supérieure à celle-ci ».

Quelques exemples de qualificatifs de niveau de priorité Rsyslog dans CentOS 7 :

  • kern.info=journaux du noyau avec priorité d'information et supérieure.
  • kern.=info=uniquement les messages du noyau avec priorité info.
  • kern.info;kern.!err=uniquement les messages du noyau avec des priorités d'information, de notification et d'avertissement.
  • kern.debug;kern.!=warning=toutes les priorités du noyau sauf l'avertissement.
  • kern.*=tous les messages de priorités du noyau.
  • kern.none=n'enregistre aucun message de fonctionnalité du noyau associé, quelle que soit la priorité.

Par exemple, en supposant que vous souhaitiez envoyer uniquement des messages d'installation spécifiques à un serveur de journaux distant, tels que tous les messages électroniques associés, quel que soit le niveau de priorité, ajoutez la ligne ci-dessous au fichier de configuration rsyslog :

mail.* @192.168.10.254:514 

5. Enfin, pour appliquer la nouvelle configuration, le service Rsyslog doit être redémarré afin que le démon récupère les modifications, en exécutant la commande ci-dessous :

systemctl restart rsyslog.service

6. Si, pour une raison quelconque, le démon Rsyslog n'est pas activé pendant le démarrage, exécutez la commande ci-dessous pour activer le service à l'échelle du système :

systemctl enable rsyslog.service

Étape 3 : Envoyer les journaux Apache et Nginx à un serveur de journaux distant

7. Le serveur HTTP Apache peut être configuré pour envoyer des messages de journaux à un serveur Syslog distant en ajoutant la ligne suivante à son fichier de configuration principal, comme illustré dans l'exemple ci-dessous.

vi /etc/httpd/conf/httpd.conf

Sur le fichier de configuration principal d'Apache, ajoutez la ligne ci-dessous.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

La ligne forcera le démon HTTP à écrire les messages de journal en interne dans le fichier journal du système de fichiers, mais traitera également les messages ultérieurement via un utilitaire de canalisation vers l'enregistreur, qui les enverra à un serveur syslog distant, en les marquant comme provenant du local1. facilité.

8. Si vous souhaitez également diriger les messages du journal d'erreurs Apache vers un serveur Syslog distant, ajoutez une nouvelle règle comme celle présentée dans l'exemple ci-dessus, mais assurez-vous de remplacer le nom du fichier journal httpd et le niveau de gravité du fichier journal pour correspondre à la priorité des erreurs, comme indiqué dans l'exemple suivant :

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. Une fois que vous avez ajouté les lignes ci-dessus, vous devez redémarrer le démon Apache pour appliquer les modifications, en exécutant la commande suivante :

systemctl restart httpd.service                 

10. Depuis la version 1.7.1, le serveur Web Nginx dispose de fonctionnalités intégrées afin de consigner directement ses messages sur un serveur syslog distant, en ajoutant les lignes suivantes de code dans un fichier de configuration nginx.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

Pour un serveur IPv6, utilisez le format de syntaxe suivant pour entourer l'adresse IPv6.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. Sur le serveur Rsyslog distant, vous devez apporter la modification suivante au fichier de configuration rsyslog, afin de recevoir les journaux envoyés par le serveur Web Apache.

local1.* @Apache_IP_address:514

C'est tout! Vous avez configuré avec succès le démon Rsyslog pour qu'il s'exécute en mode client et, également, vous avez demandé au serveur Apache HTTP ou à Nginx de transférer ses messages de journal. à un serveur syslog distant.

En cas de panne de votre système, vous devriez pouvoir enquêter sur le problème en inspectant le contenu des fichiers journaux stockés sur le serveur Syslog distant.