Build and Install

Fluent Bit uses CMake as its build system.

Requirements

  • CMake 3.12 or greater. You might need to use cmake3 instead of cmake.

  • Flex

  • Bison 3 or greater

  • YAML headers

  • OpenSSL headers

Prepare environment

If you already know how CMake works, you can skip this section and review the available build options.

The following steps explain how to build and install the project with the default options.

  1. Change to the build/ directory inside the Fluent Bit sources:

    cd build/
  2. Let CMake configure the project specifying where the root path is located:

    cmake ../

    This command displays a series of results similar to:

    -- The C compiler identification is GNU 4.9.2
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- The CXX compiler identification is GNU 4.9.2
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    ...
    -- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
    -- Looking for accept4
    -- Looking for accept4 - not found
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/edsiper/coding/fluent-bit/build
  3. Start the compilation process using the make command:

    make

    This command displays results similar to:

    Scanning dependencies of target msgpack
    [  2%] Building C object lib/msgpack-1.1.0/CMakeFiles/msgpack.dir/src/unpack.c.o
    [  4%] Building C object lib/msgpack-1.1.0/CMakeFiles/msgpack.dir/src/objectc.c.o
    [  7%] Building C object lib/msgpack-1.1.0/CMakeFiles/msgpack.dir/src/version.c.o
    ...
    [ 19%] Building C object lib/monkey/mk_core/CMakeFiles/mk_core.dir/mk_file.c.o
    [ 21%] Building C object lib/monkey/mk_core/CMakeFiles/mk_core.dir/mk_rconf.c.o
    [ 23%] Building C object lib/monkey/mk_core/CMakeFiles/mk_core.dir/mk_string.c.o
    ...
    Scanning dependencies of target fluent-bit-static
    [ 66%] Building C object src/CMakeFiles/fluent-bit-static.dir/flb_pack.c.o
    [ 69%] Building C object src/CMakeFiles/fluent-bit-static.dir/flb_input.c.o
    [ 71%] Building C object src/CMakeFiles/fluent-bit-static.dir/flb_output.c.o
    ...
    Linking C executable ../bin/fluent-bit
    [100%] Built target fluent-bit-bin
  4. To continue installing the binary on the system, use make install:

    make install

    If the command indicates insufficient permissions, prefix the command with sudo.

Build options

Fluent Bit provides configurable options to CMake that can be enabled or disabled.

General options

OptionDescriptionDefault

FLB_ALL

Enable all features available

No

FLB_JEMALLOC

Use Jemalloc as default memory allocator

No

FLB_TLS

Build with SSL/TLS support

Yes

FLB_BINARY

Build executable

Yes

FLB_EXAMPLES

Build examples

Yes

FLB_SHARED_LIB

Build shared library

Yes

FLB_MTRACE

Enable mtrace support

No

FLB_INOTIFY

Enable Inotify support

Yes

FLB_POSIX_TLS

Force POSIX thread storage

No

FLB_SQLDB

Enable SQL embedded database support

No

FLB_HTTP_SERVER

Enable HTTP Server

No

FLB_LUAJIT

Enable Lua scripting support

Yes

FLB_RECORD_ACCESSOR

Enable record accessor

Yes

FLB_SIGNV4

Enable AWS Signv4 support

Yes

FLB_STATIC_CONF

Build binary using static configuration files. The value of this option must be a directory containing configuration files.

FLB_STREAM_PROCESSOR

Enable Stream Processor

Yes

FLB_CONFIG_YAML

Enable YAML configuration support

Yes

FLB_WASM

Build with WASM runtime support

Yes

FLB_WAMRC

Build with WASM AOT compiler executable

No

Development options

OptionDescriptionDefault

FLB_DEBUG

Build binaries with debug symbols

No

FLB_VALGRIND

Enable Valgrind support

No

FLB_TRACE

Enable trace mode

No

FLB_SMALL

Minimise binary size

No

FLB_TESTS_RUNTIME

Enable runtime tests

No

FLB_TESTS_INTERNAL

Enable internal tests

No

FLB_TESTS

Enable tests

No

FLB_BACKTRACE

Enable backtrace/stacktrace support

Yes

Optimization options

OptionDescriptionDefault

FLB_MSGPACK_TO_JSON_INIT_BUFFER_SIZE

Determine initial buffer size for msgpack to json conversion in terms of memory used by payload.

2.0

FLB_MSGPACK_TO_JSON_REALLOC_BUFFER_SIZE

Determine percentage of reallocation size when msgpack to json conversion buffer runs out of memory.

0.1

Input plugins

Input plugins gather information from a specific source type like network interfaces, some built-in metrics, or through a specific input device. The following input plugins are available:

OptionDescriptionDefault

Enable Collectd input plugin

On

Enable CPU input plugin

On

Enable Disk I/O Metrics input plugin

On

Enable Docker metrics input plugin

On

Enable Exec input plugin

On

Enable Exec WASI input plugin

On

Enable Fluent Bit metrics input plugin

On

Enable Elasticsearch/OpenSearch Bulk input plugin

On

Enable Forward input plugin

On

Enable Head input plugin

On

Enable Health input plugin

On

Enable Kernel log input plugin

On

Enable Memory input plugin

On

Enable MQTT Server input plugin

On

Enable Network I/O metrics input plugin

On

Enable Process monitoring input plugin

On

Enable Random input plugin

On

Enable Serial input plugin

On

Enable Standard input plugin

On

Enable Syslog input plugin

On

Enable Systemd / Journald input plugin

On

Enable Tail (follow files) input plugin

On

Enable TCP input plugin

On

Enable system temperature input plugin

On

Enable UDP input plugin

On

Enable Windows Event Log input plugin (Windows Only)

On

Enable Windows Event Log input plugin using winevt.h API (Windows Only)

On

Filter plugins

Filter plugins let you modify, enrich or drop records. The following table describes the filters available on this version:

OptionDescriptionDefault

Enable AWS metadata filter

On

Enable AWS metadata filter

On

FLB_FILTER_EXPECT

Enable Expect data test filter

On

Enable Grep filter

On

Enable Kubernetes metadata filter

On

Enable Lua scripting filter

On

Enable Modify filter

On

Enable Nest filter

On

Enable Parser filter

On

Enable Record Modifier filter

On

Enable Rewrite Tag filter

On

Enable Stdout filter

On

Enable Sysinfo filter

On

Enable Throttle filter

On

Enable Type Converter filter

On

Enable WASM filter

On

Output plugins

Output plugins let you flush the information to some external interface, service, or terminal. The following table describes the output plugins available:

OptionDescriptionDefault

Enable Microsoft Azure output plugin

On

Enable Azure Kusto output plugin

On

Enable Google BigQuery output plugin

On

Enable Counter output plugin

On

Enable Amazon CloudWatch output plugin

On

Enable Datadog output plugin

On

Enable Elastic Search output plugin

On

Enable File output plugin

On

Enable Amazon Kinesis Data Firehose output plugin

On

Enable Amazon Kinesis Data Streams output plugin

On

Enable Flowcounter output plugin

On

Enable Fluentd output plugin

On

Enable Gelf output plugin

On

Enable HTTP output plugin

On

Enable InfluxDB output plugin

On

Enable Kafka output

Off

Enable Kafka REST Proxy output plugin

On

FLB_OUT_LIB

Enable Lib output plugin

On

Enable NATS output plugin

On

FLB_OUT_NULL

Enable NULL output plugin

On

FLB_OUT_PGSQL

Enable PostgreSQL output plugin

On

FLB_OUT_PLOT

Enable Plot output plugin

On

FLB_OUT_SLACK

Enable Slack output plugin

On

Enable Amazon S3 output plugin

On

Enable Splunk output plugin

On

Enable Google Stackdriver output plugin

On

Enable STDOUT output plugin

On

FLB_OUT_TCP

Enable TCP/TLS output plugin

On

Enable Treasure Data output plugin

On

Processor plugins

Processor plugins handle the events within the processor pipelines to allow modifying, enriching, or dropping events.

The following table describes the processors available:

| Option | Description | Default || :--- | :--- | :--- | | FLB_PROCESSOR_METRICS_SELECTOR | Enable metrics selector processor | On | | FLB_PROCESSOR_LABELS | Enable metrics label manipulation processor | On |

Last updated