Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Rsyslog - Gravando os logs do syslog em um banco de dados

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Dica Rsyslog - Gravando os logs do syslog em um banco de dados

    Rsyslog - Gravando os logs do syslog em um banco de dados
    Os montes de informações gerados pelos bons serviços de log sobrecarregam o armazenamento e o grep. Será que acoplar o syslog a um banco de dados ajuda?

    Introdução
    Há algum tempo implementei um servidor de logs baseado em Debian no meu local de trabalho , o que nos resolveu muitos problemas, especialmente de espaço em disco nos demais servidores e de centralização das informações de log do datacenter.

    Contudo, essa implementação nos trouxe um novo problema: depois de alguns meses, nosso servidor de log não estava comportando mais arquivos de log. Só nossos filtros de spam chegaram a registrar logfiles de mais de 1 GB por dia!

    Um outro problema detectado é a demora do grep para procurar uma informação em arquivos grandes, o que por vezes acabava fazendo com que o trabalho de obter estatísticas sobre nossos servidores se tornasse uma tarefa homérica e, por várias vezes, inviável, em decorrência do tempo demandado para a pesquisa e o tempo disponível para a apresentação dos resultados.

    Existe uma solução relativamente simples de implementar e bastante eficiente pra resolver os problemas de armazenamento e, especialmente, de pesquisa aos logs gerados pelo syslog. Chama-se Rsyslog.

    O Rsyslog insere os logs diretamente num banco de dados MySQL ou PostgreSQL, o que significa que é possível substituir os comandos do grep por rápidos comandos SQL. O Rsyslog está disponível em várias distros e é o syslog padrão do Fedora 8, por exemplo.

    Implementando
    Eu usei meu desktop como laboratório para a implementação do Rsyslog, um Ubuntu 8.10. Ele utiliza o sysklogd, o que facilita a migração para o Rsyslog. Inicialmente é possível até mesmo manter o arquivo syslog.conf. Em sua maioria, o arquivo de configuração do Rsyslog tem o mesmo formato que o sistema legado, embora suporte algumas opções a mais para conexão a banco de dados.

    Primeiramente é necessário instalar o pacote do Rsyslog. ele está disponível nos repositórios do Ubuntu e Debian, podendo ser instalado bastando executar o comando:

    $ sudo apt-get install rsyslog rsyslog-mysql (para uso com MySQL)
    ou
    $ sudo apt-get install rsyslog rsyslog-pgsql (para uso com PostgreSQL)

    Caso não encontre os pacotes do Rsyslog nos repositórios de sua distribuição, ou sua distribuição não utilize pacotes, você pode baixar o Rsyslog no site oficial do projeto (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...). Daí, é só descompactar e compilá-lo.

    Configurando o banco de dados

    Depois de instalado o rsyslog, vamos configurar o banco de dados para que possa receber os logs do syslogd.

    É necessário que um dos bancos de dados (MySQL ou PostgreSQL) estejam previamente instalados na máquina. Não vou me delongar aqui sobre a instalação e configuração de banco de dados, por não ser o foco do artigo e existirem diversos artigos sobre o assunto já escritos.

    Para isso, pode-se utilizar o assistente que é executado na instalação do rsyslog, ou executar o script "createDB.sql", que é fornecido junto com o pacote Rsyslog.

    Em ambos os casos, um banco de dados chamado Syslog será criado, assim como todas as tabelas necessárias.

    Em seguida, no prompt do MySQL (ou PostgreSQL), deve-se criar um usuário e e atribuir-lhe os privilégios:

    mysql> grant ALL ON Syslog.* to rsyslog@localhost identified by 'secret';
    mysql> flush privileges;


    Depois é muito fácil ordenar o Rsyslog pra que use o banco de dados - bastam duas linhas no arquivo /etc/rsyslog.d/mysql.conf (ou pgsql.conf, para o PostgreSQL):

    #Carrega o módulo para acesso ao banco de dados MySQL
    $ModLoad MySQL

    # Define o recurso de log que contém as entradas que o Rsyslog deve inserir no banco de dados, seguido pelos parâmetros de acesso ao BD.

    # Nome_da_Máquina.Nome_do_Banco_de_Dados.Usuário_MyS QL.Senha
    # No caso abaixo, apenas os logs do recurso de e-mail serão gravados no banco de dados.
    mail.* > localhost.Syslog.rsyslog.secret
    Após implementado, verifiquei meu banco de dados e vi que ele já estava gravando os logs no MySQL, como demonstra a figura abaixo:



    Não é a solução definitiva do problema, principalmente quanto ao armazenamento, mas facilita e muito a procura por algum log específico dentro do servidor de logs.

    Fonte: Linux Magazine: n° 43 - junho/08, pg 10
    Creditos: Mauricio Vieira Gomes da Silva
X
Working...
X