Este repositório é um guia prático para quem deseja aprender Elasticsearch simulando um cenário real de monitoramento de infraestrutura de TI.
A proposta é simples: aprender na prática como usar Elasticsearch e Kibana com dados realistas, tudo com scripts prontos, pipelines e explicações claras.
Simular o monitoramento de servidores de uma empresa, com dados como:
- Nome do host
- Tipo de serviço
- Status do sistema (
online,warning,offline) - Uso de CPU e memória (%)
- Timestamps realistas distribuídos em agosto/2025
Antes de começar, garanta que possui instalado em sua máquina:
- Git → usado para clonar o repositório.
git --version
- Docker + Docker Compose → usados para subir Elasticsearch, Kibana e Logstash.
docker --version docker compose version
- Requisitos mínimos de hardware → 2 CPUs, 4 GB de RAM e ~5 GB de disco livre.
💡 No Windows, use Docker Desktop com WSL2.
💡 No Linux, instale o Docker Engine e habilite o serviço.
| Pasta | Conteúdo |
|---|---|
01-instalacao/ |
Subida do Elasticsearch e Kibana com Docker |
02-indexacao-basica/ |
Criação do índice infra-hosts e ingestão de 10.000 documentos |
03-buscas-simples/ |
Consultas básicas com match, range e bool |
04-filtros-e-analise/ |
Filtros booleanos e análises textuais |
05-visualizacao-kibana/ |
Criação de dashboards no Kibana |
docs/ |
Guia rápido e desafio prático final |
git clone https://github.com/rafasilva1984/elasticsearch-na-pratica.git
cd elasticsearch-na-praticacd 01-instalacao
docker compose up -dAcesse:
- Elasticsearch → http://localhost:9200
- Kibana → http://localhost:5601
docker-compose v2+, a chave version: é opcional e pode ser removida dos YAMLs.
Agora você pode escolher duas formas de ingestão:
cd ../02-indexacao-basica
chmod +x ingestar-bulk.sh
./ingestar-bulk.shEsse script:
- Cria o índice
infra-hostscom mappings básicos - Desliga
refresh_intervaldurante o bulk - Ingere 10.000 documentos
- Reativa
refreshao final
📖 Entendendo os formatos
- NDJSON: cada documento em uma linha JSON.
- Bulk API: cada documento do NDJSON vira 2 linhas (ação + conteúdo).
Isso acelera a ingestão e é usado emingestar-bulk.sh.
Se quiser transformar/validar os dados na entrada, use Logstash:
cd ../01-instalacao
docker compose up -d logstash
docker logs -f logstashArquivos envolvidos:
No pipeline:
- Cada documento recebe um _id determinístico (
host@timestamp) → ingestão é idempotente. - É adicionado o campo
"ingest": "logstash"→ permite diferenciar docs do Logstash dos docs do Bulk.
Assim, se você rodar Bulk + Logstash, terá ~20.000 docs no índice (10k Bulk + 10k Logstash), mas sem duplicação.
# Contagem total (esperado: ~20000 se usou Bulk + Logstash)
curl -s "http://localhost:9200/infra-hosts/_count?pretty"
# Apenas documentos do Logstash
curl -s -H 'Content-Type: application/json' -X POST "http://localhost:9200/infra-hosts/_search?pretty" -d '{
"size": 0,
"query": { "term": { "ingest": "logstash" } }
}'
# Resumo dos índices
curl -s "http://localhost:9200/_cat/indices?v"
# Métricas detalhadas do índice
curl -s "http://localhost:9200/infra-hosts/_stats?pretty" | head -n 120GET infra-hosts/_count
# Apenas docs do Logstash
GET infra-hosts/_search
{
"size": 0,
"query": { "term": { "ingest": "logstash" } }
}
# Resumo dos índices
GET _cat/indices?v
# Métricas detalhadas
GET infra-hosts/_statsA partir da Aula 03, explore queries com match, range e bool:
curl -X POST "http://localhost:9200/infra-hosts/_search" -H 'Content-Type: application/json' -d @03-buscas-simples/query-match.jsonVeja exemplos em 04-filtros-e-analise/.
Veja exemplos em 05-visualizacao-kibana/.
Responda:
- Quais serviços têm mais hosts em
warning? - Qual a média de CPU por serviço?
- Quais são os hosts mais críticos?
✅ Poste no LinkedIn e marque @Rafael Silva
✅ Compartilhe seu dashboard e insights!
- Erro
^Mem scripts no Windows:
Usedos2unix *.sh - Erro de rede
elasticno Docker Compose:
Garanta que o bloconetworks:esteja definido nodocker-compose.override.ymlou use a rede default. - Bulk
400 error:
Confirme que está postando em/$INDEX/_bulke não em/_bulk. - Docs não duplicaram (ainda 10k e não 20k):
Confirme que o arquivodados-10000-ago-2025-logstash.ndjsontem 10k linhas (wc -l), que o Logstash subiu sem erro, e que o campoingestestá sendo gravado.
Conecte-se comigo:
- GitHub: rafasilva1984
- LinkedIn: rafael-silva-leader-coordenador
- Medium: @rafaelldasilva1984
- YouTube: Observabilidade na Prática
Projeto criado por Rafael Silva – Elasticsearch e Observabilidade na Prática.
Conectou, buscou e achou 🚀