Fluent Bit: Official Manual
SlackGitHubCommunity MeetingsSandbox and LabsWebinars
4.0
4.0
  • Fluent Bit v4.0 Documentation
  • About
    • What is Fluent Bit?
    • A Brief History of Fluent Bit
    • Fluentd and Fluent Bit
    • License
    • Sandbox and Lab Resources
  • Concepts
    • Key Concepts
    • Buffering
    • Data Pipeline
      • Input
      • Parser
      • Filter
      • Buffer
      • Router
      • Output
  • Installation
    • Getting Started with Fluent Bit
    • Upgrade Notes
    • Supported Platforms
    • Requirements
    • Sources
      • Download Source Code
      • Build and Install
      • Build with Static Configuration
    • Linux Packages
      • Amazon Linux
      • Redhat / CentOS
      • Debian
      • Ubuntu
      • Raspbian / Raspberry Pi
    • Docker
    • Containers on AWS
    • Amazon EC2
    • Kubernetes
    • macOS
    • Windows
    • Yocto / Embedded Linux
    • Buildroot / Embedded Linux
  • Administration
    • Configuring Fluent Bit
      • YAML Configuration
        • Service
        • Parsers
        • Multiline Parsers
        • Pipeline
        • Plugins
        • Upstream Servers
        • Environment Variables
        • Includes
      • Classic mode
        • Format and Schema
        • Configuration File
        • Variables
        • Commands
        • Upstream Servers
        • Record Accessor
      • Unit Sizes
      • Multiline Parsing
    • Transport Security
    • Buffering and Storage
    • Backpressure
    • Scheduling and Retries
    • Networking
    • Memory Management
    • Monitoring
    • Multithreading
    • HTTP Proxy
    • Hot Reload
    • Troubleshooting
    • Performance Tips
    • AWS credentials
  • Local Testing
    • Validating your Data and Structure
    • Running a Logging Pipeline Locally
  • Data Pipeline
    • Pipeline Monitoring
    • Inputs
      • Collectd
      • CPU Log Based Metrics
      • Disk I/O Log Based Metrics
      • Docker Events
      • Docker Log Based Metrics
      • Dummy
      • Elasticsearch
      • Exec
      • Exec Wasi
      • Ebpf
      • Fluent Bit Metrics
      • Forward
      • Head
      • Health
      • HTTP
      • Kafka
      • Kernel Logs
      • Kubernetes Events
      • Memory Metrics
      • MQTT
      • Network I/O Log Based Metrics
      • NGINX Exporter Metrics
      • Node Exporter Metrics
      • OpenTelemetry
      • Podman Metrics
      • Process Exporter Metrics
      • Process Log Based Metrics
      • Prometheus Remote Write
      • Prometheus Scrape Metrics
      • Random
      • Serial Interface
      • Splunk
      • Standard Input
      • StatsD
      • Syslog
      • Systemd
      • Tail
      • TCP
      • Thermal
      • UDP
      • Windows Event Log
      • Windows Event Log (winevtlog)
      • Windows Exporter Metrics
    • Parsers
      • Configuring Parser
      • JSON
      • Regular Expression
      • LTSV
      • Logfmt
      • Decoders
    • Processors
      • Content Modifier
      • Labels
      • Metrics Selector
      • OpenTelemetry Envelope
      • Sampling
      • SQL
      • Filters as processors
      • Conditional processing
    • Filters
      • AWS Metadata
      • CheckList
      • ECS Metadata
      • Expect
      • GeoIP2 Filter
      • Grep
      • Kubernetes
      • Log to Metrics
      • Lua
      • Parser
      • Record Modifier
      • Modify
      • Multiline
      • Nest
      • Nightfall
      • Rewrite Tag
      • Standard Output
      • Sysinfo
      • Throttle
      • Type Converter
      • Tensorflow
      • Wasm
    • Outputs
      • Amazon CloudWatch
      • Amazon Kinesis Data Firehose
      • Amazon Kinesis Data Streams
      • Amazon S3
      • Azure Blob
      • Azure Data Explorer
      • Azure Log Analytics
      • Azure Logs Ingestion API
      • Counter
      • Dash0
      • Datadog
      • Dynatrace
      • Elasticsearch
      • File
      • FlowCounter
      • Forward
      • GELF
      • Google Chronicle
      • Google Cloud BigQuery
      • HTTP
      • InfluxDB
      • Kafka
      • Kafka REST Proxy
      • LogDNA
      • Loki
      • Microsoft Fabric
      • NATS
      • New Relic
      • NULL
      • Observe
      • OpenObserve
      • OpenSearch
      • OpenTelemetry
      • Oracle Log Analytics
      • PostgreSQL
      • Prometheus Exporter
      • Prometheus Remote Write
      • SkyWalking
      • Slack
      • Splunk
      • Stackdriver
      • Standard Output
      • Syslog
      • TCP and TLS
      • Treasure Data
      • Vivo Exporter
      • WebSocket
  • Stream Processing
    • Introduction to Stream Processing
    • Overview
    • Changelog
    • Getting Started
      • Fluent Bit + SQL
      • Check Keys and NULL values
      • Hands On 101
  • Fluent Bit for Developers
    • C Library API
    • Ingest Records Manually
    • Golang Output Plugins
    • WASM Filter Plugins
    • WASM Input Plugins
    • Developer guide for beginners on contributing to Fluent Bit
Powered by GitBook
On this page
  • Start Docker
  • Tags and versions
  • Multi-architecture images
  • Verify signed container images
  • Get started
  • FAQ
  • Why there is no Fluent Bit Docker image based on Alpine Linux?
  • Why use Distroless containers?

Was this helpful?

Export as PDF
  1. Installation

Docker

Last updated 17 days ago

Was this helpful?

Fluent Bit container images are available on Docker Hub ready for production usage. Current available images can be deployed in multiple architectures.

Start Docker

Use the following command to start Docker with Fluent Bit:

docker run -ti cr.fluentbit.io/fluent/fluent-bit

Tags and versions

The following table describes the Linux container tags that are available on Docker Hub repository:

Tag(s)
Manifest Architectures
Description

4.0.1-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

4.0.1

x86_64, arm64v8, arm32v7, s390x

4.0.0-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

4.0.0

x86_64, arm64v8, arm32v7, s390x

3.2.10-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.10

x86_64, arm64v8, arm32v7, s390x

3.2.9-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.9

x86_64, arm64v8, arm32v7, s390x

3.2.8-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.8

x86_64, arm64v8, arm32v7, s390x

3.2.7-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.7

x86_64, arm64v8, arm32v7, s390x

3.2.6-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.6

x86_64, arm64v8, arm32v7, s390x

3.2.5-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.5

x86_64, arm64v8, arm32v7, s390x

3.2.4-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.4

x86_64, arm64v8, arm32v7, s390x

3.2.3-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.3

x86_64, arm64v8, arm32v7, s390x

3.2.2-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.2

x86_64, arm64v8, arm32v7, s390x

3.2.1-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.2.1

x86_64, arm64v8, arm32v7, s390x

3.1.10-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.10

x86_64, arm64v8, arm32v7, s390x

3.1.9-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.9

x86_64, arm64v8, arm32v7, s390x

3.1.8-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.8

x86_64, arm64v8, arm32v7, s390x

3.1.7-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.7

x86_64, arm64v8, arm32v7, s390x

3.1.6-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.6

x86_64, arm64v8, arm32v7, s390x

3.1.5-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.5

x86_64, arm64v8, arm32v7, s390x

3.1.4-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.4

x86_64, arm64v8, arm32v7, s390x

3.1.3-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.3

x86_64, arm64v8, arm32v7, s390x

3.1.2-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.2

x86_64, arm64v8, arm32v7, s390x

3.1.1-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.1

x86_64, arm64v8, arm32v7, s390x

3.1.0-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.1.0

x86_64, arm64v8, arm32v7, s390x

3.0.7-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.7

x86_64, arm64v8, arm32v7, s390x

3.0.6-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.6

x86_64, arm64v8, arm32v7, s390x

3.0.5-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.5

x86_64, arm64v8, arm32v7, s390x

3.0.4-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.4

x86_64, arm64v8, arm32v7, s390x

3.0.3-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.3

x86_64, arm64v8, arm32v7, s390x

3.0.2-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.2

x86_64, arm64v8, arm32v7, s390x

3.0.1-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.1

x86_64, arm64v8, arm32v7, s390x

3.0.0-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

3.0.0

x86_64, arm64v8, arm32v7, s390x

2.2.2-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

2.2.2

x86_64, arm64v8, arm32v7, s390x

2.2.1-debug

x86_64, arm64v8, arm32v7, s390x

Debug images

2.2.1

x86_64, arm64v8, arm32v7, s390x

2.2.0-debug

x86_64, arm64v8, arm32v7

Debug images

2.2.0

x86_64, arm64v8, arm32v7

2.1.10-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.10

x86_64, arm64v8, arm32v7

2.1.9-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.9

x86_64, arm64v8, arm32v7

2.1.8-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.8

x86_64, arm64v8, arm32v7

2.1.7-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.7

x86_64, arm64v8, arm32v7

2.1.6-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.6

x86_64, arm64v8, arm32v7

2.1.5

x86_64, arm64v8, arm32v7

2.1.5-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.4

x86_64, arm64v8, arm32v7

2.1.4-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.3

x86_64, arm64v8, arm32v7

2.1.3-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.2

x86_64, arm64v8, arm32v7

2.1.2-debug

x86_64, arm64v8, arm32v7

Debug images

2.1.1

x86_64, arm64v8, arm32v7

2.1.1-debug

x86_64, arm64v8, arm32v7

v2.1.x releases (production + debug)

2.1.0

x86_64, arm64v8, arm32v7

2.1.0-debug

x86_64, arm64v8, arm32v7

v2.1.x releases (production + debug)

2.0.11

x86_64, arm64v8, arm32v7

2.0.11-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.10

x86_64, arm64v8, arm32v7

2.0.10-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.9

x86_64, arm64v8, arm32v7

2.0.9-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.8

x86_64, arm64v8, arm32v7

2.0.8-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.6

x86_64, arm64v8, arm32v7

2.0.6-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.5

x86_64, arm64v8, arm32v7

2.0.5-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.4

x86_64, arm64v8, arm32v7

2.0.4-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.3

x86_64, arm64v8, arm32v7

2.0.3-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.2

x86_64, arm64v8, arm32v7

2.0.2-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.1

x86_64, arm64v8, arm32v7

2.0.1-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

2.0.0

x86_64, arm64v8, arm32v7

2.0.0-debug

x86_64, arm64v8, arm32v7

v2.0.x releases (production + debug)

1.9.9

x86_64, arm64v8, arm32v7

1.9.9-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.8

x86_64, arm64v8, arm32v7

1.9.8-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.7

x86_64, arm64v8, arm32v7

1.9.7-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.6

x86_64, arm64v8, arm32v7

1.9.6-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.5

x86_64, arm64v8, arm32v7

1.9.5-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.4

x86_64, arm64v8, arm32v7

1.9.4-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.3

x86_64, arm64v8, arm32v7

1.9.3-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.2

x86_64, arm64v8, arm32v7

1.9.2-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.1

x86_64, arm64v8, arm32v7

1.9.1-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

1.9.0

x86_64, arm64v8, arm32v7

1.9.0-debug

x86_64, arm64v8, arm32v7

v1.9.x releases (production + debug)

It's strongly suggested that you always use the latest image of Fluent Bit.

Container images for Windows Server 2019 and Windows Server 2022 are provided for v2.0.6 and later. These can be found as tags on the same Docker Hub registry.

Multi-architecture images

Debug images are available for all architectures (for 1.9.0 and later), and contain a full Debian shell and package manager that can be used to troubleshoot or for testing purposes.

From a deployment perspective, there's no need to specify an architecture. The container client tool that pulls the image gets the proper layer for the running architecture.

Verify signed container images

$ cosign verify --key "https://packages.fluentbit.io/fluentbit-cosign.pub" fluent/fluent-bit:2.0.6

Verification for index.docker.io/fluent/fluent-bit:2.0.6 --
The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key

[{"critical":{"identity":{"docker-reference":"index.docker.io/fluent/fluent-bit"},"image":{"docker-manifest-digest":"sha256:c740f90b07f42823d4ecf4d5e168f32ffb4b8bcd87bc41df8f5e3d14e8272903"},"type":"cosign container image signature"},"optional":{"release":"2.0.6","repo":"fluent/fluent-bit","workflow":"Release from staging"}}]

Replace cosign with the binary installed if it has a different name (for example, cosign-linux-amd64).

Keyless signing is also provided but is still experimental:

COSIGN_EXPERIMENTAL=1 cosign verify fluent/fluent-bit:2.0.6

Get started

  1. Download the last stable image from 2.0 series:

    docker pull cr.fluentbit.io/fluent/fluent-bit:2.0
  2. After the image is in place, run the following test which makes Fluent Bit measure CPU usage by the container:

    docker run -ti cr.fluentbit.io/fluent/fluent-bit:2.0 \
      -i cpu -o stdout -f 1

That command lets Fluent Bit measure CPU usage every second and flushes the results to the standard output. For example:

[2019/10/01 12:29:02] [ info] [engine] started
[0] cpu.0: [1504290543.000487750, {"cpu_p"=>0.750000, "user_p"=>0.250000, "system_p"=>0.500000, "cpu0.p_cpu"=>0.000000, "cpu0.p_user"=>0.000000, "cpu0.p_system"=>0.000000, "cpu1.p_cpu"=>1.000000, "cpu1.p_user"=>0.000000, "cpu1.p_system"=>1.000000, "cpu2.p_cpu"=>1.000000, "cpu2.p_user"=>1.000000, "cpu2.p_system"=>0.000000, "cpu3.p_cpu"=>0.000000, "cpu3.p_user"=>0.000000, "cpu3.p_system"=>0.000000}]

FAQ

Why there is no Fluent Bit Docker image based on Alpine Linux?

Alpine Linux uses Musl C library instead of Glibc. Musl isn't fully compatible with Glibc, which generated many issues in the following areas when used with Fluent Bit:

  • Memory Allocator: To run properly in high-load environments, Fluent Bit uses Jemalloc as a default memory allocator which reduces fragmentation and provides better performance. Jemalloc can't run smoothly with Musl and requires extra work.

  • Alpine Linux Musl functions bootstrap have a compatibility issue when loading Golang shared libraries. This causes problems when trying to load Golang output plugins in Fluent Bit.

  • Alpine Linux Musl Time format parser doesn't support Glibc extensions.

  • The Fluent Bit maintainers' preference for base images are Distroless and Debian for security and maintenance reasons.

Why use Distroless containers?

  • Include only what you need, reduce the attack surface available.

  • Reduces size and improves performance.

  • Reduces false positives on scans (and reduces resources required for scanning).

  • Reduces supply chain security requirements to only what you need.

  • Helps prevent unauthorised processes or users interacting with the container.

  • Less need to harden the container (and container runtime, K8s, and so on).

  • Faster CI/CD processes.

With any choice, there are downsides:

  • No shell or package manager to update or add things.

    • Generally, dynamic updating is a bad idea in containers as the time it's done affects the outcome: two containers started at different times using the same base image can perform differently or get different dependencies.

    • A better approach is to rebuild a new image version. You can do this with Distroless, but it's harder and requires multistage builds or similar to provide the new dependencies.

  • Debugging can be harder.

    • More specifically you need applications set up to properly expose information for debugging rather than rely on traditional debug approaches of connecting to processes or dumping memory. This can be an upfront cost versus a runtime cost but does shift left in the development process so hopefully is a reduction overall.

  • Assumption that Distroless is secure: nothing is secure and there are still exploits so it doesn't remove the need for securing your system.

  • Sometimes you need to use a common base image, such as with audits, security, health, and so on.

Using exec to access a container will potentially impact resource limits.

  • This can be a significantly different container from the one you want to investigate, with lots of extra tools or even a different base.

  • No resource limits applied to this container, which can be good or bad.

  • Runs in pod namespaces. It's another container that can access everything the others can.

  • Might need architecture of the pod to share volumes or other information.

  • Requires more recent versions of K8S and the container runtime plus RBAC allowing it.

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Release

Fluent Bit production stable images are based on. Focusing on security, these images contain only the Fluent Bit binary and minimal system libraries and basic configuration.

Version 1.9 and 2.0 container images are signed using Cosign/Sigstore. Verify these signatures using cosign ():

COSIGN_EXPERIMENTAL=1 is used to allow verification of images signed in keyless mode. To learn more about keyless signing, see the documentation.

The reasons for using Distroless are well covered in.

For debugging, debug containers are available now in K8S:

fluent/fluent-bit
Distroless
install guide
Sigstore keyless signature
Why should I use Distroless images?
https://kubernetes.io/docs/tasks/debug/debug-application/debug-running-pod/#ephemeral-container
v4.0.1
v4.0.0
v3.2.10
v3.2.9
v3.2.8
v3.2.7
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.1.10
v3.1.9
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.2.2
v2.2.1
v2.2.0
v2.1.10
v2.1.9
v2.1.8
v2.1.7
v2.1.6
v2.1.5
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.11
v2.0.10
v2.0.9
v2.0.8
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v1.9.9
v1.9.8
v1.9.7
v1.9.6
v1.9.5
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0