appendix-c

Appendix C. Differences between Fluentbit and Fluentd

 

C.1 Overview

In this Appendix, we’ll highlight the differences between Fluent Bit and Fluentd. Fluent Bit is far more than just a simple reimplementation of Fluentd using C. While the goals and ideas remain the same at the heart of both solutions, there are also many differences. The differences are at times subtle but important, such as the YAML configuration structure, and sometimes minor, such as additional attributes for a plugin. In other areas, they are very noticeable, such as the way custom plugins can be built.

We’re not going to describe the Fluentd features here beyond naming them. If you’d like to have a more in depth understanding of how the Fluentd features work, then we would recommend reading Logging in Action with Fluentd.

C.2 Technology Differences

In Chapter 1, and to an extent Chapter 2 we looked at the implementation and deployment differences between Fluentd and Fluent Bit. So we’ll just summarize them with some bullet points rather than repeat the details:

  • Implementation technologies – with Fluent Bit using C and supporting extensions with C, Go, Lua, and WedAssembly compared to just Ruby for Fluentd.
  • Smaller more compact platform native binary for Fluent Bit and a platform agnostic runtime for Fluentd.
  • Fluentd has a basic management UI if needed, Fluent Bit does not provide such a capability.
  • Support for HTTP/2 (introduced in Fluent Bit version 3), but Fluentd has not yet provided any use of HTTP/2.

C.3 Configuration capabilities

C.4 Inputs and Outputs

C.4.1 Support for Logging Frameworks

C.4.2 Plugin Choice

C.4.3 Secondary / fallback output options

C.4.4 Open Telemetry

C.4.5 Customization with embedded code

C.5 Routing

C.6 Buffering & internal Data Structure

C.6.1 Thread configuration

C.7 Streaming processing

C.8 Conclusion