1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Fluent Bit - log forwarding

# Fluent Bit - lekki agent do forwarding logów na VPS

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS

⚡ W skrócie · 8 min czytania

-   Instalacja Fluent Bit, konfiguracja inputs/filters/outputs (plik, syslog, Docker logs), wysyłka do Elasticsearch/Loki/S3, parsowanie logów multiline, porównanie z Logstash/Fluentd.
-   Instalacja Fluent Bit.
-   Architektura: inputs → filters → outputs.
-   Parsery - parsowanie logów Nginx, Apache i JSON.
-   Parsowanie multiline - stack traces i logi Java.

Gdy masz kilka serwerów, każdy produkuje gigabajty logów dziennie - Nginx, PHP-FPM, Docker kontenery, własne aplikacje, systemd journal. Ręczne sprawdzanie każdego serwera osobno jest nieefektywne. Fluent Bit rozwiązuje ten problem: to ultra-lekki agent (450 KB RAM!) zbierający logi z wielu źródeł, przetwarzający je i wysyłający do centralnego systemu (Elasticsearch, Grafana Loki, S3, Kafka). Napisany w C, bez JVM, bez Ruby - jeden z najlżejszych agentów log shippingu w ekosystemie. Artykuł pokazuje instalację, konfigurację inputs, filters i outputs.

## Instalacja Fluent Bit

```
# Ubuntu / Debian - oficjalne repo Fluent Bit
curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh

# Lub recznie
wget -qO - https://packages.fluentbit.io/fluentbit.key | \
  sudo gpg --dearmor -o /usr/share/keyrings/fluentbit-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] \
  https://packages.fluentbit.io/ubuntu/$(lsb_release -cs) \
  $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/fluentbit.list
sudo apt update && sudo apt install fluent-bit -y

# Uruchomienie
sudo systemctl enable --now fluent-bit
sudo systemctl status fluent-bit

# Sprawdz wersje
fluent-bit --version

# Konfiguracja glowna: /etc/fluent-bit/fluent-bit.conf
# Parsery:           /etc/fluent-bit/parsers.conf
```

## Architektura: inputs → filters → outputs

Fluent Bit działa jako pipeline: dane wchodzą przez **inputs** (skąd czytamy), są przetwarzane przez **filters** (transformacje, parsowanie, wzbogacanie) i wychodzą przez **outputs** (dokąd wysyłamy). Wiele inputs i outputs można konfigurować jednocześnie w jednym pliku konfiguracyjnym.

```
# /etc/fluent-bit/fluent-bit.conf

[SERVICE]
    Flush         5
    Daemon        Off
    Log_Level     info
    Parsers_File  parsers.conf
    storage.path  /var/log/fluentbit-buffer
    storage.type  filesystem

# INPUT 1: Logi Nginx z pliku
[INPUT]
    Name    tail
    Path    /var/log/nginx/access.log
    Tag     nginx.access
    Parser  nginx
    DB      /var/log/fluentbit-db/nginx.db

# INPUT 2: Systemd journal (journald)
[INPUT]
    Name              systemd
    Tag               systemd.*
    Systemd_Filter    _SYSTEMD_UNIT=nginx.service
    Read_From_Tail    On

# INPUT 3: Docker logi kontenerow
[INPUT]
    Name            tail
    Tag             docker.*
    Path            /var/lib/docker/containers/*/*.log
    Parser          docker
    Docker_Mode     On

# FILTER: Dodaj pole hostname do kazdego rekordu
[FILTER]
    Name    record_modifier
    Match   *
    Record  hostname {{HOSTNAME}}

# FILTER: Parsuj JSON z logow aplikacji
[FILTER]
    Name    parser
    Match   docker.*
    Key_Name log
    Parser  json

# OUTPUT: Wyslij do Grafana Loki
[OUTPUT]
    Name            loki
    Match           *
    Host            loki.example.com
    Port            3100
    Labels          job=fluent-bit,env=production
    Label_Keys      $hostname,$container_name

# OUTPUT 2: Backup do pliku lokalnego
[OUTPUT]
    Name    file
    Match   *
    Path    /var/log/fluentbit-output
    File    all_logs.log
```

## Parsery - parsowanie logów Nginx, Apache i JSON

```
# /etc/fluent-bit/parsers.conf

# Parser Nginx (Combined Log Format)
[PARSER]
    Name    nginx
    Format  regex
    Regex   ^(?<remote>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^\"]*?)(?: +\S*)?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
    Time_Key  time
    Time_Format %d/%b/%Y:%H:%M:%S %z

# Parser Apache
[PARSER]
    Name    apache2
    Format  regex
    Regex   ^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ \"]*)(?: +(?<proto>[^ \"]*))?)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$
    Time_Key  time
    Time_Format %d/%b/%Y:%H:%M:%S %z

# Parser Docker JSON log driver
[PARSER]
    Name        docker
    Format      json
    Time_Key    time
    Time_Format %Y-%m-%dT%H:%M:%S.%L
    Time_Keep   On

# Parser JSON (dla logow aplikacji jako JSON)
[PARSER]
    Name   json
    Format json
```

## Parsowanie multiline - stack traces i logi Java

```
# Multiline parser dla Java stack traces
[MULTILINE_PARSER]
    Name          java_multiline
    Type          regex
    Flush_Timeout 1000
    # Linia startowa: timestamp + poziom loga
    Rule "start_state" "/^\d4-\d2-\d2/" "cont"
    # Kontynuacja: linie z tabulatorem (stack frames)
    Rule "cont" "/^\s+at /" "cont"

# Uzyw w INPUT tail
[INPUT]
    Name              tail
    Path              /var/log/myapp/app.log
    Tag               app.java
    multiline.parser  java_multiline

# Wbudowane parsery multiline: java, go, python, ruby, docker
[FILTER]
    Name              multiline
    Match             app.*
    multiline.parser  go
```

## Porównanie agentów log forwarding

Agent

Język

RAM

CPU

Pluginy

Zastosowanie

Fluent Bit

C

~0.5 MB

Bardzo niski

100+

Edge agent, IoT, K8s DaemonSet

Fluentd

Ruby + C

40-100 MB

Niski-Średni

1000+

Aggregator, rich transforms

Logstash

JRuby (JVM)

200 MB+

Średni-Wysoki

200+

ELK Stack, complex pipelines

Promtail

Go

20-50 MB

Niski

Tylko Loki

Dedykowany agent dla Grafana Loki

Vector

Rust

30-80 MB

Bardzo niski

50+

Alternatywa dla Fluentd, wielki ekosystem

## Najczęstsze pytania

Czym jest Fluent Bit i czym różni się od Fluentd? +

Fluent Bit to ultra-lekki agent do zbierania, filtrowania i forwarding logów napisany w C. Zużywa ok. 450 KB RAM i mniej niż 0.5% CPU przy dużym ruchu. Fluentd to bogatszy agent w Ruby - zużywa 40+ MB RAM, ma ogromny ekosystem pluginów, ale jest cięższy. Fluent Bit jest idealny jako "node agent" zbierający logi z każdego serwera i przesyłający je do centralnego Fluentd lub bezpośrednio do Elasticsearch/Loki. Razem tworzą architekturę edge (Fluent Bit) + aggregator (Fluentd).

Jakie outputy obsługuje Fluent Bit? +

Fluent Bit obsługuje dziesiątki outputów: Elasticsearch, OpenSearch, Grafana Loki, Splunk, Datadog, New Relic, InfluxDB, AWS CloudWatch, AWS S3, Google Cloud Logging, Azure Log Analytics, Kafka, Fluentd (jako aggregator), HTTP (generic webhook), TCP/UDP, stdout (debug). Lista rośnie z każdą wersją. Jeden Fluent Bit może wysyłać logi do wielu destynacji jednocześnie przez konfigurację wielu sekcji \[OUTPUT\].

Czy Fluent Bit radzi sobie z logami Docker kontenerów? +

Tak, Fluent Bit ma dedykowany input Docker dla logów kontenerów. Może czytać logi ze wszystkich kontenerów przez /var/lib/docker/containers/\*/\*-json.log, parsować je (JSON log driver) i wzbogacać o metadane (container\_id, container\_name, image). W środowiskach Kubernetes jest popularnym wyborem obok Promtail (dla Loki) - DaemonSet Fluent Bit zbiera logi ze wszystkich nodów.

Jak działa parsowanie multiline w Fluent Bit? +

Stack traces i logi Java/Python/Ruby rozciągają się na wiele linii. Fluent Bit obsługuje parsowanie multiline przez \[FILTER\] multiline z konfiguracją parsera (Java, Go, Python, Ruby wbudowane lub własne przez regex). Parser wykrywa linię startową (np. timestamp) i łączy kolejne linie aż do następnej linii startowej w jeden rekord. Obsługiwane też przez typ input tail z parametrem multiline.parser.

Jak zapewnić że logi nie są tracone przy awarii serwera docelowego? +

Fluent Bit obsługuje storage.type=filesystem - buforuje rekordy na dysku gdy output jest niedostępny i ponawia wysyłkę po przywróceniu połączenia. Konfiguruj storage.path=/var/log/fluentbit-storage i storage.max\_chunks\_up=128. Parametr Retry\_Limit=false powoduje nieskończone ponawianie. W ten sposób logi nie są tracone nawet przy kilkugodzinnej awarii backendu.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dużą przestrzenią dyskową do buforowania logów Fluent Bit

VPS + Storage

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

ProSerwer.pl

Polski VPS z RODO-zgodnym przechowywaniem logów

RODO Compliant

[Aktywuj rabat →](/out/proserwer-pl/#reklama "ProSerwer.pl")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/proserwer/)

Mikr.us

Budżetowy VPS - Fluent Bit jest tak lekki że działa na 512 MB RAM

Ultra-Lekki

[Aktywuj rabat →](/out/mikrus/#reklama "Mikr.us")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

## Powiązane strony

-   [Grafana Loki - agregacja logów z Promtail i LogQL](/baza-wiedzy/loki-grafana-logi/)
-   [ELK Stack - centralne logowanie dla serwera](/baza-wiedzy/elk-stack-logi-serwera/)
-   [Logrotate - konfiguracja rotacji logów](/baza-wiedzy/logrotate-konfiguracja-linux/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [Vector - wydajny pipeline do agregacji logów na VPS
    
    Vector log pipeline na VPS: sources/transforms/sinks TOML, file/syslog/Docker inputs, remap VRL do transformacji,…
    
    ](/baza-wiedzy/vector-log-pipeline/)
-   [Grafana Tempo - distributed tracing bez limitów kosztowych
    
    Grafana Tempo: architektura, S3/MinIO backend bez kosztów Elasticsearch, integracja OpenTelemetry, TraceQL, Grafana…
    
    ](/baza-wiedzy/tempo-distributed-tracing/)
-   [Thanos - długoterminowe przechowywanie metryk Prometheus w S3
    
    Thanos dla Prometheus: architektura Sidecar/Store/Compactor/Query/Ruler, konfiguracja S3 i MinIO, global view wielu…
    
    ](/baza-wiedzy/thanos-prometheus-long-term/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 10 kwietnia 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)