Logstash + Redis + Elasticsearch + Kibana - Gerenciando logs

O Logstash é um sistema para gerenciamento e agregação de logs. Neste artigo, veremos como configurar o Logstash para coletar, processar e armazenar logs e como configurar uma interface Web para visualizar e analisar os logs. Este roteiro irá mostrar também, como montar um ambiente para centralizar logs de diversos servidores.

[ Hits: 40.395 ]

Por: Luiz Augusto Amelotti em 10/09/2012


Introdução



O Logstash é um sistema para gerenciamento e agregação de logs.

Com ele, podemos coletar logs, aplicar filtros e tratar as mensagens e armazenar para uso posterior, como visualização, estatística e alertas.

Você consegue agregar logs de diferentes máquinas e aplicações em um ponto central e ver diversas informações relacionadas através de uma interface Web.

O site do logstash é: http://logstash.net

Preparando o ambiente

Neste roteiro, iremos usar uma série de ferramentas, por isso, criaremos uma pasta que conterá todas as informações relacionadas, como arquivos de configuração, executáveis, logs e arquivos de dados.

Mas esta configuração não é obrigatória, e você pode armazenar as configurações no /etc, os logs no /var/log e os executáveis no /usr/bin, ou em qualquer outro lugar.

Amazon AWS

Neste roteiro, usei uma instância EC2 da Amazon Web Services. Neste caso, usei um disco efêmero para armazenar os dados e uma instância spot. Dessa forma, é fundamental ter um meio de fazer o backup dos dados armazenados.

Dessa forma, crie uma pasta para armazenar todos os componentes da solução. No caso, eu criei a pasta /opt/monitor - onde está montada uma partição de um disco efêmero.

Logstash

Crie também uma pasta para conter os dados do Logstash. Eu criei as pastas /opt/monitor/logstash/{bin,conf,log}.

Dependências

Como o Logstash é uma aplicação Java, é necessário instalar o JDK. Eu usei o OpenJDK6, disponível no repositório do Ubuntu - o nome do pacote é: openjdk-6-jdk

Faça o download do Logstash, disponível em:
Visite a página do Logstash, e verifique a versão mais recente, na pasta /opt/monitor/logstash/bin.

Antes de colocar a solução para funcionar de fato, podemos fazer um pequeno e rápido teste, para ver o Logstash funcionando e entender sua configuração.

Para este teste, podemos usar uma versão embutida no próprio pacote do Logstasg do elasticsearch. Também iremos usar a interface Web do próprio Logstash.

Abra uma janela do terminal, e crie um arquivo chamado "config1.conf" na pasta /opt/monitor/logstash/conf e inclua as linhas abaixo:

input { sdtin { type => "entrada" } }
output { tcp { host => "localhost" port => 8080 } }


O arquivo de configuração do Logstash resume-se a três sessões: input, filter e output.

Na sessão input, configuramos o ponto de entrada das mensagens. Nesse caso, iremos usar a entrada padrão. Mas é possível configurar várias outras, entre elas Syslog, arquivo, conexões TCP/UDP, AMQP, event log do Windows, inclusive, múltiplas entradas diferentes.

Na sessão filter - que iremos usar mais tarde - definimos uma série de filtros e operações que serão aplicados às mensagens.

E a última sessão é a configuração da saída dos dados. Nessa sessão, pode-se configurar para imprimir as mensagens na saída padrão, enviar para outra aplicação através de uma série de protocolos, imprimir em arquivo, etc.

No caso deste primeiro teste, o input é a entrada padrão e a saída será uma conexão TCP, na porta 8080. Por enquanto, não aplicaremos nenhum filtro. Para receber a conexão TCP, iremos usar o Netcat.

Inicie o Logstash com o comando abaixo (neste caso, foi usada a versão 1.1.1, mude o comando de acordo com a versão e o nome do arquivo baixado):

# java -jar logstash-1.1.1-monolithic.jar agent -f ../conf/config1.conf

O programa demora alguns segundos para iniciar. Abra uma outra janela do terminal e execute o Netcat, na porta 8080:

# nc -l 8080

Depois disso, digite qualquer coisa no terminal onde está rodando o Logstash e veja que a saída será impressa em seguida, no Netcat.

Exemplo:

# java -jar logstash-1.1.1-monolithic.jar agent -f ../conf/config.conf
teste
esse é o Logstash em acao


Saída do Netcat:

# nc -l 8080
{"@source":"stdin://logstash/","@type":"stdin-type","@tags":[],"@fields":{},"@timestamp":"2012-08-31T18:57:49.021000Z","@source_host":"logstash","@source_path":"/","@message":"teste"}
{"@source":"stdin://logstash/","@type":"stdin-type","@tags":[],"@fields":{},"@timestamp":"2012-08-31T18:59:37.420000Z","@source_host":"logstash","@source_path":"/","@message":"esse eh o logstash em acao"}


Você pode alterar o arquivo de configuração para enviar as mensagens para um arquivo de texto, para a saída padrão, ou qualquer outra saída suportada pelo Logstash.

Agora, vamos armazenar as mensagens coletadas e tratadas pelo Logstash, para consulta através da interface Web.

A engine de armazenamento recomendada, e que iremos utilizar, é o elasticsearch. Para este teste, iremos usar uma versão dele que vem embutida no próprio Logstash, assim, como a interface Web, também embutida no Logstash.

Assim, crie um arquivo /opt/monitor/logstash/conf/config2.conf, com o seguinte conteúdo:

input { stdin { type => "stdin-type"}}
output { elasticsearch { embedded => true } }


Se ainda não tiver feito, pare o Logstash que iniciamos (pode parar o Netcat também) e reinicie com o comando abaixo, alterando o arquivo de configuração usado.

Dessa vez, também vamos iniciar a interface Web que também vem embutida no Logstash:

# java -jar logstash-1.1.1-monolithic.jar agent -f ../conf/config2.conf -- web --backend elasticsearch:///?local

Dessa vez, ele deve demorar um pouco mais a iniciar, pois o Logstash precisa extrair o conteúdo do arquivo "jar" e iniciar uma instância do elasticsearch.

Abra o browser e acesse a máquina na porta 9292 (por exemplo: http://logstash:9292/) para visualizar a interface Web.

Clique no link disponível na frase: "No query given. How about this?"

Uma mensagem de erro será exibida, pois não há nenhuma mensagem armazenada no elasticsearcg ainda. Digite algumas linhas no console do Logstash e atualize a página Web. Você será capaz de visualizar as mensagens que você digitou.

Clicando em uma das mensagens, é exibida uma caixa com alguns metadados da mensagem. É possível definir filtros de busca clicando nos valores dos metadados.

Digite várias mensagens iguais, e tente filtrar pelo conteúdo, por exemplo, usando a expressão: @message:"teste1" no campo: Query

    Próxima página

Páginas do artigo
   1. Introdução
   2. Ambiente distribuído
   3. Coletando e processando logs
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Falta de padronização no Linux

Mensageiro instantâneo

Padrões Abertos e Interoperabilidade na Geotecnologia

Ripando CDs de audio no Debian e derivados

Rede de telefonia móvel e a popularização da internet

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts