GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser rsyslog pour créer un serveur d'agrégation de journaux Linux

Il y a longtemps, lorsque j'étais administrateur système pour une autre entreprise sur une autre plate-forme, nous n'avions aucun moyen de centraliser les fichiers journaux. La plupart des matins, lorsque j'arrivais au travail, je me versais une tasse de café et passais 20 à 30 minutes à distance sur chaque serveur, examinant les journaux d'événements, puis notant les problèmes détectés. Laissez-moi vous assurer que ce n'était pas le moyen le plus efficace de gérer les journaux. C'était cependant la seule option que j'avais.

Linux, cependant, utilise l'outil syslog basé sur Unix pour gérer les fichiers journaux locaux. La plupart des distributions Linux modernes utilisent en fait un démon nouveau et amélioré appelé rsyslog . rsyslog est capable de transférer les journaux vers des serveurs distants. La configuration est relativement simple et permet aux administrateurs Linux de centraliser les fichiers journaux pour l'archivage et le dépannage. Dans cet article, je vous montre comment configurer un serveur pour qu'il agisse en tant que référentiel de fichiers journaux, puis comment configurer les serveurs Linux pour qu'ils lui transmettent leurs journaux.

Les fichiers journaux sont un composant essentiel de votre infrastructure de serveur. Les administrateurs système utilisent des fichiers journaux pour accomplir de nombreuses tâches :

  • Dépannage
  • Audits des accords de niveau de service (SLA)
  • Établissement de base
  • Maintenance préventive

Configurer l'hôte du journal

Je ferai référence au serveur hébergeant les fichiers journaux en tant qu'hôte du journal . Ce serveur peut nécessiter des configurations uniques par rapport aux autres appareils Linux. Tenez compte des paramètres suivants pour votre serveur d'hébergement de journaux.

Partition séparée pour /var/log

Les directives d'installation conseillent souvent aux administrateurs de monter /var/log sur une partition séparée pour éviter que les journaux hors de contrôle ne remplissent le stockage où réside la racine du système de fichiers. Une telle pratique est essentielle lorsque le serveur reçoit des fichiers journaux d'un grand nombre d'appareils distants.

Fichier de configuration

Le rsyslog réel la configuration est gérée via un fichier de configuration dans le /etc annuaire. Vous devrez modifier plusieurs lignes. Les paramètres peuvent être légèrement différents, selon la distribution. Sauvegardez le fichier de configuration d'origine, puis ouvrez le fichier /etc/rsyslog.conf fichier avec votre éditeur de texte préféré.

Tout d'abord, décommentez les deux lignes pour UDP :

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

Vous pouvez également utiliser TCP comme protocole de transport.

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514

Vous trouverez ces lignes en haut du fichier de configuration dans les Modules rubrique.

Ensuite, configurez un modèle pour les journaux entrants. Si vous ne configurez pas de modèle, toutes les entrées de journal des serveurs distants se mélangent aux journaux locaux du serveur hôte de journal.

$template DynamicFile,"/var/log/%HOSTNAME%/forwarded-logs.log" 
*.* -?DynamicFile

Ce modèle place tous les journaux d'un hôte donné dans un répertoire nommé pour cet hôte. Par exemple, si vous avez un serveur nommé WebServer1 , un répertoire nommé WebServer1 est créé et tous les journaux de ce serveur sont stockés dans ce répertoire. Les modèles sont définis dans un Modèles section du fichier de configuration. Si aucune section spécifique n'est définie, assurez-vous simplement que les modèles sont définis avant les Règles .

De nombreuses options de modèles sont disponibles en ligne.

Une fois que vous avez décommenté le protocole de la couche transport et défini un modèle, enregistrez vos modifications dans le fichier. N'oubliez pas de redémarrer rsyslog .

# systemctl restart rsyslog

Pare-feu

rsyslog utilise le port 514 pour la connectivité réseau, qu'il utilise TCP ou UDP. Vous devez ouvrir le port 514 dans le pare-feu sur le serveur hôte de journal. En supposant que vous utilisez UDP, la configuration du pare-feu ressemble à ceci :

# firewall-cmd --add-port=514/udp --permanent

# firewall-cmd --reload

Utilisez la commande suivante pour confirmer votre configuration :

# firewall-cmd --list-all

Logrotation

Vous trouverez peut-être utile de configurer logrotate , aussi bien. logrotate aide les administrateurs à gérer un grand nombre de fichiers journaux en mettant en œuvre l'archivage, la compression, la suppression et d'autres tâches de gestion de fichiers journaux nécessaires. Cet outil a été efficacement couvert par Edem Afenyo dans l'article Enable Sysadmin Configuration de Logrotate sous Linux, il n'y a donc aucune raison pour que je le couvre ici.

Documenter l'adresse IP du serveur hôte du journal

Utilisez ifconfig ou ip addr pour documenter l'adresse IP du serveur hôte du journal. Vous utiliserez cette adresse dans les fichiers de configuration du client.

Remarque bonus :Je recommande d'utiliser les adresses IP dans les fichiers de configuration tels que /etc/rsyslog.conf à la place des noms d'hôtes. Cela simplifie la configuration et supprime la résolution de noms du processus de connexion de l'ordinateur et du processus de dépannage de l'administrateur système. Il élimine toute une suite de complexité.

[ Vous pourriez également aimer : Configurer logrotate sous Linux ]

Configurer un client de journalisation

Je commencerai cette section en configurant un serveur Linux de base pour transmettre ses fichiers journaux au serveur hôte de journal configuré précédemment. Cette configuration est un peu plus courte. N'oubliez pas de sauvegarder l'original /etc/rsyslog.conf fichier.

Ouvrez le /etc/rsyslog.conf fichier de configuration avec votre éditeur préféré (je préfère Vim, mais tout ce qui fonctionne pour vous convient). Passer aux règles section et créez une nouvelle ligne avant toute autre entrée. Pour être clair, vous ajoutez cette ligne avant la installation .gravité entrées. Cela permet de transférer toutes les correspondances vers le serveur de destination.

Ajoutez les informations suivantes, où IP est l'adresse IP du serveur hôte du journal :

*.* @IP

Remarque  :Si vous utilisez TCP, la syntaxe est *.* @@IP

Enregistrez vos modifications dans le fichier de configuration, puis redémarrez le rsyslog service :

# systemctl restart rsyslog

Tester la configuration

Le logger La commande est utilisée pour créer manuellement une entrée de fichier journal. Exécutez la commande suivante pour générer une entrée :

# logger Test

Vérifiez l'entrée du fichier journal en utilisant le tail commande pour afficher les entrées les plus récentes dans le /var/log/messages connectez-vous au serveur local :

# tail /var/log/messages

Vous devriez voir le message de test.

Ensuite, basculez vers le serveur hôte du journal, puis affichez le contenu de /var/log :

# ls /var/log

Vous devriez voir un répertoire nommé pour le serveur distant que vous avez configuré. Si vous ls le contenu de ce répertoire, vous devriez voir les journaux transférés depuis le serveur. Vous pouvez utiliser la tail commande pour afficher le contenu des journaux dans le sous-répertoire de ce serveur. Vous devriez également voir le message de test répété ici.

Configurez vos serveurs restants

À ce stade, vous pouvez configurer vos serveurs Linux restants pour transmettre leurs journaux à l'hôte de journal. Vous pourriez distribuer une nouvelle version de /etc/rsyslog.conf fichier en utilisant rsync, SSH, ou même définir la configuration avec Ansible.

Transférer des journaux spécifiques

Les exemples de paramètres ci-dessus transfèrent tous les journaux au système hôte de journal (d'où le *.* syntaxe). Vous pouvez choisir de ne transférer que des entrées pour des installations individuelles ou de transférer des entrées pour différentes installations vers différents serveurs hôtes de journaux.

Disons que vous vouliez envoyer cron se connecte à hostlogserver1 (où les administrateurs système peuvent examiner les entrées) et FTP se connecte à hostlogserver2 (où les netadmins peuvent vérifier les entrées). La configuration ressemble à ceci :

cron.* @10.1.1.15

ftp.* @10.1.1.20

hostlogserver1 a une adresse IP de 10.1.1.15 et hostlogserver2 a une adresse IP de 10.1.1.20 .

Vous pouvez également transférer les mêmes entrées vers deux serveurs différents :

*.* @10.1.1.15

*.* @10.1.1.20

Autres plates-formes

Rappelez-vous que dans l'introduction, j'ai souligné que ce mécanisme de fichier journal est vraiment un système Unix, pas une fonction spécifique à Linux. Cela signifie que pratiquement n'importe quel appareil basé sur Unix qui maintient des journaux peut participer.

Configurer les routeurs pour transférer les journaux

Je travaillais récemment dans l'environnement de laboratoire d'un client qui utilisait un routeur configuré avec VyOS. VyOS est un routeur basé sur Linux, un VPN, un pare-feu et une distribution NAT. Nous avons utilisé le processus ci-dessus (modification du fichier /etc/rsyslog.conf fichier de configuration) pour configurer le routeur afin qu'il transmette ses journaux à un serveur central. Les administrateurs réseau peuvent facilement archiver le routeur, le VPN et d'autres journaux en utilisant rsyslog .

Un autre système d'exploitation utilisé dans l'environnement de laboratoire était pfSense. pfSense est un système d'exploitation dérivé de FreeBSD qui peut également transférer les journaux vers un emplacement central en utilisant rsyslog . Encore une fois, il s'agissait d'une configuration simple, bien que cette fois-ci via une interface graphique Web.

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ] 

Récapitulez

Tenez compte des options disponibles pour les administrateurs système avec rsyslog transfert de journaux. Votre équipe réseau peut centraliser les journaux pour tous les routeurs internes et périmétriques, les appliances VPN et les pare-feu. Les administrateurs système peuvent organiser les journaux en fonction des domaines de responsabilité ou de la géographie. La centralisation peut avoir un impact sur vos équipes de sécurité, de service d'assistance et d'administration de serveur. rsyslog est un service Linux basique mais essentiel, et tirer parti de sa capacité à centraliser les journaux vous permet d'en tirer le meilleur parti.


Linux
  1. Comment gérer les fichiers journaux à l'aide de Logrotate sous Linux

  2. Comment utiliser Netcat pour transférer des fichiers sous Linux

  3. Comment faire pivoter les fichiers journaux Apache sous Linux

  4. Comment utiliser FTP sous Linux pour transférer des fichiers

  5. Comment utiliser rsync depuis un PC Windows vers un serveur Linux distant ?

Comment créer et utiliser un fichier d'échange sous Linux

Comment afficher les fichiers journaux Nginx sous Linux

Comment afficher les fichiers journaux Apache sous Linux

Comment utiliser les commandes FTP de Linux

Comment créer un contrôleur de domaine sous Linux pour AD

Comment créer une configuration Rsyslog de journalisation centralisée