como configurar o rsyslog para enviar arquivos de um programa específico para um local específico no servidor remoto

6

Eu quero configurar o rsyslog em um servidor centralizado para que todos os logs de clientes sejam armazenados em um único local, agora o problema que estou tendo é Eu não sei como implementar o rsyslog para que ele crie logs baseados em programas em máquinas clientes ou seja, como 'httpd' etc. e salvá-los em arquivos diferentes ou seja, '/var/log/httpd.log' e enquanto ele envia o log para o servidor remoto, os arquivos devem ser salvos como '/ var / log / ip-address de host / httpd.log 'Eu tenho esses dois problemas

  1. Os logs devem ser criados na base do programa
  2. enquanto os logs são transmitidos para o servidor remoto, eles devem ser armazenados no programa com diretórios diferentes para hosts diferentes.

Espero ter esclarecido minha dúvida. Por favor ajude.

Para criar um registro baseado em programa, acredito que terei que usar algo como no lado do cliente

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

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

Também encontrei essa pergunta, mas ela não resolve completamente meu problema

como configurar o rsyslog

    
por Tarun 10.07.2013 / 13:48

1 resposta

3

Você precisa primeiro configurar seu servidor rsyslog para poder receber mensagens dos clientes

Edite o arquivo de configuração do rsyslog do seu servidor e crie ou certifique-se de que as seguintes linhas existam:

$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

Depois disso, você precisa ir a cada cliente e adicionar as seguintes linhas ao arquivo rsyslog.conf:

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

E você deveria estar pronto. Tudo o que os clientes enviam para o servidor será filtrado com as regras criadas e as mensagens serão salvas nos arquivos da pasta de endereços IP de cada cliente, de acordo com os modelos criados no lado do servidor.

    
por Bruno Pereira 10.07.2013 / 14:50