Fluentd ou Logstash – Qual coletor de logs utilizar em 2024? 

Escolher o coletor de logs adequado é essencial em 2024, e neste artigo, exploramos as distinções fundamentais entre Fluentd e Logstash.

30 janeiro, 2024
Fluentd ou Logstash?

Escolher o coletor de logs adequado é essencial em 2024, e neste artigo, exploramos as distinções fundamentais entre Fluentd e Logstash. Analisaremos desempenho, ecossistema de plugins e abordagens de roteamento para ajudá-lo a tomar uma decisão informada. Tome a decisão certa para suas necessidades: Coletor de logs Fluentd ou Logstash?


Introdução

Quando temos sistemas distribuídos em grande escala, o registro de logs se torna essencial para a observabilidade, o monitoramento e a segurança. Independentemente da arquitetura de nossos sistemas, seja monolito ou microsserviços, há uma complexidade devido ao número de partes móveis que possuem e aos desafios que enfrentam em relação ao gerenciamento, à implantação e ao dimensionamento. 

Nesse cenário, as ferramentas de gerenciamento de logs auxiliam as equipes de DevOps e SRE a monitorar e melhorar o desempenho, evitar e corrigir erros e visualizar eventos. 

As ferramentas

Em uma linguagem simples, uma ferramenta de análise de logs tem os seguintes componentes principais: 

  • Exportador de logs (Configurar logs por host) (agentes) 
  • Coletor de logs (concentradores/processadores) 
  • Armazenamento de logs (backend de logs) 
  • Visualização de logs (dashboards) 

Neste artigo, discutiremos dois coletores de logs de código aberto muito famosos, que são o Logstash e o Fluentd. O segredo de qualquer ferramenta de análise de logs são os coletores de logs. Ambos operam em servidores, obtêm métricas do servidor, analisam todos os logs e os transferem para backends como Elasticsearch ou Grafana Loki. É o mecanismo de roteamento deles que possibilita a análise de logs. 

Sob a licença Apache 2, tanto o Logstash quanto o Fluentd operam como coletores de dados de código aberto. O Logstash é conhecido popularmente como a parte “L” da pilha ELK gerenciada pela própria Elastic. Já o Fluentd é desenvolvido e gerenciado pela Treasure Data, sendo também adotado como projeto da Cloud Native Computing Foundation (CNCF). 


Comparando o Fluentd e Logstash

Preparamos uma tabela para lhe dar uma breve visão geral das principais diferenças. Mais adiante, discutiremos cada ponto em detalhes. 

Tabela comparativa de ferramentas


Principais diferenças entre Fluentd e Logstash em detalhes 

Ecossistema de plugins 

Os plugins ajudam qualquer ferramenta a aprimorar sua funcionalidade. O Fluentd e o Logstash têm um ecossistema rico para plugins, incluindo vários sistemas de entrada (arquivos e TCP/UDP), filtros e destinos de saída (InfluxDb, Grafana Loki, Elasticsearch, AWS, GCP etc.). 

A forma principal de gerenciamento destes plugins difere. O Logstash gerencia todos os plugins em um único repositório centralizado – há 199 plugins no repositório logstash-plugins do GitHub.  O Fluentd, em contraparrida, segue uma abordagem descentralizada e não hospeda todos os plugins em um único repositório. Seu repositório oficial hospeda apenas 10 plugins e um índice para todos os demais repositórios. Mas, ele tem suporte para mais plugins do que o Logstash: cerca de 500 plugins. 

Você pode conferir o repositório do Logstash no Github aqui, que tem todos os plugins do Logstash. Aqui está o link do índice de plugins do Fluentd

Uso de memória/ desempenho 

Embora o desempenho seja subjetivo, dependendo do caso de uso do usuário, o Logstash consome 120 MB a mais de memória do que o Fluentd, que utiliza 40 MB. Ademais, ao considerarmos os equipamentos modernos, essa discrepância pode parecer insignificante. No entanto, quando implementado em milhares de dispositivos de infraestrutura, essa diferença de 80*1000 representa um notável acréscimo de 80 GB de uso adicional de memória.

Portanto, no Logstash, você pode evitar esse problema executando o ElasticBeats em vez de executar o Logstash em um único leaf node. O ElasticBeats é um coletor de logs eficiente em termos de recursos criado para fins específicos, em que cada Beat se concentra em apenas uma fonte de dados e faz isso bem. O Fluentd usa o Fluent Bit, uma versão incorporável de baixo impacto do Fluentd escrita em C. 

Se você estiver executando aplicativos pequenos, é recomendável usar o Fluent-bit, projeto este também da Cloud Native Computing Foundation (CNCF). Por outro lado, o Elastic beats é uma versão leve do Logstash. Para cargas de trabalho menores, é preferível usar o Elasticbeats. Mas se o seu caso de uso envolver mais processamento de dados além do transporte de dados, você precisará usar tanto o Logstash quanto o Elastic beats. 

Transferência de dados 

O Logstash não possuía um sistema de buffer embutido para transferência de dados. Nas versões mais recentes, o sistema foi aprimorado com a adição de filas persistentes (PQ) e Dead Letter Queue (DLQ), que são por padrão encontrram-se desabilitadas. Recomendamos incorporar brokers de filas externas, como Redis ou Kafka, ao pipeline para garantir persistência entre reinicializações. O Redis atua como um “corretor”, enfileirando eventos do Logstash provenientes de remetentes remotos do Logstash.

O Fluentd tem um sistema de buffer configurável embutido e não depende de filas externas para persistência. No entanto, a configuração é bastante complexa. Por causa disso, é mais seguro usar o Fluentd do que o Logstash em relação ao transporte de dados. Recomenda-se também incluir brokers de fila como Apache Kafka, RabbitMQ ou ZeroMQ com filas persistentes para garantir confiabilidade (reliability). 

Roteamento de eventos 

O roteamento de eventos significa o envio de dados e mensagens entre aplicativos e sistemas. Sua função é crucial ao avaliar um sistema de registro e gerenciar o roteamento de eventos. 

O Fluentd usa uma abordagem de marcação, enquanto o Logstash usa instruções if-then-else para roteamento de eventos. Dessa forma, podemos definir determinados critérios com instruções If/Then/Else – para executar ações em nossos dados. A abordagem de marcação (tags) parece um pouco mais fácil de usar do que as instruções condicionais. Com o Fluentd você terá de marcar cada uma de suas fontes de dados (entradas). O Fluentd usa tags para comparar entradas com diferentes saídas e, em seguida, encaminha os eventos para a saída correspondente. 

Interpretação de logs 

Os componentes para análise de logs diferem de ferramenta para ferramenta. O Fluentd usa analisadores padrão incorporados (JSON, regex, CSV etc.), e o Logstash usa plugins para isso. Isso torna o Fluentd mais favorável em relação ao Logstash, pois não precisamos lidar com nenhum plugin externo para esse recurso. Existe a possibilidade também de criar seus próprios plugins, tanto em Logstash quanto em Fluentd, ambos em Ruby. A Vericode criou um plugin parsear log do protocolo FIX para Logstash e outro para Fluentd. 

Suporte do Docker 

O Docker fornece um driver de registro fluentd embutido. O driver de registro envia os registros do container para o coletor fluentd como dados de registro estruturados. No caso do Logstash, é necessário um agente extra (filebeat) no container para enviar os logs para o Logstash. Portanto, se você estiver executando seus aplicativos com o Docker, o Fluentd é uma opção mais natural. Os registros podem ser enviados diretamente para o serviço Fluentd a partir do STDOUT. O Fluentd torna a arquitetura geral de logging do Docker menos complexa e menos arriscada


Quando preferir o Fluentd ao Logstash ou vice-versa? 

Para os ambientes Kubernetes ou equipes que trabalham com o Docker, o Fluentd é o candidato ideal para um coletor de logs. O Fluentd tem um driver e um analisador de logs do Docker integrados. Você não precisa de um agente extra no container para enviar os logs para o Fluentd. Devido a esse recurso, o Fluentd torna a arquitetura menos complexa e menos arriscada para erros de registro. Além disso, se a memória for seu ponto fraco, opte pelo Fluentd, pois ele é mais eficiente em termos de memória devido à falta de dependências de JVM e de tempo de execução do Java. 

A capacidade de processamento do Fluentd é maior do que do logstash, ou seja, se você pretende economizar dólares do seu orçamento de cloud: opte por Fluentd. 

Se você possui múltiplas fontes de dados e pretende utilizar uma visualizar em um “Single Pane of Glass”, com visualizador Grafana ou outro, o Fluentd é a melhor opção. 

Por outro lado, o Logstash funciona bem com o Elasticsearch e o Kibana. Portanto, se você já tiver o Elasticsearch e o Kibana em sua infraestrutura, o Logstash será sua melhor aposta para um coletor de logs.  

Se você chegou até aqui, certamente está querendo experimentar um sistema de gerenciamento de logs ou procurando um para o seu aplicativo.  


A escolha para Log Analytics da Vericode – Prefira o Fluentd

Na comparação das duas ferramentas o Fluentd se mostrou mais eficiente e consumiu menos recursos que o Logstash uma vez que não precisa da JVM (java). Além disso, a quantidade de plugins do Fluentd é bem maior e eles não ficam centralizados, ao contrário do Logstash onde todos os plugins se encontram em um único repositório git.  

Outra característica do Fluentd é sua abordagem de roteamento melhor, pois marcar eventos através de tags o que é mais fácil do que usar condições if-else. 

Diante disso, caso haja a necessidade de realizar a coleta de um alto volume de logs, o Fluentd se apresenta como uma solução muito mais eficiente, reduzindo a necessidade de recursos computacionais para alcançar os mesmos objetivos em comparação ao Logstash e fornecendo um output para qualquer Plataforma de Log com seus Plugins.   

E seu orçamento ainda sai ganhando, pois com você necessita de menos recursos computacionais, portanto, menor gastos com nuvem você terá. 

Autores

Mateus Santos
CTO na Vericode

Gabriel Piai Paes
Analista de TI Senior – QA na Vericode

Artigo produzido com base em “Fluentd vs Logstash – Choosing a Log collector for Log Analytics” por SigNoz, Setembro de 2023.

Compartilhe este artigo

Fale com a Vericode

Precisa de um especialista em criar soluções digitais para sua empresa? Agende um contato de negócios e fale com um Vericoder. Iremos lhe apresentar uma proposta de negócios atraente e de alto impacto.

Contato de negócios

Inscreva-se em nossa newsletter

Newsletter da Vericode sobre assuntos de engenharia de software de alto desempenho, metodologias de QA, testes e transformação digital.

Quero receber conteúdos exclusivos
pt_BRPT