ELK Stack logging: guia de configuração centralizada
ELK Stack logging centraliza logs de múltiplas fontes em um só lugar. Neste guia, você configura Elasticsearch, Logstash e Kibana do zero, com dicas para produção.
ELK Stack logging centraliza logs de múltiplas fontes em um só lugar. Neste guia, você configura Elasticsearch, Logstash e Kibana do zero, com dicas para produção.
ELK Stack logging centraliza logs de aplicações e servidores em uma única plataforma. Com Elasticsearch para armazenamento e busca, Logstash para processamento e Kibana para visualização, você ganha visibilidade sem depender de arquivos espalhados. Este guia cobre a configuração básica, com foco em produção.
Antes de começar, você precisa de um servidor Linux (Ubuntu 20.04 ou similar) com pelo menos 4 GB de RAM e 2 CPUs. Vamos usar versões 7.x do Elastic Stack, que são estáveis e amplamente documentadas. Certifique-se de ter acesso root e porta 5601 liberada para Kibana, 9200 para Elasticsearch e 5044 para Logstash.
Passo 1: Instalar e configurar o Elasticsearch
O Elasticsearch é o coração do ELK: ele armazena e indexa os logs. Instale o pacote via repositório oficial da Elastic.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list sudo apt update && sudo apt install elasticsearch
Após instalar, edite o arquivo /etc/elasticsearch/elasticsearch.yml. Defina network.host como 0.0.0.0 para acessar de outros servidores, mas em produção restrinja ao IP interno. Aumente indices.fielddata.cache.size se planeja agregações pesadas no Kibana.
Erro comum: não configurar discovery.type: single-node em testes. Sem isso, o Elasticsearch tenta descobrir outros nós e falha ao iniciar. Adicione essa linha no arquivo de configuração.
Inicie o serviço:
sudo systemctl enable elasticsearch sudo systemctl start elasticsearch
Verifique com curl -X GET "localhost:9200". Você deve ver um JSON com o nome do cluster e versão.
Passo 2: Instalar e configurar o Logstash
Logstash coleta, transforma e envia logs para o Elasticsearch. Instale com:
sudo apt install logstash
Crie um pipeline de configuração em /etc/logstash/conf.d/beats-input.conf. Um pipeline básico recebe logs via Beats (porta 5044) e envia ao Elasticsearch:
input { beats { port => 5044 } }
filter {
Aqui você adiciona parsers, como grok para logs de acesso
}
output { elasticsearch { hosts => ["localhost:9200"] index => "logs-%{+YYYY.MM.dd}" } }
Dica: use o pattern grok no filter para extrair campos como IP, método HTTP e status. Por exemplo, grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } para logs de Apache. Teste o pipeline com sudo -u logstash /usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/beats-input.conf.
Erro comum: esquecer de criar o diretório /etc/logstash/conf.d e colocar os arquivos em outro lugar. O Logstash só lê configurações nesse diretório por padrão.
Inicie o Logstash:
sudo systemctl enable logstash sudo systemctl start logstash
Passo 3: Instalar e configurar o Kibana
Kibana é a interface web para pesquisar e visualizar logs. Instale com:
sudo apt install kibana
Edite /etc/kibana/kibana.yml. Defina server.host como 0.0.0.0 para acessar externamente, e elasticsearch.hosts para apontar para http://localhost:9200.
Dica: em produção, coloque o Kibana atrás de um proxy reverso (Nginx) com HTTPS. Isso evita expor a interface diretamente na internet.
Inicie o serviço:
sudo systemctl enable kibana sudo systemctl start kibana
Acesse http://seu-servidor:5601. Na primeira execução, o Kibana pede para criar um índice padrão. Use logs-* para visualizar todos os logs.
Passo 4: Enviar logs com Filebeat
Filebeat é um agente leve que envia logs locais para o Logstash ou Elasticsearch. Instale nos servidores que geram logs:
sudo apt install filebeat
Configure /etc/filebeat/filebeat.yml para apontar para o Logstash:
filebeat.inputs:
- type: log
enabled: true paths:
- /var/log/*.log
output.logstash: hosts: ["seu-servidor:5044"]
Dica: use módulos prontos do Filebeat, como nginx ou system, para acelerar a configuração. Execute sudo filebeat modules enable nginx e ajuste os paths.
Erro comum: não testar a conectividade entre Filebeat e Logstash. Use nc -vz seu-servidor 5044 para verificar se a porta está acessível antes de iniciar o Filebeat.
Inicie o Filebeat:
sudo systemctl enable filebeat sudo systemctl start filebeat
Passo 5: Criar dashboards no Kibana
Com os logs chegando, vá ao Kibana e crie visualizações. No menu, escolha "Stack Management" > "Index Patterns" e crie um padrão logs-*. Depois, em "Visualize Library", crie gráficos de barras para contagem de erros por hora ou mapas para IPs de origem.
Dica: use o painel "Discover" para testar consultas antes de salvar visualizações. Uma query como status: 500 filtra erros de servidor.
Erro comum: criar muitos dashboards sem necessidade. Comece com 3 a 5 visualizações que respondam a perguntas de negócio, como "quais endpoints têm mais latência?" ou "qual horário há pico de tráfego?"
Checklist final
Confira se tudo está funcionando:
- Elasticsearch responde em
localhost:9200com status 200. - Logstash está rodando e aceitando conexões na porta 5044.
- Kibana acessível em
localhost:5601e com índice padrão criado. - Filebeat envia logs e você consegue ver eventos no Kibana em "Discover".
- Pipelines do Logstash não mostram erros no log em
/var/log/logstash/logstash-plain.log.
Se algum passo falhou, revise as configurações e os logs de cada serviço. Logging centralizado é um processo incremental: comece com um tipo de log e expanda.
FAQ
O que é ELK Stack logging?
ELK Stack logging é a combinação de Elasticsearch, Logstash e Kibana para coletar, armazenar e visualizar logs de forma centralizada. Ele substitui a busca manual em arquivos por uma interface unificada com busca em tempo real.
Qual a diferença entre ELK e Elastic Stack?
Elastic Stack inclui o Beats, que são agentes leves de coleta, além dos três componentes clássicos. O ELK original não tinha Beats; hoje, o termo é usado de forma intercambiável, mas Beats é recomendado para produção.
Preciso de Logstash se uso Filebeat?
Não é obrigatório. Filebeat pode enviar logs diretamente ao Elasticsearch. Mas Logstash oferece filtros avançados, como parsing com grok e enriquecimento com geoip, que facilitam a análise.
Como proteger o ELK Stack em produção?
Use autenticação com senha (X-Pack), HTTPS via proxy reverso para Kibana e restrinja as portas 9200 e 5044 a IPs internos. Evite expor Elasticsearch diretamente à internet.
Quanto de memória o ELK Stack precisa?
Para testes, 4 GB de RAM no servidor são suficientes. Em produção, o consumo varia com o volume de logs. Monitore o uso de heap do Elasticsearch e ajuste com ES_JAVA_OPTS.
Como lidar com volume alto de logs?
Use índices diários (logs-%{+YYYY.MM.dd}) e políticas de lifecycle para apagar índices antigos. O Elasticsearch pode configurar rollover e delete automático via ILM (Index Lifecycle Management).
Patrícia Lemos
Especialista em dados e analytics
Transforma painel cheio de número em decisão. Cuida de mensuração, dashboard e a métrica que de fato move o negócio.
Ver todos os artigos →