Rsyslog - Gerenciamento centralizado de logs

Este artigo traz uma abordagem simples e objetiva da integração através da rede de sistemas operacionais diferentes, centralizando o log em uma única máquina através do Rsyslog, incluindo a configuração e testes feitos.

[ Hits: 151.339 ]

Por: Bill Carlos Cabral em 02/07/2012


Instalação dos clientes



Instalação do cliente no GNU/Linux

Para a instalação do cliente no GNU/Linux, serão os mesmos passos que foram utilizados na instalação do Rsyslog no servidor central, via YUM, conforme já descrito anteriormente.

A diferenciação se dará no arquivo de configuração rsyslog.conf, que terá algumas configurações diferenciadas, conforme mostrado abaixo:

# /etc/rsyslog.conf

*.* @@10.0.0.1:514
$ModLoad imuxsock.so   # provides support for local system logging (e.g. via logger command)
$ModLoad imklog.so       # provides kernel logging support (previously done by rklogd)
$ModLoad imtcp.so
$InputTCPServerRun 514
$ModLoad ompgsql.so
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

*.info;mail.none;authpriv.none;cron.none   /var/log/messages
*.*                                                         /var/log/yum.log
*.*                                                         /var/log/anaconda.log
*.*                                                         /var/log/boot.log
*.*                                                         /var/log/squid/access.log
*.*                                                         /usr/lib/rpm/rpm.log

A única diferença no arquivo de log do servidor para esse cliente, é a seguinte linha na configuração do arquivo rsyslog.conf:

*.* @@10.0.0.1:514

Onde as " @@ ", significam que o protocolo é TCP, depois é informado o IP e por último, a porta no qual o servidor estará escutando.

Basta (re)iniciar o serviço e verificar no servidor se os logs estão chegando.

Instalação do cliente no Windows

Para a configuração de um cliente Windows que irá conectar-se no servidor centralizado, o software cliente Rsyslog deverá ser baixado na seguinte URL:
Depois de baixado na maquina Windows, iniciaremos executando o arquivo rsyslogwa.exe.

A instalação é normal de Windows (next, next, finish). Após terminado esta instalação, no menu iniciar terá o Rsyslog Windows Agent Configuration.

Clique nele para que a tela abaixo seja apresentada.
Nesta tela começaremos criando uma regra onde vamos definir um novo conjunto de regras. Clique com o botão direito do mouse em cima de Rules. Um menu pop-up irá aparecer.

A partir deste menu, selecione: Add rules
Digite um nome para as regras que estaremos criando na tag: Name of RuleSet
Selecione apenas: Forward Syslog

Além disso, deixe a opção marcada: create a Rule for each of the following action

Clique em "Next". Você verá uma página de confirmação. Clique em "Concluir" para criar o conjunto de regras.
A nova Rule Set com o nome digitado está aparecendo. Clique no simbolo para expandi-lo na árvore até que o nível de ação do "Foward Syslog" apareça.

Clique nela para aparecer as configurações, conforme figura abaixo:
Configure o "Forward Syslog" inserindo o IP do seu Servidor Central Rsyslog alterando a porta para a que foi configurada no servidor, sabendo que a porta padrão é a "514".

Você também pode alterar o tipo de protocolo TCP, de acordo com o configurado com no seu servidor.

ATENÇÃO: O Rsyslog agente do Windows e seu servidor Rsyslog devem usar a mesma porta e o mesmo protocolo. Altere o "Message Format", clicando no menu suspenso para escolher: Use CEE enhanced Syslog Format
Agora clique em "Save". Esta primeira parte está pronta. Agora configuraremos a parte do EventLog Monitor Service. Iniciaremos clicando com o botão direito do mouse em:
  1. Services
  2. Selecione: Add Services
  3. Depois: Event Log Monitor V2

Novamente você precisará digitar um nome ou deixar o padrão. Deixe o campo "Use default settings" selecionada e clique em "Finish".
Verá que tem um serviço recém-criado sob os "services" como parte da exibição de árvore. Para verificar seus parâmetros, clique em cima dele:
Como você pode ver, o serviço verifica automaticamente todos os EventLogs presentes no Windows. Agora você pode selecionar ou desativar determinados registros ou alterar algumas de suas propriedades.

Note que o conjunto de regras "Syslog Forward" foi automaticamente atribuído como o conjunto de regras para ser usadas. Agora basta inciar o serviço e começar a monitorar através do servidor centralizado.
Com esta configuração, o cliente do Windows está pronto e, possivelmente, inserindo os logs no servidor centralizado.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação e configuração
   3. Configurações de arquivo e cliente
   4. Instalação dos clientes
   5. Instalação do LogAnalyzer
   6. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

O que é e como configurar rede AD HOC no Ubuntu

Instalando Nginx e PHP no Ubuntu

Configurando o proftpd com autenticação de usuário pelo passwd

Passo a passo para aceleração 3d em placas de vídeo com chipset NVIDIA + compiz-fusion no OpenSuSE 10.3

Configurando o Roundcube Webmail

  
Comentários
[1] Comentário enviado por danniel-lara em 02/07/2012 - 11:05h

Parabéns pelo artigo
heheh eu estava escrevendo um artigo sobre isso também
mas o seu ficou melhor , hehehe
bom vou testar com o client em Windows
eu nunca tinha usado ,
Valeu mesmo , isso é muito importante de implantar em uma empresa



[2] Comentário enviado por BillCabral em 02/07/2012 - 14:48h

Obrigado danniel-lara!!

Sim, é importantíssimo num ambiente corporativo, porque facilitará
o gerenciamento.

Caso possa ajudar em algo, estou a disposição.

[3] Comentário enviado por danniel-lara em 02/07/2012 - 15:34h

Tranquilo BillCabral
o seu artigo esta muito bem explicado
e muito bem escrito , muito legível também
mas caso eu precise que peso ajuda sim

Abraço

[4] Comentário enviado por thyaguvinny em 05/07/2012 - 10:51h

A intenção foi boa! Mas está faltando vários passos no artigo! Seguindo simplesmente este tutorial é impossível de fazer tudo funcionar certinho... lamento.

[5] Comentário enviado por BillCabral em 05/07/2012 - 11:05h

thyaguvinny,

Este caso foi de sucesso e esta rodando até hoje. Caso esteja faltando passos, comente aqui para que o pessoal que implementar adicione os passos que faltam.
Qual distro você esta usando?

[6] Comentário enviado por pmello em 09/07/2012 - 14:15h

Parabéns,
Muito bem explicado, pontos bem definidos, muito utilizavel.

[7] Comentário enviado por irgn em 07/07/2013 - 14:15h

Parabéns pelo artigo bem fundamentado!
Estou aqui com um problema com a criação da tabela SystemEvents, smp qdo vou criar a tabela da-me esse erro:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'without time zone NULL,
DeviceReportedTime timestamp without time zone N' at line 5

Agradecia a vossa ajuda.



[8] Comentário enviado por billcabral em 08/07/2013 - 09:20h


[7] Comentário enviado por irgn em 07/07/2013 - 14:15h:

Parabéns pelo artigo bem fundamentado!
Estou aqui com um problema com a criação da tabela SystemEvents, smp qdo vou criar a tabela da-me esse erro:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'without time zone NULL,
DeviceReportedTime timestamp without time zone N' at line 5

Agradecia a vossa ajuda.





Cara,

Pode ser que no momento de selecionar o banco de dados não esteja selecionando o certo. Esta usando que banco? o erro diz que esta tentando se conectar com um MYSQL. Todo esse tutorial, além de tudo que eu tento fazer, sempre uso PostgreSQL, pois ele é mais "profissional" do que o MYSQL. Verifique qual banco esta usando e qual esta setando na hora de configurar

[9] Comentário enviado por xpaolo em 11/09/2013 - 16:44h

Parabéns pelo artigo!

Estou utilizando o rsyslog em um servidor de testes, e ele não possui aplicação nenhuma em produção.

Porém ele fica inserindo logs de maneira intermitente, nunca para.. ele gera logs de si mesmo.. (mais de 100 registros por segundo).

Exemplo:

Sep 11 16:49:39 srvteste postgres[1469]: [15328557-1] 2013-09-11 16:49:39 BRT [1469]: [15328555-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268645-1] 2013-09-11 16:48:14 BRT [1469]: [15268643-l] user=sysloguser,db=syslog LOG: statement: begin', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328558-1] 2013-09-11 16:49:39 BRT [1469]: [15328556-l] user=sysloguser,db=syslog LOG: duration: 0.260 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328559-1] 2013-09-11 16:49:39 BRT [1469]: [15328557-l] user=sysloguser,db=syslog LOG: statement: commit;
Sep 11 16:49:39 srvteste postgres[1469]: [15328560-1] 2013-09-11 16:49:39 BRT [1469]: [15328558-l] user=sysloguser,db=syslog LOG: duration: 7.006 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328561-1] 2013-09-11 16:49:39 BRT [1469]: [15328559-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328562-1] 2013-09-11 16:49:39 BRT [1469]: [15328560-l] user=sysloguser,db=syslog LOG: duration: 0.051 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328563-1] 2013-09-11 16:49:39 BRT [1469]: [15328561-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268646-1] 2013-09-11 16:48:14 BRT [1469]: [15268644-l] user=sysloguser,db=syslog LOG: duration: 0.203 ms', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328564-1] 2013-09-11 16:49:39 BRT [1469]: [15328562-l] user=sysloguser,db=syslog LOG: duration: 0.443 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328565-1] 2013-09-11 16:49:39 BRT [1469]: [15328563-l] user=sysloguser,db=syslog LOG: statement: commit;
Sep 11 16:49:39 srvteste postgres[1469]: [15328566-1] 2013-09-11 16:49:39 BRT [1469]: [15328564-l] user=sysloguser,db=syslog LOG: duration: 6.991 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328567-1] 2013-09-11 16:49:39 BRT [1469]: [15328565-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328568-1] 2013-09-11 16:49:39 BRT [1469]: [15328566-l] user=sysloguser,db=syslog LOG: duration: 0.049 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328569-1] 2013-09-11 16:49:39 BRT [1469]: [15328567-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268647-1] 2013-09-11 16:48:14 BRT [1469]: [15268645-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('' [15208740-1] 2013-09-11 16:46:49 BRT [1469]: [15208738-l] user=sysloguser,db=syslog LOG: duration: 3.792 ms'', 16, ''srvteste'', 6, ''2013-09-11 16:46:49'', ''2013-09-11 16:46:49'', 1, ''postgres[1469]:'')', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328570-1] 2013-09-11 16:49:39 BRT [1469]: [15328568-l] user=sysloguser,db=syslog LOG: duration: 0.279 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328571-1] 2013-09-11 16:49:39 BRT [1469]: [15328569-l] user=sysloguser,db=syslog LOG: statement: commit;
Sep 11 16:49:39 srvteste postgres[1469]: [15328572-1] 2013-09-11 16:49:39 BRT [1469]: [15328570-l] user=sysloguser,db=syslog LOG: duration: 7.455 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328573-1] 2013-09-11 16:49:39 BRT [1469]: [15328571-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328574-1] 2013-09-11 16:49:39 BRT [1469]: [15328572-l] user=sysloguser,db=syslog LOG: duration: 0.051 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328735-1] 2013-09-11 16:49:39 BRT [1469]: [15328733-l] user=sysloguser,db=syslog LOG: statement: begin
Sep 11 16:49:39 srvteste postgres[1469]: [15328736-1] 2013-09-11 16:49:39 BRT [1469]: [15328734-l] user=sysloguser,db=syslog LOG: duration: 0.073 ms
Sep 11 16:49:39 srvteste postgres[1469]: [15328737-1] 2013-09-11 16:49:39 BRT [1469]: [15328735-l] user=sysloguser,db=syslog LOG: statement: insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (' [15268835-1] 2013-09-11 16:48:14 BRT [1469]: [15268833-l] user=sysloguser,db=syslog LOG: statement: commit;', 16, 'srvteste', 6, '2013-09-11 16:48:14', '2013-09-11 16:48:14', 1, 'postgres[1469]:')
Sep 11 16:49:39 srvteste postgres[1469]: [15328738-1] 2013-09-11 16:49:39 BRT [1469]: [15328736-l] user=sysloguser,db=syslog LOG: duration: 0.267 ms


Estou gravando em PostgreSQL 9.3

Isso é normal ? Ou é uma questão de configuração ?

Desde já agradeço a ajuda !

[10] Comentário enviado por xpaolo em 12/09/2013 - 08:55h

O problema ocorre porque o rsyslog e o postgresql estão rodando no mesmo servidor. Instalei em servidores separados não tive mais problemas!

[11] Comentário enviado por wagnerfs em 26/09/2014 - 09:48h

Muito bom o artigo. Obrigado por compartilhar o conhecimento.

[12] Comentário enviado por leojaco25 em 17/08/2016 - 14:57h

Boa tarde.

E como eu configuro um servidor Free BSD para enviar os log para um CentOS? Estou conseguindo enviar os dados de servidores linux e windows, porém não consigo dos free bsd. Minha conf do syslog está assim:


# $FreeBSD: release/9.2.0/etc/syslog.conf 238473 2012-07-15 10:55:43Z brueffer $
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
ftp.info /var/log/xferlog
cron.* /var/log/cron
*.=debug /var/log/debug.log
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
# touch /var/log/console.log and chmod it to mode 600 before it will work
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
*.* /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.* @loghost
*.* @xxx.xxx.x.xxx
!ppp
*.* /var/log/ppp.log
!*
!roundcube
*.* /var/log/roundcube.log


Alguém tem alguma ideia? Onde eu libero a porta para envio dos logs?

Grato,
Leandro.

[13] Comentário enviado por BillCabral em 19/08/2016 - 14:03h


[12] Comentário enviado por leojaco25 em 17/08/2016 - 14:57h

Boa tarde.

E como eu configuro um servidor Free BSD para enviar os log para um CentOS? Estou conseguindo enviar os dados de servidores linux e windows, porém não consigo dos free bsd. Minha conf do syslog está assim:


# $FreeBSD: release/9.2.0/etc/syslog.conf 238473 2012-07-15 10:55:43Z brueffer $
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage.
*.err;kern.warning;auth.notice;mail.crit /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
auth.info;authpriv.info /var/log/auth.log
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
ftp.info /var/log/xferlog
cron.* /var/log/cron
*.=debug /var/log/debug.log
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
# touch /var/log/console.log and chmod it to mode 600 before it will work
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
# touch /var/log/all.log and chmod it to mode 600 before it will work
*.* /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost
#*.* @loghost
*.* @xxx.xxx.x.xxx
!ppp
*.* /var/log/ppp.log
!*
!roundcube
*.* /var/log/roundcube.log


Alguém tem alguma ideia? Onde eu libero a porta para envio dos logs?

Grato,
Leandro.


Boa tarde leojaco25

poderia postar o log do SYSLOG do FreeBSD, uma vez que outros conseguem enviar para ele e ele esta recebendo, o problema será de fato no envio deste host. Post aqui o log e te ajudaremos a subir esse serviço ou caso ja tenha resolvido, post também para consultas futuras!

Valew!!!!!


Contribuir com comentário