LOG centralizado com rSyslog gravando em MySQL e interface web para consultas

Ter um log centralizado é um pré-requisito se você quer ter seus logs íntegros. Mas ter os eventos registrados apenas em arquivos é praticamente inviável para consultas.

Por conta disso, mostrarei aqui como configurar o rSyslog para gravar os eventos no MySQL e uma interface web para consultas, com filtros e tudo o mais para facilitar a visualização dos logs sem ser precisso acessar a console para tal atividade.

Pré-requisitos

Talvez seja interessante pra você utilizar um repositório Web para o Yum, para isso siga as instruções desse post

Instalando os pacotes necessários

yum install rsyslog.i386 rsyslog-mysql.i386 mysql-server php php-mysql php-gd httpd mod_ssl

Certificando que os serviços inicializarão no boot

chkconfig --levels 35 rsyslog on
chkconfig --levels 35 httpd on
chkconfig --levels 35 mysqld on

Configurando o rSyslog

Como o syslog vem por padrão instalado no CentOS 5 / Red Hat 5, é necessário desabilitá-lo porque ambos utilizam a mesma porta para ouvir requisições de gravação remotas (UDP 514) e o rSyslog não vai iniciar se o syslog estiver ativo.

service syslog stop
chkconfig --del syslog
Nota


O rSyslog entende a mesma sintaxe do syslog.conf. Então, se você tiver uma configuração específica para o syslog hoje pode copiar o arquivo syslog.conf para rsyslog.conf, lembrando de renomear o rsyslog.conf para rsyslog.conf.orig, assim caso alguma coisa aconteça de errado poderá voltar o arquivo original.

Para o rSyslog ter acesso ao MySQL é preciso carregar o plugin ommysql, acrescente essa linha no início do arquivo /etc/rsyslog.conf

$ModLoad ommysql.so

Criando a base MySQL para o rSyslog

Antes de tudo é preciso iniciar o serviço do MySQL

service mysqld start

Como root, vamos criar o acesso para o usuário do banco que o rSyslog irá utilizar para conectar-se

mysql
mysql> CREATE USER 'rsyslog'@'localhost' IDENTIFIED BY 'P45sword';
mysql> GRANT ALL PRIVILEGES ON Syslog.* TO 'rsyslog'@'localhost' WITH GRANT OPTION;

E agora, criar o banco de dados que será utilizado pelo rSyslog.

Como root, execute o comando

mysql < /usr/share/doc/rsyslog-mysql-2.0.6/createDB.sql

De volta ao arquivo /etc/rsyslog.conf acrescente essa linha, antes das diretivas do rSyslog

*.*    :ommysql:localhost,Syslog,rsyslog,P45sword

A sintaxe é essa:

:ommysql:database-server,database-name,database-userid,database-password

Onde

  • ommysql: é o nome do plugin
  • database-server: endereço do servidor do MySQL
  • database-name: nome da base
  • database-userid: usuário que conectar-se-á e tem permissão no MySQL
  • database-password: senha do usuário

Ao final do processo o arquivo /etc/rsyslog.conf parecerá com o seguinte

$ModLoad ommysql.so

*.*                      :ommysql:localhost,Syslog,rsyslog,P45sword

*.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

Permitindo conexões remotas ao rSyslog

Edite o arquivo /etc/sysconfig/rsyslog e acresente o parâmetro -r na linha 6

SYSLOGD_OPTIONS="-r -m 0"

Já é possível iniciar o rsyslog para ver se tudo ocorreu bem.

service rsyslog start

Verifique o log /var/log/messages e se tudo foi certo, a mensagem referente ao rsyslog iniciando deve ser como essa, sem erros

Sep 22 18:42:23 master rsyslogd: [origin software="rsyslogd" swVersion="2.0.6" x -pid="2779" x-info="http://www.rsyslog.com"][x-configInfo udpReception="Yes" udp Port="514" tcpReception="No" tcpPort="0"] restart
Sep 22 18:42:23 master kernel: rklogd 2.0.6, log source = /proc/kmsg started.

Instalando e configurando a interface Web para o rSyslog

Com o serviço rsyslog configurado vem a parte necessária da interface Web para consultas e etc.

Baixe o frontend phpLogCon para o computador

wget http://www.virtualxp.org/downloads/phplogcon-2.6.4.tar.gz

Descompacte o arquivo para /usr/src

tar zxvf phplogcon-2.6.4.tar.gz -C /usr/src

Vá ao diretório onde descompactou, no caso o /usr/src/phplogcon-2.6.4 e copie o diretório src para /var/www/html

cp -R src /var/www/html/syslog
cd /var/www/html/syslog
touch config.php
chown apache config.php

Se você não iniciou o apache ainda, pode iniciar agora

service httpd start
Starting httpd:                                            [  OK  ]

Acesse agora, do navegador do seu computador o host http://172.20.32.205/syslog, substitua o endereço para o do seu servidor.

Screenshot

Note o erro, é normal e esperado. Clique em “here” para configurar o phpLogCon

Screenshot-1

Agora o instalador verificará se o SO tem os pré-requisitos necessários para rodar o programa. Clique em “Next”.

Screenshot-2

O teste feito foi referente se o phpLogCon tem acesso à escrita no arquivo config.php que criamos e definimos a permissão. Clique em “Next” para prosseguir.

Screenshot-3

Nas configurações básicas, deixe as oções padrão marcadas e clique em “Next”.

Screenshot-4

Essa é a tela de configuração mais importante. É nela que será configurado a origem dos dados dos eventos do Syslog.

Mude o campo “Source Type” para “MySQL” e preencha os campos da sessão “Database Type Options” como na figura acima.

Clique em Next.

Screenshot-5

Pronto! Tudo okie dokie agora!

Clique em “Finish!” e você será direcionado para a tela principal do phpLogCon.

[singlepic id=38 w=640 float=]

Configurando clientes para logar no servidor rSyslog

Nos clientes Linux / FreeBSD etc, que você quer que os logs sejam enviados ao servidor do rSyslog, você deve configurar o /etc/syslog.conf para essa finalidade. Adicione a seguinte linha:

*.*                   @syslog_server

Onde, “syslog_server” é o hostname ou IP do servidor syslog.

Quando terminar, é necessário reiniciar o serviço do syslog no lado do cliente.

service syslog restart

Esses procedimentos são para Red Hat / CentOS e clientes Linux em geral. Para outros sistemas, deve-se adaptar de acordo.

Deixe um comentário mostrando como foi feito para o seu cliente utilizar essa solução de log centralizado! Será de bastante valor.

Share this post

10 comments

Join the conversation
  • Lucas Timm - 08/06/2010 reply

    Excelente artigo! Fiz no CentOS 5.4 e o mesmo não tava aceitando os logs da rede. Então, um amigo me instruiu a colocar os seguintes dados no rsyslog.conf:

    $ModLoad imudp
    $UDPServerRun 514

    Após adicionar isso, funcionou corretamente. :}

  • Carlos Goes - 22/10/2010 reply

    Boa noite.
    Gostaria de saber se posso instalar no servidor hed hat 5.5, pois sou leigo.
    Aguardo a resposta.
    Obrigado site muito bom.

    Daniel Kühl Lima - 23/11/2010 reply

    Sem duvidas, claro que pode.

  • Paulo Peres - 09/12/2010 reply

    Daniel,

    Legal o seu artigo, porem veja se pode me ajudar, na minha tabela do mysql eu tenho o campo fromhost que guarda o nome inves do ip, como eu faço para esse campo guardar o ip ao inves do nome?

    Daniel Kühl Lima - 14/12/2010 reply

    De acordo com o manual, acredito que a opção -x na inicialização do serviço vá resolver.
    -x
    Disable DNS for remote messages

    No arquivo /etc/sysconfig/rsyslog a linha ficaria

    SYSLOGD_OPTIONS="-x -r -m 0"

  • Ismael - 16/05/2012 reply

    está aparecendo mensagem na interface web “Could not find the configured database” como posso resolver isso?

    Daniel Kühl Lima - 16/05/2012 reply

    Parece que você pulou o passo da criação do Banco de dados.

    Veja esse link aqui:

    http://www.fogonacaixadagua.com.br/2011/03/rsyslog-3-gravando-no-mysql-e-interface-web-para-consulta/

    É pra FreeBSD mas pode ser adaptado facilmente para o Linux.

    Abraço

  • Thiago Vinícius V. Oliveira - 03/07/2012 reply

    O melhor artigo que li até agora sobre o assunto, bastante completo. Antigo, mas muito bom!

  • Francisco Dreyfuss - 16/11/2012 reply

    Olá! Não consegui instalar na versão 64 bits. Há alguma diferença nos pacotes? Obrigado!

Join the conversation