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: 146.479 ]

Por: Bill Carlos Cabral em 02/07/2012


Conclusão



Com o Rsyslog, torna-se possível o gerenciamento centralizado de logs, independentemente do sistema operacional, permitindo a visualização dos eventos de todos os pontos monitorados de forma que um relatório pode ser emitido demostrando um cenário geral da rede para um certo tipo de evento, ou até mesmo de todos os eventos, procurando o de maior ocorrência para verificar o motivo de tanta repetição.

Um fator positivo é a possibilidade de utilização de um banco de dados para armazenamento centralizado destes eventos (logs). Independente de qual seja o banco, o fato de estar inserido em um SGBD (sistema de gerenciamento de banco de dados) permite uma integração com outras ferramentas e até mesmo, outros sistemas, além de possibilitar ações que garantirão a alta disponibilidade desses dados, como o backup e redundância, que já não é tão funcional como o backup de um arquivo e redundância do mesmo.

Outro ponto positivo é a interoperabilidade: a maioria dos bancos mais usados no mercado são suportados nessa ferramenta, que garante a cobertura de mais de 90%.

Por ter a licença do tipo GPLv3, há uma liberdade para se trabalhar com esta ferramenta adequando-a, dentro dos termos da licença, à necessidade.

Qualquer um pode desenvolver um plugin para o Rsyslog, ou mesmo adaptar (de acordo com o tipo de licença dele, pois o projeto Rsyslog é regido pela GLPv3, e nada implica que seus plugins sejam, já que a grande maioria não foram desenvolvidos pelos criados/desenvolvedores do Rsyslog) para a sua melhor aplicação num cenário específico.

Durante a configuração do "servidor" centralizado Rsyslog, houveram muitos erros. Na configuração da string de conexão com o banco de dados, por exemplo, um simples espaço entre os dados desta string gera o erro na conexão com o banco de dados, e nada na documentação do site www.rsyslog.com/doc fala sobre isso.

Aliás, tirando a documentação do site oficial, pouquíssimos são os documentos disponíveis que tem algum valor mensurável em questão de conteúdo, pois a maioria é uma replica de algum trabalho que é uma cópia/tradução do que está no site.

Este documento foi todo escrito com palavras do autor, tendo uma sinopse do conteúdo encontrado na documentação oficial que foi usada como referência.

Talvez se houvesse uma documentação mais detalhada, a maioria destes erros poderiam ser corrigidos mesmo antes da sua ocorrência.

O tráfego na rede causado pelo Rsyslog não é impactante para influenciar no desempenho, porém, ao se pensar em banco de dados e dependendo da quantidade de pontos monitorados, poderá gerar um I/O muito grande no banco, que pode onerar sua performance, cabendo ao responsável pela instalação/configuração, procurar por soluções que possam resolver e que atenda as necessidades.

Outro ponto forte do Rsyslog, é a possibilidade da implementação de segurança na transmissão dos eventos para o servidor centralizado, utilizando SSL/TLS.

No próximo artigo, implementaremos esta funcionalidade juntamente com o suporte de strings com mais de 32 bits.

Página anterior    

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

Organizando usuários e senhas do Proftpd

MaraDNS: Simples - Seguro - Robusto

Servidor de Mídia com 128 MB de RAM

Fazendo o Mate Terminal iniciar sem a Barra de Menu

Configurando o xorgconfig e o inittab para iniciar o Slackware em modo gráfico

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts