web-dev-qa-db-fra.com

comment configurer rsyslog pour envoyer le fichier d'un programme spécifique à un emplacement spécifique sur le serveur distant

Je veux configurer rsyslog sur un serveur centralisé de manière à ce que tous les journaux des clients soient stockés à un endroit. Le problème que je rencontre est que je ne sais pas comment implémenter rsyslog afin qu'il crée des journaux basés sur des programmes sur des ordinateurs clients, comme ' httpd 'etc. et enregistrez-les dans différents fichiers, par exemple' /var/log/httpd.log 'et pendant qu'il envoie le journal au serveur distant, les fichiers doivent être enregistrés comme'/var/log/ip-address de Host/httpd .log 'J'ai ces deux problèmes

  1. Les journaux doivent être créés sur la base du programme
  2. tandis que les journaux sont transmis au serveur distant, ils doivent être stockés programme par programme avec des répertoires différents pour différents hôtes.

J'espère avoir rendu ma question claire. S'il vous plaît aider.

Pour créer un journal basé sur le programme, je pense que je devrai utiliser quelque chose comme côté client

 if $programname == 'httpd' and $syslogseverity <= '6' then /var/log/httpd.log

 if $programname == 'httpd' and $syslogseverity <= '6' then ~

J'ai aussi trouvé cette question mais cela ne résout pas complètement mon problème

comment configurer rsyslog

6
Tarun

Vous devez d’abord configurer votre serveur rsyslog pour pouvoir recevoir des messages des clients.

Editez le fichier de configuration rsyslog de votre serveur et créez ou assurez-vous que les lignes suivantes existent:

$ModLoad imuxsock 
$ModLoad imklog
# provides UDP syslog reception. For TCP, load imtcp. For TCP use InputServerRun 514
$ModLoad imudp
# This will save the log file is a separate directory for each client's IP
$template FILENAME,"/var/log/%fromhost-ip%/syslog.log"
#Create a rule for each application you need to filter, ie: httpd messages
$template HTTPD,"/var/log/%fromhost-ip%/httpd.log"

#Create a separate log rule for the specific application
if $programname == 'httpd' then ?HTTPD
&~

#Dump all remaining messages that do not match the filters created into one file
*.* ?FILENAME

Après cela, vous devez accéder à chaque client et ajouter les lignes suivantes au fichier rsyslog.conf:

$ModLoad imuxsock
$ModLoad imklog
# Provides UDP forwarding. For TCP use @@server_ip
*.* @server_ip:514

Et vous devriez être prêt. Tout ce que les clients envoient au serveur sera filtré avec les règles que vous avez créées et les messages seront enregistrés dans les fichiers du dossier d’adresses IP de chaque client en fonction des modèles que vous avez créés côté serveur.

3
Bruno Pereira