Não se afoguem mais em uma tonelada de Logs, ELK te salva! (Real-time)

Hoje em dia a análise de Big Data é cada vez mais importante por uma série de fatores, um deles é a tomada de decisão sobre o que fazer com determinado produto, serviço ou aplicação e, por conta disso, quem não faz análise de seus logs acaba ficando para trás. Isso é válido para empresas, Sysadmins, engenheiros, e principalmente a galera DevOps. Com base nesta questão, este artigo mostra uma das muitas formas de fazer isso, utilizando de tecnologias como: ELK, Docker e outras ferramentas essenciais para uma Infraestrutura Ágil, tudo isso em Real-time.

[ Hits: 18.190 ]

Por: Uriel Ricardo em 18/10/2016


Entendendo e configurando o Elk



Nossa arquitetura será simples, O Logstash vai receber o log, vai parsear, e enviar ao Elasticsearch, ele vai indexar e mostrar graficamente no Kibana que vai devolver o dado já tratado em tela! Na configuração que faremos além da pilha ELK, utilizaremos o Filebeat, o filebeat vai ser um container que vai pegar os logs (no nosso caso vamos coletar um arquivo ".csv") e enviar para o logstash, e assim seguindo o fluxo abaixo:
Linux: Não se afoguem mais em uma tonelada de Logs, ELK te salva!(Real-time)
Para começar, vamos definir um diretório onde ficarão nossos logs.

No meu caso, irei colocar o arquivo.csv no diretório: /CSV

Neste diretório vou injetar um arquivo qualquer, se preferir pode colocar uma aplicação web, como por exemplo um Wordpress, e analisar os logs de erro ou até mesmo de acesso!

Para prosseguirmos, lhe aconselho a clonar meu repositório:

# git clone https://UrielRicardo@bitbucket.org/UrielRicardo/docker-elk.git

Para começar vamos no arquivo de orquestração da nossa aplicação, abra o arquivo: docker-compose.yml

Você vai ver algo assim:
Linux: Não se afoguem mais em uma tonelada de Logs, ELK te salva!(Real-time)
Calma, eu vou explicar!

Da linha 1 até a linha 8, estamos configurando o serviço do Elasticsearch, ele é o servidor que vai armazenar todos esses logs, no caso estou utilizando de imagens prontas, esta está na versão 2.3, já estamos utilizando na versão 5.0.0-alpha, que é quase a mesma configuração!

Na linha 5, estamos "subindo" uma rede para conectar estes serviços!

Mais abaixo estamos expondo as portas 9200 e 9300.

Da linha 9 até a 14 estamos subindo o serviço do Kibana, onde estamos expondo a porta 5601, e definindo o "depends_on" para o Elasticsearch, isso nos garante que ele vai subir, só depois que o serviço do Elasticsearch subir.

Da linha 15 até a 24, estamos subindo o serviço do logstash, nele você pode notar que estamos passando o parâmetro "command: logstash -f /etc/logstash/conf.d/logstash.conf", este parâmetro está dizendo qual arquivo ele vai usar como configuração dentro do próprio container! Isso junto do parâmetro "Volumes" que nos permite sincronizar arquivos que estão em nosso host para dentro do container. Com as portas : "5000 e 5044" expostas ( a 5044 não está na imagem mas pode declarar) ele, assim como o Kibana, sobe só depois do Elasticsearch!

E por fim, das linhas 25 até a 31, estamos declarando o serviço do Filebeat que será usado para enviar os dados para nosso Logstash, estou usando assim por conta de ele me permitir envios remotos, seja via Linux ou Windows. Porém quem preferir pode descartar o uso dele e pegar os dados diretamente pelo Logstash. Nesta parte é onde eu declaro que o diretório que eu criei no host, o "/CSV" vai ser o meu "/var/log/" dentro do container! O mesmo faço para passar o arquivo de configuração do serviço!

Na próxima página iremos configurar o arquivo de configuração do Filebeat que vai nos permitir decidir quais dados serão enviados para o logstash.

Página anterior     Próxima página

Páginas do artigo
   1. ELK + Docker
   2. Entendendo e configurando o Elk
   3. Configurando o Filebeat.yml
   4. Configurando o Logstash.conf
   5. Acessando Kibana e analisando meu dados (Real-time)
Outros artigos deste autor

Projeto Sharingan

Leitura recomendada

Instalando o Cacti via APT no Debian Etch

Avidemux - Corrigindo arquivos com "crash"

Usando o filtro Blur do Inkscape

O desenvolvimento da computação gráfica associado ao dos vídeo games

Inkscape descomplicado - Parte II

  
Comentários
[1] Comentário enviado por FelipeCoutinhoS em 19/10/2016 - 00:09h

Parabéns pelo artigo, muito bem explicado! Achei você bem detalhista, lhe encontrei no LinkedIn, por acaso teria interesse em palestrar sobre isso na GDG DevFest em são Paulo?
E quanto ao artigo, teria este material em PDF?

[2] Comentário enviado por cesar.dba em 20/10/2016 - 08:29h

Fantastico!
Especialista em Banco de Dados

[3] Comentário enviado por UrielRicardo em 21/10/2016 - 09:15h


[1] Comentário enviado por FelipeCoutinhoS em 19/10/2016 - 00:09h

Parabéns pelo artigo, muito bem explicado! Achei você bem detalhista, lhe encontrei no LinkedIn, por acaso teria interesse em palestrar sobre isso na GDG DevFest em são Paulo?
E quanto ao artigo, teria este material em PDF?


Olá Amigo, tudo bem? Lhe respondi na mensagem privada que me enviou, agradeço pelo feedback! Quanto ao pdf enviei para seu e-mail em anexo!

[4] Comentário enviado por UrielRicardo em 21/10/2016 - 09:15h


[2] Comentário enviado por cesar.dba em 20/10/2016 - 08:29h

Fantastico!
Especialista em Banco de Dados


Muito Obrigado pelo FeedBack =)

[5] Comentário enviado por removido em 03/11/2016 - 09:22h

Assunto bem interessante. Obrigado pelo excelente artigo!

[6] Comentário enviado por UrielRicardo em 03/11/2016 - 09:32h


[5] Comentário enviado por eddye00 em 03/11/2016 - 09:22h

Assunto bem interessante. Obrigado pelo excelente artigo!


Eu que lhe agradeço, muito obrigador por ler meu artigo!

[7] Comentário enviado por cesar.dba em 03/11/2016 - 10:16h

Amigo bom dia,
Poderia me enviar em pdf o artigo por e-mail?!
Especialista em Banco de Dados

[8] Comentário enviado por lestatwa em 10/11/2016 - 13:51h

Primeiramente você deve se preocupar em responder: o que é big data? Uma base grande? Grande quanto? Qual o maior gargalo em analisar big data? Como é feita a paralelização das análises?
Quando você conseguir responder estas perguntas, vai entender que não existe sentido em chamar logs gerados por um servidor de big data tal como não existe maneira de analisar uma base realmente grande em um único servidor. A maioria dos métodos de analise supõe que exista um driver (servidor ou pc aonde o código da análise é escrito) e vários workers (outros servidores que fazem a análise em paralelo). Métodos baseados no haboop tem um gargalo enorme (fora o problema da linguagem, só se pode usar Java), visto que existe muita leitura e escrita nos discos. Já frameworks mais novos, como o Apache Spark colocam toda a base a ser analisada em cache na memoria RAM, tornando as análizes até 100x mais rápidas que via hadoop. Além disto pode ser programado em Python, Scala, Java e R. Enfim, estou ilustrando este senário pois vejo muitos cursos de pós-graduação se propondo a abordar big data, porém o fazem de maneira totalmente equivocada, dando a impressão que qualquer base "grande" é big data.
Sei que seu propósito era apenas abordar alguns tools, porém gostaria de contribuir com estas reflexões.

[9] Comentário enviado por iranmeneses em 05/05/2017 - 11:25h

Bom dia. Nobre amigo sigo todo o tutorial, mas não estou conseguindo encontrar esse comando docker-compose up -d. Poderia me ajudar? Fico no aguardo. Grato.

[10] Comentário enviado por UrielRicardo em 09/05/2017 - 13:21h


[9] Comentário enviado por iranmeneses em 05/05/2017 - 11:25h

Bom dia. Nobre amigo sigo todo o tutorial, mas não estou conseguindo encontrar esse comando docker-compose up -d. Poderia me ajudar? Fico no aguardo. Grato.


Tudo bem? você chegou a instalar o docker compose???


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts