Elastic Stack - 6 ferramentas e 1 curiosidade
Published: 2020-01-31 02:22:11

O **Elastic Stack** é a suíte de ferramentas open source da **Elastic**, que tem como foco principal a busca e visualizaçāo de dados em near real time. Um frase bem comum nas apresentações da empresa é: onde tiver dados, você pode usar o Elastic.

Se você leu meu artigo anterior já viu que o Elastic Stack tem muitos casos de uso, e inclusive apresentei um deles. Agora vamos conhecer os principais componentes do “stack”:

**Elasticsearch**: é um mecanismo de pesquisa e análise RESTful, responsável pelo armazenamento e busca dos dados. Com muitos casos de uso, ele é o coração do Elastic Stack! Olha em quantos projetos você pode usar Elasticsearch: Aplicações de busca diversas como websites e aplicativos, logging e análise de logs, métricas de infraestrutura e monitoramento de containers, APM, análise e visualização de dados geoespacial, análise de segurança e de negócios.
    
**Kibana**: É uma poderosa ferramenta de visualização de informações e gerenciamento do seu ambiente Elastic. É possível usar até Canva no Kibana, demais né? Para uma lista completa de funcionalidades, acesse: [https://www.elastic.co/pt/kibana/features](https://www.elastic.co/pt/kibana/features)
 
**Logstash**: É pipeline de ingestāo de dados, viabilizando a coleta, transformação e armazenamento dos dados de qualquer fonte, tamanho e origem. Com o Logstash você pode fazer, por exemplo um ETL dos dados ou usar os filtros existentes para processar seus eventos dependendo da sua caracteristica.

**Beats**: é a família de agentes de dados, onde é possível enviar dados de centenas ou milhares de máquinas e sistemas para o Logstash ou Elasticsearch diretamente. Abaixo vamos falar dos 7 Beats que compõe essa família e a aplicação deles:

- **Filebeat** é a sua visão dos Logs, ou um agente cujo objetivo é coletar dados de arquivos de logs. Isso é extremamente útil principalmente em ambientes robustos com muitas máquinas virtuais ou containers, pois você pode de uma maneira muito simples ,centralizar todos esses logs no Elasticserach através do uso do Filebeat.

- **Metricbeat** é a sua visão das métricas. É um agente que coleta métricas de sistemas e dados de recursos como CPU, disco, memória, resoluçāo de DNS e muito mais são em seguida esses dados sāo enviados para o Elasticsearch e podem ser visualizados no Kibana. Atualmente o Metricbeat possui 48 módulos, incluindo módulos para MongoDB, Kubernetes, Redis, etc. Bem útil não?

- **Packetbeat** é a sua visão do monitoramento de rede. Com esse agente é possível coletar, pesquisar e analisar seu tráfego de redes. Ele também é uma biblioteca onde você pode escolher um protocolo ou criar a sua aplicação. Isso faz com que seu troubleshoot de rede suba vários níveis!

- **Winlogbeat** é a sua visão dos Logs do Windows, ele trás os mesmo benefícios do Filebeat só para que o sistema operacional Windows. Colete, pesquise e analise os eventos do Windows de forma muita mais fácil e prática.

- **Auditbeat** é a sua visão de auditoria, permitindo monitorar e auditar as atividades de usuários e processos no seu ambiente Linux. Esse agente possui uma série de regras de autoria já prontas para você utilizar. Outro ponto de destaque é a função de File Integrity Monitor, muito útil para quem tem ambientes com certificação PCI-DSS pois esse é um dos requisitos obrigatórios da norma.

- **Heartbeat** é a sua visão de monitoramento de serviços. Com esse agente é possível monitorar URLs, criando health checks com vários protocolos como ICMP, TCP e HTTP. Uma das maiores dificuldades no monitoramento de aplicações com alta disponibilidade distribuídas em vários servidores é que a maioria das ferramentas se limita em consultar um endpoint, e o load-balancer envia a resposta do servidor que foi responsável por aquela requisição apenas. Com o Heartbeat você tem o monitoramento da aplicação em cada host, sendo possível identificar qual servidor está com a aplicação quebrada, por exemplo. Você ainda pode adicionar ou remover de forma automatizada o monitoramento de um serviço ou aplicação.

- **Functionbeat** é a sua visão de dados da Cloud (AWS). Com uma arquitetura serveless você pode fazer a ingestão dos Logs do CloudWatch, dos eventos do Kineses e SQS no seu Elasticsearch. Coletar, enviar, monitorar os dados dos seus serviços de Cloud de forma muito simples.

**APM**: O Application Performance Monitoring tem como objetivo monitorar todas as chamadas da sua aplicaçāo como já foi falado anteriormente, o foco dele é dar visibilidade de todo o fluxo de requisições, pois com isso, você pode identificar facilmente vários gargalos e resolver a causa raiz de inúmeros problemas, além de também ter visāo da experiência do usuário.
Atualmente o Elastic APM possui 7 agentes (Java, Go, Node.js, Python, Ruby, .NET e Real User Monitoring (RUM)) e diferente de várias outras soluções de mercado, esses agentes são instrumentados diretamente na aplicação, o que torna o processo de configuraçāo mais prático e seguro.

**SIEM**: É uma ferramenta de gerenciamento e correlação de eventos de segurança lançada recentemente aproveitando know-how da Elastic em armazenamento e busca de dados. Toda a ingestão, tratamento, análise e correlação dos logs e eventos de forma simplificada e rápida, gerando alertas a partir de regras de correlação criadas por você ou pré existentes. Além disso é usado machine learning com modelos para identificação de anomalias que podem tornar-se ameaças ao seu ambiente.
 
**Vamos a curiosidade?**

Você sabe porque o Elasticsearch foi criado? Shay Banon era um desenvolvedor desempregado e recém casado que acompanhou sua esposa em Londres onde ela estudava na escola Le Cordon Bleu para ser Chef de cozinha (très chic!). Enquanto ele procurava emprego, começou a brincar com uma versão recente de Apache Lucene com a intenção de construir um motor de busca de receitas para a sua esposa.  
Trabalhar diretamente com Apache Lucene pode ser complicado, então Shay começou a trabalhar em uma abstração para facilitar os programadores Java adicionarem pesquisa a seus aplicativos. Esse foi seu primeiro projeto de código aberto chamado Compass.
Mais tarde, Shay conseguiu um emprego trabalhando em um ambiente distribuído de alto desempenho com data-grids em memória. A necessidade de uma pesquisa distribuída de alto desempenho em tempo real era óbvia e ele decidiu reescrever as bibliotecas do Compass como um servidor autonômo chamado Elasticsearch.
O primeiro lançamento público foi em fevereiro de 2010. Desde então, o Elasticsearch se tornou um dos projetos mais populares no GitHub com milhares de colaboradores.  
A Elastic é uma companhia open-source e se você tiver curiosidade sobre o modelo de negócios dele, recomendo fortemente esse link: https://www.elastic.co/about/history-of-elasticsearch.

Nosso próximo artigo será sobre arquitetura do Elastic Stack.