Sobes.tech
Middle

O que você sabe sobre a pilha elástica ELK e EFK?

sobes.tech IA

Resposta da IA

Elastic Stack (ELK) é um conjunto de ferramentas para recolha, análise e visualização centralizada de logs. EFK é a sua variante, que substitui Logstash por Fluentd.

Componentes do ELK:

  • Elasticsearch: Motor de pesquisa e análise distribuído baseado em Lucene. Usado para armazenar, indexar e procurar logs.
  • Logstash: Canal para processamento de dados. Recebe dados de várias fontes, os filtra, transforma e envia para Elasticsearch.
  • Kibana: Interface web para visualizar dados armazenados no Elasticsearch. Permite criar dashboards, gráficos e realizar análises interativas de logs.

O stack frequentemente inclui Beats — agentes leves para recolha de dados de servidores (Filebeat para logs, Metricbeat para métricas, etc.).

Componentes do EFK:

  • Elasticsearch: Semelhante ao ELK, usado para armazenamento e pesquisa.
  • Fluentd: Agente de logs de código aberto. Executa funções semelhantes ao Logstash, mas é considerado mais leve e possui um sistema de plugins mais flexível. Muito popular em ambientes de containers (Kubernetes).
  • Kibana: Semelhante ao ELK, usado para visualização.

Principais funções e vantagens:

  • Centralização de logs: Recolha de logs de múltiplos servidores e aplicações num único local.
  • Pesquisa e análise: Pesquisa rápida em grandes volumes de dados e análise complexa.
  • Monitorização e alertas: Visualização de tendências, deteção de anomalias e configuração de alertas baseados em logs.
  • Resolução de problemas: Aceleração na procura de causas de incidentes e erros nos sistemas.
  • Escalabilidade: Escalabilidade horizontal de todos os componentes do stack.

Comparação entre Logstash e Fluentd:

Característica Logstash Fluentd
Arquitetura Baseada em JVM, monolítica Baseada em Ruby/C, modular, com plugins em Ruby
Memória Geralmente maior consumo de memória Menos exigente em memória
Desempenho Bom, mas pode ser pesado Geralmente mais eficiente sob cargas elevadas
Ambiente Ambientes tradicionais de servidores, VM Particularmente popular em containers (Docker, K8s)
Plugins Grande quantidade de plugins integrados Grande quantidade de plugins da comunidade
Configuração Sintaxe própria JSON ou YAML

Exemplo de uso:

# Exemplo de configuração do Filebeat para recolha de logs Docker no Kubernetes
- module: docker
  containers:
    ids: '*'
    stream: 'stdout' # Recolher apenas logs de stdout
    paths:
      - /var/lib/docker/containers/${data.docker.container.id}/*.log

  processors:
  - add_kubernetes_metadata:
      in_cluster: true # Adição automática de metadados do Kubernetes
# Exemplo de configuração do Fluentd para enviar logs ao Elasticsearch
<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

<match kubernetes.**>
  @type elasticsearch
  host elasticsearch-logging.default.svc.cluster.local # Endereço do Elasticsearch
  port 9200
  logstash_format true
  logstash_prefix kubernetes
  <buffer>
    flush_interval 5s
  </buffer>
</match>

A escolha entre ELK e EFK depende da infraestrutura, preferências de ferramentas e requisitos de desempenho e recursos. Em ambientes de containers, o EFK costuma ser a opção preferida devido à leveza do Fluentd e à sua integração com Kubernetes.