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.
Talvez seja interessante pra você utilizar um repositório Web para o Yum, para isso siga as instruções desse post
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
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
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
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
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.
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.
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.
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. :}
Boa noite.
Gostaria de saber se posso instalar no servidor hed hat 5.5, pois sou leigo.
Aguardo a resposta.
Obrigado site muito bom.
Sem duvidas, claro que pode.
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?
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"