-
Notifications
You must be signed in to change notification settings - Fork 3
01 ‐ Introdução ao Elastic Stack
O Elastic Stack, anteriormente conhecido como ELK Stack, é um conjunto de ferramentas criado pela empresa Elastic que, usadas em conjunto, formam uma plataforma completa para buscar, analisar e visualizar grandes volumes de dados. Ao longo dos anos, a stack foi crescendo em produtos e casos de uso, e segue em constante evolução — com foco cada vez maior em inteligência artificial e busca semântica.
O Elasticsearch teve um início bem diferente do que se imagina. Sua história começa com Shay Banon, um desenvolvedor que queria ajudar a esposa a encontrar receitas culinárias.
O início
Por volta de 2004, Shay Banon estava em Londres acompanhando sua esposa, que estudava culinária. Para facilitar a busca nas receitas que ela colecionava, ele construiu um sistema usando o Apache Lucene — uma biblioteca de busca em texto escrita em Java, já consolidada na época. O resultado foi o Compass, uma ferramenta de busca que funcionava bem, mas tinha dificuldades para crescer: era difícil distribuir os dados entre múltiplos servidores e lidar com grandes volumes.
Anos depois, Banon reescreveu o projeto do zero. Em fevereiro de 2010, lançou publicamente o Elasticsearch — distribuído, com API REST e dados no formato JSON. Em duas semanas, o projeto estava sendo usado em mais de 100 países.
O nascimento da empresa
Em 2012, o Elasticsearch já tinha uma comunidade ativa e era usado em produção em muitas empresas. Em 2014, Shay Banon, junto com mais três sócios, fundou oficialmente a Elastic NV. Nesse mesmo ano, o Logstash e o Kibana — ferramentas criadas de forma independente por outros desenvolvedores — passaram a integrar o portfólio oficial, formando o que ficou conhecido como ELK Stack (Elasticsearch, Logstash, Kibana).
Em 2018, a Elastic abriu capital na bolsa de valores americana (NYSE), levantando cerca de 252 milhões de dólares.
Por que o Elasticsearch cresceu tão rápido?
Alguns fatores explicam a adoção rápida:
- API REST: qualquer linguagem de programação consegue se comunicar com o Elasticsearch usando requisições HTTP comuns. Não é necessário aprender um SDK proprietário.
- Dados no formato JSON: formato amplamente conhecido por desenvolvedores, sem necessidade de definir uma estrutura rígida antes de começar.
- Distribuição nativa: o Elasticsearch foi pensado desde o início para funcionar em múltiplos servidores ao mesmo tempo, dividindo os dados e as consultas entre eles.
- Comunidade ativa: por ser um projeto de código aberto, muitos desenvolvedores contribuíram com melhorias, plugins e integrações.
Onde o Elasticsearch é usado
O Elasticsearch aparece em cenários muito diferentes:
- TI e operações: centralização de logs de servidores, monitoramento de infraestrutura, análise de segurança (SIEM)
- Finanças: detecção de fraudes, análise de risco, auditoria
- Varejo e e-commerce: busca de produtos em lojas virtuais, personalização de experiências
- Saúde: análise de dados clínicos, pesquisa médica
- Inteligência artificial: armazenamento e busca de dados gerados por modelos de linguagem (como em aplicações que usam ChatGPT ou similares)
Linha do tempo de versões
| Versão | Ano | O que trouxe de mais relevante |
|---|---|---|
| 1.x | 2014 | Primeira versão estável com suporte a cluster e API consolidada |
| 2.x | 2015 | Melhorias de performance e estabilidade |
| 5.x | 2016 | Elasticsearch, Kibana, Logstash e Beats passam a ter o mesmo número de versão |
| 6.x | 2017 | Simplificação do modelo de dados e melhorias de segurança |
| 7.x | 2019 | Segurança básica disponível gratuitamente, melhorias no algoritmo interno de eleição do nó líder do cluster |
| 8.x | 2022 | Segurança ativada por padrão em toda instalação nova, suporte nativo a busca vetorial |
| 9.0 | 2025 | Migração para Lucene 10, recursos de IA mais avançados, busca semântica como funcionalidade nativa |
| 9.4 | 2026 | Versão atual. Melhorias em automação e suporte a Prometheus |
Referência oficial: elastic.co/docs/release-notes
O que mudou do 8.x para o 9.x
Para quem já conhecia versões anteriores, os pontos mais importantes da versão 9.x são:
- Segurança já vinha ativada por padrão desde o 8.0, e isso continua no 9.x. Em instalações novas, o cluster já sobe com autenticação e comunicação criptografada configuradas automaticamente.
- Busca semântica: capacidade de encontrar documentos por significado, não apenas por palavras exatas. Útil em aplicações de inteligência artificial.
- Behavioral Analytics foi descontinuado no 9.0 e será removido em versão futura.
Criado por Shay Banon em 2010. Como descrito acima, surgiu da necessidade de construir uma ferramenta de busca melhor do que as existentes na época.
Criado por Jordan Sissel em 2009 como projeto pessoal para facilitar o trabalho com arquivos de log. O Logstash coleta dados de diversas fontes, transforma e envia para o Elasticsearch. Surgiu de forma independente, mas a combinação com o Elasticsearch e o Kibana formou a base do que seria chamado de ELK Stack.
Criado por Rashid Khan em 2013. O objetivo inicial era simples: oferecer uma interface visual para explorar os dados armazenados no Elasticsearch. O projeto evoluiu e se tornou a principal interface de gerenciamento e análise de toda a stack.
A Elastic NV foi fundada em 2014 por quatro pessoas:
- Shay Banon — criador do Elasticsearch, atuou como CTO da empresa.
- Steven Schuurman — primeiro CEO da Elastic, responsável pela estratégia de negócios e crescimento inicial.
- Uri Boness — contribuiu para o desenvolvimento técnico e formação da empresa.
- Simon Willnauer — especialista em tecnologia de busca, um dos principais contribuidores do Apache Lucene, trouxe profundidade técnica ao projeto.
Elasticsearch é o núcleo da stack: um mecanismo de busca e análise distribuído. Ele armazena dados no formato JSON, indexa os documentos automaticamente e oferece uma API REST para buscar, inserir, atualizar e deletar dados. Por ser distribuído, os dados são divididos entre múltiplos servidores, o que permite crescer a capacidade simplesmente adicionando mais máquinas ao cluster.
A partir da versão 9.x, o Elasticsearch também funciona como banco de dados vetorial, suportando busca semântica nativamente — sem necessidade de ferramentas externas.
Kibana é a interface gráfica do Elastic Stack. Através do navegador, é possível explorar dados, criar gráficos, montar dashboards e gerenciar toda a stack — incluindo configurações de segurança, políticas de retenção de dados e monitoramento do cluster.
Beats são programas leves instalados diretamente nos servidores para coletar dados e enviá-los ao Elasticsearch. Cada tipo de Beat é focado em um tipo de dado específico:
| Beat | Para que serve |
|---|---|
| Filebeat | Coleta logs de arquivos e serviços |
| Metricbeat | Coleta métricas de sistema (CPU, memória, disco) e serviços como Nginx e MySQL |
| Packetbeat | Monitora o tráfego de rede |
| Auditbeat | Coleta eventos de auditoria do sistema operacional |
| Winlogbeat | Coleta logs de eventos do Windows |
| Heartbeat | Verifica se serviços estão disponíveis (monitoramento de uptime) |
Nota: o Elastic Agent é a alternativa mais moderna aos Beats individuais. Com uma única instalação, ele substitui vários Beats e é gerenciado centralmente pelo Kibana. Em novas implementações com Elasticsearch 9.x, o Elastic Agent é a opção recomendada.
Logstash é uma ferramenta de processamento de dados. Ele recebe dados de diversas fontes, aplica transformações — como extrair campos de um texto de log, converter formatos de data ou adicionar informações de geolocalização — e envia o resultado para o Elasticsearch. É mais pesado que os Beats, mas muito mais poderoso quando o dado precisa ser transformado antes de ser indexado.
O Elastic Agent é o agente unificado da Elastic: uma única instalação substitui múltiplos Beats e centraliza a coleta de logs, métricas e dados de segurança. Todas as integrações e configurações são gerenciadas pelo Fleet, uma interface dentro do Kibana. Em implementações novas com Elasticsearch 9.x, o Elastic Agent é o caminho recomendado.
Elastic Observability é a solução da Elastic para monitorar aplicações e infraestrutura. Reúne em um único lugar três tipos de dados essenciais para diagnóstico de problemas: logs (registros de eventos), métricas (dados de desempenho como CPU e memória) e traces (o caminho que uma requisição percorre dentro de uma aplicação). Na versão 9.x, a Elastic passou a adotar o padrão aberto OpenTelemetry como forma de coletar esses dados, o que facilita a integração com outras ferramentas do mercado.
Elastic Security é a plataforma de segurança da Elastic. Funciona como um SIEM (sistema de monitoramento e análise de eventos de segurança), centralizando logs de firewalls, servidores, endpoints e outros sistemas para detectar e investigar ameaças. Inclui regras de detecção baseadas em padrões conhecidos de ataque e, na versão 9.x, passou a contar com recursos de inteligência artificial para ajudar analistas a priorizar alertas automaticamente.
Elastic Cloud Enterprise permite instalar e gerenciar o Elastic Stack na infraestrutura da própria organização — seja em servidores físicos, em máquinas virtuais ou em uma nuvem privada — com o mesmo nível de automação de um serviço gerenciado. Através de uma interface central, é possível criar, configurar, escalar e monitorar múltiplos clusters.
Elastic Cloud on Kubernetes é a solução oficial da Elastic para quem usa Kubernetes — uma plataforma amplamente adotada para gerenciar aplicações em contêineres. O ECK automatiza a instalação, atualização e configuração do Elastic Stack dentro de ambientes Kubernetes.
Historicamente, o Elasticsearch e o Kibana foram distribuídos sob a licença Apache 2.0 — uma das licenças de código aberto mais permissivas, que permite usar, modificar e redistribuir o software praticamente sem restrições.
Em janeiro de 2021, a Elastic alterou a licença do Elasticsearch e do Kibana. O motivo principal foi a AWS: desde 2015, a Amazon oferecia o Amazon Elasticsearch Service — um serviço pago baseado no Elasticsearch — sem contribuir com o desenvolvimento do projeto. A Elastic entendia que isso era injusto e insustentável.
A nova licença, chamada Elastic License v2 (ELv2), mantém a liberdade de uso para a grande maioria dos casos: você pode usar, modificar e distribuir o software. A única restrição relevante é que você não pode oferecer o Elasticsearch como um serviço pago para terceiros sem um acordo com a Elastic.
Para desenvolvedores, engenheiros e empresas que usam o Elasticsearch internamente ou para implementar soluções para clientes, essa mudança não tem impacto nenhum.
Em agosto de 2024, a Elastic anunciou que o Elasticsearch e o Kibana voltariam a ser distribuídos também sob a licença Apache 2.0, em paralelo à Elastic License v2. Os usuários podem escolher qual licença usar. Essa decisão foi tomada para reaproximar a Elastic da comunidade open source.
Quando a Elastic mudou a licença em 2021, a AWS criou o OpenSearch: uma versão alternativa do Elasticsearch baseada no código da versão 7.10.2 (a última sob Apache 2.0 antes da mudança), mantida pela AWS e pela comunidade. O OpenSearch continua sendo uma alternativa real, especialmente em ambientes AWS.
| Subscrição | Modelo | O que inclui |
|---|---|---|
| Free & Open | Instalação própria, gratuito | Funcionalidades principais do Elastic Stack, segurança completa, alertas, dashboards |
| Elastic Cloud | Serviço gerenciado pela Elastic | Todos os recursos Enterprise + suporte, atualizações automáticas e SLA garantido |
| Enterprise | Licença para instalação própria ou cloud privada | Machine Learning avançado, Elastic Security completo, suporte dedicado |
Referência oficial: elastic.co/subscriptions
Esta seção apresenta o vocabulário básico do Elasticsearch. Os conceitos aqui são introdutórios — cada um deles será aprofundado nas seções seguintes.
Um documento é a unidade básica de dado no Elasticsearch. É armazenado no formato JSON e equivale, de forma simplificada, a uma linha em uma tabela de banco de dados relacional.
{
"_id": "1",
"host": "web-server-01",
"status": 200,
"method": "GET",
"url": "/api/produtos",
"response_time_ms": 43,
"@timestamp": "2026-05-01T10:32:00Z"
}Cada documento pertence a um índice e possui um identificador único (_id), que pode ser definido na hora de inserir o dado ou gerado automaticamente pelo Elasticsearch.
Um índice é um agrupamento de documentos com características semelhantes — por exemplo, todos os logs de um sistema, ou todos os registros de pedidos de uma loja. O índice é identificado por um nome em letras minúsculas e é a referência usada nas operações de busca e análise.
A comparação detalhada entre índices do Elasticsearch e tabelas de banco de dados relacional está na Seção 2.
O Elasticsearch oferece três formas principais de busca, que podem ser usadas em conjunto:
- Busca por texto (full-text search): encontra documentos que contêm determinadas palavras, ordenando os resultados por relevância. Ideal para campos descritivos, mensagens de log ou qualquer conteúdo textual.
-
Busca exata (filtro): retorna documentos que atendem a uma condição precisa — por exemplo,
status = 200ou datas dentro de um intervalo. Não calcula relevância, apenas inclui ou exclui o documento. É mais rápida e o resultado fica em cache. - Busca semântica: encontra documentos com base no significado, não nas palavras exatas. Por exemplo, buscar por "problema de conexão" pode retornar documentos que falam em "falha de rede" ou "timeout", mesmo sem usar as mesmas palavras. Esse tipo de busca depende de modelos de inteligência artificial e está disponível de forma nativa no Elasticsearch 9.x.
Agregações são operações que resumem e analisam conjuntos de dados diretamente no Elasticsearch. O equivalente mais próximo no SQL seria GROUP BY combinado com funções como COUNT, AVG e SUM.
Existem dois tipos principais:
| Tipo | O que faz | Exemplos |
|---|---|---|
| Bucket | Agrupa documentos em categorias | Agrupar por dia, por status HTTP, por país de origem |
| Metric | Calcula um valor sobre um grupo de documentos | Média de tempo de resposta, total de erros, valor máximo |
As agregações podem ser combinadas: por exemplo, agrupar os dados por dia e calcular a média de tempo de resposta dentro de cada dia.
O Elasticsearch foi projetado para funcionar em múltiplos servidores desde o início. Dois conceitos são centrais para isso:
Sharding: um índice pode ser dividido em partes menores chamadas shards. Cada shard pode ficar em um servidor diferente, o que permite distribuir tanto o armazenamento quanto o processamento das consultas. Quanto mais shards, mais o trabalho é paralelizado.
Replicação: cada shard pode ter cópias em outros servidores, chamadas réplicas. Se um servidor falhar, as réplicas garantem que os dados continuem acessíveis e que o cluster permaneça funcionando sem perda de dados.
Escalar horizontalmente significa que, quando o cluster precisa de mais capacidade, basta adicionar novos servidores. O Elasticsearch redistribui os shards automaticamente, sem precisar parar o serviço.
Sharding, replicação, tipos de servidores no cluster e estratégias de alocação são abordados em detalhe na Seção 4.