Configurações de arquivo e cliente
Configuração do arquivo /etc/rsyslog.conf
A customização para a coleta dos dados específicos são inseridas através de regras no
rsyslog.conf. Por exemplo, para coletar os dados TCP da máquina, basta ativar os módulos de entrada.
Os módulos de entrada são utilizados para reunir mensagens de várias fontes. Eles interagem com os geradores de mensagens. Já os módulos do analisador são utilizados para analisar o conteúdo da mensagem, uma vez que a mensagem foi recebida.
Eles podem ser usados para processar formatos de mensagens personalizadas e invalidamente formatadas. Existem ainda os módulos de modificação de mensagens que são usados para alterar o conteúdo das mensagens que estão sendo processadas.
Eles podem ser implementados utilizando um módulo de saída ou da interface do módulo analisador. Do ponto de vista do núcleo Rsyslog, eles realmente são módulos de saída, ou parser, e é a sua implementação que os tornam especiais.
Atualmente existe apenas um conjunto limitado de tais módulos, mas os novos podem ser escritos com os métodos que o motor melhor lhe proporcione. Eles podem ser utilizados, por exemplo, a:
- Anonimizar conteúdo da mensagem;
- Adicionar conteúdo dinamicamente computada a mensagem (campos).
Módulos de modificação de mensagens geralmente são escritos para uma tarefa específica e, portanto, normalmente não são genéricos o suficiente para ser reutilizados.
No entanto, o código do módulo existente é provavelmente uma excelente base de partida para escrever um novo módulo, que pode ser escrito por terceiros também.
Abaixo segue o código do
rsyslog.conf que será utilizado no servidor onde os logs serão centralizados:
#/etc/rsyslog.conf
$ModLoad imuxsock.so
$ModLoad imklog.so
$ModLoad imtcp.so
$InputTCPServerRun 514
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$ModLoad ompgsql.so
*.* :ompgsql:127.0.0.1,syslog,postgres,postgres
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.*
/var/log/secure
mail.*
/var/log/maillog
cron.*
/var/log/cron
*.emerg
*
uucp,news.crit
/var/log/
spooler
local7.*
/var/log/boot.log
Nesse arquivo, cada linha tem a seguinte função:
- $MoadLoad imuxsock.so : Fornece a capacidade para aceitar mensagens de syslog via sockets locais Unix. Mais importante, este é o mecanismo pelo qual o syslog envia mensagens syslog rsyslogd. Então, você precisa ter este módulo carregado para ler o socket de log do sistema e ser capaz de processar as mensagens de log de aplicativos em execução no sistema local.
- $MoadLoad imklog.so : Lê mensagens de log do kernel e as envia para o motor de syslog.
- $MoadLoad imtcp.so : Habilita a conexão TCP. Necessário para possibilitar que hosts remotos se conectem para centralizar os logs.
- $InputTCPServerRun 514 : Declara a porta pelo qual o servidor irá escutar os rsyslogs remotos.
- $ActionFileDefaultTemplate RSYSLOG_FileFormat : Define um novo modelo padrão para ações de arquivo. É um formato de arquivo de
log de estilo moderno semelhante ao TraditionalFileFormat, mas com alta precisão timestamps e informações de fuso horário.
- $ModLoad ompgsql.so : Carrega o módulo responsável pela conexão com o banco de dados PostgreSQL.
- *.* :ompgsql:127.0.0.1,syslog,postgres,postgres : String de conexão com o banco de dados.
Os demais dados do arquivo são as informações sobre o que selecionar no log e sua localização.
É possível que sejam customizadas essas entradas de acordo com a necessidade.
Instalação e configuração do cliente
Para que haja comunicação entre o servidor onde será centralizado os logs e os clientes que fornecerão estes logs, é necessário que seja instalado o cliente do Rsyslog nestas máquinas, além do servidor centralizado e configurá-lo para receber estas conexões.
Tanto para o
GNU/Linux quanto para o Windows, faremos a configuração dos seus clientes. Iniciando pelo GNU/Linux.
1.
2.
3. Configurações de arquivo e cliente
4.
5.
6.
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 !