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

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

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

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.

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

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.

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.

10 comments
Join the conversationLucas Timm - 08/06/2010
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
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
Sem duvidas, claro que pode.
Paulo Peres - 09/12/2010
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
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
está aparecendo mensagem na interface web “Could not find the configured database” como posso resolver isso?
Daniel Kühl Lima - 16/05/2012
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
O melhor artigo que li até agora sobre o assunto, bastante completo. Antigo, mas muito bom!
Francisco Dreyfuss - 16/11/2012
Olá! Não consegui instalar na versão 64 bits. Há alguma diferença nos pacotes? Obrigado!
Pingback: rSyslog 3 gravando no MySQL e interface Web para consulta | Fogo na Caixa dAgua
Related Posts
Podman + MariaDB: Resolvendo “Error establishing a database connection” após reiniciar o servidor
Daniel K Lima 30/11/2025Converter espaços/tabs em um único caracter (um espaço ou vírgula etc) com sed
Daniel K Lima 02/06/2016Conveter novas (\n) linhas em vírgula ou espaço usando sed
Daniel K Lima 06/04/2016rSyslog 3 gravando no MySQL e interface Web para consulta
Daniel K Lima 21/03/2011SARG 2.3.1 erro ao compilar no Fedora 14
Daniel K Lima 11/03/2011rootsh: Keylogger para CLI do Linux
Daniel K Lima 20/04/2010